[jboss-svn-commits] JBL Code SVN: r32157 - in labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-guvnor: src/main/java/org/drools/guvnor/client/messages and 2 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Mar 19 16:13:51 EDT 2010


Author: baunax
Date: 2010-03-19 16:13:50 -0400 (Fri, 19 Mar 2010)
New Revision: 32157

Added:
   labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/ConstraintEditor.java
Modified:
   labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-guvnor/build.xml
   labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client/messages/Constants.java
   labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client/messages/Constants.properties
   labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client/messages/Constants_es_ES.properties
   labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/PackageConfigData.java
   labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/WorkingSetConfigData.java
   labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/WorkingSetEditor.java
Log:
added configuration for contraints inside workingsets

Modified: labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-guvnor/build.xml
===================================================================
--- labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-guvnor/build.xml	2010-03-19 20:06:29 UTC (rev 32156)
+++ labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-guvnor/build.xml	2010-03-19 20:13:50 UTC (rev 32157)
@@ -56,7 +56,7 @@
 		<gwt:compile outDir="target/gwt-compiled-output"
 			gwtHome="${gwt.home}"
 			classBase="org.drools.guvnor.Guvnor"
-			sourceclasspath="src/main/java; ../drools-compiler/src/main/java; ../lib/gwtext.jar; ../lib/gwt-diagrams-0.1.jar; ../lib/cobogw-1.0.jar"/>
+			sourceclasspath="src/main/java; ../drools-compiler/src/main/java; ../drools-factconstraint/src/main/java; ../lib/gwtext.jar; ../lib/gwt-diagrams-0.1.jar; ../lib/cobogw-1.0.jar"/>
 		<!-- get rid of old -->
 	 	 <delete>
 	      <fileset dir="src/main/webapp/org.drools.guvnor.Guvnor" includes="*.gwt.rpc *.cache.html *.cache.js *.cache.xml *.cache.png"/>

Modified: labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client/messages/Constants.java
===================================================================
--- labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client/messages/Constants.java	2010-03-19 20:06:29 UTC (rev 32156)
+++ labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client/messages/Constants.java	2010-03-19 20:13:50 UTC (rev 32157)
@@ -2043,6 +2043,8 @@
 
     String SelectWorkingSets();
     
+    String ErrorLoadingRules();
+    
     String WorkingSets();
     String NewWorkingSet();
     String CreateWorkingSet();
@@ -2055,6 +2057,6 @@
     String RenameTheWorkingSet();
     String RenameTheWorkingSetTip();
     String WorkingSetRenamedSuccessfully();
-
-    String ErrorLoadingRules();
+    String ConstraintsSection();
+    String AddNewConstrain();
 }

Modified: labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client/messages/Constants.properties
===================================================================
--- labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client/messages/Constants.properties	2010-03-19 20:06:29 UTC (rev 32156)
+++ labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client/messages/Constants.properties	2010-03-19 20:13:50 UTC (rev 32157)
@@ -991,6 +991,7 @@
 WorkingSets=WorkingSets
 NewWorkingSet=New WorkingSet
 CreateWorkingSet=Create a WorkingSet
+ErrorLoadingRules=Error loading rules.
 WorkingSetName=WorkingSet name
 CopyTheWorkingSet=Copy the WorkingSet
 CopyTheWorkingSetTip=<i>Copy the WorkingSet and all its facts and restrictions. A new unique name is required.</i>
@@ -1000,4 +1001,5 @@
 RenameTheWorkingSet=Rename the WorkingSet.
 RenameTheWorkingSetTip=<i>Rename the WorkingSet. A new unique name is required.</i>
 WorkingSetRenamedSuccessfully=WorkingSet successfully renamed.
-ErrorLoadingRules=Error loading rules.
\ No newline at end of file
+ConstraintsSection=Constraints Section
+AddNewConstrain=Add New Constraint
\ No newline at end of file

Modified: labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client/messages/Constants_es_ES.properties
===================================================================
--- labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client/messages/Constants_es_ES.properties	2010-03-19 20:06:29 UTC (rev 32156)
+++ labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client/messages/Constants_es_ES.properties	2010-03-19 20:13:50 UTC (rev 32157)
@@ -917,4 +917,6 @@
 RenameTheWorkingSet=Renombrar el WorkingSet.
 RenameTheWorkingSetTip=<i>Renombrar el WorkingSet. Se requiere un nombre \u00FAnico.</i>
 WorkingSetRenamedSuccessfully=WorkingSet renombrado correctamente.
