[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