UNPKG

@qooxdoo/framework

Version:

The JS Framework for Coders

93 lines (80 loc) 2.35 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) ************************************************************************ */ /** * 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(value, old) { this._cleanupPool(); }, // overridden _createWidget() { var delegate = this.getDelegate(); if (delegate != null && delegate.createWidget != null) { return delegate.createWidget(); } else { return new qx.ui.core.Widget(); } }, // overridden updateData(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!" ); } } } } });