-ErrorLoadingRules=Error al cargar las reglas.
\ No newline at end of file
+ErrorLoadingRules=Error al cargar las reglas.
+ConstraintsSection=Secci\u00F3n de Restricciones
+AddNewConstrain=Agregar nueva Restricci\u00F3n 
\ No newline at end of file

Modified: labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/PackageConfigData.java
===================================================================
--- labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/PackageConfigData.java	2010-03-19 20:06:29 UTC (rev 32156)
+++ labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/PackageConfigData.java	2010-03-19 20:13:50 UTC (rev 32157)
@@ -49,5 +49,4 @@
     public HashMap<String,String> catRules;
     
     public PackageConfigData[] subPackages;
-    public WorkingSetConfigData[] workingsets;
 }
\ No newline at end of file

Modified: labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/WorkingSetConfigData.java
===================================================================
--- labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/WorkingSetConfigData.java	2010-03-19 20:06:29 UTC (rev 32156)
+++ labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/WorkingSetConfigData.java	2010-03-19 20:13:50 UTC (rev 32157)
@@ -2,8 +2,8 @@
 
 import java.util.List;
 
+import org.drools.guvnor.client.factcontraints.Constraint;
 import org.drools.guvnor.client.modeldriven.brl.PortableObject;
-import org.drools.guvnor.client.rulefloweditor.SplitNode.Constraint;
 
 import com.google.gwt.user.client.rpc.IsSerializable;
 

Added: labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/ConstraintEditor.java
===================================================================
--- labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/ConstraintEditor.java	                        (rev 0)
+++ labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/ConstraintEditor.java	2010-03-19 20:13:50 UTC (rev 32157)
@@ -0,0 +1,78 @@
+package org.drools.guvnor.client.ruleeditor;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.MissingResourceException;
+
+import org.drools.guvnor.client.factcontraints.Constraint;
+import org.drools.guvnor.client.messages.Constants;
+
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.user.client.ui.ChangeListener;
+import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.Grid;
+import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.TextBox;
+import com.google.gwt.user.client.ui.Widget;
+
+public class ConstraintEditor extends Composite {
+	private Constants constants =  GWT.create(Constants.class);
+	private Constraint constraint;
+
+	public ConstraintEditor(Constraint constraint) {
+		this.constraint = constraint;
+		
+		Grid confGrid = new Grid(constraint.getArgumentKeys().size(), 2);
+		
+		ArrayList<String> list = new ArrayList<String>();
+		Map<String, String> argI18N = new HashMap<String, String>();
+		for (String arg : constraint.getArgumentKeys()) {
+			String i18n = getI18NText(arg);
+			list.add(i18n);
+			argI18N.put(i18n, arg);
+		}
+		Collections.sort(list);
+		
+		int row = 0;
+		for (String arg : list) {
+			TextBox argTB = new TextBox();
+			argTB.setText(getConstraint().getArgumentValue(arg).toString());
+			argTB.setName(argI18N.get(arg));
+			argTB.setTitle(arg);
+			argTB.addChangeListener(new ChangeListener() {
+				public void onChange(Widget sender) {
+					TextBox argTB = (TextBox) sender;
+					getConstraint().setArgumentValue(argTB.getName(), argTB.getText());
+				}
+			});
+			
+			confGrid.setWidget(row, 0, new Label(arg + ":"));
+			confGrid.setWidget(row, 1, argTB);
+			row++;
+		}
+		
+		initWidget(confGrid);
+	}
+	
+	private String getI18NText(String s) {
+		try {
+			return constants.getString("constraint." + getConstraintName() + "." + s);
+		} catch (MissingResourceException e) {
+			return s;
+		}
+	}
+
+	public Constraint getConstraint() {
+		return constraint;
+	}
+
+	public void setConstraint(Constraint constraint) {
+		this.constraint = constraint;
+	}
+	
+	public String getConstraintName() {
+		return getConstraint().getConstraintName();
+	}
+ }


Property changes on: labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/ConstraintEditor.java
___________________________________________________________________
Name: svn:keywords
   + Id Revision
Name: svn:eol-style
   + LF

