UNPKG

@qooxdoo/framework

Version:

The JS Framework for Coders

145 lines (113 loc) 4.63 kB
/* ************************************************************************ qooxdoo - the new era of web development http://qooxdoo.org Copyright: 2004-2009 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: * Martin Wittemann (martinwittemann) ************************************************************************ */ /** * @tag databinding * @tag selection */ qx.Class.define("qxl.demobrowser.demo.data.ListController", { extend : qx.application.Standalone, members : { main: function() { this.base(arguments); // create the data var rawData = []; for (var i = 0; i < 10; i++) { rawData.push("Item " + i); } var data = new qx.data.Array(rawData); // create the widgets var list1 = new qx.ui.form.List(); list1.setSelectionMode("multi"); var list2 = new qx.ui.form.List(); list2.setSelectionMode("multi"); var list3 = new qx.ui.form.List(); // add the widgets to the document this.getRoot().add(list1, {left: 10, top: 110}); this.getRoot().add(list2, {left: 130, top: 110}); this.getRoot().add(list3, {left: 250, top: 110}); // create the controller var controller1 = new qx.data.controller.List(data, list1); var controller2 = new qx.data.controller.List(data, list2); var controller3 = new qx.data.controller.List( controller1.getSelection(), list3 ); // synchronize the selection controller2.setSelection(controller1.getSelection()); // create a label for the selection var selectedLabel = new qx.ui.basic.Label(""); this.getRoot().add(selectedLabel, {left: 370, top: 110}); // bind the label with single value binding to the current selection controller3.bind("selection[0]", selectedLabel, "value"); // style the textfield selectedLabel.setWidth(120); selectedLabel.setDecorator("main"); selectedLabel.setBackgroundColor("white"); /* *********************************************** * Controlls: Do only work on the data array * ********************************************* */ var addItemButton = new qx.ui.form.Button("Add an item"); addItemButton.setWidth(120); this.getRoot().add(addItemButton, {left: 370, top: 140}); addItemButton.addListener("execute", function() { data.push("Item " + data.length); }, this); var removeItemButton = new qx.ui.form.Button("Remove an item"); removeItemButton.setWidth(120); this.getRoot().add(removeItemButton, {left: 370, top: 175}); removeItemButton.addListener("execute", function() { data.pop(); }, this); var logDataButton = new qx.ui.form.Button("Write data to log"); logDataButton.setWidth(120); this.getRoot().add(logDataButton, {left: 370, top: 210}); logDataButton.addListener("execute", function() { // open the console qx.log.appender.Console.show(); // push the data in the console this.info(data.toString()); }, this); /* *********************************************** * DESCRIPTIONS * ********************************************* */ // List Selection sync description var syncListDescription = new qx.ui.basic.Label(); syncListDescription.setRich(true); syncListDescription.setWidth(200); syncListDescription.setValue( "<b>Multi selection List</b><br/>" + "Bound to the same data and share the selection." ); this.getRoot().add(syncListDescription, {left: 20, top: 10}); // List Selection description var selectionListDescription = new qx.ui.basic.Label(); selectionListDescription.setRich(true); selectionListDescription.setWidth(100); selectionListDescription.setValue( "<b>Selection List</b><br/>" + "Bound to the selection of the list to the left." ); this.getRoot().add(selectionListDescription, {left: 260, top: 10}); // Label Selection description var selectionLabelDescription = new qx.ui.basic.Label(); selectionLabelDescription.setRich(true); selectionLabelDescription.setWidth(100); selectionLabelDescription.setValue( "<b>Selection Label</b><br/>" + "Bound to the selection of the list to the left." ); this.getRoot().add(selectionLabelDescription, {left: 380, top: 10}); } } });