Ext.require([
'Ext.tip.QuickTipManager',
'Ext.menu.*',
'Ext.form.field.ComboBox',
'Ext.layout.container.Table',
'Ext.container.ButtonGroup'
]);
Ext.onReady(function(){
// functions to display feedback
function onButtonClick(btn){
Ext.example.msg('Button Click','You clicked the "{0}" button.', btn.text);
}
function onItemClick(item){
Ext.example.msg('Menu Click', 'You clicked the "{0}" menu item.', item.text);
}
function onItemCheck(item, checked){
Ext.example.msg('Item Check', 'You {1} the "{0}" menu item.', item.text, checked ? 'checked' : 'unchecked');
}
function onItemToggle(item, pressed){
Ext.example.msg('Button Toggled', 'Button "{0}" was toggled to {1}.', item.text, pressed);
}
Ext.QuickTips.init();
var dateMenu = Ext.create('Ext.menu.DatePicker', {
handler: function(dp, date){
Ext.example.msg('Date Selected', 'You choose {0}.', Ext.Date.format(date, 'M j, Y'));
}
});
var colorMenu = Ext.create('Ext.menu.ColorPicker', {
handler: function(cm, color){
Ext.example.msg('Color Selected', 'You choose {0}.', color);
}
});
var store = Ext.create('Ext.data.ArrayStore', {
fields: ['abbr', 'state'],
data : Ext.example.states
});
var combo = Ext.create('Ext.form.field.ComboBox', {
hideLabel: true,
store: store,
displayField: 'state',
typeAhead: true,
queryMode: 'local',
triggerAction: 'all',
emptyText: 'Select a state...',
selectOnFocus: true,
width: 135,
iconCls: 'no-icon'
});
var menu = Ext.create('Ext.menu.Menu', {
id: 'mainMenu',
style: {
overflow: 'visible' // For the Combo popup
},
items: [
combo, // A Field in a Menu
{
text: 'I like Ext',
checked: true, // when checked has a boolean value, it is assumed to be a CheckItem
checkHandler: onItemCheck
}, '-', {
text: 'Radio Options',
menu: { // <-- submenu by nested config object
items: [
// stick any markup in a menu
'',
{
text: 'Aero Glass',
checked: true,
group: 'theme',
checkHandler: onItemCheck
}, {
text: 'Vista Black',
checked: false,
group: 'theme',
checkHandler: onItemCheck
}, {
text: 'Gray Theme',
checked: false,
group: 'theme',
checkHandler: onItemCheck
}, {
text: 'Default Theme',
checked: false,
group: 'theme',
checkHandler: onItemCheck
}
]
}
},{
text: 'Choose a Date',
iconCls: 'calendar',
menu: dateMenu // <-- submenu by reference
},{
text: 'Choose a Color',
menu: colorMenu // <-- submenu by reference
}
]
});
var tb = Ext.create('Ext.toolbar.Toolbar');
tb.render('toolbar');
tb.suspendLayouts();
tb.add({
text:'Button w/ Menu',
iconCls: 'bmenu', // <-- icon
menu: menu // assign menu by instance
}, {
text: 'Users',
iconCls: 'user',
menu: {
xtype: 'menu',
plain: true,
items: {
xtype: 'buttongroup',
title: 'User options',
columns: 2,
defaults: {
xtype: 'button',
scale: 'large',
iconAlign: 'left'
},
items: [{
text: 'User
manager',
iconCls: 'edit',
width: 90
},{
iconCls: 'add',
tooltip: 'Add user',
width: 40
},{
colspan: 2,
text: 'Import',
scale: 'small',
width: 130
},{
colspan: 2,
text: 'Who is online?',
scale: 'small',
width: 130
}]
}
}
},
Ext.create('Ext.button.Split', {
text: 'Split Button',
handler: onButtonClick,
tooltip: {text:'This is a an example QuickTip for a toolbar item', title:'Tip Title'},
iconCls: 'blist',
// Menus can be built/referenced by using nested menu config objects
menu : {
items: [{
text: 'Bold', handler: onItemClick
}, {
text: 'Italic', handler: onItemClick
}, {
text: 'Underline', handler: onItemClick
}, '-', {
text: 'Pick a Color',
handler: onItemClick,
menu: {
showSeparator: false,
items: [
Ext.create('Ext.ColorPalette', {
listeners: {
select: function(cp, color){
Ext.example.msg('Color Selected', 'You chose {0}.', color);
}
}
}), '-',
{
text: 'More Colors...',
handler: onItemClick
}
]
}
}, {
text: 'Extellent!',
handler: onItemClick
}]
}
}), '-', {
text: 'Toggle Me',
enableToggle: true,
toggleHandler: onItemToggle,
pressed: true
});
menu.add(' ');
// Menus have a rich api for
// adding and removing elements dynamically
var item = menu.add({
text: 'Dynamically added Item'
});
// items support full Observable API
item.on('click', onItemClick);
// items can easily be looked up
menu.add({
text: 'Disabled Item',
id: 'disableMe' // <-- Items can also have an id for easy lookup
// disabled: true <-- allowed but for sake of example we use long way below
});
// access items by id or index
menu.items.get('disableMe').disable();
// They can also be referenced by id in or components
tb.add('-', {
icon: 'list-items.gif', // icons can also be specified inline
cls: 'x-btn-icon',
tooltip: 'Quick Tips
Icon only button with tooltip
Activated on mousedown',
clickEvent: 'mousedown',
handler: function(){
Ext.example.msg('Button Click','You clicked the "icon only" button.');
}
}, '-');
var scrollMenu = Ext.create('Ext.menu.Menu');
for (var i = 0; i < 50; ++i){
scrollMenu.add({
text: 'Item ' + (i + 1),
handler: onItemClick
});
}
// scrollable menu
tb.add({
icon: 'preview.png',
cls: 'x-btn-text-icon',
text: 'Scrolling Menu',
menu: scrollMenu
});
tb.add({
text: 'Link',
url: 'http://www.google.com/search',
baseParams: {
q: 'html+anchor+tag'
},
tooltip: 'This is a link. You can right click. You can see where it will take you'
});
// add a combobox to the toolbar
combo = Ext.create('Ext.form.field.ComboBox', {
hideLabel: true,
store: store,
displayField: 'state',
typeAhead: true,
queryMode: 'local',
triggerAction: 'all',
emptyText:'Select a state...',
selectOnFocus:true,
width:135
});
tb.add(combo);
tb.resumeLayouts(true);
});