Modified: labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/WorkingSetEditor.java
===================================================================
--- labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/WorkingSetEditor.java	2010-03-19 20:06:29 UTC (rev 32156)
+++ labs/jbossrules/branches/factsConstraints_baunax_esteban/drools-guvnor/src/main/java/org/drools/guvnor/client/ruleeditor/WorkingSetEditor.java	2010-03-19 20:13:50 UTC (rev 32157)
@@ -2,68 +2,293 @@
 
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 
 import org.drools.guvnor.client.common.AssetFormats;
 import org.drools.guvnor.client.common.FormStylePopup;
-import org.drools.guvnor.client.common.GenericCallback;
-import org.drools.guvnor.client.common.LoadingPopup;
-import org.drools.guvnor.client.common.PrettyFormLayout;
+import org.drools.guvnor.client.common.ImageButton;
+import org.drools.guvnor.client.factconstraints.helper.ConstraintsContainer;
+import org.drools.guvnor.client.factconstraints.predefined.IntegerConstraint;
+import org.drools.guvnor.client.factconstraints.predefined.NotNullConstraint;
+import org.drools.guvnor.client.factconstraints.predefined.RangeConstraint;
+import org.drools.guvnor.client.factcontraints.Constraint;
 import org.drools.guvnor.client.messages.Constants;
 import org.drools.guvnor.client.modeldriven.SuggestionCompletionEngine;
-import org.drools.guvnor.client.packages.PackageNameValidator;
 import org.drools.guvnor.client.packages.SuggestionCompletionCache;
-import org.drools.guvnor.client.rpc.RepositoryServiceFactory;
 import org.drools.guvnor.client.rpc.RuleAsset;
 import org.drools.guvnor.client.rpc.WorkingSetConfigData;
 
 import com.google.gwt.core.client.GWT;
-import com.google.gwt.user.client.Command;
-import com.google.gwt.user.client.Window;
 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.HTML;
 import com.google.gwt.user.client.ui.HorizontalPanel;
+import com.google.gwt.user.client.ui.Image;
 import com.google.gwt.user.client.ui.Label;
 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 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;
 
-public class WorkingSetEditor extends PrettyFormLayout {
+public class WorkingSetEditor extends Composite {
 	private Constants constants =  GWT.create(Constants.class);
 	private RuleAsset workingSet;
 	
+	private ListBox availFacts = new ListBox(true);
+	private ListBox validFacts = new ListBox(true);
+	private boolean validFactsChanged = true;
+	private SuggestionCompletionEngine sce;
+	private ConstraintsContainer cc;
+	
 	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);
 		}
-		setWidth( "100%" );
-		
 		workingSet = asset;
-
-//		initWidget(grid);
+		sce = SuggestionCompletionCache.getInstance().getEngineFromCache(asset.metaData.packageName);
+		WorkingSetConfigData wsData = (WorkingSetConfigData) workingSet.content;
+		cc = new ConstraintsContainer(wsData.constraints);
 		refreshWidgets();
+		setWidth( "100%" );
 	}
 	
 	private void refreshWidgets() {
-		clear();
-		FlexTable headerWidgets = new FlexTable();
-        headerWidgets.setWidget(0, 0, new HTML("<b>" + constants.WorkingSets() + ":</b>")); //NON-NLS
-        headerWidgets.setWidget(0, 1, new Label(workingSet.metaData.name));
-        headerWidgets.setWidget(1, 0, modifyWidgets());
-        headerWidgets.getFlexCellFormatter().setColSpan(1, 0, 2);
-        addHeader("images/package_large.png", headerWidgets); //NON-NLS
+        WorkingSetConfigData wsData = (WorkingSetConfigData) workingSet.content;
+		
+		TabPanel tPanel = new TabPanel();
+		Panel pnl = new Panel();
+        pnl.setAutoWidth(true);
+        pnl.setClosable(false);
+        pnl.setTitle("WS Definition");
+        pnl.setAutoHeight(true);
+        pnl.add(buildDoubleList(wsData));
+		tPanel.add(pnl);
+		
+		pnl = new Panel();
+        pnl.setAutoWidth(true);
+        pnl.setClosable(false);
+        pnl.setTitle("WS Constraints");
+        pnl.setAutoHeight(true);
+        pnl.add(buildFactsConstraintsEditor(tPanel));
+		tPanel.add(pnl);
+		
+		tPanel.setActiveTab(0);
+		initWidget(tPanel);
+	}
 
