[jboss-svn-commits] JBL Code SVN: r7172 - in labs/jbossrules/trunk/drools-jbrms/src: main/java/org/drools/brms/client main/java/org/drools/brms/client/breditor main/java/org/drools/brms/client/rpc main/java/org/drools/brms/client/rpc/mock main/java/org/drools/brms/client/rulelist main/java/org/drools/brms/server test/java/org/drools/brms/client test/java/org/drools/brms/client/rulelist test/java/org/drools/brms/server

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Oct 27 05:40:34 EDT 2006


Author: michael.neale at jboss.com
Date: 2006-10-27 05:40:22 -0400 (Fri, 27 Oct 2006)
New Revision: 7172

Added:
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/breditor/FieldEditor.java
   labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/client/rulelist/
   labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/client/rulelist/TableDataRowTest.java
Modified:
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/Rules.java
   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/rpc/TableDataRow.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/mock/MockRepositoryServiceAsync.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulelist/EditItemEvent.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulelist/RuleItemListViewer.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulelist/RuleListView.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/TableDisplayHandler.java
   labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/ServiceImplementationTest.java
Log:
new widget for DSL editing, and changes to open editor from list on rules tab

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/Rules.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/Rules.java	2006-10-27 09:36:51 UTC (rev 7171)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/Rules.java	2006-10-27 09:40:22 UTC (rev 7172)
@@ -80,16 +80,22 @@
         
         final RuleItemListViewer list = new RuleItemListViewer(new EditItemEvent() {
 
-            public void open(String key) {
-                
-                
+            
+
+            public void open(String key,
+                             String type,
+                             String name) {
+
                 System.out.println("opening key [" + key + "]");
+                System.out.println("opening type [" + type + "]");
+                System.out.println("opening name [" + name + "]");
                 RuleView view = new RuleView();
                 
-                String ruleName = "some rule";
+                String ruleName = name;
                 tab.add( view, "<img src='images/drools.gif'>" + ruleName, true );
                 tab.selectTab( tab.getWidgetIndex( view ) );
                 view.loadUUID(key);
+                
             }
             
         });    

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-10-27 09:36:51 UTC (rev 7171)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/breditor/EditableLine.java	2006-10-27 09:40:22 UTC (rev 7172)
@@ -4,6 +4,7 @@
 import java.util.List;
 
 import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.HTML;
 import com.google.gwt.user.client.ui.HorizontalPanel;
 import com.google.gwt.user.client.ui.Label;
 import com.google.gwt.user.client.ui.Panel;
@@ -39,7 +40,7 @@
     public void makeEditable() {
         panel.clear();        
         for ( int i = 0; i < widgets.length; i++ ) {
-            panel.add( widgets[i] );            
+            panel.add( widgets[i] );  
         }
     }
     
@@ -52,8 +53,8 @@
             Widget element = widgets[i];
             if (element instanceof Label) {
                 result = result + ((Label) element).getText();
-            } else if (element instanceof TextBox){
-                result = result + ((TextBox) element).getText();
+            } else if (element instanceof FieldEditor){
+                result = result + ((FieldEditor) element).getText();
             }            
         }
         return result;
