[jboss-svn-commits] JBL Code SVN: r33742 - in labs/jbossrules/trunk: drools-factconstraint/src/main/java/org/drools/factconstraints/client/customform and 4 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Jul 5 15:14:49 EDT 2010


Author: eaa
Date: 2010-07-05 15:14:48 -0400 (Mon, 05 Jul 2010)
New Revision: 33742

Added:
   labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/client/customform/
   labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/client/customform/CustomFormConfiguration.java
   labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/client/customform/predefined/
   labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/client/customform/predefined/DefaultCustomFormImplementation.java
   labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/client/helper/CustomFormsContainer.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/CustomFormsEditorPanel.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/FactsConstraintsEditorPanel.java
Modified:
   labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/client/ConstraintConfiguration.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/WorkingSetConfigData.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/RuleViewer.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/WorkingSetEditor.java
Log:
GUVNOR-562: Allow the addition of custom forms for populating constraint's fields in Guided Editor
	- Created CustomFormConfiguration entity in drools-factConstraint and its associated container. 
	- WorkingSetEditor was refactored: each tab has its own class now. Added Custom Form tab.

Modified: labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/client/ConstraintConfiguration.java
===================================================================
--- labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/client/ConstraintConfiguration.java	2010-07-05 14:25:10 UTC (rev 33741)
+++ labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/client/ConstraintConfiguration.java	2010-07-05 19:14:48 UTC (rev 33742)
@@ -9,7 +9,7 @@
  * @author baunax at gmail.com
  */
 public interface ConstraintConfiguration extends Serializable {
-	public String getFactType();
+    public String getFactType();
     public void setFactType(String factType);
     
     public String getFieldName();

Added: labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/client/customform/CustomFormConfiguration.java
===================================================================
--- labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/client/customform/CustomFormConfiguration.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/client/customform/CustomFormConfiguration.java	2010-07-05 19:14:48 UTC (rev 33742)
@@ -0,0 +1,20 @@
+package org.drools.factconstraints.client.customform;
+
+import java.io.Serializable;
+
+/**
+ *
+ * @author esteban
+ */
+public interface CustomFormConfiguration extends Serializable{
+
+    String getFactType();
+    void setFactType(String factType);
+
+    String getFieldName();
+    void setFieldName(String fieldName);
+
+    String getCustomFormURL();
+    void setCustomFormURL(String url);
+
+}

Added: labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/client/customform/predefined/DefaultCustomFormImplementation.java
===================================================================
--- labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/client/customform/predefined/DefaultCustomFormImplementation.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/client/customform/predefined/DefaultCustomFormImplementation.java	2010-07-05 19:14:48 UTC (rev 33742)
@@ -0,0 +1,40 @@
+package org.drools.factconstraints.client.customform.predefined;
+
+import java.io.Serializable;
+import org.drools.factconstraints.client.customform.CustomFormConfiguration;
+
+/**
+ *
+ * @author esteban
+ */
+public class DefaultCustomFormImplementation implements CustomFormConfiguration, Serializable{
+
+    private String factType;
+    private String fieldName;
+    private String url;
+
+    public String getFactType() {
+        return this.factType;
+    }
+
+    public void setFactType(String factType) {
+        this.factType = factType;
+    }
+
+    public String getFieldName() {
+        return this.fieldName;
+    }
+
+    public void setFieldName(String fieldName) {
+        this.fieldName = fieldName;
+    }
+
+    public String getCustomFormURL() {
+        return this.url;
+    }
+
+    public void setCustomFormURL(String url) {
+        this.url = url;
+    }
+
+}

Added: labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/client/helper/CustomFormsContainer.java
===================================================================
--- labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/client/helper/CustomFormsContainer.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-factconstraint/src/main/java/org/drools/factconstraints/client/helper/CustomFormsContainer.java	2010-07-05 19:14:48 UTC (rev 33742)
@@ -0,0 +1,74 @@
+package org.drools.factconstraints.client.helper;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.drools.factconstraints.client.customform.CustomFormConfiguration;
+import org.drools.factconstraints.client.customform.predefined.DefaultCustomFormImplementation;
+
+public class CustomFormsContainer {
+
+    //because a FactType.field can only have one customForm,
+    //this map is: <"FactType.field", CustomForm>
+    private Map<String, CustomFormConfiguration> customForms = new HashMap<String, CustomFormConfiguration>();
+
+    public CustomFormsContainer(CustomFormConfiguration[] customFormsConfigs) {
+        this(Arrays.asList(customFormsConfigs));
+    }
+
+    public CustomFormsContainer(Collection<CustomFormConfiguration> customFormsConfigs) {
+        if (customFormsConfigs != null && !customFormsConfigs.isEmpty()) {
+            for (CustomFormConfiguration c : customFormsConfigs) {
+                putCustomForm(c);
+            }
+        }
+    }
+
+//	public CustomFormsContainer() {
+//
+//	}
+    public void removeCustomForm(CustomFormConfiguration cfc) {
+        this.customForms.remove(this.createMapKey(cfc));
+    }
+
+    /**
+     * If cfc.getCustomFormURL() is empty, the CustomFormConfiguration is removed.
+     * @param cfc
+     */
+    public final void putCustomForm(CustomFormConfiguration cfc) {
+        if (cfc.getCustomFormURL().trim().equals("")){
+            this.customForms.remove(this.createMapKey(cfc));
+        }else{
+            this.customForms.put(this.createMapKey(cfc), cfc);
+        }
+    }
+
+    public CustomFormConfiguration getCustomForm(String factType, String fieldName) {
+        return this.customForms.get(this.createMapKey(factType, fieldName));
+    }
+
+    public List<CustomFormConfiguration> getCustomForms(){
+        return new ArrayList<CustomFormConfiguration>(this.customForms.values());
+    }
+
+    public boolean containsCustomFormFor(String factType, String fieldName){
+        return this.getCustomForm(factType, fieldName) != null;
+    }
+
+    private String createMapKey(String factType, String fieldName){
+        return factType+"."+fieldName;
+    }
+
+    private String createMapKey(CustomFormConfiguration cfc) {
+        return this.createMapKey(cfc.getFactType(), cfc.getFieldName());
+    }
+
+    public static CustomFormConfiguration getEmptyCustomFormConfiguration() {
+        return new DefaultCustomFormImplementation();
+    }
+
+}

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/WorkingSetConfigData.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/WorkingSetConfigData.java	2010-07-05 14:25:10 UTC (rev 33741)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/WorkingSetConfigData.java	2010-07-05 19:14:48 UTC (rev 33742)
@@ -4,6 +4,7 @@
 import java.util.List;
 
 import org.drools.factconstraints.client.ConstraintConfiguration;
+import org.drools.factconstraints.client.customform.CustomFormConfiguration;
 import org.drools.ide.common.client.modeldriven.brl.PortableObject;
 
 /**
@@ -11,11 +12,12 @@
  * @author bauna
  */
 public class WorkingSetConfigData implements PortableObject, Serializable {
-	private static final long serialVersionUID = 501L;
+	private static final long serialVersionUID = 510L;
 
 	public String name;
 	public String description;
 	public List<ConstraintConfiguration> constraints;
+	public List<CustomFormConfiguration> customForms;
 	
 	public String[] validFacts;
 	public WorkingSetConfigData[] workingSets;	

Added: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/CustomFormsEditorPanel.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/CustomFormsEditorPanel.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/CustomFormsEditorPanel.java	2010-07-05 19:14:48 UTC (rev 33742)
@@ -0,0 +1,168 @@
+package org.drools.guvnor.client.ruleeditor;
+
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.event.dom.client.ChangeEvent;
+import com.google.gwt.event.dom.client.ChangeHandler;
+import com.google.gwt.event.dom.client.ClickEvent;
+import com.google.gwt.event.dom.client.ClickHandler;
+import com.google.gwt.user.client.ui.Button;
+import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.FlexTable;
+import com.google.gwt.user.client.ui.HorizontalPanel;
+import com.google.gwt.user.client.ui.ListBox;
+import com.google.gwt.user.client.ui.TextBox;
+import com.google.gwt.user.client.ui.VerticalPanel;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Map;
+import org.drools.factconstraints.client.ConstraintConfiguration;
+import org.drools.factconstraints.client.customform.CustomFormConfiguration;
+import org.drools.factconstraints.client.helper.CustomFormsContainer;
+import org.drools.guvnor.client.common.SmallLabel;
+import org.drools.guvnor.client.messages.Constants;
+import org.drools.guvnor.client.packages.SuggestionCompletionCache;
+import org.drools.guvnor.client.rpc.RuleAsset;
+import org.drools.guvnor.client.rpc.WorkingSetConfigData;
+import org.drools.ide.common.client.modeldriven.SuggestionCompletionEngine;
+
+/**
+ *
+ * @author esteban
+ */
+public class CustomFormsEditorPanel extends Composite {
+    private Constants constants = GWT.create(Constants.class);
+    private ListBox factsCombo = new ListBox(false);
+    private ListBox fieldsCombo = new ListBox(false);
+    private TextBox customFormURL = new TextBox();
+    private boolean validFactsChanged = true;
+    private Map<String, ConstraintConfiguration> contraintsMap = new HashMap<String, ConstraintConfiguration>();
+    private final RuleAsset workingSet;
+    private final WorkingSetEditor workingSetEditor;
+
+    public CustomFormsEditorPanel(final WorkingSetEditor workingSetEditor) {
+
+        this.workingSetEditor = workingSetEditor;
+
+        this.workingSet = workingSetEditor.getWorkingSet();
+
+        factsCombo.setVisibleItemCount(1);
+        fieldsCombo.setVisibleItemCount(1);
+        customFormURL.setWidth("400px");
+        customFormURL.setTitle("Leave it blank if you want to remove the Custom Form URL");
+
+        factsCombo.addChangeHandler(new ChangeHandler() {
+            public void onChange(ChangeEvent event) {
+                fillSelectedFactFields();
+            }
+        });
+
+        fieldsCombo.addChangeHandler(new ChangeHandler() {
+            public void onChange(ChangeEvent event) {
+                fillFieldConstrains();
+            }
+        });
+
+        final FlexTable table = new FlexTable();
+
+        VerticalPanel vp = new VerticalPanel();
+        vp.add(new SmallLabel(constants.FactTypes()));
+        vp.add(factsCombo);
+        table.setWidget(0, 0, vp);
+
+        vp = new VerticalPanel();
+        vp.add(new SmallLabel(constants.Field()));
+        vp.add(fieldsCombo);
+        table.setWidget(1, 0, vp);
+
+        vp = new VerticalPanel();
+        vp.add(new SmallLabel("Custom Form URL:")); //TODO i18n
+
+        Button btnUpdateURL = new Button(constants.OK(), new ClickHandler() {
+            public void onClick(ClickEvent event) {
+                if (((WorkingSetConfigData) workingSet.content).customForms == null) {
+                    ((WorkingSetConfigData) workingSet.content).customForms = new ArrayList<CustomFormConfiguration>();
+                }
+
+                String factType = factsCombo.getItemText(factsCombo.getSelectedIndex());
+                String fieldName = fieldsCombo.getItemText(fieldsCombo.getSelectedIndex());
+                
+                CustomFormConfiguration newCustomFormConfiguration = CustomFormsContainer.getEmptyCustomFormConfiguration();
+                newCustomFormConfiguration.setFactType(factType);
+                newCustomFormConfiguration.setFieldName(fieldName);
+                newCustomFormConfiguration.setCustomFormURL(customFormURL.getText());
+                
+                workingSetEditor.getCustomFormsContainer().putCustomForm(newCustomFormConfiguration);
+                ((WorkingSetConfigData) workingSet.content).customForms = workingSetEditor.getCustomFormsContainer().getCustomForms();
+            }
+        });
+
+        HorizontalPanel hp = new HorizontalPanel();
+        hp.add(customFormURL);
+        hp.add(btnUpdateURL);
+
+        vp.add(hp);
+        table.setWidget(2, 0, vp);
+
+
+        fillSelectedFacts();
+        fillSelectedFactFields();
+        fillFieldConstrains();
+
+        this.initWidget(table);
+    }
+
+    protected final void fillSelectedFacts() {
+        if (validFactsChanged) {
+            String s = factsCombo.getSelectedIndex() != -1 ? factsCombo.getItemText(factsCombo.getSelectedIndex()) : "";
+            factsCombo.clear();
+            validFactsChanged = false;
+            for (int i = 0; i < workingSetEditor.getValidFactsListBox().getItemCount(); i++) {
+                String itemText = workingSetEditor.getValidFactsListBox().getItemText(i);
+                factsCombo.addItem(itemText);
+                if (s.equals(itemText)) {
+                    factsCombo.setSelectedIndex(i);
+                }
+            }
+            if (factsCombo.getSelectedIndex() == -1 && factsCombo.getItemCount() > 0) {
+                factsCombo.setSelectedIndex(0);
+            }
+            fillSelectedFactFields();
+        }
+    }
+
+    private void fillSelectedFactFields() {
+        if (factsCombo.getSelectedIndex() != -1) {
+            String fact = factsCombo.getItemText(factsCombo.getSelectedIndex());
+            fieldsCombo.clear();
+            for (String field : getCompletionEngine().getFieldCompletions(fact)) {
+                fieldsCombo.addItem(field);
+            }
+        }
+        if (fieldsCombo.getSelectedIndex() == -1 && fieldsCombo.getItemCount() > 0) {
+            fieldsCombo.setSelectedIndex(0);
+        }
+        fillFieldConstrains();
+    }
+
+    private void fillFieldConstrains() {
+        if (fieldsCombo.getSelectedIndex() != -1) {
+            String fieldName = fieldsCombo.getItemText(fieldsCombo.getSelectedIndex());
+            String factField = factsCombo.getItemText(factsCombo.getSelectedIndex());
+            contraintsMap.clear();
+
+            if (this.workingSetEditor.getCustomFormsContainer().containsCustomFormFor(factField, fieldName)){
+                this.customFormURL.setText(this.workingSetEditor.getCustomFormsContainer().getCustomForm(factField, fieldName).getCustomFormURL());
+            }else{
+                this.customFormURL.setText("");
+            }
+        }
+    }
+
+    private SuggestionCompletionEngine getCompletionEngine() {
+        return SuggestionCompletionCache.getInstance().getEngineFromCache(workingSet.metaData.packageName);
+    }
+
+    public void notifyValidFactsChanged(){
+        this.validFactsChanged = true;
+    }
+}

Added: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/FactsConstraintsEditorPanel.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/FactsConstraintsEditorPanel.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/FactsConstraintsEditorPanel.java	2010-07-05 19:14:48 UTC (rev 33742)
@@ -0,0 +1,259 @@
+package org.drools.guvnor.client.ruleeditor;
+
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.event.dom.client.ChangeEvent;
+import com.google.gwt.event.dom.client.ChangeHandler;
+import com.google.gwt.event.dom.client.ClickEvent;
+import com.google.gwt.event.dom.client.ClickHandler;
+import com.google.gwt.user.client.ui.Button;
+import com.google.gwt.user.client.ui.ChangeListener;
+import com.google.gwt.user.client.ui.ClickListener;
+import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.FlexTable;
+import com.google.gwt.user.client.ui.HorizontalPanel;
+import com.google.gwt.user.client.ui.Image;
+import com.google.gwt.user.client.ui.ListBox;
+import com.google.gwt.user.client.ui.VerticalPanel;
+import com.google.gwt.user.client.ui.Widget;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import org.drools.factconstraints.client.ConstraintConfiguration;
+import org.drools.factconstraints.client.helper.ConstraintsContainer;
+import org.drools.guvnor.client.common.FormStylePopup;
+import org.drools.guvnor.client.common.ImageButton;
+import org.drools.guvnor.client.common.SmallLabel;
+import org.drools.guvnor.client.messages.Constants;
+import org.drools.guvnor.client.packages.SuggestionCompletionCache;
+import org.drools.guvnor.client.rpc.RuleAsset;
+import org.drools.guvnor.client.rpc.WorkingSetConfigData;
+import org.drools.ide.common.client.modeldriven.SuggestionCompletionEngine;
+
+/**
+ *
+ * @author esteban
+ */
+public class FactsConstraintsEditorPanel extends Composite {
+    private static int idGenerator = 0;
+    private Constants constants = GWT.create(Constants.class);
+    private ListBox factsCombo = new ListBox(false);
+    private ListBox fieldsCombo = new ListBox(false);
+    private ListBox constraintsCombo = new ListBox(false);
+    private VerticalPanel vpConstraintConf = new VerticalPanel();
+    private boolean validFactsChanged = true;
+    private Map<String, ConstraintConfiguration> contraintsMap = new HashMap<String, ConstraintConfiguration>();
+    private final RuleAsset workingSet;
+    private final WorkingSetEditor workingSetEditor;
+
+    public FactsConstraintsEditorPanel(WorkingSetEditor workingSetEditor) {
+
+        this.workingSetEditor = workingSetEditor;
+
+        this.workingSet = workingSetEditor.getWorkingSet();
+
+        factsCombo.setVisibleItemCount(1);
+        fieldsCombo.setVisibleItemCount(1);
+        constraintsCombo.setVisibleItemCount(5);
+
+        factsCombo.addChangeHandler(new ChangeHandler() {
+            public void onChange(ChangeEvent event) {
+                fillSelectedFactFields();
+            }
+        });
+
+        fieldsCombo.addChangeHandler(new ChangeHandler() {
+            public void onChange(ChangeEvent event) {
+                fillFieldConstrains();
+            }
+        });
+
+        Image addNewConstraint = new ImageButton("images/new_item.gif"); // NON-NLS
+        addNewConstraint.setTitle(constants.AddNewConstraint());
+
+        addNewConstraint.addClickHandler(new ClickHandler() {
+            public void onClick(ClickEvent event) {
+                showNewConstrainPop();
+            }
+        });
+
+        Image removeConstraint = new Image("images/trash.gif"); //NON-NLS
+        removeConstraint.setTitle(constants.removeConstraint());
+        removeConstraint.addClickHandler(new ClickHandler() {
+            public void onClick(ClickEvent event) {
+                removeConstraint();
+            }
+        });
+
+        final FlexTable table = new FlexTable();
+
+        VerticalPanel vp = new VerticalPanel();
+        vp.add(new SmallLabel(constants.FactTypes()));
+        vp.add(factsCombo);
+        table.setWidget(0, 0, vp);
+
+        vp = new VerticalPanel();
+        vp.add(new SmallLabel(constants.Field()));
+        vp.add(fieldsCombo);
+        table.setWidget(1, 0, vp);
+
+        vp = new VerticalPanel();
+        HorizontalPanel hp = new HorizontalPanel();
+        vp.add(new SmallLabel("Constraints")); //TODO i18n
+        hp.add(constraintsCombo);
+
+        VerticalPanel btnPanel = new VerticalPanel();
+        btnPanel.add(addNewConstraint);
+        btnPanel.add(removeConstraint);
+        hp.add(btnPanel);
+        vp.add(hp);
+        table.setWidget(2, 0, vp);
+        table.getFlexCellFormatter().setRowSpan(2, 0, 3);
+        constraintsCombo.addChangeHandler(new ChangeHandler() {
+            public void onChange(ChangeEvent event) {
+                showConstraintConfig();
+            }
+        });
+
+        vpConstraintConf.add(new SmallLabel("Contraints Parameters")); //TODO i18n
+        vpConstraintConf.add(new SmallLabel(""));
+        table.setWidget(0, 1, vpConstraintConf);
+        table.getFlexCellFormatter().setRowSpan(0, 1, 5);
+
+        fillSelectedFacts();
+        fillSelectedFactFields();
+        fillFieldConstrains();
+        showConstraintConfig();
+
+        this.initWidget(table);
+    }
+
+    protected final void fillSelectedFacts() {
+        if (validFactsChanged) {
+            String s = factsCombo.getSelectedIndex() != -1 ? factsCombo.getItemText(factsCombo.getSelectedIndex()) : "";
+            factsCombo.clear();
+            validFactsChanged = false;
+            for (int i = 0; i < workingSetEditor.getValidFactsListBox().getItemCount(); i++) {
+                String itemText = workingSetEditor.getValidFactsListBox().getItemText(i);
+                factsCombo.addItem(itemText);
+                if (s.equals(itemText)) {
+                    factsCombo.setSelectedIndex(i);
+                }
+            }
+            if (factsCombo.getSelectedIndex() == -1 && factsCombo.getItemCount() > 0) {
+                factsCombo.setSelectedIndex(0);
+            }
+            fillSelectedFactFields();
+        }
+    }
+
+    private void fillSelectedFactFields() {
+        if (factsCombo.getSelectedIndex() != -1) {
+            String fact = factsCombo.getItemText(factsCombo.getSelectedIndex());
+            fieldsCombo.clear();
+            for (String field : getCompletionEngine().getFieldCompletions(fact)) {
+                fieldsCombo.addItem(field);
+            }
+        }
+        if (fieldsCombo.getSelectedIndex() == -1 && fieldsCombo.getItemCount() > 0) {
+            fieldsCombo.setSelectedIndex(0);
+        }
+        fillFieldConstrains();
+    }
+
+    private void fillFieldConstrains() {
+        if (fieldsCombo.getSelectedIndex() != -1) {
+            String fieldName = fieldsCombo.getItemText(fieldsCombo.getSelectedIndex());
+            String factField = factsCombo.getItemText(factsCombo.getSelectedIndex());
+            constraintsCombo.clear();
+            contraintsMap.clear();
+            for (ConstraintConfiguration c : this.workingSetEditor.getConstraintsConstrainer().getConstraints(factField, fieldName)) {
+                constraintsCombo.addItem(c.getConstraintName(), addContrainsMap(c));
+            }
+            vpConstraintConf.remove(vpConstraintConf.getWidgetCount() - 1);
+            vpConstraintConf.add(new SmallLabel());
+        }
+        showConstraintConfig();
+    }
+
+    synchronized private String addContrainsMap(ConstraintConfiguration c) {
+        String constraintId = String.valueOf(idGenerator++);
+        contraintsMap.put(constraintId, c);
+        return constraintId;
+    }
+
+    protected void removeConstraint() {
+        if (constraintsCombo.getSelectedIndex() != -1) {
+            ConstraintConfiguration c = contraintsMap.get(constraintsCombo.getValue(constraintsCombo.getSelectedIndex()));
+            ((WorkingSetConfigData) workingSet.content).constraints = this.workingSetEditor.getConstraintsConstrainer().removeConstraint(c);
+        }
+        fillFieldConstrains();
+    }
+
+    private void showConstraintConfig() {
+        if (constraintsCombo.getItemCount() == 0) {
+            vpConstraintConf.remove(vpConstraintConf.getWidgetCount() - 1);
+            vpConstraintConf.add(new SmallLabel());
+            return;
+        }
+        if (constraintsCombo.getSelectedIndex() != -1) {
+            ConstraintConfiguration c = contraintsMap.get(constraintsCombo.getValue(constraintsCombo.getSelectedIndex()));
+            ConstraintEditor editor = new ConstraintEditor(c);
+            vpConstraintConf.remove(vpConstraintConf.getWidgetCount() - 1);
+            vpConstraintConf.add(editor);
+        }
+    }
+
+    private void showNewConstrainPop() {
+        final FormStylePopup pop = new FormStylePopup("images/config.png", constants.AddNewConstraint()); //NON-NLS
+        final Button addbutton = new Button(constants.OK());
+        final ListBox consDefsCombo = new ListBox(false);
+
+        consDefsCombo.setVisibleItemCount(5);
+
+        addbutton.setTitle(constants.AddNewConstraint());
+
+        List<String> names = new ArrayList<String>(ConstraintsContainer.getAllConfigurations().keySet());
+        Collections.sort(names);
+        for (String name : names) {
+            consDefsCombo.addItem(name);
+        }
+
+        addbutton.addClickHandler(new ClickHandler() {
+
+            public void onClick(ClickEvent event) {
+                String name = consDefsCombo.getItemText(consDefsCombo.getSelectedIndex());
+                ConstraintConfiguration config = ConstraintsContainer.getEmptyConfiguration(name);
+                if (config != null) {
+
+                    String factName = factsCombo.getItemText(factsCombo.getSelectedIndex());
+                    String fieldName = fieldsCombo.getItemText(fieldsCombo.getSelectedIndex());
+                    config.setFactType(factName);
+                    config.setFieldName(fieldName);
+                    if (((WorkingSetConfigData) workingSet.content).constraints == null) {
+                        ((WorkingSetConfigData) workingSet.content).constraints = new ArrayList<ConstraintConfiguration>();
+                    }
+                    ((WorkingSetConfigData) workingSet.content).constraints.add(config);
+                    constraintsCombo.addItem(config.getConstraintName(), addContrainsMap(config));
+                    workingSetEditor.getConstraintsConstrainer().addConstraint(config);
+
+                }
+                pop.hide();
+            }
+        });
+
+        pop.addAttribute(constants.WillExtendTheFollowingRuleCalled(), consDefsCombo);
+        pop.addAttribute("", addbutton);
+
+        pop.show();
+    }
+
+    private SuggestionCompletionEngine getCompletionEngine() {
+        return SuggestionCompletionCache.getInstance().getEngineFromCache(workingSet.metaData.packageName);
+    }
+
+    public void notifyValidFactsChanged(){
+        this.validFactsChanged = true;
+    }
+}

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/RuleViewer.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/RuleViewer.java	2010-07-05 14:25:10 UTC (rev 33741)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/RuleViewer.java	2010-07-05 19:14:48 UTC (rev 33742)
@@ -38,6 +38,7 @@
 import com.google.gwt.user.client.ui.HTML;
 import com.google.gwt.user.client.ui.HasHorizontalAlignment;
 import com.google.gwt.user.client.ui.HorizontalPanel;
+import com.google.gwt.user.client.ui.ScrollPanel;
 import com.google.gwt.user.client.ui.TextBox;
 import com.google.gwt.user.client.ui.VerticalPanel;
 import com.google.gwt.user.client.ui.Widget;
@@ -194,21 +195,20 @@
         doMetaWidget();
 
         hsp = new HorizontalPanel();
-
+        hsp.setHeight("100%");
+        hsp.setWidth("100%");
         layout.add( hsp );
+        layout.setCellHeight(hsp, "100%");
 
         //the document widget
         doco = new RuleDocumentWidget( asset );
         doco.setVisible( docoVisible );
 
         VerticalPanel vert = new VerticalPanel();
-        vert.add( editor );
-        editor.setHeight( "100%" );
-        //vert.add( doco );
-
         vert.setWidth( "100%" );
         vert.setHeight( "100%" );
 
+        vert.add( editor );
         hsp.add( vert );
 
         //hsp.addStyleName("HorizontalSplitPanel");
@@ -218,8 +218,6 @@
         hsp.setCellWidth( metaWidget,
                           "25%" );
 
-        //hsp.setSplitPosition("80%");
-        hsp.setHeight( "100%" );
 
         layout.add( doco );
     }

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/WorkingSetEditor.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/WorkingSetEditor.java	2010-07-05 14:25:10 UTC (rev 33741)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/WorkingSetEditor.java	2010-07-05 19:14:48 UTC (rev 33742)
@@ -2,388 +2,199 @@
 
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
-import java.util.Map;
 import java.util.Set;
 
-import org.drools.factconstraints.client.ConstraintConfiguration;
 import org.drools.factconstraints.client.helper.ConstraintsContainer;
 import org.drools.guvnor.client.common.AssetFormats;
-import org.drools.guvnor.client.common.FormStylePopup;
-import org.drools.guvnor.client.common.ImageButton;
 import org.drools.guvnor.client.common.SmallLabel;
-import org.drools.guvnor.client.messages.Constants;
 import org.drools.guvnor.client.packages.SuggestionCompletionCache;
 import org.drools.guvnor.client.rpc.RuleAsset;
 import org.drools.guvnor.client.rpc.WorkingSetConfigData;
 import org.drools.ide.common.client.modeldriven.SuggestionCompletionEngine;
 
-import com.google.gwt.core.client.GWT;
 import com.google.gwt.user.client.ui.Button;
-import com.google.gwt.user.client.ui.ChangeListener;
 import com.google.gwt.user.client.ui.ClickListener;
 import com.google.gwt.user.client.ui.Composite;
-import com.google.gwt.user.client.ui.FlexTable;
 import com.google.gwt.user.client.ui.Grid;
-import com.google.gwt.user.client.ui.HorizontalPanel;
-import com.google.gwt.user.client.ui.Image;
 import com.google.gwt.user.client.ui.ListBox;
-import com.google.gwt.user.client.ui.VerticalPanel;
 import com.google.gwt.user.client.ui.Widget;
 import com.gwtext.client.widgets.Component;
 import com.gwtext.client.widgets.Panel;
 import com.gwtext.client.widgets.TabPanel;
 import com.gwtext.client.widgets.event.PanelListenerAdapter;
+import org.drools.factconstraints.client.customform.CustomFormConfiguration;
+import org.drools.factconstraints.client.helper.CustomFormsContainer;
 
 public class WorkingSetEditor extends Composite {
-	private static int idGenerator = 0;
-	private Constants constants =  GWT.create(Constants.class);
-	private RuleAsset workingSet;
-	
-	private ListBox availFacts = new ListBox(true);
-	private ListBox validFacts = new ListBox(true);
-	private ListBox factsCombo = new ListBox(false);
-	private boolean validFactsChanged = true;
-	private SuggestionCompletionEngine sce;
-	private ConstraintsContainer cc;
 
-	private ListBox fieldsCombo = new ListBox(false);
-	private ListBox constraintsCombo = new ListBox(false);
-	private VerticalPanel vpConstraintConf = new VerticalPanel();
-	private Map<String, ConstraintConfiguration> contraintsMap = new HashMap<String, ConstraintConfiguration>();
-	
-	public WorkingSetEditor(RuleAsset asset) {
-		if (!AssetFormats.WORKING_SET.equals(asset.metaData.format)) {
-			throw new IllegalArgumentException("asset must a be a workingset not a: " + asset.metaData.format);
-		}
-		workingSet = asset;
-		sce = SuggestionCompletionCache.getInstance().getEngineFromCache(asset.metaData.packageName);
-		WorkingSetConfigData wsData = (WorkingSetConfigData) workingSet.content;
-		cc = new ConstraintsContainer(wsData.constraints);
-		refreshWidgets();
-		setWidth( "100%" );
-	}
-	
-	private void refreshWidgets() {
+    private RuleAsset workingSet;
+    private ListBox availFacts = new ListBox(true);
+    private ListBox validFacts = new ListBox(true);
+    private ConstraintsContainer cc;
+    private CustomFormsContainer cfc;
+
+    private FactsConstraintsEditorPanel factsConstraintsgEditorPanel;
+    private CustomFormsEditorPanel customFormsEditorPanel;
+
+    public WorkingSetEditor(RuleAsset asset) {
+        if (!AssetFormats.WORKING_SET.equals(asset.metaData.format)) {
+            throw new IllegalArgumentException("asset must a be a workingset not a: " + asset.metaData.format);
+        }
+        workingSet = asset;
         WorkingSetConfigData wsData = (WorkingSetConfigData) workingSet.content;
-		
-		TabPanel tPanel = new TabPanel();
-		tPanel.setWidth(800);
-		Panel pnl = new Panel();
+        cc = new ConstraintsContainer(wsData.constraints);
+        cfc = new CustomFormsContainer(wsData.customForms);
+        refreshWidgets();
+        setWidth("100%");
+
+    }
+
+    private void refreshWidgets() {
+        WorkingSetConfigData wsData = (WorkingSetConfigData) workingSet.content;
+
+        TabPanel tPanel = new TabPanel();
+        tPanel.setWidth(800);
+        Panel pnl = new Panel();
 //        pnl.setAutoWidth(true);
         pnl.setClosable(false);
         pnl.setTitle("WS Definition"); //TODO {bauna} i18n
 //        pnl.setAutoHeight(true);
         pnl.add(buildDoubleList(wsData));
-		tPanel.add(pnl);
-		
-		pnl = new Panel();
+        tPanel.add(pnl);
+
+        pnl = new Panel();
 //        pnl.setAutoWidth(true);
         pnl.setClosable(false);
         pnl.setTitle("WS Constraints"); //TODO {bauna} i18n
 //        pnl.setAutoHeight(true);
-        pnl.add(buildFactsConstraintsEditor(tPanel));
-		tPanel.add(pnl);
-		
-		tPanel.setActiveTab(0);
-		initWidget(tPanel);
-	}
+        this.factsConstraintsgEditorPanel = new FactsConstraintsEditorPanel(this);
+        pnl.add(this.factsConstraintsgEditorPanel);
+        tPanel.add(pnl);
 
-	private Widget buildFactsConstraintsEditor(TabPanel tPanel) {
-		factsCombo.setVisibleItemCount(1);
-		fieldsCombo.setVisibleItemCount(1);
-		constraintsCombo.setVisibleItemCount(5);
-		
-		tPanel.addListener(new PanelListenerAdapter() {
-			@Override
-			public boolean doBeforeShow(Component component) {
-				fillSelectedFacts();
-				return true;
-			}
-		});
-		
-		factsCombo.addChangeListener(new ChangeListener() {
-			public void onChange(Widget sender) {
-				fillSelectedFactFields();
-			}
-		});
-		
-		fieldsCombo.addChangeListener(new ChangeListener() {
-			public void onChange(Widget sender) {
-				fillFieldConstrains();
-			}
-		});
-		
-		Image addNewConstraint = new ImageButton("images/new_item.gif"); // NON-NLS
-		addNewConstraint.setTitle(constants.AddNewConstraint());
+        pnl = new Panel();
+//        pnl.setAutoWidth(true);
+        pnl.setClosable(false);
+        pnl.setTitle("WS Custom Forms"); //TODO {bauna} i18n
+//        pnl.setAutoHeight(true);
+        this.customFormsEditorPanel = new CustomFormsEditorPanel(this);
+        pnl.add(this.customFormsEditorPanel);
+        tPanel.add(pnl);
 
-		addNewConstraint.addClickListener(new ClickListener() {
-			public void onClick(Widget w) {
-				showNewConstrainPop();
-			}
-		});
-		
-        Image removeConstraint = new Image( "images/trash.gif" ); //NON-NLS
-        removeConstraint.setTitle(constants.removeConstraint());
-        removeConstraint.addClickListener(new ClickListener() {
-			public void onClick(Widget arg0) {
-				removeConstraint();
-			}
-		});
-        
-        
-        final FlexTable table = new FlexTable();
-        
-		VerticalPanel vp = new VerticalPanel();
-		vp.add(new SmallLabel(constants.FactTypes()));
-		vp.add(factsCombo);
-		table.setWidget(0, 0, vp);
-		
-		vp = new VerticalPanel();
-		vp.add(new SmallLabel(constants.Field()));
-		vp.add(fieldsCombo);
-		table.setWidget(1, 0, vp);
-		
-		vp = new VerticalPanel();
-		HorizontalPanel hp = new HorizontalPanel();
-		vp.add(new SmallLabel("Constraints")); //TODO i18n
-		hp.add(constraintsCombo);
-		
-		VerticalPanel btnPanel = new VerticalPanel();
-		btnPanel.add(addNewConstraint);
-		btnPanel.add(removeConstraint);
-		hp.add(btnPanel);
-		vp.add(hp);
-		table.setWidget(2, 0, vp);
-		table.getFlexCellFormatter().setRowSpan(2, 0, 3);
-		
-		constraintsCombo.addChangeListener(new ChangeListener() {
-			public void onChange(Widget sender) {
-				showConstraintConfig();
-			}
-		});
-		
-		vpConstraintConf.add(new SmallLabel("Contraints Parameters")); //TODO i18n
-		vpConstraintConf.add(new SmallLabel(""));
-		table.setWidget(0, 1, vpConstraintConf);
-		table.getFlexCellFormatter().setRowSpan(0, 1, 5);
-	
-		fillSelectedFacts();
-		fillSelectedFactFields();
-		fillFieldConstrains();
-		showConstraintConfig();
-		return table;
-	}
+        tPanel.addListener(new PanelListenerAdapter() {
+            @Override
+            public boolean doBeforeShow(Component component) {
+                factsConstraintsgEditorPanel.fillSelectedFacts();
+                customFormsEditorPanel.fillSelectedFacts();
+                return true;
+            }
+        });
 
-	protected void removeConstraint() {
-		if (constraintsCombo.getSelectedIndex() != -1) {
-			ConstraintConfiguration c = contraintsMap.get(constraintsCombo.getValue(constraintsCombo.getSelectedIndex()));
-			((WorkingSetConfigData) workingSet.content).constraints = getConstraintsConstrainer().removeConstraint(c);
-		}
-		fillFieldConstrains();
-	}
 
-	private void showConstraintConfig() {
-		if (constraintsCombo.getItemCount() == 0) {
-			vpConstraintConf.remove(vpConstraintConf.getWidgetCount() - 1);
-			vpConstraintConf.add(new SmallLabel());
-			return;
-		}
-		if (constraintsCombo.getSelectedIndex() != -1) {
-			ConstraintConfiguration c = contraintsMap.get(constraintsCombo.getValue(constraintsCombo.getSelectedIndex()));
-			ConstraintEditor editor = new ConstraintEditor(c);
-			vpConstraintConf.remove(vpConstraintConf.getWidgetCount() - 1);
-			vpConstraintConf.add(editor);
-		}
-	}
 
-	private void showNewConstrainPop() {
-        final FormStylePopup pop = new FormStylePopup("images/config.png", constants.AddNewConstraint()); //NON-NLS
-        final Button addbutton = new Button(constants.OK());
-        final ListBox consDefsCombo = new ListBox(false);
+        tPanel.setActiveTab(0);
+        initWidget(tPanel);
+    }
 
-        consDefsCombo.setVisibleItemCount(5);
+    private Grid buildDoubleList(WorkingSetConfigData wsData) {
+        Grid grid = new Grid(2, 3);
 
-        addbutton.setTitle(constants.AddNewConstraint());
-        
-        List<String> names = new ArrayList<String>(ConstraintsContainer.getAllConfigurations().keySet());
-        Collections.sort(names);
-        for (String name : names) {
-        	consDefsCombo.addItem(name);	
-		}
-        
-        addbutton.addClickListener( new ClickListener() {
-            public void onClick(Widget w) {
-            	String name = consDefsCombo.getItemText(consDefsCombo.getSelectedIndex());
-            	ConstraintConfiguration config = ConstraintsContainer.getEmptyConfiguration(name);
-            	if (config != null) {
-            		
-            		String factName = factsCombo.getItemText(factsCombo.getSelectedIndex());
-            		String fieldName = fieldsCombo.getItemText(fieldsCombo.getSelectedIndex());
-            		config.setFactType(factName);
-            		config.setFieldName(fieldName);
-            		if (((WorkingSetConfigData) workingSet.content).constraints == null) {
-            			((WorkingSetConfigData) workingSet.content).constraints = new ArrayList<ConstraintConfiguration>();
-            		}
-            		((WorkingSetConfigData) workingSet.content).constraints.add(config);
-            		constraintsCombo.addItem(config.getConstraintName(), addContrainsMap(config));
-            		getConstraintsConstrainer().addConstraint(config);
-            		
-            	}
-            	pop.hide();
+        SuggestionCompletionEngine sce = SuggestionCompletionCache.getInstance().getEngineFromCache(workingSet.metaData.packageName);
+        boolean filteringFact = sce.isFilteringFacts();
+        sce.setFilteringFacts(false);
 
+        try {
+            Set<String> elem = new HashSet<String>();
+
+            availFacts.setVisibleItemCount(10);
+            validFacts.setVisibleItemCount(10);
+
+            if (wsData.validFacts != null) {
+                elem.addAll(Arrays.asList(wsData.validFacts));
+                for (String factName : wsData.validFacts) {
+                    validFacts.addItem(factName);
+                }
             }
-        });
 
-        pop.addAttribute(constants.WillExtendTheFollowingRuleCalled(), consDefsCombo );
-        pop.addAttribute("", addbutton);
+            for (String factName : sce.getFactTypes()) {
+                if (!elem.contains(factName)) {
+                    availFacts.addItem(factName);
+                }
+            }
 
-        pop.show();
-	}
+            Grid btnsPanel = new Grid(2, 1);
 
-	private void fillSelectedFacts() {
-		if (validFactsChanged) {
-			String s = factsCombo.getSelectedIndex() != -1 ? factsCombo.getItemText(factsCombo.getSelectedIndex()) : "";
-			factsCombo.clear();
-			validFactsChanged = false;
-			for (int i = 0; i < validFacts.getItemCount(); i++) {
-				String itemText = validFacts.getItemText(i);
-				factsCombo.addItem(itemText);
-				if (s.equals(itemText)) {
-					factsCombo.setSelectedIndex(i);
-				}
-			}
-			if (factsCombo.getSelectedIndex() == -1 && factsCombo.getItemCount() > 0) {
-				factsCombo.setSelectedIndex(0);
-			}
-			fillSelectedFactFields();
-		}
-	}
+            btnsPanel.setWidget(0, 0, new Button(">", new ClickListener() {
 
-	private void fillSelectedFactFields() {
-		if (factsCombo.getSelectedIndex() != -1) {
-			String fact = factsCombo.getItemText(factsCombo.getSelectedIndex());
-			fieldsCombo.clear();
-			for(String field : getCompletionEngine().getFieldCompletions(fact)) {
-				fieldsCombo.addItem(field);
-			}
-		}
-		if (fieldsCombo.getSelectedIndex() == -1 && fieldsCombo.getItemCount() > 0) {
-			fieldsCombo.setSelectedIndex(0);
-		}
-		fillFieldConstrains();
-	}
+                public void onClick(Widget sender) {
+                    copySelected(availFacts, validFacts);
+                    updateAsset(validFacts);
+                    factsConstraintsgEditorPanel.fillSelectedFacts();
+                    customFormsEditorPanel.fillSelectedFacts();
+                }
+            }));
 
-	private void fillFieldConstrains() {
-		if (fieldsCombo.getSelectedIndex() != -1) {
-			String fieldName = fieldsCombo.getItemText(fieldsCombo.getSelectedIndex());
-			String factField = factsCombo.getItemText(factsCombo.getSelectedIndex());
-			constraintsCombo.clear();
-			contraintsMap.clear();
-			for (ConstraintConfiguration c : getConstraintsConstrainer().getConstraints(factField, fieldName)) {
-				constraintsCombo.addItem(c.getConstraintName(), addContrainsMap(c));
-			}
-			vpConstraintConf.remove(vpConstraintConf.getWidgetCount() - 1);
-			vpConstraintConf.add(new SmallLabel());
-		}
-		showConstraintConfig();
-	}
-	
-	synchronized private String addContrainsMap(ConstraintConfiguration c) {
-		String id = String.valueOf(idGenerator++);
-		contraintsMap.put(id, c);
-		return id;
-	}
-	
-	private Grid buildDoubleList(WorkingSetConfigData wsData) {
-		Grid grid = new Grid(2, 3);
-		
-		SuggestionCompletionEngine sce = SuggestionCompletionCache.getInstance().getEngineFromCache(workingSet.metaData.packageName);
-		boolean filteringFact = sce.isFilteringFacts();
-		sce.setFilteringFacts(false);
-		
-		try {
-			Set<String> elem = new HashSet<String>();
+            btnsPanel.setWidget(1, 0, new Button("&lt;", new ClickListener() {
 
-			availFacts.setVisibleItemCount(10);
-			validFacts.setVisibleItemCount(10);
-			
-			if (wsData.validFacts != null) {
-				elem.addAll(Arrays.asList(wsData.validFacts));
-				for (String factName : wsData.validFacts) {
-					validFacts.addItem(factName);
-				}
-			}
-				
-			for (String factName : sce.getFactTypes()) {
-				if (!elem.contains(factName)) {
-					availFacts.addItem(factName);
-				}
-			}
-			
-			Grid btnsPanel = new Grid(2,1);
-			
-			btnsPanel.setWidget(0, 0, new Button(">", new ClickListener() {
-				public void onClick(Widget sender) {
-					copySelected(availFacts, validFacts);
-					updateAsset(validFacts);
-					fillSelectedFacts();
-				}
-			}));
+                public void onClick(Widget sender) {
+                    copySelected(validFacts, availFacts);
+                    updateAsset(validFacts);
+                    factsConstraintsgEditorPanel.fillSelectedFacts();
+                    customFormsEditorPanel.fillSelectedFacts();
+                }
+            }));
 
-			btnsPanel.setWidget(1, 0, new Button("&lt;", new ClickListener() {
-				public void onClick(Widget sender) {
-					copySelected(validFacts, availFacts);
-					updateAsset(validFacts);
-					fillSelectedFacts();
-				}
-			}));
+            grid.setWidget(0, 0, new SmallLabel("Available Facts")); //TODO i18n
+            grid.setWidget(0, 1, new SmallLabel(""));
+            grid.setWidget(0, 2, new SmallLabel("WorkingSet Facts")); //TODO i18n
+            grid.setWidget(1, 0, availFacts);
+            grid.setWidget(1, 1, btnsPanel);
+            grid.setWidget(1, 2, validFacts);
 
-			grid.setWidget(0, 0, new SmallLabel("Available Facts")); //TODO i18n
-			grid.setWidget(0, 1, new SmallLabel(""));
-			grid.setWidget(0, 2, new SmallLabel("WorkingSet Facts")); //TODO i18n
-			grid.setWidget(1, 0, availFacts);
-			grid.setWidget(1, 1, btnsPanel);
-			grid.setWidget(1, 2, validFacts);
-			
-			grid.getColumnFormatter().setWidth(0, "45%");
-			grid.getColumnFormatter().setWidth(0, "10%");
-			grid.getColumnFormatter().setWidth(0, "45%");
-			return grid;
-		} finally {
-			sce.setFilteringFacts(filteringFact);
-		}
-	}
-	
-	/**
+            grid.getColumnFormatter().setWidth(0, "45%");
+            grid.getColumnFormatter().setWidth(0, "10%");
+            grid.getColumnFormatter().setWidth(0, "45%");
+            return grid;
+        } finally {
+            sce.setFilteringFacts(filteringFact);
+        }
+    }
+
+    /**
      * This will get the save widgets.
      */
-	
-	private void updateAsset(ListBox availFacts) {
-		List<String> l = new ArrayList<String>(availFacts.getItemCount()); 
-		for (int i = 0; i < availFacts.getItemCount(); i++) {
-			l.add(availFacts.getItemText(i));
-		}
-		((WorkingSetConfigData) workingSet.content).validFacts = l.toArray(new String[l.size()]);
-	}
+    private void updateAsset(ListBox availFacts) {
+        List<String> l = new ArrayList<String>(availFacts.getItemCount());
+        for (int i = 0; i < availFacts.getItemCount(); i++) {
+            l.add(availFacts.getItemText(i));
+        }
+        ((WorkingSetConfigData) workingSet.content).validFacts = l.toArray(new String[l.size()]);
+    }
 
-	private void copySelected(final ListBox from, final ListBox to) {
-		int selected;
-		while ((selected = from.getSelectedIndex()) != -1) {
-			to.addItem(from.getItemText(selected));
-			from.removeItem(selected);
-			validFactsChanged = true;
-		}
-	}
-	
-	public SuggestionCompletionEngine getCompletionEngine() {
-		return sce;
-	}
-	
-	public ConstraintsContainer getConstraintsConstrainer() {
-		return cc;
-	}
+    private void copySelected(final ListBox from, final ListBox to) {
+        int selected;
+        while ((selected = from.getSelectedIndex()) != -1) {
+            to.addItem(from.getItemText(selected));
+            from.removeItem(selected);
+            factsConstraintsgEditorPanel.notifyValidFactsChanged();
+            customFormsEditorPanel.notifyValidFactsChanged();
+        }
+    }
+
+    public ConstraintsContainer getConstraintsConstrainer() {
+        return cc;
+    }
+
+    public CustomFormsContainer getCustomFormsContainer() {
+        return cfc;
+    }
+
+    protected RuleAsset getWorkingSet() {
+        return workingSet;
+    }
+
+    protected ListBox getValidFactsListBox() {
+        return this.validFacts;
+    }
 }



More information about the jboss-svn-commits mailing list