-        startSection(constants.ConfigurationSection());
+	private int lastSelectedFact = -1;
+	private int lastSelectedField = -1;
+	private int lastSelectedConstraint = -1;
+	private Widget buildFactsConstraintsEditor(TabPanel tPanel) {
+		final ListBox factsCombo = new ListBox(false);
+		final ListBox fieldsCombo = new ListBox(false);
+		final ListBox constraintsCombo = new ListBox(false);
+		final VerticalPanel vpConstraintConf = new VerticalPanel();
 		
-		WorkingSetConfigData wsData = (WorkingSetConfigData) workingSet.content;
+		factsCombo.setVisibleItemCount(1);
+		fieldsCombo.setVisibleItemCount(1);
+		constraintsCombo.setVisibleItemCount(5);
+		
+		tPanel.addListener(new PanelListenerAdapter() {
+			@Override
+			public boolean doBeforeShow(Component component) {
+				fillSelectedFacts(factsCombo);
+				return true;
+			}
+		});
+		
+		factsCombo.addChangeListener(new ChangeListener() {
+			public void onChange(Widget sender) {
+				fillSelectedFactFields(factsCombo, fieldsCombo);
+			}
+		});
+		
+		fieldsCombo.addChangeListener(new ChangeListener() {
+			public void onChange(Widget sender) {
+				fillFieldConstrains(factsCombo, fieldsCombo, constraintsCombo, vpConstraintConf);
+			}
+		});
+		
+		Image addNewConstraint = new ImageButton("images/new_item.gif");
+        addNewConstraint.setTitle(constants.AddNewConstrain());
+
+        addNewConstraint.addClickListener( new ClickListener() {
+            public void onClick(Widget w) {
+                showNewConstrainPop(factsCombo, fieldsCombo, constraintsCombo);
+            }
+        });
+		
+        final FlexTable table = new FlexTable();
+        
+		VerticalPanel vp = new VerticalPanel();
+		vp.add(new Label(constants.FactTypes()));
+		vp.add(factsCombo);
+		table.setWidget(0, 0, vp);
+		
+		vp = new VerticalPanel();
+		vp.add(new Label(constants.Field()));
+		vp.add(fieldsCombo);
+		table.setWidget(1, 0, vp);
+		
+		vp = new VerticalPanel();
+		HorizontalPanel hp = new HorizontalPanel();
+		vp.add(new Label(constants.ConstraintsSection()));
+		hp.add(constraintsCombo);
+		hp.add(addNewConstraint);
+		vp.add(hp);
+		table.setWidget(2, 0, vp);
+		table.getFlexCellFormatter().setRowSpan(2, 0, 3);
+		
+		constraintsCombo.addChangeListener(new ChangeListener() {
+			public void onChange(Widget sender) {
+				showConstraintConfig(constraintsCombo, vpConstraintConf);
+			}
+		});
+		
+		vpConstraintConf.add(new Label(constants.ConstraintsSection()));
+		vpConstraintConf.add(new Label(""));
+		table.setWidget(0, 1, vpConstraintConf);
+		table.getFlexCellFormatter().setRowSpan(0, 1, 5);
+	
+		fillSelectedFacts(factsCombo);
+		fillSelectedFactFields(factsCombo, fieldsCombo);
+		fillFieldConstrains(factsCombo, fieldsCombo, constraintsCombo, vpConstraintConf);
+		showConstraintConfig(constraintsCombo, vpConstraintConf);
+		return table;
+	}
+
+	private void showConstraintConfig(ListBox constraintsCombo, VerticalPanel vpConstraintConf) {
+		if (constraintsCombo.getItemCount() == 0) {
+			vpConstraintConf.remove(vpConstraintConf.getWidgetCount() - 1);
+			vpConstraintConf.add(new Label());
+			return;
+		}
+		if (lastSelectedConstraint != constraintsCombo.getSelectedIndex()) {
+			Constraint c = contraintsMap.get(constraintsCombo.getValue(constraintsCombo.getSelectedIndex()));
+			ConstraintEditor editor = new ConstraintEditor(c);
+			vpConstraintConf.remove(vpConstraintConf.getWidgetCount() - 1);
+			vpConstraintConf.add(editor);
+			lastSelectedConstraint = constraintsCombo.getSelectedIndex();
+		}
+	}
+
+	private void showNewConstrainPop(final ListBox factsCombo, final ListBox fieldsCombo, final ListBox constraintsCombo) {
+        final FormStylePopup pop = new FormStylePopup("images/config.png", constants.AddNewConstrain()); //NON-NLS
+        final Button addbutton = new Button(constants.OK());
+        final ListBox consDefsCombo = new ListBox(false);
+
+        consDefsCombo.setVisibleItemCount(5);
+
+        addbutton.setTitle(constants.AddNewConstrain());
+        
+        consDefsCombo.addItem("NotNull");
+        consDefsCombo.addItem("Range");
+        consDefsCombo.addItem("Integer");
+        
+        addbutton.addClickListener( new ClickListener() {
+            public void onClick(Widget w) {
+            	String consDef = consDefsCombo.getItemText(consDefsCombo.getSelectedIndex());
+            	Constraint cons = null;
+            	if ("NotNull".equals(consDef)) {
+            		cons = new NotNullConstraint();
+            	} else if ("Range".equals(consDef)) {
+            		cons = new RangeConstraint();
+            	} else if ("Integer".equals(consDef)) {
+            		cons = new IntegerConstraint();
+            	}
+            	if (cons != null) {
+            		String factName = factsCombo.getItemText(lastSelectedFact);
+            		String fieldName = fieldsCombo.getItemText(lastSelectedField);
+            		cons.setFactType(factName);
+            		cons.setFieldName(fieldName);
+            		if (((WorkingSetConfigData) workingSet.content).constraints == null) {
+            			((WorkingSetConfigData) workingSet.content).constraints = new ArrayList<Constraint>();
+            		}
+            		((WorkingSetConfigData) workingSet.content).constraints.add(cons);
+            		constraintsCombo.addItem(cons.getConstraintName(), addContrainsMap(cons));
+            		getConstraintsConstrainer().addConstraint(cons);
+            		
+            	}
+            	pop.hide();
+
+            }
+        });
+
+        pop.addAttribute(constants.WillExtendTheFollowingRuleCalled(), consDefsCombo );
+        pop.addAttribute("", addbutton);
+
+        pop.show();
+	}
+
+	private void fillSelectedFacts(final ListBox factsCombo) {
+		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);
+				}
+			}
+		}
+	}
+
+	private void fillSelectedFactFields(final ListBox factsCombo, final ListBox fieldsCombo) {
+		if (lastSelectedFact != factsCombo.getSelectedIndex()) {
+			lastSelectedFact = factsCombo.getSelectedIndex();
+			String fact = factsCombo.getItemText(lastSelectedFact);
+			fieldsCombo.clear();
+			for(String field : getCompletionEngine().getFieldCompletions(fact)) {
+				fieldsCombo.addItem(field);
+			}
+			lastSelectedFact = fieldsCombo.getItemCount() > 0 ? 0 : -1;
+		}
+	}
+
+	private Map<String, Constraint> contraintsMap = new HashMap<String, Constraint>();
+	private void fillFieldConstrains(final ListBox factsCombo, final ListBox fieldsCombo, final ListBox constraintsCombo, VerticalPanel vpConstraintConf) {
+		if (lastSelectedField != fieldsCombo.getSelectedIndex()) {
+			lastSelectedField = fieldsCombo.getSelectedIndex();
+			String fieldName = fieldsCombo.getItemText(lastSelectedField);
+			String factField = factsCombo.getItemText(lastSelectedFact);
+			constraintsCombo.clear();
+			contraintsMap.clear();
+			for (Constraint c : getConstraintsConstrainer().getConstraints(factField, fieldName)) {
+				constraintsCombo.addItem(c.getConstraintName(), addContrainsMap(c));
+			}
+			vpConstraintConf.remove(vpConstraintConf.getWidgetCount() - 1);
+			vpConstraintConf.add(new Label());
+			if (constraintsCombo.getItemCount() > 0) {
+				lastSelectedConstraint = 0;
+				constraintsCombo.setSelectedIndex(lastSelectedConstraint);
+			} else {
+				lastSelectedConstraint = -1;
+			}
+			
+		}
+	}
+	
+	private String addContrainsMap(Constraint c) {
+		String id = "" + contraintsMap.size();
+		contraintsMap.put(id, c);
+		return id;
+	}
+	
+	private Grid buildDoubleList(WorkingSetConfigData wsData) {
 		Grid grid = new Grid(1, 3);
-		final ListBox availFacts = new ListBox(true);
-		final ListBox validFacts = new ListBox(true);
+		
 		SuggestionCompletionEngine sce = SuggestionCompletionCache.getInstance().getEngineFromCache(workingSet.metaData.packageName);
 		
 		Set<String> elem = new HashSet<String>();
@@ -107,55 +332,52 @@
 		grid.getColumnFormatter().setWidth(0, "45%");
 		grid.getColumnFormatter().setWidth(0, "10%");
 		grid.getColumnFormatter().setWidth(0, "45%");
-		
-		addAttribute(constants.Configuration(), grid);
-		endSection();
-				
+		return grid;
 	}
 	
 	/**
      * This will get the save widgets.
      */
