summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--webapps/swat/source/class/swat/module/ldbbrowse/Gui.js2
-rw-r--r--webapps/swat/source/class/swat/module/ldbbrowse/LdbModify.js90
2 files changed, 88 insertions, 4 deletions
diff --git a/webapps/swat/source/class/swat/module/ldbbrowse/Gui.js b/webapps/swat/source/class/swat/module/ldbbrowse/Gui.js
index b082ec0719..3f9cda0053 100644
--- a/webapps/swat/source/class/swat/module/ldbbrowse/Gui.js
+++ b/webapps/swat/source/class/swat/module/ldbbrowse/Gui.js
@@ -449,7 +449,7 @@ qx.Proto._switchToModrecord = function()
this._ldbmod.setDisplay(true);
this._newb.setEnabled(false);
this._modb.setEnabled(false);
- this._ldbmod.initMod(this._table, this._switchToNormal, this);
+ this._ldbmod.initMod(this._table.getTableModel(), this._switchToNormal, this);
}
qx.Proto._displaySearchResults = function(module, rpcRequest)
diff --git a/webapps/swat/source/class/swat/module/ldbbrowse/LdbModify.js b/webapps/swat/source/class/swat/module/ldbbrowse/LdbModify.js
index 2b5dfc18f6..16476bf070 100644
--- a/webapps/swat/source/class/swat/module/ldbbrowse/LdbModify.js
+++ b/webapps/swat/source/class/swat/module/ldbbrowse/LdbModify.js
@@ -126,10 +126,12 @@ qx.Proto.initNew = function(callback, obj) {
this._mainArea.add(hlayout);
+ this._createAttributesArea();
+
return;
}
-qx.Proto.initMod = function(table, callback, obj) {
+qx.Proto.initMod = function(tablemodel, callback, obj) {
this._setExitCallback(callback, obj);
@@ -145,9 +147,14 @@ qx.Proto.initMod = function(table, callback, obj) {
this._mainArea.add(this._dn);
- //TODO: for each entry in the table, add new entries in the object
+ this._createAttributesArea();
- return;
+ // for each entry in the table, add new entries in the object
+ var count = tablemodel.getRowCount();
+ for (var i = 0; i < count; i++) {
+ var row = tablemodel.getRowData(i);
+ this._addNewAttribute(row[0], row[1]);
+ }
}
qx.Proto._setExitCallback = function(vFunction, vObject) {
@@ -195,3 +202,80 @@ qx.Proto._cancelOp = function() {
this._reset();
this._callExitCallback();
}
+
+qx.Proto._addNewAttribute = function(name, value, before) {
+
+ // do not add a new attribute if the name is null
+ if (name == null || name == "") {
+ return;
+ }
+
+ var hlayout = new qx.ui.layout.HorizontalBoxLayout();
+ hlayout.set({ width: "auto", height: "auto", spacing: 10 });
+
+ var rButton = new qx.ui.form.Button("-");
+ rButton.addEventListener("execute", function() {
+ hlayout.setParent(null);
+ });
+
+ var aLabel = new qx.ui.basic.Label(name);
+
+ var aTextField = new qx.ui.form.TextField(value);
+
+ var aButton = new qx.ui.form.Button("+");
+ aButton.addEventListener("execute", function() {
+ this._addNewAttribute(name, null, hlayout);
+ }, this);
+
+ hlayout.add(rButton, aLabel, aTextField, aButton);
+
+ if (before) {
+ this._attrArea.addAfter(hlayout, before);
+ } else {
+ this._attrArea.addBefore(hlayout, this._attrAddButton);
+ }
+}
+
+qx.Proto._createNewAttribute = function() {
+
+ var main = qx.ui.core.ClientDocument.getInstance();
+
+ var amw = new qx.ui.window.Window("New Attribute Name");
+ amw.setSpace(100, 200, 100, 150);
+ amw.setModal(true);
+ amw.setShowMinimize(false);
+ amw.setShowMaximize(false);
+ amw.setShowClose(false);
+ amw.setResizeable(false);
+
+ var hlayout = new qx.ui.layout.HorizontalBoxLayout();
+ hlayout.set({ width: "auto", height: "auto", spacing: 10 });
+
+ attrName = new qx.ui.form.TextField();
+
+ var okButton = new qx.ui.form.Button("OK");
+ okButton.addEventListener("execute", function() {
+ this._addNewAttribute(attrName.getValue());
+ amw.close();
+ }, this);
+
+ hlayout.add(attrName, okButton);
+
+ amw.add(hlayout);
+
+ main.add(amw);
+
+ amw.open();
+}
+
+qx.Proto._createAttributesArea = function() {
+
+ this._attrArea = new qx.ui.layout.VerticalBoxLayout();
+
+ this._attrAddButton = new qx.ui.form.Button("+");
+ this._attrAddButton.addEventListener("execute", this._createNewAttribute, this);
+
+ this._attrArea.add(this._attrAddButton);
+
+ this._mainArea.add(this._attrArea);
+}