+ var commonForm = {pane:this.formPane};
+ this._addFormHeader(commonForm, this.COMMON_FORM_HEADER_LABEL);
+ this._addFormEntry(commonForm, new qx.ui.basic.Label(this.CHOOSE_AGENT_LABEL), this.agentSelector);
+ this._createFormVariableParts();
+ if(!this.parts) return;
+ if(qx.lang.Object.getLength(this.parts) > 1){
+ // Add chooser
+ this.partChooser = new qx.ui.form.SelectBox();
+ for(var key in this.parts){
+ this.partChooser.add(new qx.ui.form.ListItem(this.parts[key].label, null, key));
+ }
+ this._addFormEntry(commonForm, new qx.ui.basic.Label(this.CHOOSE_FORM_PART_LABEL), this.partChooser);
+ this.partChooser.addListener("changeValue", function(ev){
+ this._showSelectedPart(ev.getData());
+ }, this);
+ }
+ this._showSelectedPart(qx.lang.Object.getKeys(this.parts)[0]);
+ },
+
+ /**
+ * Show a form part given its id.
+ * @param partId {String} The part id
+ */
+ _showSelectedPart : function(partId){
+ if(!this.parts) return;
+ if(!this.partsContainer){
+ this.partsContainer = new qx.ui.container.Composite(new qx.ui.layout.Canvas());
+ this.formPane.add(this.partsContainer);
+ }
+ for(var i in this.parts){
+ var formObject = this.parts[i];
+ if(!formObject.added){
+ this.partsContainer.add(formObject.pane, {top:0, left:0});
+ formObject.added = true;
+ }
+ formObject.pane.hide();
+ }
+ if(this.parts[partId]){
+ this.parts[partId].pane.show();
+ }
+ },
+
+ /**
+ * Init a form part : creates a pane, a set of fields, etc.
+ * @param formId {String} A unique ID
+ * @param label {String} A label
+ * @return {Map} The form part.
+ */
+ _initFormPart : function(formId, label){
+ if(!this.parts) this.parts = {};
+ var formObject = {};
+ formObject.hiddenFields = {};
+ formObject.freeFields = [];
+ formObject.fields = {};
+ formObject.id = formId;
+ formObject.label = label;
+ this.parts[formId] = formObject;
+ formObject.pane = new qx.ui.container.Composite(new qx.ui.layout.VBox(5));
+ return formObject;
+ },
+
+ /**
+ * To be overriden by this class children.
+ */
+ _createFormVariableParts : function(){
+ var standard = this._initFormPart("standard", "Canonical");
+ this._createStandardForm(standard);
+ var simple = this._initFormPart("simple", "SLC Sample");
+ this._createSimpleForm(simple);
+ },
+
+ /**
+ * Creates a form for SLC demo
+ * @param formObject {Map} The form part
+ */
+ _createSimpleForm : function(formObject){
+
+ this._addFormInputText(formObject, "ant.file", "File", "Category1/SubCategory2/build.xml");
+ var moreButton = new qx.ui.basic.Image("resource/slc/list-add.png");
+ moreButton.setToolTip(new qx.ui.tooltip.ToolTip("Add a parameter"));
+ moreButton.setCursor("pointer");
+ moreButton.addListener("click", function(){
+ this._addFormInputText(formObject);
+ }, this);
+ this._addFormHeader(formObject, "Add optionnal parameters", moreButton);
+ this._addFormInputText(formObject);
+ this._addFormInputText(formObject);
+
+ },
+
+ /**
+ * Create a canonical form.
+ * @param formObject {Map} The form part
+ */
+ _createStandardForm : function(formObject){
+
+ this._addFormHeader(formObject, "Set Execution Parameters");
+ this._addFormInputText(formObject, "status", "Status", "STARTED");
+ this._addFormInputText(formObject, "host", "Host", "localhost");
+ this._addFormInputText(formObject, "user", "User", "user");