-    private Widget modifyWidgets() {
-
-        HorizontalPanel horiz = new HorizontalPanel();
-
-        Button copy = new Button(constants.Copy());
-        copy.addClickListener( new ClickListener() {
-            public void onClick(Widget w) {
-                showCopyDialog();
-            }
-        } );
-        horiz.add( copy );
-
-        Button rename = new Button(constants.Rename());
-        rename.addClickListener( new ClickListener() {
-            public void onClick(Widget w) {
-                showRenameDialog();
-            }
-        } );
-        horiz.add( rename );
-
-
-        Button archive = new Button(constants.Archive());
-        archive.addClickListener(new ClickListener() {
-            public void onClick(Widget w) {
-                if ( Window.confirm(constants.AreYouSureYouWantToArchiveRemoveThisPackage()) ) {
-//                    conf.archived = true;
-                    Command ref = new Command() {
-						public void execute() {
-//		                    close.execute();
-//		                    refreshPackageList.execute();
-						}
-                    };
-//                    doSaveAction(ref);
-                }
-            }
-        });
-        horiz.add(archive);
-
-        return horiz;
-    }
+//    private Widget modifyWidgets() {
+//
+//        HorizontalPanel horiz = new HorizontalPanel();
+//
+//        Button copy = new Button(constants.Copy());
+//        copy.addClickListener( new ClickListener() {
+//            public void onClick(Widget w) {
+//                showCopyDialog();
+//            }
+//        } );
+//        horiz.add( copy );
+//
+//        Button rename = new Button(constants.Rename());
+//        rename.addClickListener( new ClickListener() {
+//            public void onClick(Widget w) {
+//                showRenameDialog();
+//            }
+//        } );
+//        horiz.add( rename );
+//
+//
+//        Button archive = new Button(constants.Archive());
+//        archive.addClickListener(new ClickListener() {
+//            public void onClick(Widget w) {
+//                if ( Window.confirm(constants.AreYouSureYouWantToArchiveRemoveThisPackage()) ) {
+////                    conf.archived = true;
+//                    Command ref = new Command() {
+//						public void execute() {
+////		                    close.execute();
+////		                    refreshPackageList.execute();
+//						}
+//                    };
+////                    doSaveAction(ref);
+//                }
+//            }
+//        });
+//        horiz.add(archive);
+//
+//        return horiz;
+//    }
 	
 	private void updateAsset(ListBox availFacts) {
 		List<String> l = new ArrayList<String>(availFacts.getItemCount()); 
@@ -170,66 +392,74 @@
 		while ((selected = from.getSelectedIndex()) != -1) {
 			to.addItem(from.getItemText(selected));
 			from.removeItem(selected);
+			validFactsChanged = true;
 		}
 	}
 	
 	/**
 	 * Will show a copy dialog for copying the whole package.
 	 */
