@qooxdoo/framework
Version:
The JS Framework for Coders
141 lines (114 loc) • 3.91 kB
JavaScript
/* ************************************************************************
qooxdoo - the new era of web development
http://qooxdoo.org
Copyright:
2004-2008 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:
* Sebastian Werner (wpbasti)
* Fabian Jakobs (fjakobs)
************************************************************************ */
/* ************************************************************************
************************************************************************ */
/**
*
* @asset(qx/icon/${qx.icontheme}/16/places/user-desktop.png)
* @asset(qx/icon/${qx.icontheme}/16/status/dialog-information.png)
*/
qx.Class.define("qxl.demobrowser.demo.data.Tree_Columns",
{
extend : qx.application.Standalone,
members :
{
main: function()
{
this.base(arguments);
var scroller = new qx.ui.container.Scroll();
var container = new qx.ui.container.Composite(new qx.ui.layout.Basic());
container.setAllowGrowX(false);
container.setAllowStretchX(false);
scroller.add(container);
this.getRoot().add(scroller, {edge : 0});
var tree = new qx.ui.tree.Tree().set({
width: 600,
height: 500
});
container.add(tree, {left: 20, top: 48});
// build the data
var data = {
label: "Root",
children : [
{
label: "Desktop",
children: [
{label: "Files"},
{
label: "Workspace",
children : [
{label: "Windows (C:)"},
{label: "Documents (D:)"}
]
},
{label: "Network"},
{label: "Trash"}
]
},
{
label: "Inbox",
children: [
{label: "Presets"},
{label: "Sent"},
{label: "Trash"},
{label: "Data"},
{label: "Edit"},
{label: "Lists"},
{label: "Personal"},
{label: "Big", children: []},
{label: "Spam"}
]
}
]
};
for (var i = 0; i < 50; i++) {
data.children[1].children[7].children[i] = {label: "Item " + i}
}
this.extendData(data);
var model = qx.data.marshal.Json.createModel(data);
// data binding
var treeController = new qx.data.controller.Tree(null, tree, "children", "label");
treeController.setDelegate(this);
treeController.setModel(model);
// make sure the root node is open
tree.getRoot().setOpen(true);
},
extendData : function(data)
{
data.date = "May " + Math.round(Math.random() * 30 + 1) + " 2010";
data.size = Math.round(Math.random() * 100) + "kb";
data.light = Math.floor(Math.random() * 4) == 0;
data.mode = "-rw-r--r--";
data.checked = Math.random() >= 0.5;
if (data.children) {
for (var i = 0; i < data.children.length; i++) {
this.extendData(data.children[i]);
}
}
},
// delegate implementation
bindItem : function(controller, item, id) {
controller.bindDefaultProperties(item, id);
controller.bindProperty("size", "size", null, item, id);
controller.bindProperty("checked", "checked", null, item, id);
controller.bindPropertyReverse("checked", "checked", null, item, id);
controller.bindProperty("date", "date", null, item, id);
controller.bindProperty("mode", "mode", null, item, id);
controller.bindProperty("light", "light", null, item, id);
},
// delegate implementation
createItem : function() {
return new qxl.demobrowser.demo.data.TreeColumn();
}
}
});