@qooxdoo/framework
Version:
The JS Framework for Coders
103 lines (80 loc) • 3.48 kB
JavaScript
/* ************************************************************************
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
*/
qx.Class.define("qxl.demobrowser.demo.data.SelectBox",
{
extend : qx.application.Standalone,
members :
{
main: function()
{
this.base(arguments);
// create a dummy model
var model = new qx.data.Array(["A", "B", "C", "D", "E", "F", "G", "H", "I", "J"]);
// first example, binding a selectbox and sync the selection
var selectBox1 = new qx.ui.form.SelectBox();
this.getRoot().add(selectBox1, {left: 10, top: 110});
// connect the selectbox
var controller1 = new qx.data.controller.List(model, selectBox1);
var selectBox2 = new qx.ui.form.SelectBox();
this.getRoot().add(selectBox2, {left: 150, top: 110});
// connect the selectbox
var controller2 = new qx.data.controller.List(model, selectBox2);
// sync the selection
controller1.setSelection(controller2.getSelection());
// show the selection in a label
var selectionLabel = new qx.ui.basic.Label();
this.getRoot().add(new qx.ui.basic.Label("The selection is: "), {left: 10, top: 140});
this.getRoot().add(selectionLabel, {left: 110, top: 140});
controller1.bind("selection[0]", selectionLabel, "value");
// selection change via textField (read/write)
var selectionText = new qx.ui.form.TextField("A");
selectionText.setLiveUpdate(true);
selectionText.setWidth(150);
this.getRoot().add(selectionText, {left: 290, top: 110});
// textfield --> selection binding
selectionText.bind("value", controller1, "selection[0]");
// selection --> textfield
controller1.bind("selection[0]", selectionText, "value");
// setting the selection without an event but a known value
var setButton = new qx.ui.form.Button("Set Selection to 'C'");
setButton.setWidth(150);
this.getRoot().add(setButton, {left: 290, top: 140});
setButton.addListener("execute", function() {
controller1.getSelection().setItem(0, "C");
}, this);
/* ***********************************************
* DESCRIPTIONS
* ********************************************* */
// SelectBox sync description
var syncBoxDescription = new qx.ui.basic.Label();
syncBoxDescription.setRich(true);
syncBoxDescription.setWidth(240);
syncBoxDescription.setValue(
"<b>Synchronized Selection</b><br/>"
+ "Bound to the same data and share the selection. The label is also bound to the selection."
);
this.getRoot().add(syncBoxDescription, {left: 10, top: 10});
// Controls description
var controlDescription = new qx.ui.basic.Label();
controlDescription.setRich(true);
controlDescription.setWidth(130);
controlDescription.setValue(
"<b>Change Selection</b><br/>"
+ "Type in the textfield or set the selection with the button."
);
this.getRoot().add(controlDescription, {left: 300, top: 10});
}
}
});