-	private void showCopyDialog() {
-		final FormStylePopup pop = new FormStylePopup("images/new_wiz.gif", constants.CopyTheWorkingSet()); // NON-NLS
-		pop.addRow(new HTML(constants.CopyTheWorkingSetTip()));
-		final TextBox name = new TextBox();
-		pop.addAttribute(constants.NewWorkingSetNameIs(), name);
-		Button ok = new Button(constants.OK());
-		pop.addAttribute("", ok);
+//	private void showCopyDialog() {
+//		final FormStylePopup pop = new FormStylePopup("images/new_wiz.gif", constants.CopyTheWorkingSet()); // NON-NLS
+//		pop.addRow(new HTML(constants.CopyTheWorkingSetTip()));
+//		final TextBox name = new TextBox();
+//		pop.addAttribute(constants.NewWorkingSetNameIs(), name);
+//		Button ok = new Button(constants.OK());
+//		pop.addAttribute("", ok);
+//
+//		ok.addClickListener(new ClickListener() {
+//			public void onClick(Widget w) {
+//				if (!PackageNameValidator.validatePackageName(name.getText())) {
+//					Window.alert(constants.NotAValidWorkingSetName());
+//					return;
+//				}
+//				LoadingPopup.showMessage(constants.PleaseWaitDotDotDot());
+//				RepositoryServiceFactory.getService().copyAsset(workingSet.uuid, workingSet.metaData.packageName, name.getText(), 
+//						new GenericCallback<String>() {
+//							public void onSuccess(String uuid) {
+//								//TODO {bauna} refreshPackageList.execute();
+//								Window.alert(constants.WorkingSetCopiedSuccessfully());
+//								pop.hide();
+//								LoadingPopup.close();
+//							}
+//					
+//				});
+//			}
+//		});
+//
+//		pop.show();
+//	}
+	
+//	private void showRenameDialog() {
+//		final FormStylePopup pop = new FormStylePopup("images/new_wiz.gif", constants.RenameTheWorkingSet());
+//		pop.addRow(new HTML(constants.RenameTheWorkingSetTip()));
+//		final TextBox name = new TextBox();
+//		pop.addAttribute(constants.NewWorkingSetNameIs(), name);
+//		Button ok = new Button(constants.OK());
+//		pop.addAttribute("", ok);
+//
+//		ok.addClickListener(new ClickListener() {
+//			public void onClick(Widget w) {
+//				LoadingPopup.showMessage(constants.PleaseWaitDotDotDot());
+//				RepositoryServiceFactory.getService().renameAsset(workingSet.uuid, name.getText(),
+//						new GenericCallback<String>() {
+//							public void onSuccess(String uuid) {
+//								Window.alert(constants.WorkingSetRenamedSuccessfully());
+//								pop.hide();
+//								LoadingPopup.close();
+//							}
+//						});
+//			}
+//		});
+//
+//		pop.show();
+//	}
 
-		ok.addClickListener(new ClickListener() {
-			public void onClick(Widget w) {
-				if (!PackageNameValidator.validatePackageName(name.getText())) {
-					Window.alert(constants.NotAValidWorkingSetName());
-					return;
-				}
-				LoadingPopup.showMessage(constants.PleaseWaitDotDotDot());
-				RepositoryServiceFactory.getService().copyAsset(workingSet.uuid, workingSet.metaData.packageName, name.getText(), 
-						new GenericCallback<String>() {
-							public void onSuccess(String uuid) {
-								//TODO {bauna} refreshPackageList.execute();
-								Window.alert(constants.WorkingSetCopiedSuccessfully());
-								pop.hide();
-								LoadingPopup.close();
-							}
-					
-				});
-			}
-		});
-
-		pop.show();
+	public SuggestionCompletionEngine getCompletionEngine() {
+		return sce;
 	}
 	
-	private void showRenameDialog() {
-		final FormStylePopup pop = new FormStylePopup("images/new_wiz.gif", constants.RenameTheWorkingSet());
-		pop.addRow(new HTML(constants.RenameTheWorkingSetTip()));
-		final TextBox name = new TextBox();
-		pop.addAttribute(constants.NewWorkingSetNameIs(), name);
-		Button ok = new Button(constants.OK());
-		pop.addAttribute("", ok);
-
-		ok.addClickListener(new ClickListener() {
-			public void onClick(Widget w) {
-				LoadingPopup.showMessage(constants.PleaseWaitDotDotDot());
-				RepositoryServiceFactory.getService().renameAsset(workingSet.uuid, name.getText(),
-						new GenericCallback<String>() {
-							public void onSuccess(String uuid) {
-								Window.alert(constants.WorkingSetRenamedSuccessfully());
-								pop.hide();
-								LoadingPopup.close();
-							}
-						});
-			}
-		});
-
-		pop.show();
+	public ConstraintsContainer getConstraintsConstrainer() {
+		return cc;
 	}
-	
 }



More information about the jboss-svn-commits mailing list