[jboss-svn-commits] JBL Code SVN: r14035 - labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/rulebuilder/ui.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sat Aug 4 17:59:44 EDT 2007


Author: arhan
Date: 2007-08-04 17:59:44 -0400 (Sat, 04 Aug 2007)
New Revision: 14035

Added:
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/rulebuilder/ui/ConstraintValueEditor.java
Modified:
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/rulebuilder/ui/FactPatternWidget.java
Log:
extracted constraint value editor to a separate class

Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/rulebuilder/ui/ConstraintValueEditor.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/rulebuilder/ui/ConstraintValueEditor.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/rulebuilder/ui/ConstraintValueEditor.java	2007-08-04 21:59:44 UTC (rev 14035)
@@ -0,0 +1,194 @@
+package org.drools.eclipse.rulebuilder.ui;
+
+import java.util.List;
+
+import org.drools.brms.client.modeldriven.SuggestionCompletionEngine;
+import org.drools.brms.client.modeldriven.brl.ISingleFieldConstraint;
+import org.drools.eclipse.DroolsEclipsePlugin;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.events.KeyListener;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.forms.events.HyperlinkEvent;
+import org.eclipse.ui.forms.events.IHyperlinkListener;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+import org.eclipse.ui.forms.widgets.ImageHyperlink;
+
+public class ConstraintValueEditor {
+
+	private Composite composite;
+
+	private ISingleFieldConstraint constraint;
+
+	private FormToolkit toolkit;
+
+	private RuleModeller modeller;
+
+	private boolean numericValue;
+	
+	public ConstraintValueEditor(Composite composite,
+			ISingleFieldConstraint constraint, FormToolkit toolkit,
+			RuleModeller modeller, String numericType /*e.g. is "Numeric"*/) {
+		this.composite = composite;
+		this.constraint = constraint;
+		this.toolkit = toolkit;
+		this.modeller = modeller;
+		
+		if (numericType.equals( SuggestionCompletionEngine.TYPE_NUMERIC )) {
+            this.numericValue = true;
+        }
+		create();
+	}
+
+	private void create() {
+		if (constraint.constraintValueType == ISingleFieldConstraint.TYPE_UNDEFINED) {
+			ImageHyperlink link = addImage(composite, "icons/edit.gif");
+			link.setToolTipText("Choose value editor type");
+			link.addHyperlinkListener(new IHyperlinkListener() {
+				public void linkActivated(HyperlinkEvent e) {
+					RuleDialog popup = new ValueEditorTypeSelectionDialog(
+							composite.getShell(), toolkit, modeller, constraint);
+					popup.open();
+				}
+
+				public void linkEntered(HyperlinkEvent e) {
+				}
+
+				public void linkExited(HyperlinkEvent e) {
+				}
+			});
+
+			GridData gd = new GridData(GridData.FILL_HORIZONTAL
+					| GridData.GRAB_HORIZONTAL
+					| GridData.HORIZONTAL_ALIGN_BEGINNING);
+			gd.horizontalSpan = 2;
+
+			link.setLayoutData(gd);
+		} else {
+			switch (constraint.constraintValueType) {
+			case ISingleFieldConstraint.TYPE_LITERAL:
+				literalValueEditor(composite, constraint, new GridData(
+						GridData.FILL_HORIZONTAL));
+				break;
+			case ISingleFieldConstraint.TYPE_RET_VALUE:
+				addImage(composite, "icons/function_assets.gif");
+				formulaValueEditor(composite, constraint, new GridData(
+						GridData.FILL_HORIZONTAL));
+				break;
+			case ISingleFieldConstraint.TYPE_VARIABLE:
+				variableEditor(composite, constraint, new GridData(
+						GridData.FILL_HORIZONTAL));
+				break;
+			default:
+				break;
+			}
+		}
+
+	}
+
+	private void literalValueEditor(Composite parent,
+			final ISingleFieldConstraint c, GridData gd) {
+		final Text box = toolkit.createText(parent, "");
+
+		if (c.value != null) {
+			box.setText(c.value);
+		}
+
+		gd.horizontalSpan = 2;
+		gd.grabExcessHorizontalSpace = true;
+		gd.minimumWidth = 100;
+		box.setLayoutData(gd);
+
+		box.addModifyListener(new ModifyListener() {
+			public void modifyText(ModifyEvent e) {
+				c.value = box.getText();
+				modeller.setDirty(true);
+			}
+		});
+		
+		if (this.numericValue) {
+			box.addKeyListener(new KeyListener(){
+
+				public void keyPressed(KeyEvent e) {
+					if(Character.isLetter(e.character)){
+						e.doit = false;
+					}
+				}
+
+				public void keyReleased(KeyEvent e) {
+					
+				}
+				
+			});
+		}
+	}
+
+	private void formulaValueEditor(Composite parent,
+			final ISingleFieldConstraint c, GridData gd) {
+
+		final Text box = toolkit.createText(parent, "");
+
+		if (c.value != null) {
+			box.setText(c.value);
+		}
+
+		gd.grabExcessHorizontalSpace = true;
+		gd.minimumWidth = 100;
+		box.setLayoutData(gd);
+
+		box.addModifyListener(new ModifyListener() {
+			public void modifyText(ModifyEvent e) {
+				c.value = box.getText();
+				modeller.setDirty(true);
+			}
+		});
+	}
+
+	private void variableEditor(Composite composite,
+			final ISingleFieldConstraint c, GridData gd) {
+		List vars = modeller.getModel().getBoundVariablesInScope(c);
+
+		final Combo combo = new Combo(composite, SWT.READ_ONLY);
+
+		gd.horizontalSpan = 2;
+		combo.setLayoutData(gd);
+		if (c.value == null) {
+			combo.add("Choose ...");
+		}
+
+		int idx = 0;
+
+		for (int i = 0; i < vars.size(); i++) {
+			String var = (String) vars.get(i);
+
+			if (c.value != null && c.value.equals(var)) {
+				idx = i;
+			}
+			combo.add(var);
+		}
+
+		combo.select(idx);
+
+		combo.addModifyListener(new ModifyListener() {
+			public void modifyText(ModifyEvent e) {
+				c.value = combo.getText();
+			}
+		});
+
+	}
+
+	public ImageHyperlink addImage(Composite parent, String fileName) {
+		ImageHyperlink imageHyperlink = toolkit.createImageHyperlink(parent, 0);
+		ImageDescriptor imageDescriptor = DroolsEclipsePlugin
+				.getImageDescriptor(fileName);
+		imageHyperlink.setImage(imageDescriptor.createImage());
+		return imageHyperlink;
+	}
+
+}

Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/rulebuilder/ui/FactPatternWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/rulebuilder/ui/FactPatternWidget.java	2007-08-04 19:39:03 UTC (rev 14034)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/rulebuilder/ui/FactPatternWidget.java	2007-08-04 21:59:44 UTC (rev 14035)
@@ -13,8 +13,6 @@
 import org.drools.brms.client.modeldriven.brl.SingleFieldConstraint;
 import org.drools.eclipse.rulebuilder.modeldriven.HumanReadable;
 import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.events.KeyListener;
 import org.eclipse.swt.events.ModifyEvent;
 import org.eclipse.swt.events.ModifyListener;
 import org.eclipse.swt.graphics.Color;
