[jboss-svn-commits] JBL Code SVN: r11905 - in labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms: client/modeldriven/ui and 3 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu May 17 04:32:59 EDT 2007


Author: fmeyer
Date: 2007-05-17 04:32:58 -0400 (Thu, 17 May 2007)
New Revision: 11905

Added:
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/DirtyableContainer.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/DirtyableHorizontalPane.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/DirtyableStackPanel.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/DirtyableVerticalPane.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/DirtyableWidget.java
Modified:
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/DirtyableComposite.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/DirtyableFlexTable.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/FormStyleLayout.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/ActionAssertFactWidget.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/ActionSetFieldWidget.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/CompositeFactPatternWidget.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/ConstraintValueEditor.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/DSLSentenceWidget.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/FactPatternWidget.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/RuleAttributeWidget.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/RuleModeller.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/PackageEditor.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/PackageExplorerWidget.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/AssetCategoryEditor.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/MetaDataWidget.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/RuleValidatorWrapper.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/files/PackageDeploymentURIHelper.java
Log:
JBRULES-706 - Dirtyable Widgets and Containers  

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/DirtyableComposite.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/DirtyableComposite.java	2007-05-17 08:32:37 UTC (rev 11904)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/DirtyableComposite.java	2007-05-17 08:32:58 UTC (rev 11905)
@@ -2,8 +2,8 @@
 
 import com.google.gwt.user.client.ui.Composite;
 
