UNPKG

@qooxdoo/framework

Version:

The JS Framework for Coders

97 lines (85 loc) 2.4 kB
/* ************************************************************************ qooxdoo - the new era of web development http://qooxdoo.org Copyright: 2004-2010 1&1 Internet AG, Germany, http://www.1und1.de License: MIT: https://opensource.org/licenses/MIT See the LICENSE file in the project's top-level directory for details. Authors: * Christian Hagendorn (chris_schmidt) ************************************************************************ */ /** * EXPERIMENTAL! * * Cell renderer can be used for Widget rendering. The Widget creation can be configured with the * {@link #delegate} property: * * <pre class="javascript"> * widgetCell.setDelegate( * { * createWidget : function() { * return new qx.ui.form.ListItem(); * } * }); * </pre> * * When the {@link #delegate} property is not used {@link qx.ui.core.Widget} instances are created as * fallback. * * The {@link #updateData} method can be used to update any Widget property. Just use a <code>Map</code> * with property name as key: * * <pre class="javascript"> * // widget is a qx.ui.form.ListItem instance * widgetCell.updateData(widget, * { * label: "my label value", * icon: "qx/icon/22/emotes/face-angel.png" * }); * </pre> */ qx.Class.define("qx.ui.virtual.cell.WidgetCell", { extend : qx.ui.virtual.cell.AbstractWidget, properties : { /** * Delegation object, which can have one or more functions defined by the * {@link qx.ui.virtual.cell.IWidgetCellDelegate} interface. */ delegate : { apply: "_applyDelegate", init: null, nullable: true } }, members : { // apply method _applyDelegate : function(value, old) { this._cleanupPool(); }, // overridden _createWidget : function() { var delegate = this.getDelegate(); if (delegate != null && delegate.createWidget != null) { return delegate.createWidget(); } else { return new qx.ui.core.Widget(); } }, // overridden updateData : function(widget, data) { for (var key in data) { if (qx.Class.hasProperty(widget.constructor, key)) { qx.util.PropertyUtil.setUserValue(widget, key, data[key]); } else { throw new Error("Can't update data! The key '" + key + "' is not a Property!"); } } } } });