UNPKG

@qooxdoo/framework

Version:

The JS Framework for Coders

202 lines (167 loc) 5.29 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 : function() { this.base(arguments); this.__resolveImages(); // dynamic theme switch if (qx.core.Environment.get("qx.dyntheme")) { 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, __numericAllowed : null, __conditions : null, __defaultTextAlign : null, __defaultColor : null, __defaultFontStyle : null, __defaultFontWeight : null, /** * Resolve the boolean images using the alias and resource manager. */ __resolveImages : function() { 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); }, // overridden _identifyImage : function(cellInfo) { var imageData = { imageWidth : 11, imageHeight : 11 }; 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 : function(cellInfo) { var ret = this.base(arguments, cellInfo); return ret; } }, destruct : function() { this.__iconUrlTrue = this.__iconUrlFalse = null; // remove dynamic theme listener if (qx.core.Environment.get("qx.dyntheme")) { qx.theme.manager.Meta.getInstance().removeListener( "changeTheme", this.__resolveImages, this ); } } });