[jboss-svn-commits] JBL Code SVN: r9275 - labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/dsl/editor.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Feb 1 20:20:17 EST 2007


Author: woolfel
Date: 2007-02-01 20:20:17 -0500 (Thu, 01 Feb 2007)
New Revision: 9275

Modified:
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/dsl/editor/DSLEditor.java
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/dsl/editor/DSLLabelProvider.java
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/dsl/editor/DSLMappingSorter.java
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/dsl/editor/MappingEditor.java
Log:
enhancements to the dsl editor. this adds sort, copy, object metadata and a forth column for the object name.

Modified: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/dsl/editor/DSLEditor.java
===================================================================
--- labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/dsl/editor/DSLEditor.java	2007-02-02 01:16:47 UTC (rev 9274)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/dsl/editor/DSLEditor.java	2007-02-02 01:20:17 UTC (rev 9275)
@@ -32,6 +32,7 @@
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Combo;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Table;
@@ -56,6 +57,8 @@
     private Text exprText; //for language expression
     private Text mappingText; //for target rule expression
     private Text descriptionText; //just a comment field
+    private Text objText; // for the object name
+    private Combo sortCombo; // for the sort field
     
     public void doSave(IProgressMonitor monitor) {
         
@@ -177,6 +180,22 @@
         firePropertyChange( PROP_DIRTY );
     }
 
+    /**
+     * The method sorts th e
+     *
+     */
+    public void sortModel() {
+    	if (sortCombo.getSelectionIndex() == DSLMappingSorter.EXPRESSION) {
+            tableViewer.setSorter(new DSLMappingSorter(DSLMappingSorter.EXPRESSION));
+    	} else if (sortCombo.getSelectionIndex() == DSLMappingSorter.OBJECT) {
+            tableViewer.setSorter(new DSLMappingSorter(DSLMappingSorter.OBJECT));
+    	} else if (sortCombo.getSelectionIndex() == DSLMappingSorter.SCOPE) {
+            tableViewer.setSorter(new DSLMappingSorter(DSLMappingSorter.SCOPE));
+    	} else if (sortCombo.getSelectionIndex() == DSLMappingSorter.MAPPING) {
+            tableViewer.setSorter(new DSLMappingSorter(DSLMappingSorter.MAPPING));
+    	}
+    }
+    
     public boolean isSaveAsAllowed() {
         // TODO implement SaveAs
         return false;
@@ -209,9 +228,13 @@
         //setup the fields below the table
         createExpressionViewField( parent );    
         createEditButton( parent );
-        createMappingViewField( parent );           
+        createMappingViewField( parent );
         createDeleteButton( parent );
+        createObjectViewField(parent);
         createAddButton( parent );
+        createSortField(parent);
+        createSortButton(parent);
+        createCopyButton(parent);
         
         //listeners on the table...
         createTableListeners();
@@ -238,6 +261,7 @@
                 NLMappingItem selected = getCurrentSelected();                
                 exprText.setText( selected.getNaturalTemplate() );   
                 mappingText.setText( selected.getTargetTemplate() );
+                objText.setText(selected.getObjectName());
             }
             
         });
@@ -309,6 +333,39 @@
 
     }
 
+    private void createObjectViewField(Composite parent) {
+
+        Label obj = new Label(parent, SWT.NONE);
+        obj.setText( "Object:" );
+        GridData gridData = new GridData (GridData.HORIZONTAL_ALIGN_BEGINNING);
+        gridData.widthHint = 80;
+        obj.setLayoutData(gridData);
+        
+        objText = new Text(parent, SWT.BORDER);
+        objText.setEditable( false );
+        gridData = new GridData (GridData.FILL_HORIZONTAL);
+        
+        objText.setLayoutData(gridData);
+
+    }
+    
+    private void createSortField(Composite parent) {
+        Label sort = new Label(parent, SWT.NONE);
+        sort.setText( "Sort by:" );
+        GridData gridData = new GridData (GridData.HORIZONTAL_ALIGN_BEGINNING);
+        gridData.widthHint = 80;
+        sort.setLayoutData(gridData);
+        
+        sortCombo = new Combo(parent, SWT.READ_ONLY);
+        sortCombo.add("Object", DSLMappingSorter.OBJECT);
+        sortCombo.add("Language Expression", DSLMappingSorter.EXPRESSION);
+        sortCombo.add("Rule Language Meaning", DSLMappingSorter.MAPPING);
+        sortCombo.add("Scope", DSLMappingSorter.SCOPE);
+        gridData = new GridData (GridData.FILL_HORIZONTAL);
+        
+        sortCombo.setLayoutData(gridData);
+    }
+
     /** Refreshes the table do make sure it is up to date with the model. */
     private void refreshModel() {
         tableViewer.setInput( model );
@@ -370,6 +427,25 @@
         });
     }    
 
