[jboss-svn-commits] JBL Code SVN: r6290 - in labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms: client/breditor public/images

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Sep 19 06:43:05 EDT 2006


Author: michael.neale at jboss.com
Date: 2006-09-19 06:42:52 -0400 (Tue, 19 Sep 2006)
New Revision: 6290

Added:
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/images/clear_item.gif
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/images/shuffle_down.gif
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/images/shuffle_up.gif
Modified:
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/breditor/BREditor.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/breditor/ChoiceList.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/breditor/EditableLine.java
Log:
more working, still a major bug with indexes and concurrent mods

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/breditor/BREditor.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/breditor/BREditor.java	2006-09-19 10:39:35 UTC (rev 6289)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/breditor/BREditor.java	2006-09-19 10:42:52 UTC (rev 6290)
@@ -3,13 +3,13 @@
 import java.util.ArrayList;
 import java.util.List;
 
-import com.google.gwt.user.client.ui.Button;
 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.Image;
 import com.google.gwt.user.client.ui.Label;
 import com.google.gwt.user.client.ui.Panel;
+import com.google.gwt.user.client.ui.TextBox;
 import com.google.gwt.user.client.ui.VerticalPanel;
 import com.google.gwt.user.client.ui.Widget;
 
@@ -28,18 +28,19 @@
     private List lhs = new ArrayList(); //these will be populated with EditableLine widget
     private List rhs = new ArrayList();
     private FlexTable table = null;
+    private boolean editMode = false;
     
+    
     public BREditor() {
         panel = new VerticalPanel();
-        
         initData();
         refreshLayoutTable();
-        
         initWidget( panel );
     }
 
     /** This will populate and refresh the overall layout table. */
     private void refreshLayoutTable() {
+        
         resetTableWidget();
         table.setText( 0, DESC_COLUMN, "IF" );
         
@@ -48,12 +49,15 @@
             public void onClick(Widget popup) {
                 //need up add to the LHS list
                 ChoiceList c = (ChoiceList) popup;
-                lhs.add( new Label(c.getSelectedItem()) );
+                EditableLine editLine = new EditableLine(new Label[] {new Label(c.getSelectedItem())} );
+                if (editMode) editLine.makeEditable();
+                
+                lhs.add( editLine );
                 refreshLayoutTable();
             }            
         });
         
