UNPKG

@qooxdoo/framework

Version:

The JS Framework for Coders

187 lines (156 loc) 5.18 kB
/* ************************************************************************ qooxdoo - the new era of web development http://qooxdoo.org Copyright: 2006 STZ-IDA, Germany, http://www.stz-ida.de 2008 Derrell Lipman License: MIT: https://opensource.org/licenses/MIT See the LICENSE file in the project's top-level directory for details. Authors: * Til Schneider (til132) * Carsten Lergenmueller (carstenl) * Derrell Lipman (derrell) ************************************************************************ */ /** * Table Cell Boolean Renderer. */ qx.Class.define("qx.ui.progressive.renderer.table.cell.Boolean", { extend: qx.ui.progressive.renderer.table.cell.Icon, construct() { super(); this._resolveImages(); // dynamic theme switch if (qx.core.Environment.get("qx.dyntheme")) { this.__changeThemeBooleanCellListenerId = qx.theme.manager.Meta.getInstance().addListener( "changeTheme", this._resolveImages, this ); } }, properties: { /** * Whether to add code which will toggle the checkbox on/off. (There is * not yet code here to generate an event when this occurs, so it's not * yet very useful.) */ allowToggle: { check: "Boolean", init: false } }, members: { _iconUrlTrue: null, _iconUrlFalse: null, /** * Resolve the boolean images using the alias and resource manager. */ _resolveImages() { var aliasManager = qx.util.AliasManager.getInstance(); var resourceManager = qx.util.ResourceManager.getInstance(); var boolTrueImg = aliasManager.resolve( "decoration/table/boolean-true.png" ); var boolFalseImg = aliasManager.resolve( "decoration/table/boolean-false.png" ); this._iconUrlTrue = resourceManager.toUri(boolTrueImg); this._iconUrlFalse = resourceManager.toUri(boolFalseImg); }, _getDefaultImageData(cellInfo) { return { imageWidth: 11, imageHeight: 11 }; }, // overridden _identifyImage(cellInfo) { var imageData = this._getDefaultImageData(cellInfo); switch (cellInfo.cellData) { case true: imageData.url = this._iconUrlTrue; imageData.extras = "celldata='1' "; break; case false: imageData.url = this._iconUrlFalse; imageData.extras = "celldata='0' "; break; default: imageData.url = null; break; } if (this.getAllowToggle()) { // Toggle the boolean value if clicked imageData.extras += 'onclick="' + "var node = this.attributes.getNamedItem('celldata'); " + "var value = node.nodeValue; " + "var src; " + "if (value == '0') " + "{"; if ( qx.core.Environment.get("css.alphaimageloaderneeded") && /\.png$/i.test(this._iconUrlTrue) ) { imageData.extras += " this.src='" + this.getBlankImage() + "'; " + " var loader = 'DXImageTransform.Microsoft.AlphaImageLoader'; " + " var filters = this.filters.item(loader); " + " filters.src='" + this._iconUrlTrue + "'; " + " filters.sizingMethod = 'scale'; "; } else { imageData.extras += " this.src='" + this._iconUrlTrue + "'; "; } imageData.extras += " node.nodeValue='1'; " + "} " + "else " + "{"; if ( qx.core.Environment.get("css.alphaimageloaderneeded") && /\.png$/i.test(this._iconUrlFalse) ) { imageData.extras += " this.src='" + this.getBlankImage() + "'; " + " var loader = 'DXImageTransform.Microsoft.AlphaImageLoader'; " + " var filters = this.filters.item(loader); " + " filters.src='" + this._iconUrlFalse + "'; " + " filters.sizingMethod = 'scale'; "; } else { imageData.extras += " this.src='" + this._iconUrlFalse + "'; "; } imageData.extras += " node.nodeValue='0'; " + "}"; imageData.extras += // IE doesn't allow setNamedItem() if not explicitly an "attribute" "try { " + " this.attributes.setNamedItem(node); " + "} catch (e) { " + " var namedItem = document.createAttribute('celldata'); " + " namedItem.value = node.nodeValue; " + " this.attributes.setNamedItem(namedItem); " + "}" + '"'; } return imageData; }, // overridden _getCellStyle(cellInfo) { var ret = super._getCellStyle(cellInfo); return ret; } }, destruct() { this._iconUrlTrue = this._iconUrlFalse = null; // remove dynamic theme listener if (qx.core.Environment.get("qx.dyntheme") && this.__changeThemeBooleanCellListenerId) { qx.theme.manager.Meta.getInstance().removeListenerById( this.__changeThemeBooleanCellListenerId ); } } });