@@ -317,8 +315,9 @@
         }
         operatorDropDown( constraintComposite,
                           c );
-        constraintValueEditor( constraintComposite,
-                               c );
+        
+        constraintValueEditor(constraintComposite, c, c.fieldName);
+        
         createConnectives( constraintComposite,
                            c );
         addConnectiveAction( constraintComposite,
@@ -394,12 +393,19 @@
                 connectiveOperatorDropDown( parent,
                                             con,
                                             c.fieldName );
-                constraintValueEditor( parent,
-                                       con );
+               constraintValueEditor( parent,
+                                       con, c.fieldName );
+                
             }
         }
     }
 
+    private void constraintValueEditor(Composite parent, ISingleFieldConstraint c, String name ){
+    	String type = this.modeller.getSuggestionCompletionEngine().getFieldType( pattern.factType, name );
+        new ConstraintValueEditor (parent, c, toolkit, modeller, type);
+    }
+    
+    
     private void addConnectiveAction(Composite constraintComposite,
                                      final SingleFieldConstraint c) {
         ImageHyperlink link = addImage( constraintComposite,
@@ -594,119 +600,6 @@
         } );
     }
 
-    // from org.drools.brms.client.modeldriven.ui.ConstraintValueEditor
-    //TODO: private boolean numericValue;
-    private void constraintValueEditor(final Composite parent,
-                                       final ISingleFieldConstraint c) {
-        if ( c.constraintValueType == ISingleFieldConstraint.TYPE_UNDEFINED ) {
-            ImageHyperlink link = addImage( parent,
-                                            "icons/edit.gif" );
-            link.setToolTipText( "Choose value editor type" );
-            link.addHyperlinkListener( new IHyperlinkListener() {
-                public void linkActivated(HyperlinkEvent e) {
-                    RuleDialog popup = new ValueEditorTypeSelectionDialog( parent.getShell(),
-                                                                           toolkit,
-                                                                           getModeller(),
-                                                                           c );
-                    popup.open();
-                }
-
-                public void linkEntered(HyperlinkEvent e) {
-                }
-
-                public void linkExited(HyperlinkEvent e) {
-                }
-            } );
-
-            GridData gd = new GridData( GridData.FILL_HORIZONTAL | 
-            		GridData.GRAB_HORIZONTAL | 
-            		GridData.HORIZONTAL_ALIGN_BEGINNING);
-            gd.horizontalSpan = 2;
-            
-            link.setLayoutData(gd);
-        } else {
-            switch ( c.constraintValueType ) {
-                case ISingleFieldConstraint.TYPE_LITERAL :
-                    literalValueEditor( parent,
-                                        c,
-                                        new GridData( GridData.FILL_HORIZONTAL ) );
-                    break;
-                case ISingleFieldConstraint.TYPE_RET_VALUE :
-                    addImage( parent,
-                              "icons/function_assets.gif" );
-                    formulaValueEditor( parent,
-                                        c,
-                                        new GridData( GridData.FILL_HORIZONTAL  ) );
-                    break;
-                case ISingleFieldConstraint.TYPE_VARIABLE :
-                    variableEditor( parent,
-                                    c,
-                                    new GridData( GridData.FILL_HORIZONTAL ) );
-                    break;
-                default :
-                    break;
-            }
-        }
-    }
-
-    private void variableEditor(Composite composite,
-                                final ISingleFieldConstraint c,
-                                GridData gd) {
-        List vars = getModeller().getModel().getBoundVariablesInScope( c );
-
-        final Combo combo = new Combo( composite,
-                                       SWT.READ_ONLY );
-
-        gd.horizontalSpan = 2;
-        combo.setLayoutData( gd );
-        if ( c.value == null ) {
-            combo.add( "Choose ..." );
-        }
-
-        int idx = 0;
-
-        for ( int i = 0; i < vars.size(); i++ ) {
-            String var = (String) vars.get( i );
-
-            if ( c.value != null && c.value.equals( var ) ) {
-                idx = i;
-            }
-            combo.add( var );
-        }
-
-        combo.select( idx );
-
-        combo.addModifyListener( new ModifyListener() {
-            public void modifyText(ModifyEvent e) {
-                c.value = combo.getText();
-            }
-        } );
-
-    }
-
-    private void literalValueEditor(Composite parent,
-                                    final ISingleFieldConstraint c,
-                                    GridData gd) {
-        final Text box = toolkit.createText( parent,
-                                             "" );
-
-        if ( c.value != null ) {
-            box.setText( c.value );
-        }
-        
-        gd.horizontalSpan = 2;
-        gd.grabExcessHorizontalSpace = true;
-        gd.minimumWidth = 100;
-        box.setLayoutData( gd );
-        
-        box.addModifyListener( new ModifyListener() {
-            public void modifyText(ModifyEvent e) {
-                c.value = box.getText();
-                getModeller().setDirty( true );
-            }
-        } );
-    }
-
     private void formulaValueEditor(Composite parent,
                                     final ISingleFieldConstraint c,
                                     GridData gd) {
@@ -730,13 +623,6 @@
         } );
     }
 
-	/*private int getPreferredWidth(final Text box) {
-		GC gc = new GC(box);
-        FontMetrics fm = gc.getFontMetrics();
-        int width = 7 * fm.getAverageCharWidth();
-		return width;
-	}*/
-
     private void deleteBindedFact() {
         List newPatterns = new ArrayList();
         for ( int i = 0; i < parentPattern.patterns.length; i++ ) {




More information about the jboss-svn-commits mailing list