+    private void createSortButton(Composite parent) {
+        // Create and configure the "Add" button
+        Button sort = new Button(parent, SWT.PUSH | SWT.CENTER);
+        sort.setText("Sort");
+
+        GridData gridData = new GridData (GridData.HORIZONTAL_ALIGN_BEGINNING);
+        gridData.widthHint = 80;
+        sort.setLayoutData(gridData);
+        sort.addSelectionListener(new SelectionAdapter() {        
+            // Add a task to the ExampleTaskList and refresh the view
+            public void widgetSelected(SelectionEvent e) {
+            	sortModel();
+                refreshModel();
+                makeDirty();
+            }
+
+
+        });
+    }    
     
     /**
      * Return the selected item from the table grid thingy.
@@ -394,7 +470,7 @@
             // Add an item, should pop up the editor
             public void widgetSelected(SelectionEvent e) {  
                 
-                NLMappingItem newItem = new NLMappingItem("", "", "*");
+                NLMappingItem newItem = new NLMappingItem("", "", "*", "");
                 
                 MappingEditor editor = new MappingEditor(getSite().getShell());//shell);
                 editor.create();
@@ -416,6 +492,44 @@
     }
 
     
+    private void createCopyButton(Composite parent) {
+        // Create and configure the "Add" button
+        Button copy = new Button(parent, SWT.PUSH | SWT.CENTER);
+        copy.setText("Copy");
+
+        GridData gridData = new GridData (GridData.HORIZONTAL_ALIGN_BEGINNING);
+        gridData.widthHint = 80;
+        copy.setLayoutData(gridData);
+        
+        copy.addSelectionListener(new SelectionAdapter() {
+        
+            // Add an item, should pop up the editor
+            public void widgetSelected(SelectionEvent e) {  
+                
+            	NLMappingItem curr = getCurrentSelected();
+                NLMappingItem newItem = new NLMappingItem(curr
+						.getNaturalTemplate(), curr.getTargetTemplate(), curr
+						.getScope(), curr.getObjectName());
+                
+                MappingEditor editor = new MappingEditor(getSite().getShell());//shell);
+                editor.create();
+                editor.getShell().setText("New language mapping");
+                editor.setTitle( "Create a new language element mapping from a copy." );
+                editor.setTitleImage( getTitleImage() );
+                
+                editor.setNLMappingItem( newItem );
+                
+                editor.open();
+                if (!editor.isCancelled()) {
+                    model.addNLItem( newItem );
+                    refreshModel();
+                    makeDirty();
+                }                
+                
+            }
+        });
+    }
+    
     /**
      * Create the viewer.
      */
@@ -423,7 +537,6 @@
         tableViewer = new TableViewer(table);
         tableViewer.setUseHashlookup(true);
         //following is if we want default sorting... my thought is no...
