[jboss-svn-commits] JBL Code SVN: r25920 - labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/rulebuilder/ui.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Apr 2 08:20:56 EDT 2009
Author: ahtik
Date: 2009-04-02 08:20:55 -0400 (Thu, 02 Apr 2009)
New Revision: 25920
Modified:
labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/rulebuilder/ui/AddNewFieldConstraintDialog.java
labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/rulebuilder/ui/AssignFieldVariableDialog.java
labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/rulebuilder/ui/ConstraintValueEditor.java
labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/rulebuilder/ui/FactPatternWidget.java
Log:
JBRULES-2033: more enums support and a bit polished fact row
Modified: labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/rulebuilder/ui/AddNewFieldConstraintDialog.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/rulebuilder/ui/AddNewFieldConstraintDialog.java 2009-04-02 11:44:02 UTC (rev 25919)
+++ labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/rulebuilder/ui/AddNewFieldConstraintDialog.java 2009-04-02 12:20:55 UTC (rev 25920)
@@ -120,13 +120,17 @@
createLabel( composite,
"Add a restriction on a field" );
- String[] fieldCompletitions = getCompletion().getFieldCompletions( pattern.factType );
+ SuggestionCompletionEngine engine = getCompletion();
+ String[] fieldCompletitions = engine.getFieldCompletions( pattern.factType );
final Combo fieldsCombo = new Combo( composite,
SWT.READ_ONLY );
fieldsCombo.setLayoutData( gd );
fieldsCombo.add( "..." );
for ( int i = 0; i < fieldCompletitions.length; i++ ) {
- fieldsCombo.add( fieldCompletitions[i] );
+ String field = fieldCompletitions[i];
+ fieldsCombo.add( field );
+ fieldsCombo.setData( field,
+ engine.fieldTypes.get( pattern.factType + "." + field ) );
}
fieldsCombo.select( 0 );
@@ -139,6 +143,7 @@
SingleFieldConstraint constraint = new SingleFieldConstraint();
constraint.fieldName = fieldsCombo.getText();
+ constraint.fieldType = (String) fieldsCombo.getData( fieldsCombo.getText() );
pattern.addConstraint( constraint );
modeller.setDirty( true );
modeller.reloadLhs();
Modified: labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/rulebuilder/ui/AssignFieldVariableDialog.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/rulebuilder/ui/AssignFieldVariableDialog.java 2009-04-02 11:44:02 UTC (rev 25919)
+++ labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/rulebuilder/ui/AssignFieldVariableDialog.java 2009-04-02 12:20:55 UTC (rev 25920)
@@ -1,10 +1,15 @@
package org.drools.eclipse.rulebuilder.ui;
+import org.drools.guvnor.client.modeldriven.SuggestionCompletionEngine;
+import org.drools.guvnor.client.modeldriven.brl.FactPattern;
import org.drools.guvnor.client.modeldriven.brl.SingleFieldConstraint;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
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.Control;
import org.eclipse.swt.widgets.Event;
@@ -21,10 +26,13 @@
private SingleFieldConstraint con;
+ private final FactPattern pattern;
+
public AssignFieldVariableDialog(Shell parent,
FormToolkit toolkit,
RuleModeller modeller,
- SingleFieldConstraint con) {
+ SingleFieldConstraint con,
+ FactPattern pattern) {
super( parent,
"Bind the field called [" + con.fieldName + "] to a variable.",
"Type the variable name and hit the button." );
@@ -32,6 +40,7 @@
this.toolkit = toolkit;
this.modeller = modeller;
this.con = con;
+ this.pattern = pattern;
}
protected Control createDialogArea(final Composite parent) {
@@ -48,10 +57,49 @@
composite.setLayout( l );
createVariableBindingRow( composite );
+ createSubfieldConstraintRow( composite );
toolkit.paintBordersFor( composite );
return composite;
}
+ private void createSubfieldConstraintRow(final Composite composite) {
+ SuggestionCompletionEngine engine = modeller.getSuggestionCompletionEngine();
+ String[] fields = engine.getFieldCompletions( con.fieldType );
+ if ( fields == null || fields.length <= 0 ) {
+ return;
+ }
+ createLabel( composite,
+ "Add a restriction on a subfield" );
+ final Combo combo = new Combo( composite,
+ SWT.DROP_DOWN | SWT.READ_ONLY );
+ combo.add( "..." );
+ for ( int i = 0; i < fields.length; i++ ) {
+ String field = fields[i];
+ combo.add( field );
+ combo.setData( field,
+ engine.fieldTypes.get( con.fieldType + "." + field ) );
+ }
+ combo.select( 0 );
+
+ combo.addModifyListener( new ModifyListener() {
+
+ public void modifyText(ModifyEvent e) {
+ String fName = combo.getText();
+
+ if ( combo.getSelectionIndex() == 0 ) {
+ return;
+ }
+
+ pattern.addConstraint( new SingleFieldConstraint( fName,
+ ((String) combo.getData( fName )),
+ con ) );
+ modeller.setDirty( true );
+ modeller.reloadLhs();
+ close();
+ }
+ } );
+ }
+
private void createVariableBindingRow(Composite composite) {
createLabel( composite,
"Variable name" );
Modified: labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/rulebuilder/ui/ConstraintValueEditor.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/rulebuilder/ui/ConstraintValueEditor.java 2009-04-02 11:44:02 UTC (rev 25919)
+++ labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/rulebuilder/ui/ConstraintValueEditor.java 2009-04-02 12:20:55 UTC (rev 25920)
@@ -124,17 +124,34 @@
GridData gd) {
String fieldName = ((SingleFieldConstraint) c).fieldName;
- DropDownData enums = modeller.getSuggestionCompletionEngine().getEnums( pattern,
- fieldName );
+ DropDownData enums = null;
boolean found = false;
+ if ( ((SingleFieldConstraint) c).fieldType.equals( SuggestionCompletionEngine.TYPE_BOOLEAN )) {
+ enums = DropDownData.create(new String[]{"true", "false"});
+ }else
+ {
+ enums = modeller.getSuggestionCompletionEngine().getEnums( pattern,
+ fieldName );
+ }
if ( enums != null && enums.fixedList.length > 0 ) {
String[] list = enums.fixedList;
final Combo combo = new Combo( parent,
SWT.DROP_DOWN | SWT.READ_ONLY );
for ( int i = 0; i < list.length; i++ ) {
String e = list[i];
- combo.add( e );
- if ( e.equals( c.value ) ) {
+ String[] split = null;
+ boolean s = false;
+ if ( e.indexOf( '=' ) > 0 ) {
+ split = e.split( "=" );
+ e = split[1];
+ combo.add( e.trim() );
+ combo.setData( e.trim(),
+ split[0].trim() );
+ s = true;
+ } else {
+ combo.add( e );
+ }
+ if ( e.equals( c.value ) || (s && split[0].trim().equals( c.value )) ) {
combo.select( i );
found = true;
}
@@ -147,7 +164,11 @@
combo.addModifyListener( new ModifyListener() {
public void modifyText(ModifyEvent e) {
- c.value = combo.getItem( combo.getSelectionIndex() );
+ String item = combo.getItem( combo.getSelectionIndex() );
+ if ( combo.getData( item ) != null ) {
+ item = (String) combo.getData( item );
+ }
+ c.value = item;
modeller.reloadLhs();
modeller.setDirty( true );
}
Modified: labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/rulebuilder/ui/FactPatternWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/rulebuilder/ui/FactPatternWidget.java 2009-04-02 11:44:02 UTC (rev 25919)
+++ labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/rulebuilder/ui/FactPatternWidget.java 2009-04-02 12:20:55 UTC (rev 25920)
@@ -1,6 +1,7 @@
package org.drools.eclipse.rulebuilder.ui;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
import org.drools.guvnor.client.modeldriven.SuggestionCompletionEngine;
@@ -16,6 +17,7 @@
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.Device;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Combo;
@@ -79,18 +81,20 @@
}
private void create() {
- Label l = toolkit.createLabel( parent,
+ Composite composite = new Composite( parent,
+ SWT.NO_FOCUS );
+ composite.setLayout( new GridLayout( 1,
+ true ) );
+ Label l = toolkit.createLabel( composite,
getPatternLabel() );
+ l.setBackground( Display.getDefault().getSystemColor( SWT.COLOR_GRAY ) );
GridData labelGD = new GridData( GridData.FILL_BOTH | GridData.GRAB_HORIZONTAL );
labelGD.horizontalSpan = 2;
- //labelGD.verticalAlignment = SWT.CENTER;
+ labelGD.verticalAlignment = SWT.CENTER;
//labelGD.horizontalAlignment = SWT.CENTER;
- l.setLayoutData( labelGD );
- l.setBackground( new Color( parent.getShell().getDisplay(),
- 240,
- 240,
- 240 ) );
+ composite.setLayoutData( labelGD );
+ composite.setBackground( Display.getDefault().getSystemColor( SWT.COLOR_GRAY ) );
addDeleteAction();
addMoreOptionsAction();
@@ -98,11 +102,17 @@
Composite constraintComposite = toolkit.createComposite( parent );
GridLayout constraintLayout = new GridLayout();
constraintLayout.numColumns = 8;
+ constraintLayout.marginLeft = 5;
constraintComposite.setLayout( constraintLayout );
for ( int row = 0; row < pattern.getFieldConstraints().length; row++ ) {
+ FieldConstraint constraint = pattern.getFieldConstraints()[row];
+ boolean nested = false;
+ if ( constraint instanceof SingleFieldConstraint ) {
+ nested = ((SingleFieldConstraint) constraint).parent != null;
+ }
renderFieldConstraints( constraintComposite,
- pattern.getFieldConstraints()[row],
+ constraint,
null,
row,
true,
@@ -301,12 +311,26 @@
final SingleFieldConstraint c,
boolean showBinding,
boolean nested) {
- addBindingField( constraintComposite,
+
+ Composite pad = new Composite( constraintComposite,
+ SWT.NONE );
+ pad.setLayout( new GridLayout( 2,
+ false ) );
+ GridData gd = new GridData();
+ gd.horizontalAlignment = SWT.LEFT;
+ gd.horizontalSpan = 2;
+
+ pad.setLayoutData( gd );
+ GridData data = new GridData();
+
+ data.horizontalIndent = 15 * getNests( c );
+ addBindingField( pad,
c,
- showBinding );
- toolkit.createLabel( constraintComposite,
+ showBinding,
+ data );
+ toolkit.createLabel( pad,
c.fieldName );
- if ( c.connectives == null || c.connectives.length == 0 ) {
+ if (!hasChildren( row ) &&(c.connectives == null || c.connectives.length == 0 )) {
addRemoveButton( constraintComposite,
parentConstraint,
row,
@@ -329,9 +353,20 @@
c );
}
+ private int getNests(final SingleFieldConstraint c) {
+ SingleFieldConstraint s = (SingleFieldConstraint) c.parent;
+ int nests = 0;
+ while ( s != null ) {
+ nests++;
+ s = (SingleFieldConstraint) s.parent;
+ }
+ return nests;
+ }
+
private void addBindingField(Composite constraintComposite,
final SingleFieldConstraint c,
- boolean showBinding) {
+ boolean showBinding,
+ Object data) {
if ( !c.isBound() ) {
if ( bindable && showBinding ) {
ImageHyperlink link = addImage( constraintComposite,
@@ -341,7 +376,8 @@
RuleDialog popup = new AssignFieldVariableDialog( parent.getShell(),
toolkit,
getModeller(),
- c );
+ c,
+ pattern );
popup.open();
}
@@ -353,6 +389,7 @@
} );
link.setToolTipText( "Bind the field called [" + c.fieldName + "] to a variable." );
+ link.setLayoutData( data );
} else {
toolkit.createLabel( constraintComposite,
"" );
@@ -500,7 +537,7 @@
dialog.setMessage( "Remove this item?" );
dialog.setText( "Remove this item?" );
if ( dialog.open() == SWT.YES ) {
- pattern.removeConstraint( currentRow );
+ pattern.removeConstraint(currentRow);
getModeller().reloadLhs();
getModeller().setDirty( true );
}
@@ -515,6 +552,19 @@
delLink.setLayoutData( new GridData( GridData.FILL_HORIZONTAL | GridData.HORIZONTAL_ALIGN_BEGINNING ) );
}
+ private boolean hasChildren(int row) {
+ SingleFieldConstraint con = (SingleFieldConstraint) pattern.getFieldConstraints()[row];
+ System.out.println(con.fieldName);
+ FieldConstraint[] fc = pattern.getFieldConstraints();
+ for ( int i = row; i < fc.length; i++ ) {
+ SingleFieldConstraint f = (SingleFieldConstraint) fc[i];
+ if (con.equals( f.parent)){
+ return true;
+ }
+ }
+ return false;
+ }
+
private void addRemoveConstraintAction(Composite composite,
final SingleFieldConstraint constraint,
final ConnectiveConstraint connConstraint) {
More information about the jboss-svn-commits
mailing list