@@ -67,14 +68,13 @@
     public static Widget[] makeWidgets(String dslLine) {
         List widgets = new ArrayList();
         char[] chars = dslLine.toCharArray();
-        TextBox currentBox = null;
+        FieldEditor currentBox = null;
         Label currentLabel = null;
         for ( int i = 0; i < chars.length; i++ ) {
             char c = chars[i];
             if (c == '{') {
                 currentLabel = null;
-                currentBox = new TextBox(); 
-                currentBox.setStyleName( "dsl-field-TextBox" );
+                currentBox = new FieldEditor(); 
                 widgets.add( currentBox );
                 
             } else if (c == '}') {
@@ -101,61 +101,6 @@
     }
 
 
-    /** 
-     * This represents a little element of a DSL line - ie a label or a text box widget
-     * or whatever it grows up into being.
-     *
-     */
-    static interface DSLLineAtom {
-    
-        Widget getWidget();
-        String getValue();
-    }
 
-//    /**
-//     * This represents the read only part of a DSL line item. 
-//     */
-//    static class DSLText implements DSLLineAtom {
-//
-//        private Label label;
-//        private String value;
-//
-//        public Widget getWidget() {
-//            if (label == null) 
-//                this.label = new Label(value);
-//            return this.label;
-//        }
-//
-//        public DSLText(String txt) {
-//            this.value = txt;
-//        }
-//        
-//        public String getValue() {
-//            
-//            return this.value;
-//        }
-//        
-//    }
-//    
-//    static class DSLTextBox implements DSLLineAtom {
-//
-//        private TextBox textBox;
-//
-//        public String getValue() {
-//            return this.value;
-//        }
-//
-//        public DSLTextBox(String initialValue) {
-//            
-//        }
-//        
-//        public Widget getWidget() {
-//            if (this.textBox == null) {
-//                  this.textBox = new TextBox();
-//            }
-//            return this.textBox;
-//        }
-//        
-//    }
      
 }

Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/breditor/FieldEditor.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/breditor/FieldEditor.java	2006-10-27 09:36:51 UTC (rev 7171)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/breditor/FieldEditor.java	2006-10-27 09:40:22 UTC (rev 7172)
@@ -0,0 +1,39 @@
+package org.drools.brms.client.breditor;
+
+import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.HTML;
+import com.google.gwt.user.client.ui.HorizontalPanel;
+import com.google.gwt.user.client.ui.TextBox;
+
+/**
+ * This is a single field editor for the DSL based business rule editor.
+ * @author Michael Neale
+ */
+public class FieldEditor extends Composite {
+
+    private TextBox box;
+    private HorizontalPanel panel = new HorizontalPanel();
+    
+    public FieldEditor() {
+        box = new TextBox();
+        box.setStyleName( "dsl-field-TextBox" );
+        
+        panel.add( new HTML("&nbsp;") );
+        panel.add( box );
+        panel.add( new HTML("&nbsp;") );
+        initWidget( panel );
+    }
+    
+    
+    public void setText(String t) {
+        box.setText( t );
+    }
+    
+    public void setVisibleLength(int l) {
+        box.setVisibleLength( l );
+    }
+    
+    public String getText() {
+        return box.getText();
+    }
+}


Property changes on: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/breditor/FieldEditor.java
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/TableDataRow.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/TableDataRow.java	2006-10-27 09:36:51 UTC (rev 7171)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/TableDataRow.java	2006-10-27 09:40:22 UTC (rev 7172)
@@ -11,7 +11,48 @@
     implements
     IsSerializable {
 
-    public String key;
+    /**
+     * The unique ID for the resource.
+     * Most likely a UUID
+     */
+    public String id;
+    
+    /**
+     * The type of resource (eg DRL rule, business rule etc).
+     * This will determine what sort of editor opens it.
+     */
+    public String format;    
+    
+    /** 
+     * The actual values to display
+     * We will assume that the first one is the display name when opening. 
+     */
     public String[] values;
     
+    public String getDisplayName() {
+        return values[0];    
+    }
+
+    /**
+     * Returns a key that can be used to drive an "open" event.
+     * Use getId and getType to break it apart.
+     */
+    public String getKeyValue() {
+        return id + "," + format;
+    }
+    
+    /**
+     * Gets the ID from the key value.
+     */
+    public static String getId(String key) {
+        return key.split( "\\," )[0];
+    }
+
+    /**
+     * Gets the format from the keyvalue
+     */
+    public static String getFormat(String key) {
+        return key.split( "\\," )[1];
+    }
+    
 }

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/mock/MockRepositoryServiceAsync.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/mock/MockRepositoryServiceAsync.java	2006-10-27 09:36:51 UTC (rev 7171)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/mock/MockRepositoryServiceAsync.java	2006-10-27 09:40:22 UTC (rev 7172)
@@ -57,8 +57,9 @@
         
         for (int i = 0; i < 42; i++) {
             TableDataRow row = new TableDataRow();
-            row.key = "woozle";
-            row.values = new String[] {"name", "another", "yeah", "blah"};        
+            row.id = "woozle" + i;
+            row.format = "Rule";
+            row.values = new String[] {"name " + i, "another", "yeah", "blah"};        
             result.data[i] = row;
         }
 

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulelist/EditItemEvent.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulelist/EditItemEvent.java	2006-10-27 09:36:51 UTC (rev 7171)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulelist/EditItemEvent.java	2006-10-27 09:40:22 UTC (rev 7172)
@@ -5,7 +5,7 @@
  * @author Michael Neale
  */
 public interface EditItemEvent {
-
-    public void open(String key);
     
+    public void open(String key, String type, String name);
+    
 }

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulelist/RuleItemListViewer.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulelist/RuleItemListViewer.java	2006-10-27 09:36:51 UTC (rev 7171)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulelist/RuleItemListViewer.java	2006-10-27 09:40:22 UTC (rev 7172)
@@ -26,7 +26,10 @@
  */
 public class RuleItemListViewer extends Composite {
 
-    private static final int DEFAULT_ROWS = 100;
+    /** The number of rows to "fill out" */
+    private static final int FILLER_ROWS = 100;
+    public static final String RULE_LIST_TABLE_ID = "ruleList";
+    
     private FlexTable     outer = new FlexTable();
     private SortableTable table;
     private TableConfig   tableConfig;
@@ -74,7 +77,7 @@
         Image openIcon = new Image( "images/open_item.gif" );
         openIcon.addClickListener( new ClickListener() {
             public void onClick(Widget w) {
-                openItemEvent.open( table.getSelectedKey() );
+                openItemEvent.open( TableDataRow.getId( table.getSelectedKey()), TableDataRow.getFormat( table.getSelectedKey() ), table.getText( table.getSelectedRow(), 1 ) );
             }
         } );
         openIcon.setTitle( "Open item" );
@@ -107,15 +110,15 @@
 
         //if no data, just fill it out
         if ( data == null || data.data.length == 0) {
-            table = new SortableTable( 100,
+            table = new SortableTable( FILLER_ROWS,
                                        this.tableConfig.headers.length + 1 );
             table.setValue( 1,
                             1,
                             "" );
         } else {
             int maxRows = data.numberOfRows;
-            if (data.numberOfRows < DEFAULT_ROWS) {
-                maxRows = 100;
+            if (data.numberOfRows < FILLER_ROWS) {
+                maxRows = FILLER_ROWS;
             }
             table = new SortableTable( maxRows,
                                        this.tableConfig.headers.length + 1 );
@@ -123,7 +126,7 @@
                 TableDataRow row = data.data[i];
                 table.setValue( i + 1,
                                 0,
-                                row.key ); //this is the key
+                                row.getKeyValue() ); //this is the key
                 for ( int j = 0; j < row.values.length; j++ ) {
                     String val = row.values[j];
                     table.setValue( i + 1,

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulelist/RuleListView.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulelist/RuleListView.java	2006-10-27 09:36:51 UTC (rev 7171)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulelist/RuleListView.java	2006-10-27 09:40:22 UTC (rev 7172)
@@ -1,294 +1,294 @@
-package org.drools.brms.client.rulelist;
-
-import org.drools.brms.client.rpc.RepositoryServiceAsync;
-import org.drools.brms.client.rpc.RepositoryServiceFactory;
-import org.drools.brms.client.rpc.TableConfig;
-
-import com.google.gwt.user.client.rpc.AsyncCallback;
-import com.google.gwt.user.client.ui.ClickListener;
-import com.google.gwt.user.client.ui.Composite;
-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.SourcesTableEvents;
-import com.google.gwt.user.client.ui.TableListener;
-import com.google.gwt.user.client.ui.VerticalPanel;
-import com.google.gwt.user.client.ui.Widget;
-
-/**
- * NOTE: this is not currently used, but it worked OK.
- * It did NOT have sorting, but did have paging, and performed reasonably well.
- * 
- * SO KEEP THIS AROUND IN CASE THE OTHER ONE BLOWS CHUNKS !
- * This one is based on the mail app example.
- * 
- * A composite that displays an explorer and a list view.
- */
-public class RuleListView extends Composite
-    implements
-    TableListener,
-    ClickListener {
-
-    
-    public static final String RULE_LIST_TABLE_ID = "ruleList";
-
-    private int                    visibleItemCount = -1;
-
-    private HTML                   countLabel         = new HTML();
-    private HTML                   prevButton         = new HTML( "<a href='javascript:;'>&lt; prev</a>",
-                                                                  true );
-    private HTML                   nextButton         = new HTML( "<a href='javascript:;'>next &gt;</a>",
-                                                                  true );
-    private HTML                   editButton         = new HTML( "<a href='javascript:;'>edit</a>",
-                                                                  true );
-
-    private int                    startIndex, selectedRow = -1;
-    private Grid              table              = new Grid();
-    private HorizontalPanel        navBar             = new HorizontalPanel();
-    
-    
-    private static final RepositoryServiceAsync service = RepositoryServiceFactory.getService();
-    private String[][] data;
-    protected int numberOfColumns;
-    private EditItemEvent editEvent;
-
-    public RuleListView(EditItemEvent event) {
-
-        this.editEvent = event;
-        
-
-        // Setup the table.
-        table.setCellSpacing( 0 );
-        table.setCellPadding( 0 );
-        table.setWidth( "100%" );
-
-        // Hook up events.
-        table.addTableListener( this );
-        prevButton.addClickListener( this );
-        nextButton.addClickListener( this );
-        editButton.addClickListener( this );
-
-        // Create the 'navigation' bar at the upper-right.
-        HorizontalPanel innerNavBar = new HorizontalPanel();
-        innerNavBar.setStyleName( "rule-ListNavBar" );
-        innerNavBar.setSpacing( 8 );
-        
-        innerNavBar.add( prevButton );
-        innerNavBar.add( countLabel );
-        innerNavBar.add( nextButton );
-        innerNavBar.add( editButton );
-        
-        navBar.setHorizontalAlignment( HorizontalPanel.ALIGN_RIGHT );
-        navBar.add( innerNavBar );
-        navBar.setWidth( "100%" );
-
-        //this is so we can stack controls on top of the table
-        VerticalPanel vert = new VerticalPanel();
-        vert.add( navBar );
-        vert.add( table );
-        vert.setStyleName( "rule-List" );
-        vert.setWidth( "100%" );
-        
-        table.setStyleName( "rule-List" );
-        table.setWidth( "100%" );
-        
-        // needed for composite to work
-        initWidget( vert );
-        setStyleName( "rule-List" );
-        initTable();
-
-    }
-
-    public void onCellClicked(SourcesTableEvents sender,
-                              int row,
-                              int cell) {
-        // Select the row that was clicked (-1 to account for header row).
-        if ( row > 0 ) selectRow( row - 1 );
-    }
-
-    public void onClick(Widget sender) {
-        if ( sender == nextButton ) {
-            // Move forward a page.
-            startIndex += visibleItemCount;
-            if ( startIndex >= data.length ) startIndex -= visibleItemCount;
-            else {
-                styleRow( selectedRow,
-                          false );
-                selectedRow = -1;
-                update();
-            }
-        } else if ( sender == prevButton ) {
-            // Move back a page.
-            startIndex -= visibleItemCount;
-            if ( startIndex < 0 ) startIndex = 0;
-            else {
-                styleRow( selectedRow,
-                          false );
-                selectedRow = -1;
-                update();
-            }
-        } else if ( sender == editButton ) {
-            openEditor();
-        }
-    }
-
-    /**
-     * Open the editor as pertains to the selected row !
-     */
-    private void openEditor() {
-        if (selectedRow < data.length) {
-            this.editEvent.open( data[selectedRow][0] );
-        }
-    }
-
-    /**
-     * Initializes the table. Will load the header config, initialise etc.
-     */
-    private void initTable() {
-        // Create the header row.
-
-        table.resize( 1, 1 );
-        table.getRowFormatter().setStyleName( 0, "rule-ListHeader" );  
-        table.setText( 0, 0, "Please wait..." );    
-        
-        service.loadTableConfig( RULE_LIST_TABLE_ID, new AsyncCallback() {
-
-            public void onFailure(Throwable caught) {
-                //TODO
-            }
-
-            public void onSuccess(Object result) {
-                TableConfig config = (TableConfig) result;
-                
-                String[] header = config.headers;
-                numberOfColumns = header.length;                
-                
-                visibleItemCount = config.rowsPerPage;
-                table.resize( visibleItemCount + 1, numberOfColumns);
- 
-                for ( int i = 0; i < numberOfColumns; i++ ) {
-                    table.setText( 0, i, header[i]);
-                }   
-                
-                data = new String[1][numberOfColumns];
-                update();      
-                
-            }
-            
-        });
-        
-    }
-
-    /**
-     * Selects the given row (relative to the current page).
-     * 
-     * @param row the row to be selected
-     */
-    private void selectRow(int row) {
-
-        //change the style flags
-        styleRow( selectedRow,
-                  false );
-        styleRow( row,
-                  true );
-
-        //mark the selected row
-        selectedRow = row;
-
-        //TODO: also show "preview" view here of rule.
-        System.out.println("[Preview rule now]");
-    }
-
-    private void styleRow(int row,
-                          boolean selected) {
-        if ( row != -1 ) {
-            if ( selected ) table.getRowFormatter().addStyleName( row + 1,
-                                                                  "rule-SelectedRow" );
-            else table.getRowFormatter().removeStyleName( row + 1,
-                                                          "rule-SelectedRow" );
-        }
-    }
-    
-    
-    
-
-    
-
-    private void update() {
-                        
-        if (this.numberOfColumns == -1) {
-            //if it hasn't been setup, can't load data yet
-            return;
-        }
-        
-        // Update the older/newer buttons & label.
-        int count = data.length;
-        int max = startIndex + visibleItemCount;
-        if ( max > count ) max = count;
-
-        prevButton.setVisible( startIndex != 0 );
-        nextButton.setVisible( startIndex + visibleItemCount < count );
-        countLabel.setText( "" + (startIndex + 1) + " - " + max + " of " + count );
-
-        // Show the selected emails.
-        int i = 0;
-        for ( ; i < visibleItemCount; ++i ) {
-            // Don't read past the end.
-            if ( startIndex + i >= count ) break;
-
-            String[] rowData = data[startIndex + i];
-            
-            //RuleListItem item = data.getMailItem( startIndex + i );
-
-            // Add a new row to the table, then set each of its columns value
-            
-            for ( int col = 0; col < rowData.length; col++ ) {
-                table.setText( i + 1, col, rowData[col] );
-            }
-            
-//            table.setText( i + 1,
-//                           0,
-//                           item.name );
-//            table.setText( i + 1,
-//                           1,
-//                           item.status );
-//            table.setText( i + 1,
-//                           2,
-//                           item.changedBy );
-//            table.setText( i + 1,
-//                           3,
-//                           item.version );
-        }
-
-        // Clear any remaining slots.
-        for ( ; i < visibleItemCount; ++i ) {
-            table.setHTML( i + 1, 0, "&nbsp;" );
-        }
-        
-        // Select the first row if none is selected.
-        if ( selectedRow == -1 ) selectRow( 0 );
-        
-    }
-
-    public void loadRulesForCategoryPath(String selectedPath) {
-        service.loadRuleListForCategories( selectedPath, "", new AsyncCallback() {
-
-            public void onFailure(Throwable caught) {
-                // TODO Auto-generated method stub
-            }
-
-            public void onSuccess(Object result) {
-                String[][] data = (String[][]) result;
-                updateData(data);
-            }
-            
-        });
-        
-    }
-    
-    private void updateData(String[][] data) {
-        this.data = data;
-        update();
-    }
-}
+//package org.drools.brms.client.rulelist;
+//
+//import org.drools.brms.client.rpc.RepositoryServiceAsync;
+//import org.drools.brms.client.rpc.RepositoryServiceFactory;
+//import org.drools.brms.client.rpc.TableConfig;
+//
+//import com.google.gwt.user.client.rpc.AsyncCallback;
+//import com.google.gwt.user.client.ui.ClickListener;
+//import com.google.gwt.user.client.ui.Composite;
+//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.SourcesTableEvents;
+//import com.google.gwt.user.client.ui.TableListener;
+//import com.google.gwt.user.client.ui.VerticalPanel;
+//import com.google.gwt.user.client.ui.Widget;
+//
+///**
+// * NOTE: this is not currently used, but it worked OK.
+// * It did NOT have sorting, but did have paging, and performed reasonably well.
+// * 
+// * SO KEEP THIS AROUND IN CASE THE OTHER ONE BLOWS CHUNKS !
+// * This one is based on the mail app example.
+// * 
+// * A composite that displays an explorer and a list view.
+// */
+//public class RuleListView extends Composite
+//    implements
+//    TableListener,
+//    ClickListener {
+//
+//    
+//    public static final String RULE_LIST_TABLE_ID = "ruleList";
+//
+//    private int                    visibleItemCount = -1;
+//
+//    private HTML                   countLabel         = new HTML();
+//    private HTML                   prevButton         = new HTML( "<a href='javascript:;'>&lt; prev</a>",
+//                                                                  true );
+//    private HTML                   nextButton         = new HTML( "<a href='javascript:;'>next &gt;</a>",
+//                                                                  true );
+//    private HTML                   editButton         = new HTML( "<a href='javascript:;'>edit</a>",
+//                                                                  true );
+//
+//    private int                    startIndex, selectedRow = -1;
+//    private Grid              table              = new Grid();
+//    private HorizontalPanel        navBar             = new HorizontalPanel();
+//    
+//    
+//    private static final RepositoryServiceAsync service = RepositoryServiceFactory.getService();
+//    private String[][] data;
+//    protected int numberOfColumns;
+//    private EditItemEvent editEvent;
+//
+//    public RuleListView(EditItemEvent event) {
+//
+//        this.editEvent = event;
+//        
+//
+//        // Setup the table.
+//        table.setCellSpacing( 0 );
+//        table.setCellPadding( 0 );
+//        table.setWidth( "100%" );
+//
+//        // Hook up events.
+//        table.addTableListener( this );
+//        prevButton.addClickListener( this );
+//        nextButton.addClickListener( this );
+//        editButton.addClickListener( this );
+//
+//        // Create the 'navigation' bar at the upper-right.
+//        HorizontalPanel innerNavBar = new HorizontalPanel();
+//        innerNavBar.setStyleName( "rule-ListNavBar" );
+//        innerNavBar.setSpacing( 8 );
+//        
+//        innerNavBar.add( prevButton );
+//        innerNavBar.add( countLabel );
+//        innerNavBar.add( nextButton );
+//        innerNavBar.add( editButton );
+//        
+//        navBar.setHorizontalAlignment( HorizontalPanel.ALIGN_RIGHT );
+//        navBar.add( innerNavBar );
+//        navBar.setWidth( "100%" );
+//
+//        //this is so we can stack controls on top of the table
+//        VerticalPanel vert = new VerticalPanel();
+//        vert.add( navBar );
+//        vert.add( table );
+//        vert.setStyleName( "rule-List" );
+//        vert.setWidth( "100%" );
+//        
+//        table.setStyleName( "rule-List" );
+//        table.setWidth( "100%" );
+//        
+//        // needed for composite to work
+//        initWidget( vert );
+//        setStyleName( "rule-List" );
+//        initTable();
+//
+//    }
+//
+//    public void onCellClicked(SourcesTableEvents sender,
+//                              int row,
+//                              int cell) {
+//        // Select the row that was clicked (-1 to account for header row).
+//        if ( row > 0 ) selectRow( row - 1 );
+//    }
+//
+//    public void onClick(Widget sender) {
+//        if ( sender == nextButton ) {
+//            // Move forward a page.
+//            startIndex += visibleItemCount;
+//            if ( startIndex >= data.length ) startIndex -= visibleItemCount;
+//            else {
+//                styleRow( selectedRow,
+//                          false );
+//                selectedRow = -1;
+//                update();
+//            }
+//        } else if ( sender == prevButton ) {
+//            // Move back a page.
+//            startIndex -= visibleItemCount;
+//            if ( startIndex < 0 ) startIndex = 0;
+//            else {
+//                styleRow( selectedRow,
+//                          false );
+//                selectedRow = -1;
+//                update();
+//            }
+//        } else if ( sender == editButton ) {
+//            openEditor();
+//        }
+//    }
+//
+//    /**
+//     * Open the editor as pertains to the selected row !
+//     */
+//    private void openEditor() {
+//        if (selectedRow < data.length) {
+//            this.editEvent.open( data[selectedRow][0] );
+//        }
+//    }
+//
+//    /**
+//     * Initializes the table. Will load the header config, initialise etc.
+//     */
+//    private void initTable() {
+//        // Create the header row.
+//
+//        table.resize( 1, 1 );
+//        table.getRowFormatter().setStyleName( 0, "rule-ListHeader" );  
+//        table.setText( 0, 0, "Please wait..." );    
+//        
+//        service.loadTableConfig( RULE_LIST_TABLE_ID, new AsyncCallback() {
+//
+//            public void onFailure(Throwable caught) {
+//                //TODO
+//            }
+//
+//            public void onSuccess(Object result) {
+//                TableConfig config = (TableConfig) result;
+//                
+//                String[] header = config.headers;
+//                numberOfColumns = header.length;                
+//                
+//                visibleItemCount = config.rowsPerPage;
+//                table.resize( visibleItemCount + 1, numberOfColumns);
+// 
+//                for ( int i = 0; i < numberOfColumns; i++ ) {
+//                    table.setText( 0, i, header[i]);
+//                }   
+//                
+//                data = new String[1][numberOfColumns];
+//                update();      
+//                
+//            }
+//            
+//        });
+//        
+//    }
+//
+//    /**
+//     * Selects the given row (relative to the current page).
+//     * 
+//     * @param row the row to be selected
+//     */
+//    private void selectRow(int row) {
+//
+//        //change the style flags
+//        styleRow( selectedRow,
+//                  false );
+//        styleRow( row,
+//                  true );
+//
+//        //mark the selected row
+//        selectedRow = row;
+//
+//        //TODO: also show "preview" view here of rule.
+//        System.out.println("[Preview rule now]");
+//    }
+//
+//    private void styleRow(int row,
+//                          boolean selected) {
+//        if ( row != -1 ) {
+//            if ( selected ) table.getRowFormatter().addStyleName( row + 1,
+//                                                                  "rule-SelectedRow" );
+//            else table.getRowFormatter().removeStyleName( row + 1,
+//                                                          "rule-SelectedRow" );
+//        }
+//    }
+//    
+//    
+//    
+//
+//    
+//
+//    private void update() {
+//                        
+//        if (this.numberOfColumns == -1) {
+//            //if it hasn't been setup, can't load data yet
+//            return;
+//        }
+//        
+//        // Update the older/newer buttons & label.
+//        int count = data.length;
+//        int max = startIndex + visibleItemCount;
+//        if ( max > count ) max = count;
+//
+//        prevButton.setVisible( startIndex != 0 );
+//        nextButton.setVisible( startIndex + visibleItemCount < count );
+//        countLabel.setText( "" + (startIndex + 1) + " - " + max + " of " + count );
+//
+//        // Show the selected emails.
+//        int i = 0;
+//        for ( ; i < visibleItemCount; ++i ) {
+//            // Don't read past the end.
+//            if ( startIndex + i >= count ) break;
+//
+//            String[] rowData = data[startIndex + i];
+//            
+//            //RuleListItem item = data.getMailItem( startIndex + i );
+//
+//            // Add a new row to the table, then set each of its columns value
+//            
+//            for ( int col = 0; col < rowData.length; col++ ) {
+//                table.setText( i + 1, col, rowData[col] );
+//            }
+//            
+////            table.setText( i + 1,
+////                           0,
+////                           item.name );
+////            table.setText( i + 1,
+////                           1,
+////                           item.status );
+////            table.setText( i + 1,
+////                           2,
+////                           item.changedBy );
+////            table.setText( i + 1,
+////                           3,
+////                           item.version );
+//        }
+//
+//        // Clear any remaining slots.
+//        for ( ; i < visibleItemCount; ++i ) {
+//            table.setHTML( i + 1, 0, "&nbsp;" );
+//        }
+//        
+//        // Select the first row if none is selected.
+//        if ( selectedRow == -1 ) selectRow( 0 );
+//        
+//    }
+//
+//    public void loadRulesForCategoryPath(String selectedPath) {
+//        service.loadRuleListForCategories( selectedPath, "", new AsyncCallback() {
+//
+//            public void onFailure(Throwable caught) {
+//                // TODO Auto-generated method stub
+//            }
+//
+//            public void onSuccess(Object result) {
+//                String[][] data = (String[][]) result;
+//                updateData(data);
+//            }
+//            
+//        });
+//        
+//    }
+//    
+//    private void updateData(String[][] data) {
+//        this.data = data;
+//        update();
+//    }
+//}

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/TableDisplayHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/TableDisplayHandler.java	2006-10-27 09:36:51 UTC (rev 7171)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/TableDisplayHandler.java	2006-10-27 09:40:22 UTC (rev 7172)
@@ -37,7 +37,8 @@
             try {
 
                 
-                row.key = rule.getNode().getUUID();
+                row.id = rule.getNode().getUUID();
+                row.format = rule.getFormat();
                 row.values = new String[4];
                 row.values[0] = rule.getName();
                 row.values[1] = formatDate(rule.getLastModified());

Added: labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/client/rulelist/TableDataRowTest.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/client/rulelist/TableDataRowTest.java	2006-10-27 09:36:51 UTC (rev 7171)
+++ labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/client/rulelist/TableDataRowTest.java	2006-10-27 09:40:22 UTC (rev 7172)
@@ -0,0 +1,23 @@
+package org.drools.brms.client.rulelist;
+
+import org.drools.brms.client.rpc.TableDataRow;
+
+import junit.framework.TestCase;
+
+public class TableDataRowTest extends TestCase {
+
+    public void testRow() {
+        TableDataRow row = new TableDataRow();
+        row.id = "HJKHFKJHFDJS";
+        row.format = "rule";
+        row.values = new String[]{"name", "x"};
+        
+        assertEquals("name", row.getDisplayName());
+        
+        assertEquals(row.id + "," + row.format, row.getKeyValue());
+        
+        assertEquals(row.id, TableDataRow.getId( row.getKeyValue() ));
+        assertEquals(row.format, TableDataRow.getFormat( row.getKeyValue()));
+    }
+    
+}


Property changes on: labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/client/rulelist/TableDataRowTest.java
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/ServiceImplementationTest.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/ServiceImplementationTest.java	2006-10-27 09:36:51 UTC (rev 7171)
+++ labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/ServiceImplementationTest.java	2006-10-27 09:40:22 UTC (rev 7172)
@@ -7,7 +7,8 @@
 import org.drools.brms.client.rpc.RepositoryService;
 import org.drools.brms.client.rpc.TableConfig;
 import org.drools.brms.client.rpc.TableDataResult;
-import org.drools.brms.client.rulelist.RuleListView;
+import org.drools.brms.client.rulelist.RuleItemListViewer;
+
 import org.drools.repository.CategoryItem;
 
 import com.google.gwt.user.client.rpc.SerializableException;
@@ -92,7 +93,7 @@
   
   public void testRuleTableLoad() throws Exception {
       MockJBRMSServiceServlet impl = new MockJBRMSServiceServlet();
-      TableConfig conf = impl.loadTableConfig( RuleListView.RULE_LIST_TABLE_ID );
+      TableConfig conf = impl.loadTableConfig( RuleItemListViewer.RULE_LIST_TABLE_ID );
       assertNotNull(conf.headers);
       
       CategoryItem cat = impl.repo.loadCategory( "/" );
@@ -106,8 +107,10 @@
       assertEquals(2, result.numberOfRows);
       assertEquals(2, result.data.length);
       
-      String key = result.data[0].key;
+      String key = result.data[0].id;
       assertFalse(key.startsWith( "testRule" ));
+      
+      assertEquals(result.data[0].format, "DRL");
       assertTrue(result.data[0].values[0].startsWith( "testRule" ));
       
       




More information about the jboss-svn-commits mailing list