UNPKG

@qooxdoo/framework

Version:

The JS Framework for Coders

127 lines (104 loc) 3.28 kB
/* ************************************************************************ qooxdoo - the new era of web development http://qooxdoo.org Copyright: 2004-2011 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) ************************************************************************ */ /* ************************************************************************ ************************************************************************ */ /** * @tag noPlayground * * @asset(qx/icon/${qx.icontheme}/22/places/folder.png) * @asset(qx/icon/${qx.icontheme}/22/mimetypes/office-document.png) * @asset(qxl/demobrowser/demo/icons/loading22.gif) */ qx.Class.define("qxl.demobrowser.demo.virtual.Tree_Dynamic", { extend : qx.application.Standalone, members : { count : 0, main : function() { this.base(arguments); var root = { label: "Root", children: [], icon: "default", loaded: true }; root = qx.data.marshal.Json.createModel(root, true) this.createRandomData(root); var tree = new qx.ui.tree.VirtualTree(root, "label", "children"); this.getRoot().add(tree, {edge: 20}); tree.setIconPath("icon"); tree.setIconOptions({ converter : function(value, model) { if (value == "default") { if (model.getChildren != null) { return "icon/22/places/folder.png"; } else { return "icon/22/mimetypes/office-document.png"; } } else { return "demobrowser/demo/icons/loading22.gif"; } } }); var that = this; var delegate = { bindItem : function(controller, item, index) { controller.bindDefaultProperties(item, index); controller.bindProperty("", "open", { converter : function(value, model, source, target) { var isOpen = target.isOpen(); if (isOpen && !value.getLoaded()) { value.setLoaded(true); qx.event.Timer.once(function() { tree.setAutoScrollIntoView(false); value.getChildren().removeAll(); this.createRandomData(value); tree.setAutoScrollIntoView(true); }, that, 1000); } return isOpen; } }, item, index); } }; tree.setDelegate(delegate); }, createRandomData : function(parent) { var items = parseInt(Math.random() * 50); for (var i = 0; i < items; i++) { var node = { label: "Item " + this.count++, icon: "default", loaded: true } if (Math.random() > 0.3) { node["loaded"] = false; node["children"] = [{ label: "Loading", icon: "loading" }]; } parent.getChildren().push(qx.data.marshal.Json.createModel(node, true)); } } } });