@qooxdoo/framework
Version:
The JS Framework for Coders
161 lines (136 loc) • 4.63 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)
************************************************************************ */
/**
* @lint ignoreDeprecated(alert)
* @ignore(qxl.demobrowser.demo.ui.CustomRenderer)
*/
qx.Class.define("qxl.demobrowser.demo.ui.FormRendererCustom",
{
extend : qx.application.Standalone,
members :
{
main : function()
{
this.base(arguments);
// create the form
var form = new qx.ui.form.Form();
// add the first headline
form.addGroupHeader("Registration");
// add user name
var userName = new qx.ui.form.TextField();
userName.setRequired(true);
form.add(userName, "Name");
// add password
var password = new qx.ui.form.TextField();
password.setRequired(true);
form.add(password, "Password");
// add the second header
form.addGroupHeader("Contact");
// add some additional widgets
form.add(
new qx.ui.form.TextField(), "Email", qx.util.Validate.email(), "email",
null, {placeholder: "abc@def.gh"}
);
form.add(
new qx.ui.form.TextField(), "Phone", null, "phone", null,
{placeholder: "+01 234 56789"}
);
// third group
form.addGroupHeader("Personal Information");
// add some additional widgets
form.add(new qx.ui.form.TextField(), "Country");
form.add(
new qx.ui.form.TextArea(), "Bio", null, "bio", null,
{placeholder: "Please tell us some details about you..."}
);
// send button with validation
var sendButton = new qx.ui.form.Button("Send");
sendButton.addListener("execute", function() {
if (form.validate()) {
alert("send...");
}
}, this);
form.addButton(sendButton);
// reset button
var resetButton = new qx.ui.form.Button("Reset");
resetButton.addListener("execute", function() {
form.reset();
}, this);
form.addButton(resetButton);
// create the form and add it to the document
var formView = new qxl.demobrowser.demo.ui.CustomRenderer(form);
this.getRoot().add(formView, {left: 10, top: 10});
}
}
});
/*
* PLEASE NOTE:
* For demonstration purposes the following class is added to the same file as
* the application class. For a regular qooxdoo application each class must live
* in a file of its own. You may neglect any warnings when generating this demo.
*/
// create the custom renderer which aligns the groups horizontally
qx.Class.define("qxl.demobrowser.demo.ui.CustomRenderer", {
extend : qx.ui.form.renderer.Single,
members : {
__column : 0,
__maxRow : 0,
addItems : function(items, names, title, options) {
var row = 0;
// add the header
if (title != null) {
this._add(
this._createHeader(title), {
row: row, column: this.__column, colSpan: 2
}
);
row++;
}
// add the items
for (var i = 0; i < items.length; i++) {
var label = this._createLabel(names[i], items[i]);
this._add(label, {row: row, column: this.__column});
var item = items[i];
label.setBuddy(item);
if (item instanceof qx.ui.form.RadioGroup) {
item = this._createWidgetForRadioGroup(item);
}
this._add(item, {row: row, column: this.__column + 1});
// use the options
if (options[i] && options[i].placeholder) {
item.setPlaceholder(options[i].placeholder);
}
row++;
}
this.__column += 2;
// save the max row height for the buttons
this.__maxRow < row ? this.__maxRow = row : null;
},
addButton : function(button) {
if (this._buttonRow == null) {
// create button row
this._buttonRow = new qx.ui.container.Composite();
this._buttonRow.setMarginTop(5);
var hbox = new qx.ui.layout.HBox();
hbox.setAlignX("right");
hbox.setSpacing(5);
this._buttonRow.setLayout(hbox);
// add the button row
this._add(this._buttonRow, {
row: this.__maxRow, column: 0, colSpan: this.__column
});
}
// add the button
this._buttonRow.add(button);
}
}
});