-public abstract class DirtyableComposite extends Composite implements IDirtyable  {
-    private boolean dirtyflag = false;
+public abstract class DirtyableComposite extends Composite implements DirtyableWidget  {
+    protected boolean dirtyflag = false;
     
     /* (non-Javadoc)
      * @see org.drools.brms.client.common.isDirtable#isDirty()

Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/DirtyableContainer.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/DirtyableContainer.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/DirtyableContainer.java	2007-05-17 08:32:58 UTC (rev 11905)
@@ -0,0 +1,12 @@
+/**
+ * 
+ */
+package org.drools.brms.client.common;
+
+/**
+ * @author fernandomeyer
+ *
+ */
+public interface DirtyableContainer extends IDirtyable {
+    public boolean hasDirty();
+}

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/DirtyableFlexTable.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/DirtyableFlexTable.java	2007-05-17 08:32:37 UTC (rev 11904)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/DirtyableFlexTable.java	2007-05-17 08:32:58 UTC (rev 11905)
@@ -3,10 +3,11 @@
 import java.util.ArrayList;
 import java.util.Iterator;
 
+import com.google.gwt.user.client.ui.Composite;
 import com.google.gwt.user.client.ui.FlexTable;
 import com.google.gwt.user.client.ui.Widget;
 
-public class DirtyableFlexTable extends FlexTable {
+public class DirtyableFlexTable extends FlexTable implements DirtyableContainer {
     
     private int length; 
     private ArrayList list = new ArrayList();
@@ -14,27 +15,27 @@
     public boolean hasDirty() {
         
         Pair coordinates;
-        DirtyableComposite element;
+        Widget element;
         
         for ( Iterator iter = list.iterator(); iter.hasNext(); ) {
             coordinates = (Pair) iter.next();
-            element = (DirtyableComposite) getWidget( coordinates.getRow(), coordinates.getColumn() );
-            if ( element.isDirty() ) return true;
-            
+            element =  (Widget) getWidget( coordinates.getRow(), coordinates.getColumn() );
+            if (element instanceof DirtyableWidget) 
+                if ( ((DirtyableWidget) element).isDirty() ) return true;
+            if (element instanceof DirtyableContainer)
+                if ( ((DirtyableContainer) element).hasDirty()) return true;
         }
-        
         return false;
-        
     }
     
     public void setWidget(int row, int column , Widget arg2) {
         super.setWidget( row, column, arg2 );
         
-        if ( arg2 instanceof DirtyableComposite ) {
+        if (( arg2 instanceof IDirtyable ))  {
             list.add( length++, new Pair(row ,column) );
-            
         }
     }
+
 }
 
 class Pair {

Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/DirtyableHorizontalPane.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/DirtyableHorizontalPane.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/DirtyableHorizontalPane.java	2007-05-17 08:32:58 UTC (rev 11905)
@@ -0,0 +1,28 @@
+/**
+ * 
+ */
+package org.drools.brms.client.common;
+
+import com.google.gwt.user.client.ui.HorizontalPanel;
+import com.google.gwt.user.client.ui.Widget;
+
+/**
+ * @author fernandomeyer
+ */
+
+public class DirtyableHorizontalPane extends HorizontalPanel implements DirtyableContainer {
+    public boolean hasDirty() {
+        
+        int widNumber = getWidgetCount();
+        Widget element;
+        
+        for ( int i = 0; i < widNumber; i++ ) {
+            element =  (Widget) getWidget(i);
+            if (element instanceof DirtyableWidget) 
+                if ( ((DirtyableWidget) element).isDirty() ) return true;
+            if (element instanceof DirtyableContainer)
+                if ( ((DirtyableContainer) element).hasDirty()) return true;
+        }
+        return false;
+    }
+}

Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/DirtyableStackPanel.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/DirtyableStackPanel.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/DirtyableStackPanel.java	2007-05-17 08:32:58 UTC (rev 11905)
@@ -0,0 +1,28 @@
+/**
+ * 
+ */
+package org.drools.brms.client.common;
+
+import com.google.gwt.user.client.ui.StackPanel;
+import com.google.gwt.user.client.ui.Widget;
+
+/**
+ * @author Fernando Meyer
+ *
+ */
+public class DirtyableStackPanel extends StackPanel implements DirtyableContainer {
+    public boolean hasDirty() {
+        
+        int widNumber = getWidgetCount();
+        Widget element;
+        
+        for ( int i = 0; i < widNumber; i++ ) {
+            element =  (Widget) getWidget(i);
+            if (element instanceof DirtyableWidget) 
+                if ( ((DirtyableWidget) element).isDirty() ) return true;
+            if (element instanceof DirtyableContainer)
+                if ( ((DirtyableContainer) element).hasDirty()) return true;
+        }
+        return false;
+    }
+}
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/DirtyableVerticalPane.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/DirtyableVerticalPane.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/DirtyableVerticalPane.java	2007-05-17 08:32:58 UTC (rev 11905)
@@ -0,0 +1,28 @@
+/**
+ * 
+ */
+package org.drools.brms.client.common;
+
+import com.google.gwt.user.client.ui.VerticalPanel;
+import com.google.gwt.user.client.ui.Widget;
+
+/**
+ * @author fernandomeyer
+ *
+ */
+public class DirtyableVerticalPane extends VerticalPanel implements DirtyableContainer {
+    public boolean hasDirty() {
+        
+        int widNumber = getWidgetCount();
+        Widget element;
+        
+        for ( int i = 0; i < widNumber; i++ ) {
+            element =  (Widget) getWidget(i);
+            if (element instanceof DirtyableWidget) 
+                if ( ((DirtyableWidget) element).isDirty() ) return true;
+            if (element instanceof DirtyableContainer)
+                if ( ((DirtyableContainer) element).hasDirty()) return true;
+        }
+        return false;
+    }
+}

Copied: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/DirtyableWidget.java (from rev 11889, labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/IDirtyable.java)
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/DirtyableWidget.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/DirtyableWidget.java	2007-05-17 08:32:58 UTC (rev 11905)
@@ -0,0 +1,11 @@
+package org.drools.brms.client.common;
+
+public interface DirtyableWidget extends IDirtyable {
+
+    public abstract boolean isDirty();
+
+    public abstract void resetDirty();
+
+    public abstract void makeDirty();
+
+}
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/FormStyleLayout.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/FormStyleLayout.java	2007-05-17 08:32:37 UTC (rev 11904)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/FormStyleLayout.java	2007-05-17 08:32:58 UTC (rev 11905)
@@ -17,7 +17,7 @@
  */
 public class FormStyleLayout extends DirtyableComposite {
     
-    private FlexTable layout = new FlexTable();
+    private DirtyableFlexTable layout = new DirtyableFlexTable();
     private FlexCellFormatter formatter = layout.getFlexCellFormatter();
     private int numInLayout = 0;
 
@@ -88,5 +88,10 @@
     public void setFlexTableWidget(int row, int col, Widget widget){
         layout.setWidget( row, col, widget );
     }
+    
+    public boolean isDirty() {
+        return layout.hasDirty();
+    } 
 
+
 }

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/ActionAssertFactWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/ActionAssertFactWidget.java	2007-05-17 08:32:37 UTC (rev 11904)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/ActionAssertFactWidget.java	2007-05-17 08:32:58 UTC (rev 11905)
@@ -1,5 +1,7 @@
 package org.drools.brms.client.modeldriven.ui;
 
+import org.drools.brms.client.common.DirtyableComposite;
+import org.drools.brms.client.common.DirtyableFlexTable;
 import org.drools.brms.client.common.FormStylePopup;
 import org.drools.brms.client.common.ImageButton;
 import org.drools.brms.client.common.Lbl;
@@ -27,9 +29,9 @@
  * @author Michael Neale
  *
  */
-public class ActionAssertFactWidget extends Composite {
+public class ActionAssertFactWidget extends DirtyableComposite {
 
-    private FlexTable layout;
+    private DirtyableFlexTable layout;
     private ActionAssertFact model;
     private SuggestionCompletionEngine completions;
     private String[] fieldCompletions;
@@ -38,7 +40,7 @@
     public ActionAssertFactWidget(RuleModeller mod, ActionAssertFact set, SuggestionCompletionEngine com) {
         this.model = set;
         this.completions = com;
-        this.layout = new FlexTable();
+        this.layout = new DirtyableFlexTable();
         this.modeller = mod;
         this.fieldCompletions = this.completions.getFieldCompletions( set.factType );
         
@@ -53,7 +55,7 @@
         layout.clear();
         layout.setWidget( 0, 0, getAssertLabel() );
         
-        FlexTable inner = new FlexTable();
+        DirtyableFlexTable inner = new DirtyableFlexTable();
         
         for ( int i = 0; i < model.fieldValues.length; i++ ) {
             ActionFieldValue val = model.fieldValues[i];
@@ -89,6 +91,7 @@
         box.addChangeListener( new ChangeListener() {
             public void onChange(Widget w) {
                 val.value = box.getText();
+                modeller.refreshWidget();
             }            
         });
         return box;

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/ActionSetFieldWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/ActionSetFieldWidget.java	2007-05-17 08:32:37 UTC (rev 11904)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/ActionSetFieldWidget.java	2007-05-17 08:32:58 UTC (rev 11905)
@@ -1,5 +1,7 @@
 package org.drools.brms.client.modeldriven.ui;
 
+import org.drools.brms.client.common.DirtyableComposite;
+import org.drools.brms.client.common.DirtyableFlexTable;
 import org.drools.brms.client.common.FieldEditListener;
 import org.drools.brms.client.common.FormStylePopup;
 import org.drools.brms.client.common.ImageButton;
@@ -30,11 +32,11 @@
  * 
  * @author Michael Neale
  */
-public class ActionSetFieldWidget extends Composite {
+public class ActionSetFieldWidget extends DirtyableComposite {
 
     final private ActionSetField model;
     final private SuggestionCompletionEngine completions;
-    final private FlexTable layout;
+    final private DirtyableFlexTable layout;
     private boolean isBoundFact = false;
     
     final private String[] fieldCompletions;
@@ -44,7 +46,7 @@
     public ActionSetFieldWidget(RuleModeller mod, RuleModel rule, ActionSetField set, SuggestionCompletionEngine com) {
         this.model = set;
         this.completions = com;
-        this.layout = new FlexTable();
+        this.layout = new DirtyableFlexTable();
         this.modeller = mod;
         layout.setStyleName( "model-builderInner-Background" );
         if (completions.isGlobalVariable( set.variable )) {
@@ -65,10 +67,8 @@
         layout.clear();
         layout.setWidget( 0, 0, getSetterLabel() );
         
-        FlexTable inner = new FlexTable();
+        DirtyableFlexTable inner = new DirtyableFlexTable();
         
-
-        
         for ( int i = 0; i < model.fieldValues.length; i++ ) {
             ActionFieldValue val = model.fieldValues[i];
             
@@ -186,4 +186,8 @@
         return isBoundFact;
     }
     
+    public boolean isDirty() {
+        return layout.hasDirty();
+    }
+    
 }

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/CompositeFactPatternWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/CompositeFactPatternWidget.java	2007-05-17 08:32:37 UTC (rev 11904)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/CompositeFactPatternWidget.java	2007-05-17 08:32:58 UTC (rev 11905)
@@ -1,5 +1,8 @@
 package org.drools.brms.client.modeldriven.ui;
 
+import org.drools.brms.client.common.DirtyableComposite;
+import org.drools.brms.client.common.DirtyableFlexTable;
+import org.drools.brms.client.common.DirtyableVerticalPane;
 import org.drools.brms.client.common.FormStylePopup;
 import org.drools.brms.client.common.ImageButton;
 import org.drools.brms.client.modeldriven.HumanReadable;
@@ -25,11 +28,11 @@
  * @author Michael Neale
  *
  */
-public class CompositeFactPatternWidget extends Composite {
+public class CompositeFactPatternWidget extends DirtyableComposite {
 
     private final SuggestionCompletionEngine completions;
     private CompositeFactPattern             pattern;
-    private Grid                             layout;
+    private DirtyableFlexTable                             layout;
     private RuleModeller                     modeller;
 
     public CompositeFactPatternWidget(RuleModeller modeller,
@@ -39,7 +42,7 @@
         this.pattern = pattern;
         this.modeller = modeller;
  
-        this.layout = new Grid( 1, 2 );
+        //this.layout = new Grid( 1, 2 );
         this.layout.setStyleName( "model-builderInner-Background" );
 
         doLayout();
@@ -52,7 +55,7 @@
                                getCompositeLabel() );
 
         if ( pattern.patterns != null ) {
-            VerticalPanel vert = new VerticalPanel();
+            DirtyableVerticalPane vert = new DirtyableVerticalPane();
             FactPattern[] facts = pattern.patterns;
             for ( int i = 0; i < facts.length; i++ ) {
                 vert.add( new FactPatternWidget( modeller,
@@ -113,7 +116,12 @@
         popup.setPopupPosition( w.getAbsoluteLeft() - 400,
                                 w.getAbsoluteTop() );
         popup.show();
+    }
 
+    public boolean isDirty() {
+        return layout.hasDirty();
     }
+    
+    
 
 }

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/ConstraintValueEditor.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/ConstraintValueEditor.java	2007-05-17 08:32:37 UTC (rev 11904)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/ConstraintValueEditor.java	2007-05-17 08:32:58 UTC (rev 11905)
@@ -2,6 +2,7 @@
 
 import java.util.List;
 
+import org.drools.brms.client.common.DirtyableComposite;
 import org.drools.brms.client.common.FieldEditListener;
 import org.drools.brms.client.common.FormStylePopup;
 import org.drools.brms.client.common.InfoPopup;
@@ -30,8 +31,9 @@
  * When the constraint value has no type, it will allow the user to choose the first time.
  * 
  * @author Michael Neale
+ * @author Fernando Meyer
  */
-public class ConstraintValueEditor extends Composite {
+public class ConstraintValueEditor extends DirtyableComposite {
 
     private IConstraint constraint;
     private Panel      panel;
@@ -136,6 +138,7 @@
         box.addChangeListener( new ChangeListener() {
             public void onChange(Widget w) {
                 c.value = box.getText();
+                makeDirty();
             }
 
         } );
@@ -146,6 +149,8 @@
             }
         } ) );
 
+        
+        
         return box;
     }
 
@@ -214,4 +219,10 @@
         return panel;
     }
 
+    public boolean isDirty() {
+        return super.isDirty();
+    }
+    
+    
+
 }

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/DSLSentenceWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/DSLSentenceWidget.java	2007-05-17 08:32:37 UTC (rev 11904)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/DSLSentenceWidget.java	2007-05-17 08:32:58 UTC (rev 11905)
@@ -4,6 +4,8 @@
 import java.util.Iterator;
 import java.util.List;
 
+import org.drools.brms.client.common.DirtyableComposite;
+import org.drools.brms.client.common.DirtyableHorizontalPane;
 import org.drools.brms.client.modeldriven.brxml.DSLSentence;
 
 import com.google.gwt.user.client.ui.ChangeListener;
@@ -18,13 +20,13 @@
  * This displays a widget to edit a DSL sentence.
  * @author Michael Neale
  */
-public class DSLSentenceWidget extends Composite {
+public class DSLSentenceWidget extends DirtyableComposite {
 
-    private final HorizontalPanel horiz;
+    private final DirtyableHorizontalPane horiz;
     private final List  widgets;
     private final DSLSentence sentence;
     public DSLSentenceWidget(DSLSentence sentence) {
-        horiz = new HorizontalPanel();
+        horiz = new DirtyableHorizontalPane();
         widgets = new ArrayList();
         this.sentence = sentence;
         init(  );
@@ -94,7 +96,7 @@
         
     }    
     
-    class FieldEditor extends Composite {
+    class FieldEditor extends DirtyableComposite {
 
         private TextBox box;
         private HorizontalPanel panel = new HorizontalPanel();
@@ -110,6 +112,7 @@
             box.addChangeListener( new ChangeListener() {
                 public void onChange(Widget w) {
                     updateSentence();
+                    makeDirty();
                 }                
             });
             
@@ -133,5 +136,9 @@
         }
     }    
     
+    public boolean isDirty() {
+        return horiz.hasDirty();
+    }
     
+    
 }

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/FactPatternWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/FactPatternWidget.java	2007-05-17 08:32:37 UTC (rev 11904)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/FactPatternWidget.java	2007-05-17 08:32:58 UTC (rev 11905)
@@ -1,5 +1,8 @@
 package org.drools.brms.client.modeldriven.ui;
 
+import org.drools.brms.client.common.DirtyableComposite;
+import org.drools.brms.client.common.DirtyableFlexTable;
+import org.drools.brms.client.common.DirtyableHorizontalPane;
 import org.drools.brms.client.common.FormStylePopup;
 import org.drools.brms.client.common.ImageButton;
 import org.drools.brms.client.common.Lbl;
@@ -36,10 +39,10 @@
  * @author Michael Neale
  *
  */
-public class FactPatternWidget extends Composite {
+public class FactPatternWidget extends DirtyableComposite {
 
     private FactPattern                pattern;
-    private FlexTable                  layout = new FlexTable();
+    private DirtyableFlexTable         layout = new DirtyableFlexTable();
     private SuggestionCompletionEngine completions;
     private RuleModeller               modeller;
     private boolean                    bindable;
@@ -55,7 +58,7 @@
         formatter.setAlignment( 0, 0, HasHorizontalAlignment.ALIGN_CENTER, HasVerticalAlignment.ALIGN_MIDDLE );
         formatter.setStyleName( 0, 0, "modeller-fact-TypeHeader" );
 
-        final FlexTable inner = new FlexTable();
+        final DirtyableFlexTable inner = new DirtyableFlexTable();
 
         layout.setWidget( 1, 0, inner );
 
@@ -125,13 +128,12 @@
         box.addChangeListener( new ChangeListener() {
             public void onChange(Widget w) {
                 c.value = box.getText();
+                modeller.makeDirty();
             }
-            
         });
         
         box.setWidth( "100%" );
         pred.add( box );
-        
         return pred;
     }
 
@@ -217,6 +219,7 @@
             varTxt.setText( pattern.boundName );
             varTxt.setVisibleLength( 3 );
             varName.add( varTxt );
+                        
             Button bindVar = new Button( "Set" );
             bindVar.addClickListener( new ClickListener() {
                 public void onClick(Widget w) {
@@ -239,11 +242,11 @@
 
     private Widget connectives(Constraint c) {
         if ( c.connectives != null && c.connectives.length > 0 ) {
-            HorizontalPanel horiz = new HorizontalPanel();
+            DirtyableHorizontalPane horiz = new DirtyableHorizontalPane();
             for ( int i = 0; i < c.connectives.length; i++ ) {
                 ConnectiveConstraint con = c.connectives[i];
                 horiz.add( connectiveOperatorDropDown( con, c.fieldName ) );
-                horiz.add( connectiveValueEditor( con ) );
+                horiz.add( connectiveValueEditor( con ) ); 
             }
             return horiz;
         } else {
@@ -299,6 +302,7 @@
         box.addChangeListener( new ChangeListener() {
             public void onChange(Widget w) {
                 c.operator = box.getValue( box.getSelectedIndex() );
+                modeller.makeDirty();
                 System.out.println( "Set operator to :" + c.operator );
             }
         } );
@@ -360,5 +364,9 @@
         popup.show();
     }
     
+    public boolean isDirty() {
+        return layout.hasDirty();
+    }
+    
 
 }

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/RuleAttributeWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/RuleAttributeWidget.java	2007-05-17 08:32:37 UTC (rev 11904)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/RuleAttributeWidget.java	2007-05-17 08:32:58 UTC (rev 11905)
@@ -1,5 +1,7 @@
 package org.drools.brms.client.modeldriven.ui;
 
+import org.drools.brms.client.common.DirtyableComposite;
+import org.drools.brms.client.common.DirtyableHorizontalPane;
 import org.drools.brms.client.common.FormStyleLayout;
 import org.drools.brms.client.common.YesNoDialog;
 import org.drools.brms.client.modeldriven.brxml.RuleAttribute;
@@ -20,7 +22,7 @@
  * 
  * @author Michael Neale
  */
-public class RuleAttributeWidget extends Composite {
+public class RuleAttributeWidget extends DirtyableComposite {
 
     private FormStyleLayout layout;
     private RuleModel model;
@@ -50,9 +52,10 @@
         box.addChangeListener( new ChangeListener() {
             public void onChange(Widget w) {
                 at.value = box.getText();
+                makeDirty();
             }
         });
-        HorizontalPanel horiz = new HorizontalPanel();
+        DirtyableHorizontalPane horiz = new DirtyableHorizontalPane();
         horiz.add( box );
         horiz.add( getRemoveIcon( idx ) );
         
@@ -99,4 +102,8 @@
         return remove;
     }
     
+    public boolean isDirty() {
+        return layout.isDirty();
+    }
+       
 }

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/RuleModeller.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/RuleModeller.java	2007-05-17 08:32:37 UTC (rev 11904)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/RuleModeller.java	2007-05-17 08:32:58 UTC (rev 11905)
@@ -3,6 +3,10 @@
 import java.util.Iterator;
 import java.util.List;
 
+import org.drools.brms.client.common.DirtyableComposite;
+import org.drools.brms.client.common.DirtyableFlexTable;
+import org.drools.brms.client.common.DirtyableHorizontalPane;
+import org.drools.brms.client.common.DirtyableVerticalPane;
 import org.drools.brms.client.common.ErrorPopup;
 import org.drools.brms.client.common.FormStylePopup;
 import org.drools.brms.client.common.ImageButton;
@@ -28,14 +32,11 @@
 import com.google.gwt.user.client.Window;
 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.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.VerticalPanel;
 import com.google.gwt.user.client.ui.Widget;
 
 /**
@@ -44,19 +45,20 @@
  * @author Michael Neale
  *
  */
-public class RuleModeller extends Composite {
+public class RuleModeller extends DirtyableComposite {
  
-    private FlexTable layout;
+    private DirtyableFlexTable layout;
     private SuggestionCompletionEngine completions;
     private RuleModel model;
     
     public RuleModeller(RuleAsset asset) {
         this.model = (RuleModel) asset.content;
+        
         this.completions = SuggestionCompletionCache.getInstance().getEngineFromCache( asset.metaData.packageName );
         
-        layout = new FlexTable();
+        layout = new DirtyableFlexTable();
         
-        refreshWidget();
+        initWidget();
         
         layout.setStyleName( "model-builder-Background" );
         initWidget( layout );  
@@ -67,7 +69,7 @@
     /**
      * This updates the widget to reflect the state of the model.
      */
-    public void refreshWidget() {
+    public void initWidget() {
         layout.clear();
         
         Image addPattern = new ImageButton( "images/new_item.gif" );
@@ -98,9 +100,12 @@
         layout.setWidget( 4, 0, new Label("(options)") );
         layout.setWidget( 4, 2, getAddAttribute() );
         layout.setWidget( 5, 1, new RuleAttributeWidget(this, this.model) );
-        
     }
 
+    public void refreshWidget() {
+        initWidget();
+        makeDirty();
+    }
 
     private Widget getAddAttribute() {
         Image add = new ImageButton("images/new_item.gif");
@@ -152,8 +157,11 @@
     /**
      * Do all the widgets for the RHS.
      */
+    /*
+     * TODO STILL NEED TO BE CHECKED 
+     */
     private Widget renderRhs(final RuleModel model) {
-        VerticalPanel vert = new VerticalPanel();
+        DirtyableVerticalPane vert = new DirtyableVerticalPane();
         
         for ( int i = 0; i < model.rhs.length; i++ ) {
             IAction action = model.rhs[i];
@@ -174,7 +182,7 @@
             vert.add( spacerWidget() );            
             //vert.setWidth( "100%" );
             
-            HorizontalPanel horiz = new HorizontalPanel();
+            DirtyableHorizontalPane horiz = new DirtyableHorizontalPane();
             
             Image remove = new ImageButton("images/delete_item_small.gif");
             remove.setTitle( "Remove this action." );
@@ -469,7 +477,7 @@
      * Builds all the condition widgets.
      */
     private Widget renderLhs(final RuleModel model) {
-        VerticalPanel vert = new VerticalPanel();
+        DirtyableVerticalPane vert = new DirtyableVerticalPane();
          
         for ( int i = 0; i < model.lhs.length; i++ ) {
             IPattern pattern = model.lhs[i];
@@ -494,7 +502,7 @@
         }
         
         
-        VerticalPanel dsls = new VerticalPanel();
+        DirtyableVerticalPane dsls = new DirtyableVerticalPane();
         for ( int i = 0; i < model.lhs.length; i++ ) {
             IPattern pattern = model.lhs[i];
             Widget w = null;
@@ -507,9 +515,7 @@
             }
         }
         vert.add( dsls );
-
         
-        
         return vert;
     }
 
@@ -525,7 +531,7 @@
     private Widget wrapLHSWidget(final RuleModel model,
                               int i,
                               Widget w) {
-        HorizontalPanel horiz = new HorizontalPanel();
+        DirtyableHorizontalPane horiz = new DirtyableHorizontalPane();
         
         Image remove = new ImageButton("images/delete_item_small.gif");
         remove.setTitle( "Remove this ENTIRE condition, and all the field constraints that belong to it." );
@@ -554,8 +560,6 @@
         horiz.add( remove );
 
         return horiz;
-
-
     }
 
 
@@ -568,10 +572,16 @@
      * Returns true is a var name has already been used
      * either by the rule, or as a global.
      */
+    
     public boolean isVariableNameUsed(String name) {
         
         return model.isVariableNameUsed( name ) || completions.isGlobalVariable( name );
     }
+
+    public boolean isDirty() {
+        return ( layout.hasDirty() || dirtyflag) ;
+    }
     
     
+    
 }

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/PackageEditor.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/PackageEditor.java	2007-05-17 08:32:37 UTC (rev 11904)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/PackageEditor.java	2007-05-17 08:32:58 UTC (rev 11905)
@@ -35,13 +35,18 @@
 public class PackageEditor extends FormStyleLayout {
     
    
-
+    private Command dirtyCommand;
+    private Command cleanCommand;
+    
     private PackageConfigData conf;
     private HTML status;
     protected ValidatedResponse previousResponse;
 
-    public PackageEditor(PackageConfigData data) {
+    public PackageEditor(PackageConfigData data, Command dCommand, Command cCommand) {
         this.conf = data;
+        this.dirtyCommand = dCommand;
+        this.cleanCommand = cCommand;
+        
         setStyleName( "package-Editor" );
         setWidth( "100%" );
         refreshWidgets();
@@ -50,6 +55,7 @@
     private void refreshWidgets() {
         clear();
         //addHeader( "images/package_large.png", this.conf.name );
+        
 
         addRow( warnings() );
         
@@ -182,6 +188,9 @@
         LoadingPopup.showMessage( "Saving package configuration. Please wait ..." );
         RepositoryServiceFactory.getService().savePackage( this.conf, new GenericCallback() {
             public void onSuccess(Object data) {
+                
+                cleanCommand.execute();
+                
                 previousResponse = (ValidatedResponse) data;
                 
                 reload();
@@ -239,7 +248,8 @@
         area.setText( this.conf.header );
         area.addChangeListener( new ChangeListener() {
             public void onChange(Widget w) {
-                 conf.header = area.getText();         
+                 conf.header = area.getText();
+                 dirtyCommand.execute();
             }            
         });
         
@@ -339,7 +349,8 @@
         
         area.addChangeListener( new ChangeListener() {
             public void onChange(Widget w) {
-                conf.description = area.getText();                 
+                conf.description = area.getText();    
+                dirtyCommand.execute();
             }            
         });
         

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/PackageExplorerWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/PackageExplorerWidget.java	2007-05-17 08:32:37 UTC (rev 11904)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/PackageExplorerWidget.java	2007-05-17 08:32:58 UTC (rev 11905)
@@ -1,6 +1,9 @@
 package org.drools.brms.client.packages;
 
 import org.drools.brms.client.common.AssetFormats;
+import org.drools.brms.client.common.DirtyableComposite;
+import org.drools.brms.client.common.DirtyableFlexTable;
+import org.drools.brms.client.common.DirtyableStackPanel;
 import org.drools.brms.client.common.FormStyleLayout;
 import org.drools.brms.client.common.FormStylePopup;
 import org.drools.brms.client.common.GenericCallback;
@@ -41,17 +44,18 @@
  * 
  * @author Michael Neale
  */
-public class PackageExplorerWidget extends Composite {
+public class PackageExplorerWidget extends DirtyableComposite {
 
     private final Tree exTree;
-    private final FlexTable layout;
+    private final DirtyableFlexTable layout;
     private final TreeListener treeListener;
     private AssetItemListViewer listView;
     private EditItemEvent editEvent;
     private String uuid;
-
     private String snapshotName;
     
+    private String lastEditedPackage;
+    
     /**
      * This is for the generic and re-useable package explorer.
      */    
@@ -68,10 +72,11 @@
         
         this.editEvent = edit;
         this.uuid = uuid;
+        this.lastEditedPackage = uuid;
         this.snapshotName = snapshotName;
         
         exTree = new Tree();
-        layout = new FlexTable();
+        layout = new DirtyableFlexTable();
         
         treeListener = new TreeListener() {
 
@@ -310,7 +315,13 @@
         
         TreeItem pkg = makeItem(conf.name, "images/package.gif", new PackageTreeItem(new Command() {
             public void execute() {
-                loadPackageConfig(conf.uuid);
+                
+                if ( isDirty() ) {
+                    if ( Window.confirm( "Discart Changes ? " ) )
+                        loadPackageConfig(conf.uuid);
+                } else {
+                    loadPackageConfig(conf.uuid);
+                }
             }
         }));
         
@@ -358,13 +369,15 @@
      * Load up the package config data and display it.
      */
     private void loadPackageConfig(String uuid) {
+        
+        lastEditedPackage = uuid;
 
         RepositoryServiceFactory.getService().loadPackageConfig( uuid, new GenericCallback() {
 
             public void onSuccess(Object data) {
                 final PackageConfigData conf = (PackageConfigData) data;
                 
-                StackPanel sp = new StackPanel();
+                DirtyableStackPanel sp = new DirtyableStackPanel();
                 
                 FormStyleLayout infoLayout = new FormStyleLayout("images/package_large.png", conf.name);
                 infoLayout.setStyleName( "package-Editor" );
@@ -395,14 +408,30 @@
                 
                 if (!conf.isSnapshot) {
                     infoLayout.addRow( new HTML("<i>Choose one of the options below</i>") );
-                }                
+                }   
                 
+                Command makeDirtyCommand = new Command () {
+                    public void execute() {
+                        makeDirty();
+                    }
+                    
+                };
+                
+                Command cleanDirtyCommand = new Command () {
+                    public void execute() {
+                        resetDirty();
+                    }
+                    
+                };                
+                
+                
                 sp.add( infoLayout, "<img src='images/information.gif'/>Info", true );
                 if (!conf.isSnapshot) {
-                    sp.add( new PackageEditor(conf), "<img src='images/package.gif'/>Edit Package configuration", true);
+                    sp.add( new PackageEditor(conf, makeDirtyCommand, cleanDirtyCommand ), "<img src='images/package.gif'/>Edit Package configuration", true);
                     sp.add( new PackageBuilderWidget(conf, editEvent), "<img src='images/package_build.gif'/>Build, validate and deploy", true );
                 } else {
-                    sp.add( new PackageEditor(conf),  "<img src='images/package.gif'/>View Package configuration", true);
+                    sp.add(new PackageEditor(conf, makeDirtyCommand, cleanDirtyCommand)
+                    ,  "<img src='images/package.gif'/>View Package configuration", true);
                     
                 }
                 

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/AssetCategoryEditor.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/AssetCategoryEditor.java	2007-05-17 08:32:37 UTC (rev 11904)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/AssetCategoryEditor.java	2007-05-17 08:32:58 UTC (rev 11905)
@@ -3,6 +3,7 @@
 import org.drools.brms.client.categorynav.CategoryExplorerWidget;
 import org.drools.brms.client.categorynav.CategorySelectHandler;
 import org.drools.brms.client.common.DirtyableComposite;
+import org.drools.brms.client.common.DirtyableFlexTable;
 import org.drools.brms.client.common.ImageButton;
 import org.drools.brms.client.rpc.MetaData;
 
@@ -23,11 +24,12 @@
  * It is intended to work with the meta data form.
  * 
  * @author Michael Neale
+ * @author Fernando Meyer
  */
 public class AssetCategoryEditor extends DirtyableComposite {
 
     private MetaData data;
-    private Grid layout = new Grid(1, 2);
+    private DirtyableFlexTable layout = new DirtyableFlexTable();
     private FlexTable list;
     
     
@@ -40,20 +42,15 @@
         this.data = d;
 
         list = new FlexTable();
-        
-        
-        
+
         loadData( list );  
         list.setStyleName( "rule-List" );
         layout.setWidget( 0, 0, list );
         
-        
         if (!readOnly) {
             doActions();
         }
-    
         
-        
         initWidget( layout );        
     }
 
@@ -81,11 +78,11 @@
     }
 
     private void resetBox() {
-        
         list = new FlexTable();
         list.setStyleName( "rule-List" );
         layout.setWidget( 0, 0, list );        
         loadData( list );
+        makeDirty();
     }
 
     private void loadData(FlexTable list) {

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/MetaDataWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/MetaDataWidget.java	2007-05-17 08:32:37 UTC (rev 11904)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/MetaDataWidget.java	2007-05-17 08:32:58 UTC (rev 11905)
@@ -160,6 +160,7 @@
                                                                           "Moved from : " + pkg,
                                                                           new GenericCallback() {
                                                                               public void onSuccess(Object data) {
+                                                                                  makeDirty();
                                                                                   refreshView.execute();
                                                                                   pop.hide();
                                                                               }
@@ -238,7 +239,7 @@
 
 
     public boolean isDirty() {
-        return ed.isDirty();
+        return (ed.isDirty() || dirtyflag) ;
     }
     
     

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/RuleValidatorWrapper.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/RuleValidatorWrapper.java	2007-05-17 08:32:37 UTC (rev 11904)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/RuleValidatorWrapper.java	2007-05-17 08:32:58 UTC (rev 11905)
@@ -1,5 +1,7 @@
 package org.drools.brms.client.ruleeditor;
 
+import org.drools.brms.client.common.DirtyableComposite;
+import org.drools.brms.client.common.DirtyableFlexTable;
 import org.drools.brms.client.common.FormStylePopup;
 import org.drools.brms.client.common.GenericCallback;
 import org.drools.brms.client.common.LoadingPopup;
@@ -24,16 +26,19 @@
  * This widget wraps a rule asset widget, and provides actions to validate and view source.
  * @author Michael Neale
  */
-public class RuleValidatorWrapper extends Composite {
-
+public class RuleValidatorWrapper extends DirtyableComposite {
     
     private RuleAsset asset;
+    private DirtyableFlexTable layout;
 
+    public boolean isDirty() {
+        return layout.hasDirty();  
+    }
+
     public RuleValidatorWrapper(Widget editor, RuleAsset asset) {
         this.asset = asset;
-        
-        
-        FlexTable layout = new FlexTable();
+
+        layout = new DirtyableFlexTable();
         layout.setStyleName( "asset-editor-Layout" );
         layout.setWidget( 0, 0, editor );
         layout.setWidget( 1, 0, validatorActions() );

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/files/PackageDeploymentURIHelper.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/files/PackageDeploymentURIHelper.java	2007-05-17 08:32:37 UTC (rev 11904)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/files/PackageDeploymentURIHelper.java	2007-05-17 08:32:58 UTC (rev 11905)
@@ -29,12 +29,9 @@
         if ( m.matches() ) {
             String result = m.group(2);
             String []mtoks = result.split( "/" );
-            
-            
             this.version = mtoks[1];
             this.packageName = mtoks[0];
         }
-        
     }
 
     public String getPackageName() {




More information about the jboss-svn-commits mailing list