[jboss-svn-commits] JBL Code SVN: r21492 - labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Aug 12 18:48:17 EDT 2008


Author: arhan
Date: 2008-08-12 18:48:16 -0400 (Tue, 12 Aug 2008)
New Revision: 21492

Modified:
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/PropertiesWidget.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/PropertyHolder.java
Log:
GSOC2008: properties editor

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/PropertiesWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/PropertiesWidget.java	2008-08-12 21:46:40 UTC (rev 21491)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/PropertiesWidget.java	2008-08-12 22:48:16 UTC (rev 21492)
@@ -14,15 +14,24 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-import com.gwtext.client.core.NameValuePair;
-import com.gwtext.client.widgets.grid.GridView;
-import com.gwtext.client.widgets.grid.PropertyGridPanel;
+
+import com.gwtext.client.core.EventObject;
+import com.gwtext.client.data.*;
+import com.gwtext.client.widgets.Button;
+import com.gwtext.client.widgets.Panel;
+import com.gwtext.client.widgets.Toolbar;
+import com.gwtext.client.widgets.ToolbarButton;
+import com.gwtext.client.widgets.event.ButtonListenerAdapter;
+import com.gwtext.client.widgets.form.TextField;
+import com.gwtext.client.widgets.grid.ColumnConfig;
+import com.gwtext.client.widgets.grid.ColumnModel;
+import com.gwtext.client.widgets.grid.EditorGridPanel;
+import com.gwtext.client.widgets.grid.GridEditor;
 import org.drools.guvnor.client.packages.AssetAttachmentFileWidget;
 import org.drools.guvnor.client.rpc.RuleAsset;
 
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  * Properties (key/value pairs) editor with a file attachment.
@@ -32,6 +41,7 @@
 public class PropertiesWidget extends AssetAttachmentFileWidget implements SaveEventListener {
 
     PropertiesHolder properties;
+    Store store;
 
     public PropertiesWidget(final RuleAsset asset, final RuleViewer viewer) {
         super(asset, viewer);
@@ -42,40 +52,82 @@
             properties = (PropertiesHolder) asset.content;
         }
 
-        PropertyGridPanel grid = new PropertyGridPanel();
-        grid.setId("props-grid");
-        grid.setNameText("Properties Grid");
-        grid.setWidth(300);
-        grid.setAutoHeight(true);
-        grid.setSorted(false);
+        Panel panel = new Panel();
+        panel.setBorder(false);
+        panel.setPaddings(15);
 
-        GridView view = new GridView();
-        view.setForceFit(true);
-        view.setScrollOffset(2); // the grid will never have scrollbars
-        grid.setView(view);
+        final RecordDef recordDef = new RecordDef(
+                new FieldDef[]{new StringFieldDef("key"), new StringFieldDef("value")}
+        );
 
-        Map<String, String> map = new HashMap<String, String>();
-
+        String[][] data = new String[properties.list.size()][];
+        int dataIndex = 0;
         for (PropertyHolder holder : properties.list) {
-            map.put(holder.name, holder.value);
+            data[dataIndex++] = new String[]{holder.name, holder.value};
         }
 
-        grid.setSource(map);
+        MemoryProxy proxy = new MemoryProxy(data);
+        store = new Store(proxy, new ArrayReader(recordDef));
+        store.load();
 
+        ColumnConfig keyCol = new ColumnConfig("Key?", "key", 100, true, null, "key");
+        keyCol.setEditor(new GridEditor(new TextField()));
+        keyCol.setFixed(false);
+
+        ColumnConfig valueCol = new ColumnConfig("Value?", "value", 100, true, null, "value");
+        valueCol.setEditor(new GridEditor(new TextField()));
+        valueCol.setFixed(false);
+
+        ColumnConfig[] columnConfigs = {keyCol, valueCol};
+
+        ColumnModel columnModel = new ColumnModel(columnConfigs);
+        columnModel.setDefaultSortable(true);
+
+        final EditorGridPanel grid = new EditorGridPanel();
+
+        Toolbar toolbar = new Toolbar();
+        ToolbarButton button = new ToolbarButton("Add ...", new ButtonListenerAdapter() {
+            public void onClick(Button button, EventObject e) {
+                Record pair = recordDef.createRecord(new Object[]{"", ""});
+                grid.stopEditing();
+                store.insert(0, pair);
+                grid.startEditing(0, 0);
+            }
+        });
+        toolbar.addButton(button);
+
+        grid.setStore(store);
+        grid.setColumnModel(columnModel);
+        grid.setWidth(215);
+        grid.setHeight(300);
+        grid.setTitle("Properties");
+        grid.setFrame(true);
+        grid.setClicksToEdit(1);
+        grid.setTopToolbar(toolbar);
+
+        panel.add(grid);
+
         layout.addRow(grid);
     }
 
 
-
     public String getIcon() {
-        return "";
+        return "";       //TODO: set correct icon
     }
 
     public String getOverallStyleName() {
-        return "";
+        return "";       //TODOL set correct style
     }
 
     public void onSave() {
+        final List<PropertyHolder> result = new ArrayList<PropertyHolder>();
+
+        Record[] records = store.getRecords();
+        for (Record record : records) {
+            result.add(new PropertyHolder(record.getAsString("key"), record.getAsString("value")));
+        }
+
+        properties.list = result;
         asset.content = properties;
     }
 

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/PropertyHolder.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/PropertyHolder.java	2008-08-12 21:46:40 UTC (rev 21491)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/PropertyHolder.java	2008-08-12 22:48:16 UTC (rev 21492)
@@ -14,6 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+
 import org.drools.guvnor.client.modeldriven.brl.PortableObject;
 
 /**
@@ -32,4 +33,8 @@
         this.name = name;
         this.value = value;
     }
+
+    public String toString() {
+        return "{" + name + "," + value + "}";
+    }
 }
\ No newline at end of file




More information about the jboss-svn-commits mailing list