r21065: The framework is complete (yes the gui layout still sucks but that will
authorSimo Sorce <idra@samba.org>
Wed, 31 Jan 2007 00:04:42 +0000 (00:04 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 19:44:26 +0000 (14:44 -0500)
be handled later)
next will be to build out the code to actually commit changes
(This used to be commit f0ddc503820aeec3557fe8d80b31c971fae7cdc1)

webapps/swat/source/class/swat/module/ldbbrowse/Gui.js
webapps/swat/source/class/swat/module/ldbbrowse/LdbModify.js

index b082ec07198f60807c909c7c90f5d063750ffa60..3f9cda00532831f737fb4124c69efb6544d03d6a 100644 (file)
@@ -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)
index 2b5dfc18f6c1f2917c9c62f20d56655eaa9af0fb..16476bf0705a09589d3a7f9ff9c12995a6ca71c3 100644 (file)
@@ -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);
+}