diff options
Diffstat (limited to 'webapps')
-rw-r--r-- | webapps/swat/source/class/swat/module/ldbbrowse/Gui.js | 2 | ||||
-rw-r--r-- | webapps/swat/source/class/swat/module/ldbbrowse/LdbModify.js | 90 |
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); +} |