89 lines
1.8 KiB
JavaScript
89 lines
1.8 KiB
JavaScript
/**
|
|
* User extention designed to be used on the BB10 platform.
|
|
*
|
|
* @private
|
|
*/
|
|
Ext.define('Ext.ux.MenuButton', {
|
|
extend: 'Ext.Button',
|
|
requires: ['Ext.ux.ContextMenu'],
|
|
|
|
config: {
|
|
/**
|
|
* @hide
|
|
*/
|
|
ui: 'tab',
|
|
|
|
/**
|
|
* @hide
|
|
*/
|
|
cls: 'menu',
|
|
|
|
menuConfig: {},
|
|
|
|
menuItems: [],
|
|
|
|
/**
|
|
* @hide
|
|
*/
|
|
menuSide: 'right',
|
|
|
|
/**
|
|
* @hide
|
|
*/
|
|
menuCover: false,
|
|
|
|
/**
|
|
* @hide
|
|
*/
|
|
menuCls: null,
|
|
|
|
/**
|
|
* @hide
|
|
*/
|
|
listeners: {
|
|
tap: 'onTap'
|
|
}
|
|
},
|
|
|
|
/**
|
|
* @private
|
|
* Used to show the menu associated with this button
|
|
*/
|
|
onTap: function(e) {
|
|
if (this.$menu) {
|
|
this.$menu.destroy();
|
|
}
|
|
|
|
this.element.addCls('x-open');
|
|
|
|
this.$menu = Ext.create('Ext.ux.ContextMenu', Ext.apply({}, this.getMenuConfig(), {
|
|
cls: this.getMenuCls(),
|
|
items: this.getMenuItems(),
|
|
listeners: {
|
|
scope: this,
|
|
hide: function() {
|
|
if (this.$menu) {
|
|
this.element.removeCls('x-open');
|
|
Ext.Viewport.removeMenu(this.getMenuSide());
|
|
this.$menu.destroy();
|
|
}
|
|
}
|
|
}
|
|
}));
|
|
|
|
this.$menu.on({
|
|
scope: this,
|
|
tap: this.onMenuButtonTap,
|
|
delegate: 'button'
|
|
});
|
|
|
|
Ext.Viewport.setMenu(this.$menu, {
|
|
side: this.getMenuSide(),
|
|
cover: this.getMenuCover()
|
|
});
|
|
|
|
Ext.Viewport.showMenu(this.getMenuSide());
|
|
},
|
|
|
|
onMenuButtonTap: Ext.emptyFn
|
|
}); |