@qooxdoo/framework
Version:
The JS Framework for Coders
112 lines (89 loc) • 2.63 kB
JavaScript
/* ************************************************************************
qooxdoo - the new era of web development
http://qooxdoo.org
Copyright:
2009 Derrell Lipman
License:
MIT: https://opensource.org/licenses/MIT
See the LICENSE file in the project's top-level directory for details.
Authors:
* Derrell Lipman (derrell)
* Jonathan Weiß (jonathan_rass)
************************************************************************ */
/**
* The traditional qx.ui.menu.MenuButton to access the column visibility menu.
*/
qx.Class.define("qx.ui.table.columnmenu.Button",
{
extend : qx.ui.form.MenuButton,
implement : qx.ui.table.IColumnMenuButton,
/**
* Create a new instance of a column visibility menu button. This button
* also contains the factory for creating each of the sub-widgets.
*/
construct : function()
{
this.base(arguments);
// add blocker
this.__blocker = new qx.ui.core.Blocker(this);
},
members :
{
__columnMenuButtons : null,
__blocker : null,
// Documented in qx.ui.table.IColumnMenu
factory : function(item, options)
{
switch(item)
{
case "menu":
var menu = new qx.ui.menu.Menu();
this.setMenu(menu);
return menu;
case "menu-button":
var menuButton =
new qx.ui.table.columnmenu.MenuItem(options.text);
menuButton.setColumnVisible(options.bVisible);
this.getMenu().add(menuButton);
return menuButton;
case "user-button":
var button = new qx.ui.menu.Button(options.text);
button.set(
{
appearance: "table-column-reset-button"
});
return button;
case "separator":
return new qx.ui.menu.Separator();
default:
throw new Error("Unrecognized factory request: " + item);
}
},
/**
* Returns the blocker of the columnmenu button.
*
* @return {qx.ui.core.Blocker} the blocker.
*/
getBlocker : function() {
return this.__blocker;
},
// Documented in qx.ui.table.IColumnMenu
empty : function()
{
var menu = this.getMenu();
var entries = menu.getChildren();
for (var i=0,l=entries.length; i<l; i++)
{
entries[0].destroy();
}
}
},
/*
*****************************************************************************
DESTRUCTOR
*****************************************************************************
*/
destruct: function() {
this.__blocker.dispose();
}
});