-        //button to add a new item (using the choice list).
+        //button to add a new item for lhs (using the choice list).
         Image addLhs = new Image("images/new_item.gif");
         addLhs.addClickListener( new ClickListener() {
             public void onClick(Widget sender) {
@@ -67,64 +71,87 @@
         //button to toggle edit mode
         Image edit = new Image("images/edit.gif");
         edit.addClickListener( new ClickListener() {
-
             public void onClick(Widget w) {
-                switchModes();
-            }
-            
+                switchModes(lhs, editMode);
+                switchModes(rhs, editMode);
+                editMode = !editMode;
+            }            
         });
         
-        
-        
         table.setWidget( 0, ACTION_COLUMN, addLhs );
         table.setWidget( 0, ACTION_COLUMN + 1, edit );
         
-        
         int rowOffset = 1;
         
         //setup LHS
-        displayEditorWidgets( 
-                         rowOffset, lhs );
-        
-        rowOffset = lhs.size() + 1;
-        
+        displayEditorWidgets( rowOffset, lhs );        
+        rowOffset = lhs.size() + 1;        
         table.setText( rowOffset, DESC_COLUMN, "THEN" );
         
-       
+        //the new button for the RHS
         table.setWidget( rowOffset, ACTION_COLUMN, new Image("images/new_item.gif") );
         
         rowOffset++;
         
         //setup RHS
         displayEditorWidgets( rowOffset, rhs );
-
-
     }
     
-    private void switchModes() {
+    private void switchModes(List list, boolean readOnly) {   
+        for ( int i = 0; i < list.size(); i++ ) {
+            EditableLine line = (EditableLine) list.get( i );
+            if (readOnly) {                
+                line.makeReadOnly();
+            } else { 
+                line.makeEditable();            
+            }
+        }
         
     }
 
-    /** This processes the individual LHS or RHS items */
+    /** 
+     * This processes the individual LHS or RHS items. 
+     */
     private void displayEditorWidgets(int rowOffset, final List dataList) {
         final BREditor editor = this;
         for ( int i = 0; i < dataList.size(); i++ ) {
-            Widget w = (Widget) dataList.get( i );
+            EditableLine w = (EditableLine) dataList.get( i );
             int row = i + rowOffset;
-            table.setWidget( row, CONTENT_COLUMN, w );            
-            Button removeButton = new Button("-");
+            table.setWidget( row, CONTENT_COLUMN, w );   
+            table.setWidget( row, ACTION_COLUMN, w.removeButton );
+            table.setWidget( row, ACTION_COLUMN + 1, w.shuffleUpButton);
+            table.setWidget( row, ACTION_COLUMN + 2, w.shuffleDownButton );
             final int idx = i;
-            removeButton.addClickListener( new ClickListener() {
+            
+            //setup remove button
+            w.removeButton.addClickListener( new ClickListener()  {
+                public void onClick(Widget wid) {
+                  dataList.remove( idx );
+                  editor.refreshLayoutTable();
+                }
+                
+            });
+            
+            //setup shuffle button
+            w.shuffleUpButton.addClickListener( new ClickListener() {
+                public void onClick(Widget wid) {
+                    shuffle( dataList, idx, true );
+                    editor.refreshLayoutTable();
+                }
+            });
 
-                public void onClick(Widget but) {
-                    dataList.remove( idx );
+            //setup shuffle button
+            w.shuffleDownButton.addClickListener( new ClickListener() {
+                public void onClick(Widget wid) {
+                    shuffle( dataList, idx, false );
                     editor.refreshLayoutTable();
                 }
-                
-            });            
-            table.setWidget( row, ACTION_COLUMN, removeButton );
+            });
+            
+            
         }
     }
+ 
 
     private void resetTableWidget() {
         //remove old if refreshing
@@ -138,11 +165,43 @@
         panel.add( table );
     }
 
+    /**
+     * This will setup the data
+     * TODO: this is only mockup data.
+     */
     private void initData() {
         
-        lhs.add( new EditableLine(new Label[] {new Label("Hello this is {foo}")}));
-        lhs.add( new EditableLine(new Label[] {new Label("Hello this is {foo}")}));
-        rhs.add( new EditableLine(new Label[] {new Label("Hello this is {foo}")}));
+        Widget[] w = new Widget[] {new Label("hello cruel "), new TextBox()};
+        Widget[] w2 = new Widget[] {new Label("hello cruel "), new TextBox()};
+        Widget[] w3 = new Widget[] {new Label("hello cruel "), new TextBox()};
+        lhs.add( new EditableLine(w));
+        lhs.add( new EditableLine(w2));
+        rhs.add( new EditableLine(w3));
     }
+
+    /** Adjust items up and down in a list.
+     * 
+     * @param lst The list to adjust.
+     * @param idx The item to move.
+     * @param up The direction to move (true == up, false == down ).
+     */
+    public static void shuffle(List lst,
+                              int idx, boolean up) {        
+        int targetIdx;
+        if (up) {
+            targetIdx = idx - 1;
+        } else {
+            targetIdx = idx + 1;
+        }        
+        
+        if (targetIdx < 0 || targetIdx >= lst.size()) {
+            return;
+        }
+        Object target = lst.get( targetIdx );
+        Object source = lst.get( idx );
+        
+        lst.set(  targetIdx, source );
+        lst.set( idx, target );        
+    }
     
 }

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/breditor/ChoiceList.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/breditor/ChoiceList.java	2006-09-19 10:39:35 UTC (rev 6289)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/breditor/ChoiceList.java	2006-09-19 10:42:52 UTC (rev 6290)
@@ -14,7 +14,6 @@
     
     public ChoiceList(ClickListener okClickListener) {
         super( true );
-        
         this.okClickListener = okClickListener;
         
         list = new ListBox();

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/breditor/EditableLine.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/breditor/EditableLine.java	2006-09-19 10:39:35 UTC (rev 6289)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/breditor/EditableLine.java	2006-09-19 10:42:52 UTC (rev 6290)
@@ -2,56 +2,54 @@
 
 import com.google.gwt.user.client.ui.Composite;
 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.Panel;
 import com.google.gwt.user.client.ui.TextBox;
 import com.google.gwt.user.client.ui.Widget;
 
-/** This encapsulates a DSL line component of a rule */
+/** This encapsulates a DSL line component of a rule. */
 public class EditableLine extends Composite {
     
-    /** The main panel of the composite */
+    /** The main panel of the composite. */
     private Panel panel;
-    
-    /** This is the list of widgets that are used to display/capture data 
-     * Should be Label, TextBox or Button (for editing mode)
+   
+    /**
+     * These buttons are for use by the host panel only.
      */
+    public Image removeButton = new Image("images/clear_item.gif");
+    public Image shuffleUpButton = new Image("images/shuffle_up.gif");
+    public Image shuffleDownButton = new Image("images/shuffle_down.gif");
+    /** 
+     * This is the list of widgets that are used to display/capture data 
+     * Should be Label, TextBox or Button (for editing mode).
+     */
     private Widget[] widgets;
     
-    
     public EditableLine(Widget[] items) {
         widgets = items;
-        
-        
         panel = new HorizontalPanel();
         initWidget( panel ); 
         makeReadOnly();
-    }
-
         
+    }
     
     public void makeReadOnly() {
         panel.clear();
-        
         panel.add( new Label(toString()) );
-//        for ( Iterator iter = widgets.iterator(); iter.hasNext(); ) {
-//            Widget element = (Widget) iter.next();
-//            if (element instanceof Label) {                
-//                panel.add( element );
-//            } else if (element instanceof TextBox) {
-//                TextBox box = (TextBox) element;
-//                panel.add( new Label(box.getText()) );
-//            } else {
-//                panel.add( element );
-//            }
-//        }
+        this.removeButton.setVisible( false );
+        this.shuffleUpButton.setVisible( false );
+        this.shuffleDownButton.setVisible( false );
     }
     
     public void makeEditable() {
-        panel.clear();
+        panel.clear();        
         for ( int i = 0; i < widgets.length; i++ ) {
-            panel.add( widgets[i] );
+            panel.add( widgets[i] );            
         }
+        this.removeButton.setVisible( true );
+        //this.shuffleDownButton.setVisible( true );
+        //this.shuffleUpButton.setVisible( true );        
     }
     
     /**
@@ -70,6 +68,7 @@
         return result;
     }
     
-    
-    
+
+
+     
 }

Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/images/clear_item.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/images/clear_item.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/images/shuffle_down.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/images/shuffle_down.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/images/shuffle_up.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/images/shuffle_up.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream




More information about the jboss-svn-commits mailing list