-        //tableViewer.setSorter(new DSLMappingSorter(DSLMappingSorter.EXPRESSION));
     }
 
     /**
@@ -472,6 +585,11 @@
 
         // 4th column with task PercentComplete 
         column = new TableColumn(table, SWT.LEFT, 2);
+        column.setText("Object");
+        column.setWidth(80);
+        
+        // 5th column with task PercentComplete 
+        column = new TableColumn(table, SWT.LEFT, 3);
         column.setText("Scope");
         column.setWidth(80);
         

Modified: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/dsl/editor/DSLLabelProvider.java
===================================================================
--- labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/dsl/editor/DSLLabelProvider.java	2007-02-02 01:16:47 UTC (rev 9274)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/dsl/editor/DSLLabelProvider.java	2007-02-02 01:20:17 UTC (rev 9275)
@@ -32,6 +32,9 @@
                 result = item.getTargetTemplate();
                 break;
             case 2 :
+            	result = item.getObjectName();
+            	break;
+            case 3 :
                 result = item.getScope();
                 break;
             default :

Modified: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/dsl/editor/DSLMappingSorter.java
===================================================================
--- labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/dsl/editor/DSLMappingSorter.java	2007-02-02 01:16:47 UTC (rev 9274)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/dsl/editor/DSLMappingSorter.java	2007-02-02 01:20:17 UTC (rev 9275)
@@ -10,9 +10,10 @@
  */
 public class DSLMappingSorter extends ViewerSorter {
 
-	public final static int EXPRESSION = 0;
-	public final static int MAPPING = 1;
-	public final static int SCOPE = 2;
+	public final static int OBJECT = 0;
+	public final static int EXPRESSION = 1;
+	public final static int MAPPING = 2;
+	public final static int SCOPE = 3;
 
 	// Criteria that the instance uses 
 	private int criteria;
@@ -37,6 +38,8 @@
 		NLMappingItem item2 = (NLMappingItem) o2;
 
 		switch (criteria) {
+			case OBJECT:
+				return compareObject(item1, item2);
 			case EXPRESSION :
 				return compareExpressions(item1, item2);
 			case MAPPING :
@@ -65,6 +68,11 @@
         return item1.getNaturalTemplate().compareTo( item2.getNaturalTemplate() );
     }
 
+    private int compareObject(NLMappingItem item1, 
+    						  NLMappingItem item2) {
+		return item1.getObjectName().compareTo(item2.getObjectName());
+	}
+    
     /**
 	 * @return the sort criterion
 	 */

Modified: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/dsl/editor/MappingEditor.java
===================================================================
--- labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/dsl/editor/MappingEditor.java	2007-02-02 01:16:47 UTC (rev 9274)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/dsl/editor/MappingEditor.java	2007-02-02 01:20:17 UTC (rev 9275)
@@ -29,6 +29,7 @@
     
     private Text exprText;
     private Text mappingText;
+    private Text objText;
     private Combo scopeCombo;
     private boolean cancelled;
 
@@ -47,6 +48,7 @@
         setScope( model.getScope() );
         exprText.setText( model.getNaturalTemplate() );
         mappingText.setText( model.getTargetTemplate() );
+        objText.setText( model.getObjectName() );
     }
     
     
@@ -78,6 +80,7 @@
                                                                      ));
         this.model.setTargetTemplate( this.mappingText.getText() );
         this.model.setScope( this.scopeCombo.getText() );
+        this.model.setObjectName( this.objText.getText() );
         super.okPressed();
     }
 
@@ -100,6 +103,7 @@
         //setup fields
         createExpressionField( parent );
         createMappingField( parent );
+        createObjectField( parent );
         createScopeField( parent );
         
         // create the top level composite wrapper
@@ -160,6 +164,25 @@
                 "the place where {name} would appear." );
     }
     
+    private void createObjectField(Composite parent) {
+        Label objectLbl = new Label( parent,
+                                      SWT.NONE );
+        objectLbl.setText( "Object:" );
+        objectLbl.setFont( parent.getFont() );
+        objectLbl.setLayoutData( new GridData(GridData.HORIZONTAL_ALIGN_END) );        
+
+        objText = new Text( parent,
+                                SWT.BORDER );
+        GridData data = new GridData();
+        data.widthHint = 450;
+        data.horizontalAlignment = GridData.FILL;
+        data.grabExcessHorizontalSpace = true;
+        objText.setLayoutData( data );
+
+        objText.setToolTipText( "Enter the name of the object." );
+        
+    }
+
     private void createScopeField(Composite parent) {
         
         //type




More information about the jboss-svn-commits mailing list