[jboss-svn-commits] JBL Code SVN: r7683 - in labs/jbossrules/trunk: . drools-core drools-core/META-INF drools-core/src/main/java/org/drools/reteoo drools-core/src/test/java/org/drools/reteoo drools-decisiontables drools-ide drools-ide/META-INF drools-ide/src drools-ide/src/main/java/org/drools drools-ide/src/main/java/org/drools/ide/editors drools-ide/src/main/java/org/drools/ide/editors/rete drools-ide/src/main/java/org/drools/ide/editors/rete/commands drools-ide/src/main/java/org/drools/ide/editors/rete/figure drools-ide/src/main/java/org/drools/ide/editors/rete/model drools-ide/src/main/java/org/drools/ide/editors/rete/part drools-ide/src/main/java/org/drools/reteoo drools-ide-feature drools-ide-test drools-ide-test/.settings drools-ide-test/META-INF drools-ide-test/src drools-ide-test/src/test drools-ide-test/src/test/java drools-ide-test/src/test/java/org drools-ide-test/src/test/java/org/drools drools-ide-test/src/test/java/org/drools/ide drools-ide-test/src/test/java/org/drools! /ide/editors drools-ide-test/src/test/java/org/drools/ide/editors/completion drools-ide-test/src/test/java/org/drools/ide/editors/rete drools-ide-test/src/test/java/org/drools/ide/wizard drools-ide-test/src/test/java/org/drools/ide/wizard/rule drools-ide-test/src/test/resources drools-jsr94

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Nov 17 10:54:21 EST 2006


Author: ahtik
Date: 2006-11-17 10:52:24 -0500 (Fri, 17 Nov 2006)
New Revision: 7683

Added:
   labs/jbossrules/trunk/drools-ide-test/
   labs/jbossrules/trunk/drools-ide-test/.classpath
   labs/jbossrules/trunk/drools-ide-test/.project
   labs/jbossrules/trunk/drools-ide-test/.settings/
   labs/jbossrules/trunk/drools-ide-test/.settings/org.eclipse.jdt.core.prefs
   labs/jbossrules/trunk/drools-ide-test/META-INF/
   labs/jbossrules/trunk/drools-ide-test/META-INF/MANIFEST.MF
   labs/jbossrules/trunk/drools-ide-test/build.properties
   labs/jbossrules/trunk/drools-ide-test/src/
   labs/jbossrules/trunk/drools-ide-test/src/test/
   labs/jbossrules/trunk/drools-ide-test/src/test/java/
   labs/jbossrules/trunk/drools-ide-test/src/test/java/org/
   labs/jbossrules/trunk/drools-ide-test/src/test/java/org/drools/
   labs/jbossrules/trunk/drools-ide-test/src/test/java/org/drools/ide/
   labs/jbossrules/trunk/drools-ide-test/src/test/java/org/drools/ide/editors/
   labs/jbossrules/trunk/drools-ide-test/src/test/java/org/drools/ide/editors/completion/
   labs/jbossrules/trunk/drools-ide-test/src/test/java/org/drools/ide/editors/rete/
   labs/jbossrules/trunk/drools-ide-test/src/test/java/org/drools/ide/editors/rete/ReteooLayoutFactoryTest.java
   labs/jbossrules/trunk/drools-ide-test/src/test/java/org/drools/ide/editors/rete/ZoomControlTest.java
   labs/jbossrules/trunk/drools-ide-test/src/test/java/org/drools/ide/wizard/
   labs/jbossrules/trunk/drools-ide-test/src/test/java/org/drools/ide/wizard/rule/
   labs/jbossrules/trunk/drools-ide-test/src/test/resources/
   labs/jbossrules/trunk/drools-ide-test/src/test/resources/simplerule.drl
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/ZoomInAction2.java
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/ZoomOutAction2.java
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/ReteViewer.java
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/ReteooLayoutFactory.java
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/Row.java
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/RowList.java
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/commands/
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/commands/NodeSetConstraintCommand.java
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/figure/
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/figure/ConnectionFigure.java
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/figure/VertexFigure.java
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/model/
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/model/Connection.java
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/model/GraphicalVertex.java
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/model/ModelElement.java
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/model/ReteGraph.java
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/model/VertexPropertySource.java
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/part/
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/part/ConnectionEditPart.java
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/part/DiagramEditPart.java
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/part/VertexEditPart.java
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/part/VertexEditPartFactory.java
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/reteoo/
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/reteoo/AlphaNodeVertex.java
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/reteoo/BaseVertex.java
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/reteoo/EvalConditionNodeVertex.java
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/reteoo/JoinNodeVertex.java
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/reteoo/LeftInputAdapterNodeVertex.java
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/reteoo/NotNodeVertex.java
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/reteoo/ObjectTypeNodeVertex.java
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/reteoo/ReteVertex.java
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/reteoo/ReteooVisitor.java
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/reteoo/RightInputAdapterNodeVertex.java
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/reteoo/TerminalNodeVertex.java
Removed:
   labs/jbossrules/trunk/drools-ide-test/.classpath
   labs/jbossrules/trunk/drools-ide-test/.project
   labs/jbossrules/trunk/drools-ide-test/.settings/
   labs/jbossrules/trunk/drools-ide-test/.settings/org.eclipse.jdt.core.prefs
   labs/jbossrules/trunk/drools-ide-test/META-INF/
   labs/jbossrules/trunk/drools-ide-test/META-INF/MANIFEST.MF
   labs/jbossrules/trunk/drools-ide-test/build.properties
   labs/jbossrules/trunk/drools-ide-test/src/
   labs/jbossrules/trunk/drools-ide-test/src/test/
   labs/jbossrules/trunk/drools-ide-test/src/test/java/
   labs/jbossrules/trunk/drools-ide-test/src/test/java/org/
   labs/jbossrules/trunk/drools-ide-test/src/test/java/org/drools/
   labs/jbossrules/trunk/drools-ide-test/src/test/java/org/drools/ide/
   labs/jbossrules/trunk/drools-ide-test/src/test/java/org/drools/ide/editors/
   labs/jbossrules/trunk/drools-ide-test/src/test/java/org/drools/ide/editors/completion/
   labs/jbossrules/trunk/drools-ide-test/src/test/java/org/drools/ide/editors/rete/
   labs/jbossrules/trunk/drools-ide-test/src/test/java/org/drools/ide/editors/rete/ReteooLayoutFactoryTest.java
   labs/jbossrules/trunk/drools-ide-test/src/test/java/org/drools/ide/editors/rete/ZoomControlTest.java
   labs/jbossrules/trunk/drools-ide-test/src/test/java/org/drools/ide/wizard/
   labs/jbossrules/trunk/drools-ide-test/src/test/java/org/drools/ide/wizard/rule/
   labs/jbossrules/trunk/drools-ide-test/src/test/resources/
   labs/jbossrules/trunk/drools-ide-test/src/test/resources/simplerule.drl
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/ReteViewer.java
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/ReteViewer.java
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/ReteooLayoutFactory.java
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/Row.java
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/RowList.java
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/commands/
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/commands/NodeSetConstraintCommand.java
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/figure/
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/figure/ConnectionFigure.java
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/figure/VertexFigure.java
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/model/
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/model/Connection.java
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/model/GraphicalVertex.java
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/model/ModelElement.java
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/model/ReteGraph.java
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/model/VertexPropertySource.java
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/part/
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/part/ConnectionEditPart.java
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/part/DiagramEditPart.java
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/part/VertexEditPart.java
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/part/VertexEditPartFactory.java
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/reteoo/AlphaNodeVertex.java
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/reteoo/BaseVertex.java
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/reteoo/EvalConditionNodeVertex.java
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/reteoo/JoinNodeVertex.java
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/reteoo/LeftInputAdapterNodeVertex.java
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/reteoo/NotNodeVertex.java
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/reteoo/ObjectTypeNodeVertex.java
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/reteoo/ReteVertex.java
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/reteoo/ReteooVisitor.java
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/reteoo/RightInputAdapterNodeVertex.java
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/reteoo/TerminalNodeVertex.java
   labs/jbossrules/trunk/drools-ide/src/test/
Modified:
   labs/jbossrules/trunk/drools-core/.classpath
   labs/jbossrules/trunk/drools-core/META-INF/MANIFEST.MF
   labs/jbossrules/trunk/drools-core/build.properties
   labs/jbossrules/trunk/drools-core/pom.xml
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/BetaNode.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/LeftInputAdapterNode.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/TupleSource.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/NotNodeTest.java
   labs/jbossrules/trunk/drools-decisiontables/.classpath
   labs/jbossrules/trunk/drools-ide-feature/.project
   labs/jbossrules/trunk/drools-ide-test/src/test/java/org/drools/ide/editors/DSLAdapterTest.java
   labs/jbossrules/trunk/drools-ide-test/src/test/java/org/drools/ide/editors/ExpressionSpaceNormaliseTest.java
   labs/jbossrules/trunk/drools-ide-test/src/test/java/org/drools/ide/editors/completion/ContextScanningTest.java
   labs/jbossrules/trunk/drools-ide-test/src/test/java/org/drools/ide/editors/completion/DRLCompletionProcessorTest.java
   labs/jbossrules/trunk/drools-ide-test/src/test/java/org/drools/ide/editors/completion/KeywordsTest.java
   labs/jbossrules/trunk/drools-ide-test/src/test/java/org/drools/ide/editors/completion/LocationDeterminatorTest.java
   labs/jbossrules/trunk/drools-ide-test/src/test/java/org/drools/ide/editors/test.dsl
   labs/jbossrules/trunk/drools-ide-test/src/test/java/org/drools/ide/wizard/rule/DRLGenTemplateTest.java
   labs/jbossrules/trunk/drools-ide/.classpath
   labs/jbossrules/trunk/drools-ide/META-INF/MANIFEST.MF
   labs/jbossrules/trunk/drools-ide/plugin.xml
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/DRLRuleEditor2.java
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/DRLRuleEditorActionContributor.java
   labs/jbossrules/trunk/drools-jsr94/.classpath
Log:
JBRULES-524 Migrated GEF rete viewer from branch 3.0.x. Removed JUNG dependencies. Minor changes were required to trunk to make viewer work here.

Modified: labs/jbossrules/trunk/drools-core/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-core/.classpath	2006-11-17 15:27:18 UTC (rev 7682)
+++ labs/jbossrules/trunk/drools-core/.classpath	2006-11-17 15:52:24 UTC (rev 7683)
@@ -7,7 +7,6 @@
 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
 	<classpathentry kind="var" path="M2_REPO/xstream/xstream/1.1.3/xstream-1.1.3.jar"/>
 	<classpathentry kind="var" path="M2_REPO/xpp3/xpp3/1.1.3.4.O/xpp3-1.1.3.4.O.jar"/>
-	<classpathentry kind="var" path="M2_REPO/xerces/xercesImpl/2.6.2/xercesImpl-2.6.2.jar"/>
 	<classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
 	<classpathentry kind="output" path="target/classes"/>
 </classpath>

Modified: labs/jbossrules/trunk/drools-core/META-INF/MANIFEST.MF
===================================================================
--- labs/jbossrules/trunk/drools-core/META-INF/MANIFEST.MF	2006-11-17 15:27:18 UTC (rev 7682)
+++ labs/jbossrules/trunk/drools-core/META-INF/MANIFEST.MF	2006-11-17 15:52:24 UTC (rev 7683)
@@ -25,5 +25,4 @@
  org.drools.visualize
 Require-Bundle: org.eclipse.osgi
 Bundle-ClassPath: lib/drools-asm-2.2.1.jar,
- lib/jung-1.7.2.jar,
  lib/xstream-1.1.3.jar

Modified: labs/jbossrules/trunk/drools-core/build.properties
===================================================================
--- labs/jbossrules/trunk/drools-core/build.properties	2006-11-17 15:27:18 UTC (rev 7682)
+++ labs/jbossrules/trunk/drools-core/build.properties	2006-11-17 15:52:24 UTC (rev 7683)
@@ -11,5 +11,4 @@
 source.drools-core.jar = src/main/java/
 output.drools-core.jar = target/classes/
 jars.extra.classpath = lib/drools-asm-2.2.1.jar,\
-                       lib/jung-1.7.2.jar,\
                        lib/xstream-1.1.3.jar

Modified: labs/jbossrules/trunk/drools-core/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-core/pom.xml	2006-11-17 15:27:18 UTC (rev 7682)
+++ labs/jbossrules/trunk/drools-core/pom.xml	2006-11-17 15:52:24 UTC (rev 7683)
@@ -22,12 +22,6 @@
   <dependencies>  
     <!-- following are required for parser (lang). May be refactored out of core module. -->
     <dependency>
-      <groupId>jung</groupId>
-      <artifactId>jung</artifactId>
-      <version>1.7.2</version>
-    </dependency>  
-    
-    <dependency>
       <groupId>xstream</groupId>
       <artifactId>xstream</artifactId>
       <version>1.1.3</version>

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/BetaNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/BetaNode.java	2006-11-17 15:27:18 UTC (rev 7682)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/BetaNode.java	2006-11-17 15:52:24 UTC (rev 7683)
@@ -106,6 +106,12 @@
     }
 
     public AlphaNodeFieldConstraint[] getConstraints() {
+    
+        // Sanity check
+        if ( this.constraints == null ) {
+            return null;
+        }
+
         final LinkedList constraints = this.constraints.getConstraints();
 
         final AlphaNodeFieldConstraint[] array = new AlphaNodeFieldConstraint[constraints.size()];

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/LeftInputAdapterNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/LeftInputAdapterNode.java	2006-11-17 15:27:18 UTC (rev 7682)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/LeftInputAdapterNode.java	2006-11-17 15:52:24 UTC (rev 7683)
@@ -16,6 +16,8 @@
  * limitations under the License.
  */
 
+import java.util.Map;
+
 import org.drools.RuleBaseConfiguration;
 import org.drools.common.BaseNode;
 import org.drools.common.InternalFactHandle;
@@ -90,6 +92,10 @@
     }
 
     //    public AlphaNodeFieldConstraint[] getConstraints() {
+    //        // Sanity check
+    //        if ( this.constraints == null ) {
+    //            return null;
+    //        }
     //        LinkedList constraints = this.constraints.getConstraints();
     //
     //        AlphaNodeFieldConstraint[] array = new AlphaNodeFieldConstraint[constraints.size()];
@@ -100,6 +106,7 @@
     //        return array;
     //    }
 
+
     /* (non-Javadoc)
      * @see org.drools.reteoo.BaseNode#attach()
      */

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/TupleSource.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/TupleSource.java	2006-11-17 15:27:18 UTC (rev 7682)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/TupleSource.java	2006-11-17 15:52:24 UTC (rev 7683)
@@ -106,6 +106,10 @@
         }
     }
 
+    public TupleSinkPropagator getSinkPropagator() {
+        return this.sink;
+    }
+    
     public abstract void updateSink(TupleSink sink,
                                     PropagationContext context,
                                     InternalWorkingMemory workingMemory);

Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/NotNodeTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/NotNodeTest.java	2006-11-17 15:27:18 UTC (rev 7682)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/NotNodeTest.java	2006-11-17 15:52:24 UTC (rev 7683)
@@ -25,11 +25,13 @@
 import org.drools.FactException;
 import org.drools.RuleBaseConfiguration;
 import org.drools.RuleBaseFactory;
+import org.drools.common.BetaConstraints;
 import org.drools.common.DefaultBetaConstraints;
 import org.drools.common.DefaultFactHandle;
 import org.drools.common.PropagationContextImpl;
 import org.drools.rule.Rule;
 import org.drools.spi.BetaNodeFieldConstraint;
+import org.drools.spi.AlphaNodeFieldConstraint;
 import org.drools.spi.MockConstraint;
 import org.drools.spi.PropagationContext;
 
@@ -294,5 +296,16 @@
             Assert.fail( "No exception should be raised in this procedure, but got: " + e.toString() );
         }
     }
+    
 
+    public void testGetConstraints_ReturnsNullEvenWithEmptyBinder() {
+        BetaConstraints nullConstraints = null;
+        NotNode notNode = new NotNode( 1,
+                                                this.tupleSource,
+                                                this.objectSource, nullConstraints);        
+        AlphaNodeFieldConstraint[] constraints = notNode.getConstraints();
+        assertNull(constraints);
+        
+    }
+
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-decisiontables/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-decisiontables/.classpath	2006-11-17 15:27:18 UTC (rev 7682)
+++ labs/jbossrules/trunk/drools-decisiontables/.classpath	2006-11-17 15:52:24 UTC (rev 7683)
@@ -2,8 +2,8 @@
 <classpath>
 	<classpathentry kind="src" path="src/main/java"/>
 	<classpathentry kind="src" path="src/main/resources"/>
-	<classpathentry output="target/test-classes" kind="src" path="src/test/java"/>
-	<classpathentry output="target/test-classes" kind="src" path="src/test/resources"/>
+	<classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
+	<classpathentry kind="src" output="target/test-classes" path="src/test/resources"/>
 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
 	<classpathentry kind="var" path="M2_REPO/org/eclipse/jdt/core/3.2.0.666/core-3.2.0.666.jar"/>
 	<classpathentry kind="src" path="/drools-compiler"/>
@@ -14,13 +14,9 @@
 	<classpathentry kind="src" path="/drools-core"/>
 	<classpathentry kind="var" path="M2_REPO/org/antlr/antlr/3.0ea8/antlr-3.0ea8.jar"/>
 	<classpathentry kind="var" path="M2_REPO/commons-logging/commons-logging-api/1.0.4/commons-logging-api-1.0.4.jar"/>
-	<classpathentry kind="var" path="M2_REPO/jung/jung/1.7.2/jung-1.7.2.jar"/>
 	<classpathentry kind="var" path="M2_REPO/commons-lang/commons-lang/2.1/commons-lang-2.1.jar"/>
-	<classpathentry kind="var" path="M2_REPO/colt/colt/1.2.0/colt-1.2.0.jar"/>
 	<classpathentry kind="var" path="M2_REPO/commons-collections/commons-collections/3.1/commons-collections-3.1.jar"/>
 	<classpathentry kind="var" path="M2_REPO/commons-io/commons-io/1.1/commons-io-1.1.jar"/>
-	<classpathentry kind="var" path="M2_REPO/concurrent/concurrent/1.3.4/concurrent-1.3.4.jar"/>
-	<classpathentry kind="var" path="M2_REPO/xerces/xercesImpl/2.6.2/xercesImpl-2.6.2.jar"/>
 	<classpathentry kind="var" path="M2_REPO/org/apache/commons/commons-jci-eclipse/3.2.0.666/commons-jci-eclipse-3.2.0.666.jar"/>
 	<classpathentry kind="var" path="M2_REPO/xpp3/xpp3/1.1.3.4.O/xpp3-1.1.3.4.O.jar"/>
 	<classpathentry kind="var" path="M2_REPO/antlr/antlr/2.7.6/antlr-2.7.6.jar"/>

Modified: labs/jbossrules/trunk/drools-ide/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-ide/.classpath	2006-11-17 15:27:18 UTC (rev 7682)
+++ labs/jbossrules/trunk/drools-ide/.classpath	2006-11-17 15:52:24 UTC (rev 7683)
@@ -1,17 +1,24 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src/main/java"/>
-	<classpathentry kind="src" path="src/test/java"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="lib" path="lib/jxl-2.4.2.jar"/>
-	<classpathentry kind="lib" path="lib/xstream-1.1.3.jar"/>
-	<classpathentry kind="lib" path="lib/commons-lang-2.1.jar"/>
-	<classpathentry kind="lib" path="lib/junit-3.8.1.jar"/>
-	<classpathentry kind="lib" path="lib/antlr-3.0ea8.jar"/>
-	<classpathentry kind="lib" path="lib/commons-jci-core-1.0-406301.jar"/>
-	<classpathentry kind="lib" path="lib/drools-compiler.jar"/>
-	<classpathentry kind="lib" path="lib/drools-core.jar"/>
-	<classpathentry kind="lib" path="lib/drools-decisiontables.jar"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src/main/java"/>
+	<classpathentry exported="true" kind="lib" path="lib/antlr-2.7.6.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/antlr-3.0ea8.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/commons-lang-2.1.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/commons-logging-api-1.0.4.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/xml-apis-1.0.b2.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/xpp3-1.1.3.4.O.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/xstream-1.1.3.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/jsr94-1.1.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/commons-jci-core-1.0-406301.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/commons-jci-eclipse-3.2.0.666.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/commons-jci-janino-2.4.3.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/janino-2.4.3.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/drools-compiler.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/drools-core.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/drools-decisiontables.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/drools-jsr94.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/stringtemplate-2.3b6.jar"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.4"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>

Modified: labs/jbossrules/trunk/drools-ide/META-INF/MANIFEST.MF
===================================================================
--- labs/jbossrules/trunk/drools-ide/META-INF/MANIFEST.MF	2006-11-17 15:27:18 UTC (rev 7682)
+++ labs/jbossrules/trunk/drools-ide/META-INF/MANIFEST.MF	2006-11-17 15:52:24 UTC (rev 7683)
@@ -17,33 +17,20 @@
  org.eclipse.jdt.ui,
  org.eclipse.jface.text,
  org.eclipse.ui,
- org.eclipse.ui.browser,
- org.eclipse.ui.cheatsheets,
  org.eclipse.ui.console,
  org.eclipse.ui.editors,
- org.eclipse.ui.externaltools,
  org.eclipse.ui.forms,
  org.eclipse.ui.ide,
- org.eclipse.ui.intro,
- org.eclipse.ui.navigator,
- org.eclipse.ui.navigator.resources,
- org.eclipse.ui.presentations.r21,
  org.eclipse.ui.views,
  org.eclipse.ui.workbench.texteditor,
- org.eclipse.pde.ui,
+ org.eclipse.gef,
  com.ibm.icu
 Eclipse-LazyStart: true
 Bundle-ClassPath: ide.jar,
  lib/antlr-2.7.6.jar,
  lib/antlr-3.0ea8.jar,
- lib/colt-1.2.0.jar,
- lib/commons-collections-3.1.jar,
  lib/commons-lang-2.1.jar,
  lib/commons-logging-api-1.0.4.jar,
- lib/concurrent-1.3.4.jar,
- lib/jung-1.7.2.jar,
- lib/stringtemplate-2.3b6.jar,
- lib/xercesImpl-2.6.2.jar,
  lib/xml-apis-1.0.b2.jar,
  lib/xpp3-1.1.3.4.O.jar,
  lib/xstream-1.1.3.jar,
@@ -56,4 +43,66 @@
  lib/drools-core.jar,
  lib/drools-decisiontables.jar,
  lib/drools-jsr94.jar,
- lib/jxl-2.4.2.jar
+ lib/stringtemplate-2.3b6.jar
+Bundle-RequiredExecutionEnvironment: J2SE-1.4
+Export-Package: org.drools,
+ org.drools.asm,
+ org.drools.asm.attrs,
+ org.drools.asm.commons,
+ org.drools.asm.signature,
+ org.drools.asm.tree,
+ org.drools.asm.tree.analysis,
+ org.drools.asm.util,
+ org.drools.asm.util.attrs,
+ org.drools.asm.xml,
+ org.drools.audit,
+ org.drools.audit.event,
+ org.drools.base,
+ org.drools.base.evaluators,
+ org.drools.common,
+ org.drools.compiler,
+ org.drools.conflict,
+ org.drools.decisiontable,
+ org.drools.decisiontable.model,
+ org.drools.decisiontable.parser,
+ org.drools.decisiontable.parser.csv,
+ org.drools.decisiontable.parser.xls,
+ org.drools.event,
+ org.drools.ide,
+ org.drools.ide.builder,
+ org.drools.ide.debug,
+ org.drools.ide.debug.actions,
+ org.drools.ide.debug.core,
+ org.drools.ide.dsl.editor,
+ org.drools.ide.editors,
+ org.drools.ide.editors.completion,
+ org.drools.ide.editors.outline,
+ org.drools.ide.editors.rete,
+ org.drools.ide.editors.rete.commands,
+ org.drools.ide.editors.rete.figure,
+ org.drools.ide.editors.rete.model,
+ org.drools.ide.editors.rete.part,
+ org.drools.ide.editors.scanners,
+ org.drools.ide.launching,
+ org.drools.ide.menu,
+ org.drools.ide.preferences,
+ org.drools.ide.util,
+ org.drools.ide.wizard.decisiontable,
+ org.drools.ide.wizard.dsl,
+ org.drools.ide.wizard.project,
+ org.drools.ide.wizard.rule,
+ org.drools.lang,
+ org.drools.lang.descr,
+ org.drools.lang.dsl,
+ org.drools.lang.dsl.template,
+ org.drools.reteoo,
+ org.drools.rule,
+ org.drools.semantics.java,
+ org.drools.semantics.java.parser,
+ org.drools.spi,
+ org.drools.util,
+ org.drools.util.asm,
+ org.drools.util.concurrent.locks,
+ org.drools.xml,
+ org.drools.jsr94.rules,
+ org.drools.jsr94.rules.admin

Modified: labs/jbossrules/trunk/drools-ide/plugin.xml
===================================================================
--- labs/jbossrules/trunk/drools-ide/plugin.xml	2006-11-17 15:27:18 UTC (rev 7682)
+++ labs/jbossrules/trunk/drools-ide/plugin.xml	2006-11-17 15:52:24 UTC (rev 7683)
@@ -48,7 +48,7 @@
    <extension
          point="org.eclipse.ui.editors">
       <editor
-            class="org.drools.ide.editors.DRLRuleEditor"
+            class="org.drools.ide.editors.DRLRuleEditor2"
             contributorClass="org.drools.ide.editors.DRLRuleEditorActionContributor"
             extensions="drl,jbrule,drools,rule"
             icon="icons/drools.gif"

Modified: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/DRLRuleEditor2.java
===================================================================
--- labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/DRLRuleEditor2.java	2006-11-17 15:27:18 UTC (rev 7682)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/DRLRuleEditor2.java	2006-11-17 15:52:24 UTC (rev 7683)
@@ -1,74 +1,304 @@
 package org.drools.ide.editors;
 
+/*
+ * Copyright 2006 JBoss Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.lang.reflect.InvocationTargetException;
+
 import org.drools.ide.DroolsIDEPlugin;
+import org.drools.ide.editors.rete.ReteViewer;
+import org.drools.ide.editors.rete.model.ReteGraph;
 import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.gef.editparts.ZoomManager;
+import org.eclipse.gef.ui.actions.ZoomComboContributionItem;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.operation.IRunnableWithProgress;
+import org.eclipse.jface.text.DocumentEvent;
+import org.eclipse.jface.text.IDocumentListener;
 import org.eclipse.ui.IEditorInput;
 import org.eclipse.ui.IEditorSite;
 import org.eclipse.ui.PartInitException;
 import org.eclipse.ui.forms.editor.FormEditor;
-//import org.eclipse.ui.texteditor.IDocumentProvider;
-//import org.eclipse.ui.texteditor.IDocumentProviderExtension;
 
 /**
  * This is a multi table editor wrapper for both the text editor and the RETE
  * viewer.
- * @author Kris.
+ * 
+ * @author Kris
+ * @author Ahti Kitsik
  */
 public class DRLRuleEditor2 extends FormEditor {
 
-	private DRLRuleEditor textEditor;
+    private DRLRuleEditor             textEditor;
 
-	private ReteViewer reteViewer;
+    private ReteViewer                reteViewer;
 
-	public void init(IEditorSite site, IEditorInput input) throws PartInitException {
-		super.init(site, input);
-		setPartName(input.getName());
-	}
+    private ZoomComboContributionItem zitem;
 
-	protected void addPages() {
-		try {
-			textEditor = new DRLRuleEditor() {
-				public void close(boolean save) {
-					super.close(save);
-					DRLRuleEditor2.this.close(save);
-				}
-				protected void setPartName(String partName) {
-					super.setPartName(partName);
-					DRLRuleEditor2.this.setPartName(partName);
-			    }
-			};
-			//IDocumentProvider provider = textEditor.getDocumentProvider();
-			//if (provider instanceof IDocumentProviderExtension) {
-			//	IDocumentProviderExtension extension = (IDocumentProviderExtension) provider;
-			//	extension.isModifiable(getEditorInput());
-			//}
-			reteViewer = new ReteViewer(textEditor, textEditor.getDocumentProvider());
+    private ZoomInAction2             zoomIn;
+    private ZoomOutAction2            zoomOut;
 
-			int text = addPage(textEditor, getEditorInput());
-			int rete = addPage(reteViewer, getEditorInput());
+    protected ReteGraph               graph;
 
-			setPageText(text, "Text Editor");
-			setPageText(rete, "Rete Tree");
-		} catch (PartInitException e) {
-			DroolsIDEPlugin.log(e);
-		}
-	}
+    /* (non-Javadoc)
+     * @see org.eclipse.ui.forms.editor.FormEditor#init(org.eclipse.ui.IEditorSite, org.eclipse.ui.IEditorInput)
+     */
+    public void init(IEditorSite site,
+                     IEditorInput input) throws PartInitException {
+        super.init( site,
+                    input );
+        setPartName( input.getName() );
+    }
 
-	public void doSave(IProgressMonitor monitor) {
-		textEditor.doSave(monitor);
-		setInput(getEditorInput());
-		reteViewer.clear();
-	}
+    /**
+     * Adds Text Editor for rules and Rete graph viewer
+     * 
+     * @see org.eclipse.ui.forms.editor.FormEditor#addPages()
+     */
+    protected void addPages() {
+        try {
+            textEditor = new DRLRuleEditor() {
+                public void close(boolean save) {
+                    super.close( save );
+                    DRLRuleEditor2.this.close( save );
+                }
 
-	public void doSaveAs() {
-		textEditor.doSaveAs();
-	}
+                protected void setPartName(String partName) {
+                    super.setPartName( partName );
+                    DRLRuleEditor2.this.setPartName( partName );
+                }
+            };
 
-	public boolean isSaveAsAllowed() {
-		return textEditor.isSaveAsAllowed();
-	}
+            reteViewer = new ReteViewer();
 
+            int text = addPage( textEditor,
+                                getEditorInput() );
+
+            int rete = addPage( reteViewer,
+                                getEditorInput() );
+
+            setPageText( text,
+                         "Text Editor" );
+            setPageText( rete,
+                         "Rete Tree" );
+
+            textEditor.getDocumentProvider().getDocument( getEditorInput() ).addDocumentListener( new IDocumentListener() {
+
+                public void documentAboutToBeChanged(DocumentEvent event) {
+                }
+
+                public void documentChanged(DocumentEvent event) {
+                    reteViewer.fireDocumentChanged();
+                }
+
+            } );
+
+        } catch ( PartInitException e ) {
+            DroolsIDEPlugin.log( e );
+        }
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.ui.part.EditorPart#doSave(org.eclipse.core.runtime.IProgressMonitor)
+     */
+    public void doSave(IProgressMonitor monitor) {
+        textEditor.doSave( monitor );
+        setInput( getEditorInput() );
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.ui.part.EditorPart#doSaveAs()
+     */
+    public void doSaveAs() {
+        textEditor.doSaveAs();
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.ui.part.EditorPart#isSaveAsAllowed()
+     */
+    public boolean isSaveAsAllowed() {
+        return textEditor.isSaveAsAllowed();
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.ui.part.MultiPageEditorPart#getAdapter(java.lang.Class)
+     */
     public Object getAdapter(Class adapter) {
-        return textEditor.getAdapter(adapter);
+        if ( adapter == ZoomManager.class ) {
+
+            if ( getActiveEditor() instanceof ReteViewer ) {
+                return reteViewer.getAdapter( adapter );
+            } else if ( getActiveEditor() instanceof DRLRuleEditor ) {
+                return null;
+            }
+
+        } else if ( adapter == ZoomInAction2.class ) {
+            return zoomIn;
+        } else if ( adapter == ZoomOutAction2.class ) {
+            return zoomOut;
+        } else if ( adapter == ZoomComboContributionItem.class ) {
+            return zitem;
+        }
+
+        return textEditor.getAdapter( adapter );
     }
+
+    /**
+     * Updates ZoomManagers for contributed actions.
+     */
+    private void updateZoomItems() {
+        updateZoomIn();
+
+        updateZoomOut();
+
+        updateZoomCombo();
+
+    }
+
+    private void updateZoomCombo() {
+        if ( zitem != null ) {
+            zitem.setZoomManager( getZoomManager() );
+        }
+    }
+
+    private void updateZoomIn() {
+        boolean zoomActive = getZoomManager() != null;
+        if ( zoomIn != null ) {
+            zoomIn.setZoomManager( getZoomManager() );
+            zoomIn.setEnabled( zoomActive );
+        }
+    }
+
+    private void updateZoomOut() {
+        boolean zoomActive = getZoomManager() != null;
+        if ( zoomOut != null ) {
+            zoomOut.setZoomManager( getZoomManager() );
+            zoomOut.setEnabled( zoomActive );
+        }
+    }
+
+    /**
+     * Sets ZoomComboContributionItem to be used for updating it's
+     * ZoomManager when multipage tab is switched.
+     * 
+     * @param zitem contribution item
+     */
+    public void setZoomComboContributionItem(ZoomComboContributionItem zitem) {
+        this.zitem = zitem;
+        updateZoomCombo();
+    }
+
+    private ZoomManager getZoomManager() {
+        return (ZoomManager) getAdapter( ZoomManager.class );
+    }
+
+    /**
+     * Sets ZoomOutAction2 to be used for updating it's
+     * ZoomManager when multipage tab is switched.
+     * 
+     * @param zoomOutAction zoom action
+     */
+    public void setZoomOutAction(ZoomOutAction2 zoomOutAction) {
+        this.zoomOut = zoomOutAction;
+        updateZoomOut();
+    }
+
+    /**
+     * Sets ZoomInAction to be used for updating it's
+     * ZoomManager when multipage tab is switched. 
+     * @param zoomInAction zoom action
+     */
+    public void setZoomInAction(ZoomInAction2 zoomInAction) {
+        this.zoomIn = zoomInAction;
+        updateZoomIn();
+    }
+
+    public void setFocus() {
+        if ( getActivePage() == 1 ) {
+            boolean reteFailed = false;
+            graph = null;
+            try {
+                final String contents = textEditor.getDocumentProvider().getDocument( getEditorInput() ).get();
+                final IRunnableWithProgress runnable = new IRunnableWithProgress() {
+
+                    public void run(IProgressMonitor monitor) throws InvocationTargetException,
+                                                             InterruptedException {
+                        try {
+                            graph = reteViewer.loadReteModel( monitor,
+                                                              contents );
+                        } catch ( Throwable e ) {
+                            if ( e instanceof InvocationTargetException ) {
+                                throw (InvocationTargetException) e;
+                            } else if ( e instanceof InterruptedException ) {
+                                throw (InterruptedException) e;
+                            }
+                            throw new InvocationTargetException( e );
+                        }
+
+                    }
+
+                };
+
+                getEditorSite().getWorkbenchWindow().getWorkbench().getProgressService().busyCursorWhile( runnable );
+
+                reteViewer.drawGraph( graph );
+
+            } catch ( InvocationTargetException e ) {
+                handleError( e );
+                reteFailed = true;
+            } catch ( InterruptedException e ) {
+                MessageDialog.openError( getSite().getShell(),
+                                         "Rete Tree Error!",
+                                         "Rete Tree Calculation Cancelled!" );
+                reteFailed = true;
+            } catch ( Throwable t ) {
+                handleError( t );
+                reteFailed = true;
+            }
+            if ( reteFailed ) {
+                setActivePage( 0 );
+            }
+        }
+
+        super.setFocus();
+        updateZoomItems();
+
+    }
+
+    private void handleError(Throwable t) {
+        DroolsIDEPlugin.log( t );
+        Throwable cause = t.getCause();
+        if ( cause == null ) {
+            cause = t;
+        }
+        String message = cause.getMessage();
+        if ( message == null || message.length() == 0 ) {
+            message = "Uncategorized Error!";
+        }
+        MessageDialog.openError( getSite().getShell(),
+                                 "Rete Tree Error!",
+                                 message );
+
+    }
+
+    /**
+     * Increasing visibility to allow switching tabs by page index
+     */
+    public void setActivePage(int pageIndex) {
+        super.setActivePage( pageIndex );
+    }
+
 }

Modified: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/DRLRuleEditorActionContributor.java
===================================================================
--- labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/DRLRuleEditorActionContributor.java	2006-11-17 15:27:18 UTC (rev 7682)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/DRLRuleEditorActionContributor.java	2006-11-17 15:52:24 UTC (rev 7683)
@@ -1,5 +1,25 @@
 package org.drools.ide.editors;
 
+/*
+ * Copyright 2006 JBoss Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.eclipse.gef.editparts.ZoomManager;
+import org.eclipse.gef.ui.actions.ZoomComboContributionItem;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.Separator;
 import org.eclipse.ui.IActionBars;
 import org.eclipse.ui.IEditorPart;
 import org.eclipse.ui.IWorkbenchPage;
@@ -7,22 +27,85 @@
 import org.eclipse.ui.part.MultiPageEditorActionBarContributor;
 import org.eclipse.ui.texteditor.ITextEditor;
 
+/**
+ * ActionContributors for DRLRuleEditor2
+ * 
+ * Currently implements contributors to zoom feature at rete viewer. 
+ * 
+ * @author Ahti Kitsik
+ *
+ */
 public class DRLRuleEditorActionContributor extends MultiPageEditorActionBarContributor {
 
-	private TextEditorActionContributor contributor = new TextEditorActionContributor();
-	
-	public void init(IActionBars bars, IWorkbenchPage page) {
-		contributor.init(bars);
-		super.init(bars, page);
-	}
-		
-	public void setActivePage(IEditorPart activeEditor) {
-		IActionBars bars = getActionBars();
-		if (activeEditor instanceof ITextEditor) {
-			if (bars != null) {
-				contributor.setActiveEditor(activeEditor);
-			}
-		}
-	}
+    private TextEditorActionContributor contributor = new TextEditorActionContributor();
 
+    private ZoomComboContributionItem   zitem;
+    private ZoomOutAction2              zoomOut;
+    private ZoomInAction2               zoomIn;
+
+    /* (non-Javadoc)
+     * @see org.eclipse.ui.part.EditorActionBarContributor#init(org.eclipse.ui.IActionBars, org.eclipse.ui.IWorkbenchPage)
+     */
+    public void init(IActionBars bars,
+                     IWorkbenchPage page) {
+        contributor.init( bars );
+        super.init( bars,
+                    page );
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.ui.part.MultiPageEditorActionBarContributor#setActivePage(org.eclipse.ui.IEditorPart)
+     */
+    public void setActivePage(IEditorPart activeEditor) {
+        IActionBars bars = getActionBars();
+        if ( activeEditor instanceof ITextEditor ) {
+            if ( bars != null ) {
+                contributor.setActiveEditor( activeEditor );
+            }
+        }
+    }
+
+    /**
+     * In addition to @link org.eclipse.ui.part.MultiPageEditorActionBarContributor#setActiveEditor(org.eclipse.ui.IEditorPart)
+     * it sets contribution items to DRLRuleEditor2 for later use when
+     * multipageditor tabs are switched.
+     * 
+     */
+    public void setActiveEditor(IEditorPart part) {
+        super.setActiveEditor( part );
+        if ( part instanceof DRLRuleEditor2 ) {
+            DRLRuleEditor2 p = (DRLRuleEditor2) part;
+            p.setZoomComboContributionItem( zitem );
+            p.setZoomInAction( zoomIn );
+            p.setZoomOutAction( zoomOut );
+        }
+    }
+
+    /**
+     * Adds Zoom-related contributions.
+     * 
+     * @see org.eclipse.ui.part.EditorActionBarContributor#contributeToToolBar(org.eclipse.jface.action.IToolBarManager)
+     */
+    public void contributeToToolBar(IToolBarManager toolBarManager) {
+        super.contributeToToolBar( toolBarManager );
+        toolBarManager.add( new Separator() );
+        String[] zoomStrings = new String[]{ZoomManager.FIT_ALL, ZoomManager.FIT_HEIGHT, ZoomManager.FIT_WIDTH};
+
+        zitem = new ZoomComboContributionItem( getPage(),
+                                               zoomStrings );
+        zitem.setZoomManager( null );
+        zitem.setVisible( false );
+
+        zoomIn = new ZoomInAction2();
+        zoomIn.setEnabled( false );
+
+        zoomOut = new ZoomOutAction2();
+        zoomOut.setEnabled( false );
+
+        toolBarManager.add( zitem );
+        toolBarManager.add( zoomIn );
+        toolBarManager.add( zoomOut );
+
+    }
+
 }

Deleted: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/ReteViewer.java
===================================================================
--- labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/ReteViewer.java	2006-11-17 15:27:18 UTC (rev 7682)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/ReteViewer.java	2006-11-17 15:52:24 UTC (rev 7683)
@@ -1,138 +0,0 @@
-package org.drools.ide.editors;
-
-import java.awt.BorderLayout;
-import java.awt.Frame;
-
-import org.drools.RuleBase;
-import org.drools.RuleBaseFactory;
-import org.drools.ide.DRLInfo;
-import org.drools.ide.DroolsIDEPlugin;
-import org.drools.rule.Package;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.SWTError;
-import org.eclipse.swt.awt.SWT_AWT;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorSite;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.part.EditorPart;
-import org.eclipse.ui.texteditor.IDocumentProvider;
-
-public class ReteViewer extends EditorPart {
-
-	private DRLRuleEditor drlEditor;
-
-	private Frame frame;
-
-	private Composite parent;
-
-	public ReteViewer(DRLRuleEditor drlEditor, IDocumentProvider documentProvider) {
-		this.drlEditor = drlEditor;
-	}
-
-	public void createPartControl(Composite parent) {
-		this.parent = parent;
-		GridLayout layout = new GridLayout();
-		layout.numColumns = 1;
-		parent.setLayout(layout);
-		Button generateButton = new Button(parent, SWT.PUSH);
-		generateButton.setText("Generate Rete View");
-		generateButton.addSelectionListener(new SelectionListener() {
-			public void widgetSelected(SelectionEvent e) {
-				generateReteView();
-			}
-
-			public void widgetDefaultSelected(SelectionEvent e) {
-				generateReteView();
-			}
-		});
-
-		try {
-			Composite frameParent = new Composite(parent, SWT.EMBEDDED);
-			frameParent.setLayoutData(new GridData(GridData.FILL_BOTH));
-			frame = SWT_AWT.new_Frame(frameParent);
-			frame.setLayout(new BorderLayout());
-		} catch (SWTError exc) {
-			// it is possible that this exception is thrown if 
-			// SWT is not supported, e.g. in Mac
-			DroolsIDEPlugin.log(exc);
-		}
-	}
-
-	private RuleBase getRuleBase() {
-		try {
-			DRLInfo drlInfo = DroolsIDEPlugin.getDefault().parseResource(drlEditor, true, true);
-			if (drlInfo != null) {
-				Package pkg = drlInfo.getPackage();
-				// add the package to a rulebase
-	            RuleBase ruleBase = RuleBaseFactory.newRuleBase();
-				ruleBase.addPackage(pkg);
-				return ruleBase;
-			}
-		} catch (Throwable t) {
-			DroolsIDEPlugin.log(t);
-		}
-		return null;
-	}
-
-	public void doSave(IProgressMonitor monitor) {
-		// Do nothing
-	}
-
-	public void doSaveAs() {
-		// Do nothing
-	}
-
-	public void init(IEditorSite site, IEditorInput input)
-			throws PartInitException {
-		setSite(site);
-		setInput(input);
-	}
-
-	public void clear() {
-		if (frame != null) { // possible if frame creation failed
-			frame.removeAll();
-		}
-	}
-
-	public boolean isDirty() {
-		return false;
-	}
-
-	public boolean isSaveAsAllowed() {
-		return false;
-	}
-
-	public void setFocus() {
-		if (drlEditor.isDirty()) {
-			clear();
-		}
-	}
-
-	private void generateReteView() {
-		if (frame != null) { // possible if frame creation failed
-			clear();
-			try {
-				RuleBase ruleBase = getRuleBase();
-				if (ruleBase == null) {
-					// TODO signal user that rule cannot be parsed
-				} else {
-//					ReteooJungViewerPanel viewer = new ReteooJungViewerPanel(
-//							ruleBase);
-//					frame.add(viewer);
-					frame.validate();
-					parent.layout();
-				}
-			} catch (Throwable t) {
-				t.printStackTrace();
-				DroolsIDEPlugin.log(t);
-			}
-		}
-	}
-}

Copied: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/ZoomInAction2.java (from rev 7597, labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/ide/editors/ZoomInAction2.java)

Copied: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/ZoomOutAction2.java (from rev 7597, labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/ide/editors/ZoomOutAction2.java)

Copied: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete (from rev 7597, labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/ide/editors/rete)

Deleted: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/ReteViewer.java
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/ide/editors/rete/ReteViewer.java	2006-11-14 19:21:59 UTC (rev 7597)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/ReteViewer.java	2006-11-17 15:52:24 UTC (rev 7683)
@@ -1,368 +0,0 @@
-package org.drools.ide.editors.rete;
-
-/*
- * Copyright 2006 JBoss Inc
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-import java.io.Reader;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.drools.PackageIntegrationException;
-import org.drools.RuleBase;
-import org.drools.compiler.DrlParser;
-import org.drools.compiler.DroolsParserException;
-import org.drools.compiler.PackageBuilder;
-import org.drools.ide.DroolsIDEPlugin;
-import org.drools.ide.builder.DroolsBuilder;
-import org.drools.ide.editors.DSLAdapter;
-import org.drools.ide.editors.rete.model.ReteGraph;
-import org.drools.ide.editors.rete.part.VertexEditPartFactory;
-import org.drools.ide.util.ProjectClassLoader;
-import org.drools.lang.descr.PackageDescr;
-import org.drools.reteoo.BaseVertex;
-import org.drools.reteoo.ReteooRuleBase;
-import org.drools.reteoo.ReteooVisitor;
-import org.drools.rule.Package;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.draw2d.ColorConstants;
-import org.eclipse.draw2d.ConnectionLayer;
-import org.eclipse.draw2d.ConnectionRouter;
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.ShortestPathConnectionRouter;
-import org.eclipse.draw2d.geometry.Dimension;
-import org.eclipse.draw2d.geometry.Point;
-import org.eclipse.gef.DefaultEditDomain;
-import org.eclipse.gef.EditPart;
-import org.eclipse.gef.GraphicalEditPart;
-import org.eclipse.gef.GraphicalViewer;
-import org.eclipse.gef.LayerConstants;
-import org.eclipse.gef.MouseWheelHandler;
-import org.eclipse.gef.MouseWheelZoomHandler;
-import org.eclipse.gef.editparts.LayerManager;
-import org.eclipse.gef.editparts.ScalableFreeformRootEditPart;
-import org.eclipse.gef.editparts.ZoomManager;
-import org.eclipse.gef.ui.parts.GraphicalEditor;
-import org.eclipse.gef.ui.parts.GraphicalViewerKeyHandler;
-import org.eclipse.jdt.core.IJavaProject;
-import org.eclipse.jdt.core.JavaCore;
-import org.eclipse.swt.SWT;
-import org.eclipse.ui.IFileEditorInput;
-
-/**
- * GEF-based RETE Viewer
- * 
- * @author Ahti Kitsik
- *
- */
-public class ReteViewer extends GraphicalEditor {
-
-    private static final String  MSG_PARSE_ERROR         = "Unable to parse rules to show RETE view!";
-
-    private static final String  JAVA_NATURE             = "org.eclipse.jdt.core.javanature";
-
-    private static final int     SIMPLE_ROUTER_MIN_NODES = 100;
-
-    ScalableFreeformRootEditPart rootEditPart            = new ScalableFreeformRootEditPart();
-
-    private ReteGraph            diagram                 = new ReteGraph();
-
-    private boolean              relayoutRequired        = true;
-
-    /**
-     * Constructor.
-     * 
-     * @param documentProvider documentProvider must contain Document with rules.
-     */
-    public ReteViewer() {
-        super();
-        setEditDomain( new DefaultEditDomain( this ) );
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.gef.ui.parts.GraphicalEditor#configureGraphicalViewer()
-     */
-    protected void configureGraphicalViewer() {
-        super.configureGraphicalViewer();
-        GraphicalViewer viewer = getGraphicalViewer();
-        viewer.getControl().setBackground( ColorConstants.white );
-        viewer.setEditPartFactory( new VertexEditPartFactory() );
-        viewer.setRootEditPart( rootEditPart );
-        viewer.setKeyHandler( new GraphicalViewerKeyHandler( viewer ) );
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.gef.ui.parts.GraphicalEditor#getAdapter(java.lang.Class)
-     */
-    public Object getAdapter(Class type) {
-
-        if ( type == ZoomManager.class ) return ((ScalableFreeformRootEditPart) getGraphicalViewer().getRootEditPart()).getZoomManager();
-        if ( type == GraphicalViewer.class ) return getGraphicalViewer();
-        if ( type == EditPart.class && getGraphicalViewer() != null ) return getGraphicalViewer().getRootEditPart();
-        if ( type == IFigure.class && getGraphicalViewer() != null ) return ((GraphicalEditPart) getGraphicalViewer().getRootEditPart()).getFigure();
-        return super.getAdapter( type );
-    }
-
-    private RuleBase getRuleBase(String contents) {
-        if ( getEditorInput() instanceof IFileEditorInput ) {
-            try {
-
-                ClassLoader oldLoader = Thread.currentThread().getContextClassLoader();
-                ClassLoader newLoader = DroolsBuilder.class.getClassLoader();
-                IFile file = ((IFileEditorInput) getEditorInput()).getFile();
-                if ( file.getProject().getNature( JAVA_NATURE ) != null ) {
-                    IJavaProject project = JavaCore.create( file.getProject() );
-                    newLoader = ProjectClassLoader.getProjectClassLoader( project );
-                }
-
-                Reader dslReader = DSLAdapter.getDSLContent( contents,
-                                                             file );
-
-                try {
-                    Thread.currentThread().setContextClassLoader( newLoader );
-
-                    return parseRuleBase( contents,
-                                          dslReader );
-
-                } catch ( Exception t ) {
-                    throw t;
-                } finally {
-                    Thread.currentThread().setContextClassLoader( oldLoader );
-                }
-            } catch ( Throwable t ) {
-                DroolsIDEPlugin.log( t );
-            }
-        }
-
-        return null;
-
-    }
-
-    /**
-     * 
-     * 
-     * @param contents
-     * @param dslReader
-     * @return
-     * @throws DroolsParserException
-     * @throws PackageIntegrationException
-     */
-    public static RuleBase parseRuleBase(String contents,
-                                         Reader dslReader) throws DroolsParserException,
-                                                          PackageIntegrationException {
-        DrlParser parser = new DrlParser();
-
-        PackageDescr packageDescr = null;
-        if ( dslReader == null ) {
-            packageDescr = parser.parse( contents );
-        } else {
-            packageDescr = parser.parse( contents,
-                                         dslReader );
-        }
-
-        //pre build the package
-        PackageBuilder builder = new PackageBuilder();
-        builder.addPackage( packageDescr );
-        Package pkg = builder.getPackage();
-
-        //add the package to a rulebase
-        ReteooRuleBase ruleBase = new ReteooRuleBase();
-        ruleBase.addPackage( pkg );
-        return ruleBase;
-    }
-
-    /**
-     * Loads model from rule base,
-     * calculates rete view and initializes diagram model.
-     * @param monitor 
-     * @param contents 
-     * @return
-     */
-    public ReteGraph loadReteModel(IProgressMonitor monitor,
-                                   String contents) throws Throwable {
-        if ( relayoutRequired == false ) {
-            return diagram;
-        }
-
-        ReteGraph newDiagram = new ReteGraph();
-
-        try {
-
-            monitor.beginTask( "Loading RETE Tree",
-                               100 );
-
-            monitor.subTask( "Loading Rule Base" );
-            RuleBase ruleBase = getRuleBase( contents );
-            if ( ruleBase == null ) {
-                final Exception error = new Exception( MSG_PARSE_ERROR );
-                throw error;
-            }
-            monitor.worked( 50 );
-            if ( monitor.isCanceled() ) {
-                throw new InterruptedException();
-            }
-
-            monitor.subTask( "Building RETE Tree" );
-            final ReteooVisitor visitor = new ReteooVisitor( newDiagram );
-            visitor.visit( ruleBase );
-            monitor.worked( 30 );
-            if ( monitor.isCanceled() ) {
-                throw new InterruptedException();
-            }
-
-            monitor.subTask( "Calculating RETE Tree Layout" );
-            BaseVertex rootVertex = visitor.getRootVertex();
-            RowList rowList = ReteooLayoutFactory.calculateReteRows( rootVertex );
-            ReteooLayoutFactory.layoutRowList( newDiagram,
-                                               rowList );
-            zeroBaseDiagram( newDiagram );
-            monitor.worked( 20 );
-            if ( monitor.isCanceled() ) {
-                throw new InterruptedException();
-            }
-            monitor.done();
-
-        } catch ( Throwable t ) {
-            if ( !(t instanceof InterruptedException) ) {
-                DroolsIDEPlugin.log( t );
-            }
-            throw t;
-        }
-        relayoutRequired = false;
-        return newDiagram;
-    }
-
-    private ReteGraph getModel() {
-        return diagram;
-    }
-
-    /**
-     * Loads Rete model and initializes zoom manager.
-     * 
-     */
-    protected void initializeGraphicalViewer() {
-        ZoomManager zoomManager = rootEditPart.getZoomManager();
-
-        //List<String>
-        List zoomLevels = new ArrayList( 3 );
-
-        zoomLevels.add( ZoomManager.FIT_ALL );
-        zoomLevels.add( ZoomManager.FIT_HEIGHT );
-        zoomLevels.add( ZoomManager.FIT_WIDTH );
-
-        zoomManager.setZoomLevelContributions( zoomLevels );
-
-        // Zoom mousewheel - Ctrl+Mousewheel for zoom in/out
-        getGraphicalViewer().setProperty( MouseWheelHandler.KeyGenerator.getKey( SWT.MOD1 ),
-                                          MouseWheelZoomHandler.SINGLETON );
-
-    }
-
-    /**
-     * Moves all <code>diagram</code> nodes to upper left corner
-     * and shifting to right if neccessary to get rid of negative XY coordinates.
-     * 
-     */
-    private void zeroBaseDiagram(ReteGraph graph) {
-
-        Dimension dim = rootEditPart.getContentPane().getSize();
-
-        int minx = 0, miny = 0, maxx = 0, x = dim.width;
-
-        final Iterator nodeIter = graph.getChildren().iterator();
-        while ( nodeIter.hasNext() ) {
-            Point loc = ((BaseVertex) (nodeIter.next())).getLocation();
-            minx = Math.min( loc.x,
-                             minx );
-            maxx = Math.max( loc.x,
-                             maxx );
-            miny = Math.min( loc.y,
-                             miny );
-        }
-
-        int delta = (x - (maxx - minx + 20)) / 2;
-        minx = minx - (delta);
-
-        final Iterator nodeIter2 = graph.getChildren().iterator();
-        while ( nodeIter2.hasNext() ) {
-            final BaseVertex vertex = (BaseVertex) (nodeIter2.next());
-            Point loc = vertex.getLocation();
-            vertex.setLocation( new Point( loc.x - minx,
-                                           loc.y - miny ) );
-        }
-    }
-
-    /**
-     * No save operation in ReteViewer
-     */
-    public void doSave(IProgressMonitor monitor) {
-
-    }
-
-    /**
-     * ReteViewer is never dirty.
-     * This prevents editor close mechanism to ask file save confirmation
-     * even after one of the vertices is moved.
-     */
-    public boolean isDirty() {
-        return false;
-    }
-
-    /**
-     * Fired when underlying source is modified.
-     * Marks graph viewer to be relayouted when activated.
-     */
-    public void fireDocumentChanged() {
-        relayoutRequired = true;
-    }
-
-    /**
-     * Draws graph.
-     * 
-     * @param newGraph used to replace existing graph. if null then existing graph is simply redrawn.
-     */
-    public void drawGraph(ReteGraph newGraph) {
-
-        LayerManager manager = (LayerManager) getGraphicalViewer().getEditPartRegistry().get( LayerManager.ID );
-        ConnectionLayer connLayer = (ConnectionLayer) manager.getLayer( LayerConstants.CONNECTION_LAYER );
-
-        // Lazy-init model initialization
-        if ( getGraphicalViewer().getContents() == null ) {
-            getGraphicalViewer().setContents( getModel() );
-        }
-
-        final boolean isNewDiagram = newGraph != null && newGraph != diagram;
-
-        if ( isNewDiagram ) {
-            diagram.removeAll();
-        }
-
-        // Update connection router according to new model size
-        ConnectionRouter router;
-        if ( (isNewDiagram && newGraph.getChildren().size() < SIMPLE_ROUTER_MIN_NODES) || (!isNewDiagram && getModel().getChildren().size() < SIMPLE_ROUTER_MIN_NODES) ) {
-            router = new ShortestPathConnectionRouter( (IFigure) rootEditPart.getContentPane().getChildren().get( 0 ) );
-        } else {
-            router = ConnectionRouter.NULL;
-        }
-        connLayer.setConnectionRouter( router );
-
-        if ( newGraph != null && newGraph != diagram ) {
-            diagram.addAll( newGraph.getChildren() );
-        }
-
-    }
-
-}
\ No newline at end of file

Copied: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/ReteViewer.java (from rev 7597, labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/ide/editors/rete/ReteViewer.java)
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/ide/editors/rete/ReteViewer.java	2006-11-14 19:21:59 UTC (rev 7597)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/ReteViewer.java	2006-11-17 15:52:24 UTC (rev 7683)
@@ -0,0 +1,369 @@
+package org.drools.ide.editors.rete;
+
+/*
+ * Copyright 2006 JBoss Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import java.io.Reader;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.drools.PackageIntegrationException;
+import org.drools.RuleBase;
+import org.drools.RuleBaseFactory;
+import org.drools.compiler.DrlParser;
+import org.drools.compiler.DroolsParserException;
+import org.drools.compiler.PackageBuilder;
+import org.drools.ide.DroolsIDEPlugin;
+import org.drools.ide.builder.DroolsBuilder;
+import org.drools.ide.editors.DSLAdapter;
+import org.drools.ide.editors.rete.model.ReteGraph;
+import org.drools.ide.editors.rete.part.VertexEditPartFactory;
+import org.drools.ide.util.ProjectClassLoader;
+import org.drools.lang.descr.PackageDescr;
+import org.drools.reteoo.BaseVertex;
+import org.drools.reteoo.ReteooRuleBase;
+import org.drools.reteoo.ReteooVisitor;
+import org.drools.rule.Package;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.draw2d.ColorConstants;
+import org.eclipse.draw2d.ConnectionLayer;
+import org.eclipse.draw2d.ConnectionRouter;
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.draw2d.ShortestPathConnectionRouter;
+import org.eclipse.draw2d.geometry.Dimension;
+import org.eclipse.draw2d.geometry.Point;
+import org.eclipse.gef.DefaultEditDomain;
+import org.eclipse.gef.EditPart;
+import org.eclipse.gef.GraphicalEditPart;
+import org.eclipse.gef.GraphicalViewer;
+import org.eclipse.gef.LayerConstants;
+import org.eclipse.gef.MouseWheelHandler;
+import org.eclipse.gef.MouseWheelZoomHandler;
+import org.eclipse.gef.editparts.LayerManager;
+import org.eclipse.gef.editparts.ScalableFreeformRootEditPart;
+import org.eclipse.gef.editparts.ZoomManager;
+import org.eclipse.gef.ui.parts.GraphicalEditor;
+import org.eclipse.gef.ui.parts.GraphicalViewerKeyHandler;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.swt.SWT;
+import org.eclipse.ui.IFileEditorInput;
+
+/**
+ * GEF-based RETE Viewer
+ * 
+ * @author Ahti Kitsik
+ *
+ */
+public class ReteViewer extends GraphicalEditor {
+
+    private static final String  MSG_PARSE_ERROR         = "Unable to parse rules to show RETE view!";
+
+    private static final String  JAVA_NATURE             = "org.eclipse.jdt.core.javanature";
+
+    private static final int     SIMPLE_ROUTER_MIN_NODES = 100;
+
+    ScalableFreeformRootEditPart rootEditPart            = new ScalableFreeformRootEditPart();
+
+    private ReteGraph            diagram                 = new ReteGraph();
+
+    private boolean              relayoutRequired        = true;
+
+    /**
+     * Constructor.
+     * 
+     * @param documentProvider documentProvider must contain Document with rules.
+     */
+    public ReteViewer() {
+        super();
+        setEditDomain( new DefaultEditDomain( this ) );
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.gef.ui.parts.GraphicalEditor#configureGraphicalViewer()
+     */
+    protected void configureGraphicalViewer() {
+        super.configureGraphicalViewer();
+        GraphicalViewer viewer = getGraphicalViewer();
+        viewer.getControl().setBackground( ColorConstants.white );
+        viewer.setEditPartFactory( new VertexEditPartFactory() );
+        viewer.setRootEditPart( rootEditPart );
+        viewer.setKeyHandler( new GraphicalViewerKeyHandler( viewer ) );
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.gef.ui.parts.GraphicalEditor#getAdapter(java.lang.Class)
+     */
+    public Object getAdapter(Class type) {
+
+        if ( type == ZoomManager.class ) return ((ScalableFreeformRootEditPart) getGraphicalViewer().getRootEditPart()).getZoomManager();
+        if ( type == GraphicalViewer.class ) return getGraphicalViewer();
+        if ( type == EditPart.class && getGraphicalViewer() != null ) return getGraphicalViewer().getRootEditPart();
+        if ( type == IFigure.class && getGraphicalViewer() != null ) return ((GraphicalEditPart) getGraphicalViewer().getRootEditPart()).getFigure();
+        return super.getAdapter( type );
+    }
+
+    private RuleBase getRuleBase(String contents) {
+        if ( getEditorInput() instanceof IFileEditorInput ) {
+            try {
+
+                ClassLoader oldLoader = Thread.currentThread().getContextClassLoader();
+                ClassLoader newLoader = DroolsBuilder.class.getClassLoader();
+                IFile file = ((IFileEditorInput) getEditorInput()).getFile();
+                if ( file.getProject().getNature( JAVA_NATURE ) != null ) {
+                    IJavaProject project = JavaCore.create( file.getProject() );
+                    newLoader = ProjectClassLoader.getProjectClassLoader( project );
+                }
+
+                Reader dslReader = DSLAdapter.getDSLContent( contents,
+                                                             file );
+
+                try {
+                    Thread.currentThread().setContextClassLoader( newLoader );
+
+                    return parseRuleBase( contents,
+                                          dslReader );
+
+                } catch ( Exception t ) {
+                    throw t;
+                } finally {
+                    Thread.currentThread().setContextClassLoader( oldLoader );
+                }
+            } catch ( Throwable t ) {
+                DroolsIDEPlugin.log( t );
+            }
+        }
+
+        return null;
+
+    }
+
+    /**
+     * 
+     * 
+     * @param contents
+     * @param dslReader
+     * @return
+     * @throws DroolsParserException
+     * @throws PackageIntegrationException
+     */
+    public static RuleBase parseRuleBase(String contents,
+                                         Reader dslReader) throws DroolsParserException,
+                                                          PackageIntegrationException {
+        DrlParser parser = new DrlParser();
+
+        PackageDescr packageDescr = null;
+        if ( dslReader == null ) {
+            packageDescr = parser.parse( contents );
+        } else {
+            packageDescr = parser.parse( contents,
+                                         dslReader );
+        }
+
+        //pre build the package
+        PackageBuilder builder = new PackageBuilder();
+        builder.addPackage( packageDescr );
+        Package pkg = builder.getPackage();
+
+        //add the package to a rulebase
+        ReteooRuleBase ruleBase = (ReteooRuleBase) RuleBaseFactory.newRuleBase( RuleBase.RETEOO );
+        ruleBase.addPackage( pkg );
+        return ruleBase;
+    }
+
+    /**
+     * Loads model from rule base,
+     * calculates rete view and initializes diagram model.
+     * @param monitor 
+     * @param contents 
+     * @return
+     */
+    public ReteGraph loadReteModel(IProgressMonitor monitor,
+                                   String contents) throws Throwable {
+        if ( relayoutRequired == false ) {
+            return diagram;
+        }
+
+        ReteGraph newDiagram = new ReteGraph();
+
+        try {
+
+            monitor.beginTask( "Loading RETE Tree",
+                               100 );
+
+            monitor.subTask( "Loading Rule Base" );
+            RuleBase ruleBase = getRuleBase( contents );
+            if ( ruleBase == null ) {
+                final Exception error = new Exception( MSG_PARSE_ERROR );
+                throw error;
+            }
+            monitor.worked( 50 );
+            if ( monitor.isCanceled() ) {
+                throw new InterruptedException();
+            }
+
+            monitor.subTask( "Building RETE Tree" );
+            final ReteooVisitor visitor = new ReteooVisitor( newDiagram );
+            visitor.visit( ruleBase );
+            monitor.worked( 30 );
+            if ( monitor.isCanceled() ) {
+                throw new InterruptedException();
+            }
+
+            monitor.subTask( "Calculating RETE Tree Layout" );
+            BaseVertex rootVertex = visitor.getRootVertex();
+            RowList rowList = ReteooLayoutFactory.calculateReteRows( rootVertex );
+            ReteooLayoutFactory.layoutRowList( newDiagram,
+                                               rowList );
+            zeroBaseDiagram( newDiagram );
+            monitor.worked( 20 );
+            if ( monitor.isCanceled() ) {
+                throw new InterruptedException();
+            }
+            monitor.done();
+
+        } catch ( Throwable t ) {
+            if ( !(t instanceof InterruptedException) ) {
+                DroolsIDEPlugin.log( t );
+            }
+            throw t;
+        }
+        relayoutRequired = false;
+        return newDiagram;
+    }
+
+    private ReteGraph getModel() {
+        return diagram;
+    }
+
+    /**
+     * Loads Rete model and initializes zoom manager.
+     * 
+     */
+    protected void initializeGraphicalViewer() {
+        ZoomManager zoomManager = rootEditPart.getZoomManager();
+
+        //List<String>
+        List zoomLevels = new ArrayList( 3 );
+
+        zoomLevels.add( ZoomManager.FIT_ALL );
+        zoomLevels.add( ZoomManager.FIT_HEIGHT );
+        zoomLevels.add( ZoomManager.FIT_WIDTH );
+
+        zoomManager.setZoomLevelContributions( zoomLevels );
+
+        // Zoom mousewheel - Ctrl+Mousewheel for zoom in/out
+        getGraphicalViewer().setProperty( MouseWheelHandler.KeyGenerator.getKey( SWT.MOD1 ),
+                                          MouseWheelZoomHandler.SINGLETON );
+
+    }
+
+    /**
+     * Moves all <code>diagram</code> nodes to upper left corner
+     * and shifting to right if neccessary to get rid of negative XY coordinates.
+     * 
+     */
+    private void zeroBaseDiagram(ReteGraph graph) {
+
+        Dimension dim = rootEditPart.getContentPane().getSize();
+
+        int minx = 0, miny = 0, maxx = 0, x = dim.width;
+
+        final Iterator nodeIter = graph.getChildren().iterator();
+        while ( nodeIter.hasNext() ) {
+            Point loc = ((BaseVertex) (nodeIter.next())).getLocation();
+            minx = Math.min( loc.x,
+                             minx );
+            maxx = Math.max( loc.x,
+                             maxx );
+            miny = Math.min( loc.y,
+                             miny );
+        }
+
+        int delta = (x - (maxx - minx + 20)) / 2;
+        minx = minx - (delta);
+
+        final Iterator nodeIter2 = graph.getChildren().iterator();
+        while ( nodeIter2.hasNext() ) {
+            final BaseVertex vertex = (BaseVertex) (nodeIter2.next());
+            Point loc = vertex.getLocation();
+            vertex.setLocation( new Point( loc.x - minx,
+                                           loc.y - miny ) );
+        }
+    }
+
+    /**
+     * No save operation in ReteViewer
+     */
+    public void doSave(IProgressMonitor monitor) {
+
+    }
+
+    /**
+     * ReteViewer is never dirty.
+     * This prevents editor close mechanism to ask file save confirmation
+     * even after one of the vertices is moved.
+     */
+    public boolean isDirty() {
+        return false;
+    }
+
+    /**
+     * Fired when underlying source is modified.
+     * Marks graph viewer to be relayouted when activated.
+     */
+    public void fireDocumentChanged() {
+        relayoutRequired = true;
+    }
+
+    /**
+     * Draws graph.
+     * 
+     * @param newGraph used to replace existing graph. if null then existing graph is simply redrawn.
+     */
+    public void drawGraph(ReteGraph newGraph) {
+
+        LayerManager manager = (LayerManager) getGraphicalViewer().getEditPartRegistry().get( LayerManager.ID );
+        ConnectionLayer connLayer = (ConnectionLayer) manager.getLayer( LayerConstants.CONNECTION_LAYER );
+
+        // Lazy-init model initialization
+        if ( getGraphicalViewer().getContents() == null ) {
+            getGraphicalViewer().setContents( getModel() );
+        }
+
+        final boolean isNewDiagram = newGraph != null && newGraph != diagram;
+
+        if ( isNewDiagram ) {
+            diagram.removeAll();
+        }
+
+        // Update connection router according to new model size
+        ConnectionRouter router;
+        if ( (isNewDiagram && newGraph.getChildren().size() < SIMPLE_ROUTER_MIN_NODES) || (!isNewDiagram && getModel().getChildren().size() < SIMPLE_ROUTER_MIN_NODES) ) {
+            router = new ShortestPathConnectionRouter( (IFigure) rootEditPart.getContentPane().getChildren().get( 0 ) );
+        } else {
+            router = ConnectionRouter.NULL;
+        }
+        connLayer.setConnectionRouter( router );
+
+        if ( newGraph != null && newGraph != diagram ) {
+            diagram.addAll( newGraph.getChildren() );
+        }
+
+    }
+
+}
\ No newline at end of file

Deleted: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/ReteooLayoutFactory.java
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/ide/editors/rete/ReteooLayoutFactory.java	2006-11-14 19:21:59 UTC (rev 7597)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/ReteooLayoutFactory.java	2006-11-17 15:52:24 UTC (rev 7683)
@@ -1,155 +0,0 @@
-package org.drools.ide.editors.rete;
-
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-
-import org.drools.ide.editors.rete.model.Connection;
-import org.drools.ide.editors.rete.model.ReteGraph;
-import org.drools.reteoo.BaseVertex;
-import org.eclipse.draw2d.geometry.Point;
-
-/**
- * Factory methods for calculating and layouting reteoo graph
- *
- */
-public class ReteooLayoutFactory {
-
-    /**
-     * Calculates layouting for provided graph.
-     * 
-     * @param root graph root vertex
-     * 
-     * @return Optimally layouted rows from provided graph
-     */
-    public static RowList calculateReteRows(BaseVertex root) {
-        RowList rowList;
-        rowList = new RowList();
-
-        rowList.add( 0,
-                     root );
-
-        int curRow = 0;
-
-        final Set seenVertices = new HashSet();
-        seenVertices.add( root );
-
-        while ( curRow < rowList.getDepth() ) {
-            final List rowVertices = rowList.get( curRow ).getVertices();
-
-            for ( final Iterator rowNodeIter = rowVertices.iterator(); rowNodeIter.hasNext(); ) {
-                final BaseVertex rowNode = (BaseVertex) rowNodeIter.next();
-
-                final List edges = rowNode.getSourceConnections();
-
-                for ( final Iterator edgeIter = edges.iterator(); edgeIter.hasNext(); ) {
-
-                    final Connection edge = (Connection) edgeIter.next();
-                    final BaseVertex destNode = edge.getOpposite( rowNode );
-
-                    if ( !seenVertices.contains( destNode ) ) {
-                        rowList.add( curRow + 1,
-                                     destNode );
-                        seenVertices.add( destNode );
-                    }
-                }
-
-                seenVertices.add( rowNode );
-            }
-
-            ++curRow;
-        }
-
-        rowList.optimize();
-
-        return rowList;
-    }
-
-    /**
-     * Adds all vertices from rowList to the graph.
-     * 
-     * @param graph
-     * @param rowList
-     */
-    public static void layoutRowList(ReteGraph graph,
-                                     RowList rowList) {
-        new LayoutCalculator( graph,
-                              rowList );
-    }
-
-    private static class LayoutCalculator {
-
-        public final static String COORDS                = "drools.LayoutCalculator.coords";
-
-        private static final int   COLUMN_SPACE          = 40;
-        private static final int   ROW_HEIGHT_MULTIPLIER = 6;
-
-        private RowList            rowList;
-
-        private int                columnWidth;
-        private int                rowHeight;
-
-        private ReteGraph          graph;
-
-        private LayoutCalculator(final ReteGraph graph,
-                                 final RowList rowList) {
-            this.graph = graph;
-            this.rowList = rowList;
-            computeSize();
-
-            List vertices = getGraph().getChildren();
-            Iterator iter = vertices.iterator();
-            while ( iter.hasNext() ) {
-                BaseVertex v = (BaseVertex) iter.next();
-                initialize_local_vertex( v );
-            }
-
-        }
-
-        private void computeSize() {
-            final List vertices = getGraph().getChildren();
-
-            for ( final Iterator vertexIter = vertices.iterator(); vertexIter.hasNext(); ) {
-                final BaseVertex vertex = (BaseVertex) vertexIter.next();
-
-                final int width = vertex.getSize().width;
-                final int height = vertex.getSize().height;
-
-                if ( width > this.columnWidth ) {
-                    this.columnWidth = width;
-                }
-
-                if ( height > this.rowHeight ) {
-                    this.rowHeight = height;
-                }
-            }
-
-            this.columnWidth = this.columnWidth + LayoutCalculator.COLUMN_SPACE;
-        }
-
-        private void initialize_local_vertex(final BaseVertex vertex) {
-            final int row = this.rowList.getRow( vertex );
-            final int col = this.rowList.getColumn( vertex );
-
-            final int rowWidth = this.rowList.getWidth( row );
-
-            final int columnWidthPx = columnWidth;
-            final int rowHeightPx = rowHeight;
-
-            double x = (col * columnWidthPx);
-            double y = (row * (rowHeightPx * LayoutCalculator.ROW_HEIGHT_MULTIPLIER));
-
-            x = x + (columnWidthPx / 2) - ((rowWidth - 1) * (columnWidthPx / 2));
-            y = y + (rowHeightPx / 2) + 3;
-
-            vertex.setLocation( new Point( x,
-                                           y ) );
-        }
-
-        private ReteGraph getGraph() {
-            return graph;
-        }
-    }
-
-}

Copied: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/ReteooLayoutFactory.java (from rev 7597, labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/ide/editors/rete/ReteooLayoutFactory.java)

Deleted: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/Row.java
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/ide/editors/rete/Row.java	2006-11-14 19:21:59 UTC (rev 7597)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/Row.java	2006-11-17 15:52:24 UTC (rev 7683)
@@ -1,139 +0,0 @@
-package org.drools.ide.editors.rete;
-
-/*
- * Copyright 2006 JBoss Inc
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-
-import org.drools.reteoo.BaseVertex;
-
-/**
- * Represents one row in rete graph
- *
- */
-public class Row {
-
-    private final int depth;
-
-    //List<BaseVertex>
-    private List      vertices;
-
-    /**
-     * Default constructor.
-     * 
-     * @param depth row depth 
-     */
-    public Row(final int depth) {
-        super();
-        this.vertices = new ArrayList();
-        this.depth = depth;
-    }
-
-    /**
-     * Returns row depth
-     * 
-     * @return row depth
-     */
-    public int getDepth() {
-        return this.depth;
-    }
-
-    /**
-     * Adds new vertex to this row.
-     * 
-     * @param vertex new vertex to be added 
-     */
-    public void add(final BaseVertex vertex) {
-        this.vertices.add( vertex );
-    }
-
-    /**
-     * Returns all vertices from this row.
-     * 
-     * @return list of vertices with type BaseVertex
-     */
-    public List getVertices() {
-        return this.vertices;
-    }
-
-    /**
-     * @param vertex
-     * @return <code>true</code> if vertex is found in row. <code>false</code> otherwise.
-     */
-    public boolean contains(final BaseVertex vertex) {
-        return this.vertices.contains( vertex );
-    }
-
-    /**
-     * @return number of vertices in row 
-     */
-    public int getWidth() {
-        return this.vertices.size();
-    }
-
-    /**
-     * Optimizing vertices for optimal presentation
-     * 
-     */
-    public void optimize() {
-        final List sorted = new ArrayList( this.vertices );
-
-        Collections.sort( sorted,
-                          new Comparator() {
-                              public int compare(final Object o1,
-                                                 final Object o2) {
-                                  final BaseVertex v1 = (BaseVertex) o1;
-                                  final BaseVertex v2 = (BaseVertex) o2;
-
-                                  int v1OutDegree = v1.getSourceConnections().size();
-                                  int v2OutDegree = v2.getSourceConnections().size();
-
-                                  if ( v1OutDegree < v2OutDegree ) {
-                                      return 1;
-                                  }
-
-                                  if ( v1OutDegree > v2OutDegree ) {
-                                      return -1;
-                                  }
-
-                                  return 0;
-                              }
-                          } );
-
-        final LinkedList optimized = new LinkedList();
-
-        boolean front = false;
-
-        for ( final Iterator vertexIter = sorted.iterator(); vertexIter.hasNext(); ) {
-            final BaseVertex vertex = (BaseVertex) vertexIter.next();
-
-            if ( front ) {
-                optimized.addFirst( vertex );
-            } else {
-                optimized.addLast( vertex );
-            }
-
-            front = !front;
-        }
-
-        this.vertices = optimized;
-    }
-}
\ No newline at end of file

Copied: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/Row.java (from rev 7597, labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/ide/editors/rete/Row.java)

Deleted: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/RowList.java
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/ide/editors/rete/RowList.java	2006-11-14 19:21:59 UTC (rev 7597)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/RowList.java	2006-11-17 15:52:24 UTC (rev 7683)
@@ -1,169 +0,0 @@
-package org.drools.ide.editors.rete;
-
-/*
- * Copyright 2006 JBoss Inc
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.drools.reteoo.BaseVertex;
-
-/**
- * Holder for Row elements.
- * 
- */
-public class RowList {
-
-    // List<Row>
-    private List rows;
-
-    /**
-     * Default constructor.
-     */
-    public RowList() {
-        super();
-        this.rows = new ArrayList();
-    }
-
-    /**
-     * Adds new vertex to specified depth
-     * 
-     * @param depth depth for vertex
-     * @param vertex vertex
-     */
-    public void add(final int depth,
-                    final BaseVertex vertex) {
-        if ( this.rows.size() < (depth + 1) ) {
-            final int addRows = depth - this.rows.size() + 1;
-
-            for ( int i = 0; i < addRows; ++i ) {
-                this.rows.add( new Row( (depth - addRows) + i ) );
-            }
-        }
-
-        ((Row) this.rows.get( depth )).add( vertex );
-    }
-
-    /**
-     * @return number of rows in RowList
-     */
-    public int getDepth() {
-        return this.rows.size();
-    }
-
-    /**
-     * @param row index of the row to be returned (0..n-1)
-     * @return specified row
-     */
-    public Row get(final int row) {
-        return (Row) this.rows.get( row );
-    }
-
-    /**
-     * Finds specified vertex from the rows.
-     * 
-     * @param vertex vertex
-     * 
-     * @return row number where vertex was found (0..n-1). <code>-1</code> if not found. 
-     */
-    public int getRow(final BaseVertex vertex) {
-        final int numRows = this.rows.size();
-
-        for ( int i = 0; i < numRows; ++i ) {
-            if ( ((Row) this.rows.get( i )).contains( vertex ) ) {
-                return i;
-            }
-        }
-
-        return -1;
-    }
-
-    /**
-     * Finds the longest row width.
-     * 
-     * @return width of the longest row
-     */
-    public int getWidth() {
-        int width = 0;
-
-        for ( final Iterator rowIter = this.rows.iterator(); rowIter.hasNext(); ) {
-            final Row row = (Row) rowIter.next();
-            final int rowWidth = row.getWidth();
-
-            if ( rowWidth > width ) {
-                width = rowWidth;
-            }
-        }
-
-        return width;
-    }
-
-    /**
-     * Width of the row at specified index.
-     * 
-     * @param row
-     * @return width
-     */
-    public int getWidth(final int row) {
-        return ((Row) this.rows.get( row )).getWidth();
-    }
-
-    /**
-     * @param vertex vertex to search
-     * @return column where vertex was found
-     */
-    public int getColumn(final BaseVertex vertex) {
-        final int row = getRow( vertex );
-
-        if ( row < 0 ) {
-            return -1;
-        }
-
-        final List rowVertices = get( row ).getVertices();
-
-        final int numCols = rowVertices.size();
-
-        for ( int i = 0; i < numCols; ++i ) {
-            if ( rowVertices.get( i ).equals( vertex ) ) {
-                return i;
-            }
-        }
-
-        return -1;
-    }
-
-    /**
-     * Dumps all row vertices to System.err
-     */
-    public void dump() {
-        final int numRows = this.rows.size();
-
-        for ( int i = 0; i < numRows; ++i ) {
-            System.err.println( i + ": " + get( i ).getVertices() );
-        }
-    }
-
-    /**
-     * Optimizes all rows for optimal presentation
-     */
-    public void optimize() {
-        final int numRows = this.rows.size();
-
-        for ( int i = 0; i < numRows; ++i ) {
-            get( i ).optimize();
-        }
-    }
-}
\ No newline at end of file

Copied: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/RowList.java (from rev 7597, labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/ide/editors/rete/RowList.java)

Copied: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/commands (from rev 7597, labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/ide/editors/rete/commands)

Deleted: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/commands/NodeSetConstraintCommand.java
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/ide/editors/rete/commands/NodeSetConstraintCommand.java	2006-11-14 19:21:59 UTC (rev 7597)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/commands/NodeSetConstraintCommand.java	2006-11-17 15:52:24 UTC (rev 7683)
@@ -1,79 +0,0 @@
-package org.drools.ide.editors.rete.commands;
-
-import org.drools.reteoo.BaseVertex;
-import org.eclipse.draw2d.geometry.Rectangle;
-
-import org.eclipse.gef.RequestConstants;
-import org.eclipse.gef.commands.Command;
-import org.eclipse.gef.requests.ChangeBoundsRequest;
-
-/**
- * A command to move a vertex.
- * 
- */
-public class NodeSetConstraintCommand extends Command {
-
-    /** Stores the new size and location. */
-    private final Rectangle           newBounds;
-
-    /** Stores the old size and location. */
-    private Rectangle                 oldBounds;
-
-    /** A request to move/resize an edit part. */
-    private final ChangeBoundsRequest request;
-
-    /** BaseVertex to manipulate. */
-    private final BaseVertex          vertex;
-
-    /**
-     * Create a command that can resize and/or move a vertex.
-     *  
-     * @param vertex the vertex to manipulate
-     * @param req       the move request
-     * @param newBounds the new location. size is ignored
-     * @throws IllegalArgumentException if any of the parameters is null
-     */
-    public NodeSetConstraintCommand(BaseVertex vertex,
-                                    ChangeBoundsRequest req,
-                                    Rectangle newBounds) {
-        if ( vertex == null || req == null || newBounds == null ) {
-            throw new IllegalArgumentException();
-        }
-        this.vertex = vertex;
-        this.request = req;
-        this.newBounds = newBounds.getCopy();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.gef.commands.Command#canExecute()
-     */
-    public boolean canExecute() {
-        Object type = request.getType();
-        return (RequestConstants.REQ_MOVE.equals( type ) || RequestConstants.REQ_MOVE_CHILDREN.equals( type ));
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.gef.commands.Command#execute()
-     */
-    public void execute() {
-        oldBounds = new Rectangle( vertex.getLocation(),
-                                   vertex.getSize() );
-        redo();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.gef.commands.Command#redo()
-     */
-    public void redo() {
-        vertex.setSize( newBounds.getSize() );
-        vertex.setLocation( newBounds.getLocation() );
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.gef.commands.Command#undo()
-     */
-    public void undo() {
-        vertex.setSize( oldBounds.getSize() );
-        vertex.setLocation( oldBounds.getLocation() );
-    }
-}

Copied: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/commands/NodeSetConstraintCommand.java (from rev 7597, labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/ide/editors/rete/commands/NodeSetConstraintCommand.java)

Copied: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/figure (from rev 7597, labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/ide/editors/rete/figure)

Deleted: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/figure/ConnectionFigure.java
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/ide/editors/rete/figure/ConnectionFigure.java	2006-11-14 19:21:59 UTC (rev 7597)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/figure/ConnectionFigure.java	2006-11-17 15:52:24 UTC (rev 7683)
@@ -1,20 +0,0 @@
-package org.drools.ide.editors.rete.figure;
-
-import org.eclipse.draw2d.Graphics;
-import org.eclipse.draw2d.PolylineConnection;
-import org.eclipse.swt.SWT;
-
-/**
- * ConnectionFigure between two Vertices. 
- *
- */
-public class ConnectionFigure extends PolylineConnection {
-
-    /**
-     * Painting antialiased connector
-     */
-    public void paint(Graphics g) {
-        g.setAntialias( SWT.ON );
-        super.paint( g );
-    }
-}

Copied: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/figure/ConnectionFigure.java (from rev 7597, labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/ide/editors/rete/figure/ConnectionFigure.java)

Deleted: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/figure/VertexFigure.java
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/ide/editors/rete/figure/VertexFigure.java	2006-11-14 19:21:59 UTC (rev 7597)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/figure/VertexFigure.java	2006-11-17 15:52:24 UTC (rev 7683)
@@ -1,54 +0,0 @@
-package org.drools.ide.editors.rete.figure;
-
-import org.eclipse.draw2d.Figure;
-import org.eclipse.draw2d.Graphics;
-import org.eclipse.draw2d.geometry.Rectangle;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Color;
-
-/**
- * Figure representing BaseVertex
- *
- */
-public class VertexFigure extends Figure {
-
-    final private Color backgroundColor;
-    final private Color borderColor;
-
-    /**
-     * Initializing Figure
-     * 
-     * @param backgroundColor background color
-     * @param borderColor border color
-     */
-    public VertexFigure(Color backgroundColor,
-                        Color borderColor) {
-        this.backgroundColor = backgroundColor;
-        this.borderColor = borderColor;
-    }
-
-    /**
-     * Painting antialiased vertex
-     */
-    public void paint(Graphics g) {
-        g.setAntialias( SWT.ON );
-        Rectangle r = getBounds().getCopy();
-        g.translate( r.getLocation() );
-        g.setBackgroundColor( backgroundColor );
-        g.setForegroundColor( borderColor );
-        g.fillArc( 0,
-                   0,
-                   15,
-                   15,
-                   0,
-                   360 );
-        g.drawArc( 0,
-                   0,
-                   14,
-                   14,
-                   0,
-                   360 );
-        super.paint( g );
-    }
-
-}

Copied: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/figure/VertexFigure.java (from rev 7597, labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/ide/editors/rete/figure/VertexFigure.java)

Copied: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/model (from rev 7597, labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/ide/editors/rete/model)

Deleted: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/model/Connection.java
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/ide/editors/rete/model/Connection.java	2006-11-14 19:21:59 UTC (rev 7597)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/model/Connection.java	2006-11-17 15:52:24 UTC (rev 7683)
@@ -1,80 +0,0 @@
-package org.drools.ide.editors.rete.model;
-
-import org.drools.reteoo.BaseVertex;
-
-/**
- * A connection between two distinct vertices.
- */
-public class Connection extends ModelElement {
-
-    private boolean    isConnected;
-
-    private BaseVertex source;
-
-    private BaseVertex target;
-
-    /** 
-     * Creating a connection between two distinct vertices.
-     * 
-     * @param source a source endpoint
-     * @param target a target endpoint
-     * @throws IllegalArgumentException if any of the parameters are null or source == target
-     */
-    public Connection(BaseVertex source,
-                      BaseVertex target) {
-        this.source = source;
-        this.target = target;
-        source.addConnection( this );
-        target.addConnection( this );
-        isConnected = true;
-    }
-
-    /** 
-     * Disconnect this connection from the vertices it is attached to.
-     */
-    public void disconnect() {
-        if ( isConnected ) {
-            source.removeConnection( this );
-            target.removeConnection( this );
-            isConnected = false;
-        }
-    }
-
-    /**
-     * Returns the source endpoint of this connection.
-     * 
-     * @return BaseVertex vertex
-     */
-    public BaseVertex getSource() {
-        return source;
-    }
-
-    /**
-     * Returns the target endpoint of this connection.
-     * 
-     * @return BaseVertex vertex
-     */
-    public BaseVertex getTarget() {
-        return target;
-    }
-
-    /**
-     * Gets opposite of specified vertex.
-     * 
-     * Returning <code>null</code> if specified not does not belong into this connection.
-     * 
-     * @param vertex
-     * @return opposite of vertex
-     */
-    public BaseVertex getOpposite(BaseVertex vertex) {
-        // If null or not part of this connection
-        if ( vertex == null || (!vertex.equals( getSource() ) && !vertex.equals( getTarget() )) ) {
-            return null;
-        }
-        if ( vertex.equals( getSource() ) ) {
-            return getTarget();
-        }
-        return getSource();
-    }
-
-}
\ No newline at end of file

Copied: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/model/Connection.java (from rev 7597, labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/ide/editors/rete/model/Connection.java)

Deleted: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/model/GraphicalVertex.java
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/ide/editors/rete/model/GraphicalVertex.java	2006-11-14 19:21:59 UTC (rev 7597)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/model/GraphicalVertex.java	2006-11-17 15:52:24 UTC (rev 7683)
@@ -1,287 +0,0 @@
-package org.drools.ide.editors.rete.model;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.drools.spi.FieldConstraint;
-import org.eclipse.draw2d.ColorConstants;
-import org.eclipse.draw2d.geometry.Dimension;
-import org.eclipse.draw2d.geometry.Point;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.ui.views.properties.IPropertyDescriptor;
-import org.eclipse.ui.views.properties.TextPropertyDescriptor;
-
-/**
- * Visual vertex representation for ReteGraph.
- * 
- * Base impl for all rete vertices.
- * 
- * Can be connected with another BaseVertex with a Connector.
- * 
- * @author Ahti Kitsik
- * 
- */
-abstract public class GraphicalVertex extends ModelElement {
-
-    private static final String          VERTEX_NAME             = "BaseVertex ";
-
-    private static final String          WIDTH                   = "Width";
-
-    private static final String          HEIGHT                  = "Height";
-
-    private static IPropertyDescriptor[] descriptors;
-
-    /** ID for the Height property value (used for by the corresponding property descriptor). */
-    private static final String          HEIGHT_PROP             = VERTEX_NAME + "." + HEIGHT;
-
-    /** ID for the Width property value (used for by the corresponding property descriptor). */
-    private static final String          WIDTH_PROP              = VERTEX_NAME + "." + WIDTH;
-
-    /** Property ID to use when the location of this shape is modified. */
-    public static final String           LOCATION_PROP           = VERTEX_NAME + ".Location";
-
-    /** Property ID to use then the size of this shape is modified. */
-    public static final String           SIZE_PROP               = VERTEX_NAME + ".Size";
-
-    /** Property ID to use when the list of outgoing connections is modified. */
-    public static final String           SOURCE_CONNECTIONS_PROP = VERTEX_NAME + ".SourceConn";
-
-    /** Property ID to use when the list of incoming connections is modified. */
-    public static final String           TARGET_CONNECTIONS_PROP = VERTEX_NAME + ".TargetConn";
-
-    /** ID for the X property value (used for by the corresponding property descriptor).  */
-    private static final String          XPOS_PROP               = VERTEX_NAME + ".xPos";
-
-    /** ID for the Y property value (used for by the corresponding property descriptor).  */
-    private static final String          YPOS_PROP               = VERTEX_NAME + ".yPos";
-
-    /*
-     * Initializes the property descriptors array.
-     * @see #getPropertyDescriptors()
-     * @see #getPropertyValue(Object)
-     * @see #setPropertyValue(Object, Object)
-     */
-    static {
-        descriptors = new IPropertyDescriptor[]{new TextPropertyDescriptor( XPOS_PROP,
-                                                                            "X" ), // id and description pair
-            new TextPropertyDescriptor( YPOS_PROP,
-                                        "Y" ), new TextPropertyDescriptor( WIDTH_PROP,
-                                                                           WIDTH ), new TextPropertyDescriptor( HEIGHT_PROP,
-                                                                                                                HEIGHT ),};
-    } // static
-
-    /** Location of this vertex. */
-    private Point                        location                = new Point( 0,
-                                                                              0 );
-    /** Size of this vertex. */
-    private final static Dimension       size                    = new Dimension( 16,
-                                                                                  16 );
-    /** List of outgoing Connections. */
-    private List                         sourceConnections       = new ArrayList();
-    /** List of incoming Connections. */
-    private List                         targetConnections       = new ArrayList();
-
-    /**
-     * HTML formatted representation of this node
-     * 
-     * @return #getHtml
-     */
-    abstract public String getHtml();
-
-    /**
-     * Color used for filling vertex figure
-     * 
-     * @return color
-     */
-    abstract public Color getFillColor();
-
-    /**
-     * Add an incoming or outgoing connection to this vertex.
-     * @param conn a non-null connection instance
-     * @throws IllegalArgumentException if the connection is null or has not distinct endpoints
-     */
-    public void addConnection(Connection conn) {
-        if ( conn == null || conn.getSource() == conn.getTarget() ) {
-            throw new IllegalArgumentException();
-        }
-        if ( conn.getSource() == this ) {
-            sourceConnections.add( conn );
-            firePropertyChange( SOURCE_CONNECTIONS_PROP,
-                                null,
-                                conn );
-        } else if ( conn.getTarget() == this ) {
-            targetConnections.add( conn );
-            firePropertyChange( TARGET_CONNECTIONS_PROP,
-                                null,
-                                conn );
-        }
-    }
-
-    /**
-     * Return the Location of this vertex.
-     * 
-     * @return a non-null copy of location instance
-     */
-    public Point getLocation() {
-        return location.getCopy();
-    }
-
-    /**
-     * Returns an array of IPropertyDescriptors for this vertex.
-     * 
-     */
-    public IPropertyDescriptor[] getPropertyDescriptors() {
-        return descriptors;
-    }
-
-    /**
-     * Return the property value for the given propertyId, or null.
-     */
-    public Object getPropertyValue(Object propertyId) {
-        if ( XPOS_PROP.equals( propertyId ) ) {
-            return Integer.toString( location.x );
-        }
-        if ( YPOS_PROP.equals( propertyId ) ) {
-            return Integer.toString( location.y );
-        }
-        if ( HEIGHT_PROP.equals( propertyId ) ) {
-            return Integer.toString( size.height );
-        }
-        if ( WIDTH_PROP.equals( propertyId ) ) {
-            return Integer.toString( size.width );
-        }
-        return null;
-    }
-
-    /**
-     * Return the Size of this vertex.
-     * @return a non-null copy of Dimension instance
-     */
-    public Dimension getSize() {
-        return size.getCopy();
-    }
-
-    /**
-     * Return a List of outgoing Connections.
-     */
-    public List getSourceConnections() {
-        return new ArrayList( sourceConnections );
-    }
-
-    /**
-     * Return a List of incoming Connections.
-     */
-    public List getTargetConnections() {
-        return new ArrayList( targetConnections );
-    }
-
-    /**
-     * Remove an incoming or outgoing connection from this vertex.
-     * 
-     * @param conn a non-null connection instance
-     * @throws IllegalArgumentException if the parameter is null
-     */
-    public void removeConnection(Connection conn) {
-        if ( conn == null ) {
-            throw new IllegalArgumentException();
-        }
-        if ( conn.getSource() == this ) {
-            sourceConnections.remove( conn );
-            firePropertyChange( SOURCE_CONNECTIONS_PROP,
-                                null,
-                                conn );
-        } else if ( conn.getTarget() == this ) {
-            targetConnections.remove( conn );
-            firePropertyChange( TARGET_CONNECTIONS_PROP,
-                                null,
-                                conn );
-        }
-    }
-
-    /**
-     * Set the Location of this vertex.
-     * @param newLocation a non-null Point instance
-     * @throws IllegalArgumentException if the parameter is null
-     */
-    public void setLocation(Point newLocation) {
-        if ( newLocation == null ) {
-            throw new IllegalArgumentException();
-        }
-        location.setLocation( newLocation );
-        firePropertyChange( LOCATION_PROP,
-                            null,
-                            location );
-    }
-
-    /**
-     * Set the property value for the given property id.
-     */
-    public void setPropertyValue(Object propertyId,
-                                 Object value) {
-        if ( XPOS_PROP.equals( propertyId ) ) {
-            int x = Integer.parseInt( (String) value );
-            setLocation( new Point( x,
-                                    location.y ) );
-        } else if ( YPOS_PROP.equals( propertyId ) ) {
-            int y = Integer.parseInt( (String) value );
-            setLocation( new Point( location.x,
-                                    y ) );
-        } else if ( HEIGHT_PROP.equals( propertyId ) ) {
-            int height = Integer.parseInt( (String) value );
-            setSize( new Dimension( size.width,
-                                    height ) );
-        } else if ( WIDTH_PROP.equals( propertyId ) ) {
-            int width = Integer.parseInt( (String) value );
-            setSize( new Dimension( width,
-                                    size.height ) );
-        }
-    }
-
-    /**
-     * Set the Size of this vertex.
-     * Will not modify the size if newSize is null.
-     * @param newSize a non-null Dimension instance or null
-     */
-    public void setSize(Dimension newSize) {
-        if ( newSize != null ) {
-            size.setSize( newSize );
-            firePropertyChange( SIZE_PROP,
-                                null,
-                                size );
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see java.lang.Object#toString()
-     */
-    public String toString() {
-        return VERTEX_NAME + hashCode();
-    }
-
-    /**
-     * Color used for borders
-     * 
-     * @return draw color
-     */
-    public Color getDrawColor() {
-        return ColorConstants.black;
-    }
-
-    /**
-     * Constructs constraints string
-     * 
-     * @param constraints array of constraints 
-     * @return html-formatted constraints representation
-     */
-    public static String dumpConstraints(final FieldConstraint[] constraints) {
-        if ( constraints == null ) {
-            return null;
-        }
-        final StringBuffer buffer = new StringBuffer();
-        for ( int i = 0, length = constraints.length; i < length; i++ ) {
-            buffer.append( constraints[i].toString() + "<br>" );
-        }
-        return buffer.toString();
-    }
-
-}

Copied: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/model/GraphicalVertex.java (from rev 7597, labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/ide/editors/rete/model/GraphicalVertex.java)
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/ide/editors/rete/model/GraphicalVertex.java	2006-11-14 19:21:59 UTC (rev 7597)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/model/GraphicalVertex.java	2006-11-17 15:52:24 UTC (rev 7683)
@@ -0,0 +1,287 @@
+package org.drools.ide.editors.rete.model;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.drools.spi.Constraint;
+import org.eclipse.draw2d.ColorConstants;
+import org.eclipse.draw2d.geometry.Dimension;
+import org.eclipse.draw2d.geometry.Point;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.ui.views.properties.IPropertyDescriptor;
+import org.eclipse.ui.views.properties.TextPropertyDescriptor;
+
+/**
+ * Visual vertex representation for ReteGraph.
+ * 
+ * Base impl for all rete vertices.
+ * 
+ * Can be connected with another BaseVertex with a Connector.
+ * 
+ * @author Ahti Kitsik
+ * 
+ */
+abstract public class GraphicalVertex extends ModelElement {
+
+    private static final String          VERTEX_NAME             = "BaseVertex ";
+
+    private static final String          WIDTH                   = "Width";
+
+    private static final String          HEIGHT                  = "Height";
+
+    private static IPropertyDescriptor[] descriptors;
+
+    /** ID for the Height property value (used for by the corresponding property descriptor). */
+    private static final String          HEIGHT_PROP             = VERTEX_NAME + "." + HEIGHT;
+
+    /** ID for the Width property value (used for by the corresponding property descriptor). */
+    private static final String          WIDTH_PROP              = VERTEX_NAME + "." + WIDTH;
+
+    /** Property ID to use when the location of this shape is modified. */
+    public static final String           LOCATION_PROP           = VERTEX_NAME + ".Location";
+
+    /** Property ID to use then the size of this shape is modified. */
+    public static final String           SIZE_PROP               = VERTEX_NAME + ".Size";
+
+    /** Property ID to use when the list of outgoing connections is modified. */
+    public static final String           SOURCE_CONNECTIONS_PROP = VERTEX_NAME + ".SourceConn";
+
+    /** Property ID to use when the list of incoming connections is modified. */
+    public static final String           TARGET_CONNECTIONS_PROP = VERTEX_NAME + ".TargetConn";
+
+    /** ID for the X property value (used for by the corresponding property descriptor).  */
+    private static final String          XPOS_PROP               = VERTEX_NAME + ".xPos";
+
+    /** ID for the Y property value (used for by the corresponding property descriptor).  */
+    private static final String          YPOS_PROP               = VERTEX_NAME + ".yPos";
+
+    /*
+     * Initializes the property descriptors array.
+     * @see #getPropertyDescriptors()
+     * @see #getPropertyValue(Object)
+     * @see #setPropertyValue(Object, Object)
+     */
+    static {
+        descriptors = new IPropertyDescriptor[]{new TextPropertyDescriptor( XPOS_PROP,
+                                                                            "X" ), // id and description pair
+            new TextPropertyDescriptor( YPOS_PROP,
+                                        "Y" ), new TextPropertyDescriptor( WIDTH_PROP,
+                                                                           WIDTH ), new TextPropertyDescriptor( HEIGHT_PROP,
+                                                                                                                HEIGHT ),};
+    } // static
+
+    /** Location of this vertex. */
+    private Point                        location                = new Point( 0,
+                                                                              0 );
+    /** Size of this vertex. */
+    private final static Dimension       size                    = new Dimension( 16,
+                                                                                  16 );
+    /** List of outgoing Connections. */
+    private List                         sourceConnections       = new ArrayList();
+    /** List of incoming Connections. */
+    private List                         targetConnections       = new ArrayList();
+
+    /**
+     * HTML formatted representation of this node
+     * 
+     * @return #getHtml
+     */
+    abstract public String getHtml();
+
+    /**
+     * Color used for filling vertex figure
+     * 
+     * @return color
+     */
+    abstract public Color getFillColor();
+
+    /**
+     * Add an incoming or outgoing connection to this vertex.
+     * @param conn a non-null connection instance
+     * @throws IllegalArgumentException if the connection is null or has not distinct endpoints
+     */
+    public void addConnection(Connection conn) {
+        if ( conn == null || conn.getSource() == conn.getTarget() ) {
+            throw new IllegalArgumentException();
+        }
+        if ( conn.getSource() == this ) {
+            sourceConnections.add( conn );
+            firePropertyChange( SOURCE_CONNECTIONS_PROP,
+                                null,
+                                conn );
+        } else if ( conn.getTarget() == this ) {
+            targetConnections.add( conn );
+            firePropertyChange( TARGET_CONNECTIONS_PROP,
+                                null,
+                                conn );
+        }
+    }
+
+    /**
+     * Return the Location of this vertex.
+     * 
+     * @return a non-null copy of location instance
+     */
+    public Point getLocation() {
+        return location.getCopy();
+    }
+
+    /**
+     * Returns an array of IPropertyDescriptors for this vertex.
+     * 
+     */
+    public IPropertyDescriptor[] getPropertyDescriptors() {
+        return descriptors;
+    }
+
+    /**
+     * Return the property value for the given propertyId, or null.
+     */
+    public Object getPropertyValue(Object propertyId) {
+        if ( XPOS_PROP.equals( propertyId ) ) {
+            return Integer.toString( location.x );
+        }
+        if ( YPOS_PROP.equals( propertyId ) ) {
+            return Integer.toString( location.y );
+        }
+        if ( HEIGHT_PROP.equals( propertyId ) ) {
+            return Integer.toString( size.height );
+        }
+        if ( WIDTH_PROP.equals( propertyId ) ) {
+            return Integer.toString( size.width );
+        }
+        return null;
+    }
+
+    /**
+     * Return the Size of this vertex.
+     * @return a non-null copy of Dimension instance
+     */
+    public Dimension getSize() {
+        return size.getCopy();
+    }
+
+    /**
+     * Return a List of outgoing Connections.
+     */
+    public List getSourceConnections() {
+        return new ArrayList( sourceConnections );
+    }
+
+    /**
+     * Return a List of incoming Connections.
+     */
+    public List getTargetConnections() {
+        return new ArrayList( targetConnections );
+    }
+
+    /**
+     * Remove an incoming or outgoing connection from this vertex.
+     * 
+     * @param conn a non-null connection instance
+     * @throws IllegalArgumentException if the parameter is null
+     */
+    public void removeConnection(Connection conn) {
+        if ( conn == null ) {
+            throw new IllegalArgumentException();
+        }
+        if ( conn.getSource() == this ) {
+            sourceConnections.remove( conn );
+            firePropertyChange( SOURCE_CONNECTIONS_PROP,
+                                null,
+                                conn );
+        } else if ( conn.getTarget() == this ) {
+            targetConnections.remove( conn );
+            firePropertyChange( TARGET_CONNECTIONS_PROP,
+                                null,
+                                conn );
+        }
+    }
+
+    /**
+     * Set the Location of this vertex.
+     * @param newLocation a non-null Point instance
+     * @throws IllegalArgumentException if the parameter is null
+     */
+    public void setLocation(Point newLocation) {
+        if ( newLocation == null ) {
+            throw new IllegalArgumentException();
+        }
+        location.setLocation( newLocation );
+        firePropertyChange( LOCATION_PROP,
+                            null,
+                            location );
+    }
+
+    /**
+     * Set the property value for the given property id.
+     */
+    public void setPropertyValue(Object propertyId,
+                                 Object value) {
+        if ( XPOS_PROP.equals( propertyId ) ) {
+            int x = Integer.parseInt( (String) value );
+            setLocation( new Point( x,
+                                    location.y ) );
+        } else if ( YPOS_PROP.equals( propertyId ) ) {
+            int y = Integer.parseInt( (String) value );
+            setLocation( new Point( location.x,
+                                    y ) );
+        } else if ( HEIGHT_PROP.equals( propertyId ) ) {
+            int height = Integer.parseInt( (String) value );
+            setSize( new Dimension( size.width,
+                                    height ) );
+        } else if ( WIDTH_PROP.equals( propertyId ) ) {
+            int width = Integer.parseInt( (String) value );
+            setSize( new Dimension( width,
+                                    size.height ) );
+        }
+    }
+
+    /**
+     * Set the Size of this vertex.
+     * Will not modify the size if newSize is null.
+     * @param newSize a non-null Dimension instance or null
+     */
+    public void setSize(Dimension newSize) {
+        if ( newSize != null ) {
+            size.setSize( newSize );
+            firePropertyChange( SIZE_PROP,
+                                null,
+                                size );
+        }
+    }
+
+    /* (non-Javadoc)
+     * @see java.lang.Object#toString()
+     */
+    public String toString() {
+        return VERTEX_NAME + hashCode();
+    }
+
+    /**
+     * Color used for borders
+     * 
+     * @return draw color
+     */
+    public Color getDrawColor() {
+        return ColorConstants.black;
+    }
+
+    /**
+     * Constructs constraints string
+     * 
+     * @param constraints array of constraints 
+     * @return html-formatted constraints representation
+     */
+    public static String dumpConstraints(final Constraint[] constraints) {
+        if ( constraints == null ) {
+            return null;
+        }
+        final StringBuffer buffer = new StringBuffer();
+        for ( int i = 0, length = constraints.length; i < length; i++ ) {
+            buffer.append( constraints[i].toString() + "<br>" );
+        }
+        return buffer.toString();
+    }
+
+}

Deleted: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/model/ModelElement.java
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/ide/editors/rete/model/ModelElement.java	2006-11-14 19:21:59 UTC (rev 7597)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/model/ModelElement.java	2006-11-17 15:52:24 UTC (rev 7683)
@@ -1,55 +0,0 @@
-package org.drools.ide.editors.rete.model;
-
-import java.beans.PropertyChangeListener;
-import java.beans.PropertyChangeSupport;
-
-/**
- * Abstract prototype of a model element.
- */
-public abstract class ModelElement {
-
-    /** Delegate used to implemenent property-change-support. */
-    private transient PropertyChangeSupport pcsDelegate = new PropertyChangeSupport( this );
-
-    /** 
-     * Attach a non-null PropertyChangeListener to this object.
-     * 
-     * @param l a non-null PropertyChangeListener instance
-     * @throws IllegalArgumentException if the parameter is null
-     */
-    public synchronized void addPropertyChangeListener(PropertyChangeListener l) {
-        if ( l == null ) {
-            throw new IllegalArgumentException();
-        }
-        pcsDelegate.addPropertyChangeListener( l );
-    }
-
-    /** 
-     * Report a property change to registered listeners (for example edit parts).
-     * 
-     * @param property the programmatic name of the property that changed
-     * @param oldValue the old value of this property
-     * @param newValue the new value of this property
-     */
-    protected void firePropertyChange(String property,
-                                      Object oldValue,
-                                      Object newValue) {
-        if ( pcsDelegate.hasListeners( property ) ) {
-            pcsDelegate.firePropertyChange( property,
-                                            oldValue,
-                                            newValue );
-        }
-    }
-
-    /** 
-     * Remove a PropertyChangeListener from this component.
-     * 
-     * @param l a PropertyChangeListener instance
-     */
-    public synchronized void removePropertyChangeListener(PropertyChangeListener l) {
-        if ( l != null ) {
-            pcsDelegate.removePropertyChangeListener( l );
-        }
-    }
-
-}

Copied: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/model/ModelElement.java (from rev 7597, labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/ide/editors/rete/model/ModelElement.java)

Deleted: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/model/ReteGraph.java
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/ide/editors/rete/model/ReteGraph.java	2006-11-14 19:21:59 UTC (rev 7597)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/model/ReteGraph.java	2006-11-17 15:52:24 UTC (rev 7683)
@@ -1,79 +0,0 @@
-package org.drools.ide.editors.rete.model;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.drools.reteoo.BaseVertex;
-
-/**
- * Rete graph containing a set of vertices that form the graph itself.
- */
-public class ReteGraph extends ModelElement {
-
-    /** Property ID to use when a child is added to this diagram. */
-    public static final String PROP_CHILD_ADDED   = "ReteGraph.ChildAdded";
-
-    /** Property ID to use when a child is removed from this diagram. */
-    public static final String PROP_CHILD_REMOVED = "ReteGraph.ChildRemoved";
-
-    private List               vertices           = new ArrayList();
-
-    /** 
-     * Add new BaseVertex to the graph
-     * 
-     * @param vertex
-     * 
-     * @return true, if vertex was added, false otherwise
-     */
-    public boolean addChild(BaseVertex vertex) {
-        if ( vertex != null && vertices.add( vertex ) ) {
-            firePropertyChange( PROP_CHILD_ADDED,
-                                null,
-                                vertex );
-            return true;
-        }
-        return false;
-    }
-
-    /**
-     * Return all Vertices in this graph
-     */
-    public List getChildren() {
-        return vertices;
-    }
-
-    /**
-     * Remove a vertex from this graph
-     * 
-     * @param vertex vertex to be removed
-     * @return true, if the vertex removal succeeded, false otherwise
-     */
-    public boolean removeChild(BaseVertex vertex) {
-        if ( vertex != null && vertices.remove( vertex ) ) {
-            firePropertyChange( PROP_CHILD_REMOVED,
-                                null,
-                                vertex );
-            return true;
-        }
-        return false;
-    }
-
-    /**
-     * Removes all vertices from graph.
-     */
-    public void removeAll() {
-        while ( vertices.size() > 0 ) {
-            removeChild( ((BaseVertex) vertices.get( 0 )) );
-        }
-    }
-
-    public void addAll(List children) {
-        final Iterator iter = children.iterator();
-        while ( iter.hasNext() ) {
-            BaseVertex vertex = (BaseVertex) iter.next();
-            addChild( vertex );
-        }
-    }
-
-}
\ No newline at end of file

Copied: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/model/ReteGraph.java (from rev 7597, labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/ide/editors/rete/model/ReteGraph.java)

Deleted: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/model/VertexPropertySource.java
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/ide/editors/rete/model/VertexPropertySource.java	2006-11-14 19:21:59 UTC (rev 7597)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/model/VertexPropertySource.java	2006-11-17 15:52:24 UTC (rev 7683)
@@ -1,404 +0,0 @@
-package org.drools.ide.editors.rete.model;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.drools.reteoo.AlphaNodeVertex;
-import org.drools.reteoo.BaseVertex;
-import org.drools.reteoo.EvalConditionNodeVertex;
-import org.drools.reteoo.JoinNodeVertex;
-import org.drools.reteoo.LeftInputAdapterNodeVertex;
-import org.drools.reteoo.NotNodeVertex;
-import org.drools.reteoo.ObjectTypeNodeVertex;
-import org.drools.reteoo.ReteVertex;
-import org.drools.reteoo.RightInputAdapterNodeVertex;
-import org.drools.reteoo.TerminalNodeVertex;
-import org.drools.spi.FieldConstraint;
-import org.eclipse.ui.views.properties.IPropertyDescriptor;
-import org.eclipse.ui.views.properties.IPropertySource;
-import org.eclipse.ui.views.properties.PropertyDescriptor;
-
-/**
- * Providing IPropertySource for property sheets that show
- * rete graph vertex properties.
- * 
- */
-public class VertexPropertySource
-    implements
-    IPropertySource {
-
-    private static final String       VERTEX_TERMINAL            = "Terminal BaseVertex";
-
-    private static final String       VERTEX_EVAL_CONDITION      = "Eval Condition BaseVertex";
-
-    private static final String       VERTEX_NOT                 = "Not BaseVertex";
-
-    private static final String       VERTEX_JOIN                = "Join BaseVertex";
-
-    private static final String       VERTEX_RIGHT_INPUT_ADAPTER = "Right Input Adapter BaseVertex";
-
-    private static final String       VERTEX_LEFT_INPUT_ADAPTER  = "Left Input Adapter BaseVertex";
-
-    private static final String       VERTEX_ALPHA               = "Alpha BaseVertex";
-
-    private static final String       VERTEX_OBJECT_TYPE         = "Object Type BaseVertex";
-
-    private static final String       VERTEX_RETE                = "Rete BaseVertex";
-
-    private static final String       CONSTRAINT_CAP             = "Constraint";
-
-    private static final String       CONSTRAINT                 = "constraint";
-
-    public String                     ID_ROOT                    = "vertex";                               //$NON-NLS-1$
-
-    public String                     ID_ID                      = "id";                                   //$NON-NLS-1$
-    public String                     ID_HTML                    = "html";                                 //$NON-NLS-1$
-
-    private IPropertyDescriptor[]     descriptors;
-
-    private final IPropertyDescriptor PROP_NAME                  = new PropertyDescriptor( "name",
-                                                                                           "Name" );
-    private final IPropertyDescriptor PROP_ID                    = new PropertyDescriptor( "id",
-                                                                                           "ID" );
-    private final IPropertyDescriptor PROP_RULE                  = new PropertyDescriptor( "rule",
-                                                                                           "Rule" );
-
-    // Alpha-specific
-    private final IPropertyDescriptor PROP_ALPHA_FIELD_NAME      = new PropertyDescriptor( "fieldName",
-                                                                                           "Field Name" );
-    private final IPropertyDescriptor PROP_ALPHA_EVALUATOR       = new PropertyDescriptor( "evaluator",
-                                                                                           "Evaluator" );
-    private final IPropertyDescriptor PROP_ALPHA_VALUE           = new PropertyDescriptor( "value",
-                                                                                           "Value" );
-
-    // ObjectType specific
-    private final IPropertyDescriptor PROP_OBJ_TYPE              = new PropertyDescriptor( "objectType",
-                                                                                           "Object Type" );
-
-    private final static String       CAT_GENERAL                = "General";
-    private final static String       CAT_OTHER                  = "Other";
-
-    protected BaseVertex              vertex                     = null;
-
-    // Map<String,NodeValue>
-    private Map                       values                     = new HashMap();
-
-    /**
-     * Constructor initializing properties from <code>vertex</code>
-     * 
-     * @param vertex source vertex for this property source
-     */
-    public VertexPropertySource(BaseVertex vertex) {
-        this.vertex = vertex;
-
-        initProperties( vertex );
-    }
-
-    final private void initProperties(BaseVertex vertex) {
-
-        List descriptorList = new ArrayList();
-
-        if ( vertex instanceof TerminalNodeVertex ) {
-            initTerminalNodeProperties( (TerminalNodeVertex) vertex,
-                                        descriptorList,
-                                        values );
-        } else if ( vertex instanceof EvalConditionNodeVertex ) {
-            initEvalConditionNodeProperties( (EvalConditionNodeVertex) vertex,
-                                             descriptorList,
-                                             values );
-        } else if ( vertex instanceof NotNodeVertex ) {
-            initNotNodeProperties( (NotNodeVertex) vertex,
-                                   descriptorList,
-                                   values );
-        } else if ( vertex instanceof JoinNodeVertex ) {
-            initJoinNodeProperties( (JoinNodeVertex) vertex,
-                                    descriptorList,
-                                    values );
-        } else if ( vertex instanceof RightInputAdapterNodeVertex ) {
-            initRightInputAdapterNodeProperties( descriptorList,
-                                                 values );
-        } else if ( vertex instanceof LeftInputAdapterNodeVertex ) {
-            initLeftInputAdapterNodeProperties( (LeftInputAdapterNodeVertex) vertex,
-                                                descriptorList,
-                                                values );
-        } else if ( vertex instanceof AlphaNodeVertex ) {
-            initAlphaNodeProperties( (AlphaNodeVertex) vertex,
-                                     descriptorList,
-                                     values );
-        } else if ( vertex instanceof ObjectTypeNodeVertex ) {
-            initObjectTypeNodeProperties( (ObjectTypeNodeVertex) vertex,
-                                          descriptorList,
-                                          values );
-        } else if ( vertex instanceof ReteVertex ) {
-            initReteNodeProperties( (ReteVertex) vertex,
-                                    descriptorList,
-                                    values );
-        }
-
-        descriptors = (IPropertyDescriptor[]) descriptorList.toArray( new IPropertyDescriptor[0] );
-    }
-
-    private void initReteNodeProperties(ReteVertex vertex,
-                                        List descriptorList,
-                                        Map valueMap) {
-        addProperty( PROP_NAME,
-                     VERTEX_RETE,
-                     descriptorList,
-                     valueMap );
-        addProperty( PROP_ID,
-                     Integer.toString( vertex.getId() ),
-                     descriptorList,
-                     valueMap );
-    }
-
-    private void initObjectTypeNodeProperties(ObjectTypeNodeVertex vertex,
-                                              List descriptorList,
-                                              Map valueMap) {
-        addProperty( PROP_NAME,
-                     VERTEX_OBJECT_TYPE,
-                     descriptorList,
-                     valueMap );
-        addProperty( PROP_OBJ_TYPE,
-                     vertex.getObjectType(),
-                     descriptorList,
-                     valueMap );
-
-    }
-
-    private void initAlphaNodeProperties(AlphaNodeVertex vertex,
-                                         List descriptorList,
-                                         Map valueMap) {
-        addProperty( PROP_NAME,
-                     VERTEX_ALPHA,
-                     descriptorList,
-                     valueMap );
-        addProperty( PROP_ALPHA_FIELD_NAME,
-                     vertex.getFieldName(),
-                     descriptorList,
-                     valueMap );
-        addProperty( PROP_ALPHA_EVALUATOR,
-                     vertex.getEvaluator(),
-                     descriptorList,
-                     valueMap );
-        addProperty( PROP_ALPHA_VALUE,
-                     vertex.getValue(),
-                     descriptorList,
-                     valueMap );
-
-        FieldConstraint constraint = vertex.getConstraint();
-        if ( constraint == null ) {
-            return;
-        }
-        IPropertyDescriptor prop = new PropertyDescriptor( CONSTRAINT,
-                                                           CONSTRAINT_CAP );
-        addProperty( prop,
-                     constraint.toString(),
-                     descriptorList,
-                     valueMap );
-
-    }
-
-    private void initLeftInputAdapterNodeProperties(LeftInputAdapterNodeVertex vertex,
-                                                    List descriptorList,
-                                                    Map valueMap) {
-        addProperty( PROP_NAME,
-                     VERTEX_LEFT_INPUT_ADAPTER,
-                     descriptorList,
-                     valueMap );
-
-        FieldConstraint[] constraints = vertex.getConstraints();
-        if ( constraints == null ) {
-            return;
-        }
-        for ( int i = 0, length = constraints.length; i < length; i++ ) {
-            PropertyDescriptor prop = new PropertyDescriptor( CONSTRAINT + (i + 1),
-                                                              CONSTRAINT_CAP + " " + (i + 1) );
-            addOther( prop,
-                      constraints[i].toString(),
-                      descriptorList,
-                      valueMap );
-        }
-
-    }
-
-    private void initRightInputAdapterNodeProperties(List descriptorList,
-                                                     Map valueMap) {
-        addProperty( PROP_NAME,
-                     VERTEX_RIGHT_INPUT_ADAPTER,
-                     descriptorList,
-                     valueMap );
-    }
-
-    private void initJoinNodeProperties(JoinNodeVertex vertex,
-                                        List descriptorList,
-                                        Map valueMap) {
-
-        addProperty( PROP_NAME,
-                     VERTEX_JOIN,
-                     descriptorList,
-                     valueMap );
-        addProperty( PROP_ID,
-                     Integer.toString( vertex.getId() ),
-                     descriptorList,
-                     valueMap );
-
-        FieldConstraint[] constraints = vertex.getConstraints();
-
-        if ( constraints == null ) {
-            return;
-        }
-
-        for ( int i = 0, length = constraints.length; i < length; i++ ) {
-            PropertyDescriptor prop = new PropertyDescriptor( CONSTRAINT + (i + 1),
-                                                              CONSTRAINT_CAP + " " + (i + 1) );
-            addOther( prop,
-                      constraints[i].toString(),
-                      descriptorList,
-                      valueMap );
-        }
-
-    }
-
-    private void initNotNodeProperties(NotNodeVertex vertex,
-                                       List descriptorList,
-                                       Map valueMap) {
-        addProperty( PROP_NAME,
-                     VERTEX_NOT,
-                     descriptorList,
-                     valueMap );
-        addProperty( PROP_ID,
-                     Integer.toString( vertex.getId() ),
-                     descriptorList,
-                     valueMap );
-    }
-
-    private void initEvalConditionNodeProperties(EvalConditionNodeVertex vertex,
-                                                 List descriptorList,
-                                                 Map valueMap) {
-        addProperty( PROP_NAME,
-                     VERTEX_EVAL_CONDITION,
-                     descriptorList,
-                     valueMap );
-        addProperty( PROP_ID,
-                     Integer.toString( vertex.getId() ),
-                     descriptorList,
-                     valueMap );
-    }
-
-    private void initTerminalNodeProperties(TerminalNodeVertex node,
-                                            List descriptorList,
-                                            Map valueMap) {
-
-        addProperty( PROP_NAME,
-                     VERTEX_TERMINAL,
-                     descriptorList,
-                     valueMap );
-        addProperty( PROP_ID,
-                     Integer.toString( node.getId() ),
-                     descriptorList,
-                     valueMap );
-        addProperty( PROP_RULE,
-                     node.getRuleName(),
-                     descriptorList,
-                     valueMap );
-
-    }
-
-    private void addProperty(IPropertyDescriptor field,
-                             String value,
-                             List descriptorList,
-                             Map valueMap) {
-        descriptorList.add( field );
-        valueMap.put( field.getId().toString(),
-                      new NodeValue( CAT_GENERAL,
-                                     value ) );
-        if ( field instanceof PropertyDescriptor ) {
-            ((PropertyDescriptor) field).setAlwaysIncompatible( true );
-            ((PropertyDescriptor) field).setCategory( CAT_GENERAL );
-        }
-
-    }
-
-    private void addOther(IPropertyDescriptor field,
-                          String value,
-                          List descriptorList,
-                          Map valueMap) {
-        descriptorList.add( field );
-        valueMap.put( field.getId().toString(),
-                      new NodeValue( CAT_OTHER,
-                                     value ) );
-
-        if ( field instanceof PropertyDescriptor ) {
-            ((PropertyDescriptor) field).setAlwaysIncompatible( true );
-            ((PropertyDescriptor) field).setCategory( CAT_OTHER );
-        }
-
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.views.properties.IPropertySource#getEditableValue()
-     */
-    public Object getEditableValue() {
-        return null;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyValue(java.lang.Object)
-     */
-    public Object getPropertyValue(Object propName) {
-        return getPropertyValue( (String) propName );
-    }
-
-    /**
-     * Property value.
-     * 
-     * @param propName
-     * @return
-     */
-    public Object getPropertyValue(String propName) {
-        return ((NodeValue) (values.get( propName ))).value;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.views.properties.IPropertySource#setPropertyValue(java.lang.Object, java.lang.Object)
-     */
-    public void setPropertyValue(Object propName,
-                                 Object value) {
-        setPropertyValue( propName,
-                          value );
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyDescriptors()
-     */
-    public IPropertyDescriptor[] getPropertyDescriptors() {
-        return descriptors;
-    }
-
-    /**
-     * Doing nothing as resetting properties from property sheet is not possible.
-     */
-    public void resetPropertyValue(Object propName) {
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.ui.views.properties.IPropertySource#isPropertySet(java.lang.Object)
-     */
-    public boolean isPropertySet(Object propName) {
-        return values.containsKey( propName );
-    }
-
-    private class NodeValue {
-        final String category;
-        final String value;
-
-        NodeValue(String category,
-                  String value) {
-            this.category = category;
-            this.value = value;
-        }
-    }
-
-}

Copied: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/model/VertexPropertySource.java (from rev 7597, labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/ide/editors/rete/model/VertexPropertySource.java)
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/ide/editors/rete/model/VertexPropertySource.java	2006-11-14 19:21:59 UTC (rev 7597)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/model/VertexPropertySource.java	2006-11-17 15:52:24 UTC (rev 7683)
@@ -0,0 +1,391 @@
+package org.drools.ide.editors.rete.model;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.drools.reteoo.AlphaNodeVertex;
+import org.drools.reteoo.BaseVertex;
+import org.drools.reteoo.EvalConditionNodeVertex;
+import org.drools.reteoo.JoinNodeVertex;
+import org.drools.reteoo.LeftInputAdapterNodeVertex;
+import org.drools.reteoo.NotNodeVertex;
+import org.drools.reteoo.ObjectTypeNodeVertex;
+import org.drools.reteoo.ReteVertex;
+import org.drools.reteoo.RightInputAdapterNodeVertex;
+import org.drools.reteoo.TerminalNodeVertex;
+import org.drools.spi.Constraint;
+import org.eclipse.ui.views.properties.IPropertyDescriptor;
+import org.eclipse.ui.views.properties.IPropertySource;
+import org.eclipse.ui.views.properties.PropertyDescriptor;
+
+/**
+ * Providing IPropertySource for property sheets that show
+ * rete graph vertex properties.
+ * 
+ */
+public class VertexPropertySource
+    implements
+    IPropertySource {
+
+    private static final String       VERTEX_TERMINAL            = "Terminal BaseVertex";
+
+    private static final String       VERTEX_EVAL_CONDITION      = "Eval Condition BaseVertex";
+
+    private static final String       VERTEX_NOT                 = "Not BaseVertex";
+
+    private static final String       VERTEX_JOIN                = "Join BaseVertex";
+
+    private static final String       VERTEX_RIGHT_INPUT_ADAPTER = "Right Input Adapter BaseVertex";
+
+    private static final String       VERTEX_LEFT_INPUT_ADAPTER  = "Left Input Adapter BaseVertex";
+
+    private static final String       VERTEX_ALPHA               = "Alpha BaseVertex";
+
+    private static final String       VERTEX_OBJECT_TYPE         = "Object Type BaseVertex";
+
+    private static final String       VERTEX_RETE                = "Rete BaseVertex";
+
+    private static final String       CONSTRAINT_CAP             = "Constraint";
+
+    private static final String       CONSTRAINT                 = "constraint";
+
+    public String                     ID_ROOT                    = "vertex";                               //$NON-NLS-1$
+
+    public String                     ID_ID                      = "id";                                   //$NON-NLS-1$
+    public String                     ID_HTML                    = "html";                                 //$NON-NLS-1$
+
+    private IPropertyDescriptor[]     descriptors;
+
+    private final IPropertyDescriptor PROP_NAME                  = new PropertyDescriptor( "name",
+                                                                                           "Name" );
+    private final IPropertyDescriptor PROP_ID                    = new PropertyDescriptor( "id",
+                                                                                           "ID" );
+    private final IPropertyDescriptor PROP_RULE                  = new PropertyDescriptor( "rule",
+                                                                                           "Rule" );
+
+    // Alpha-specific
+    private final IPropertyDescriptor PROP_ALPHA_FIELD_NAME      = new PropertyDescriptor( "fieldName",
+                                                                                           "Field Name" );
+    private final IPropertyDescriptor PROP_ALPHA_EVALUATOR       = new PropertyDescriptor( "evaluator",
+                                                                                           "Evaluator" );
+    private final IPropertyDescriptor PROP_ALPHA_VALUE           = new PropertyDescriptor( "value",
+                                                                                           "Value" );
+
+    // ObjectType specific
+    private final IPropertyDescriptor PROP_OBJ_TYPE              = new PropertyDescriptor( "objectType",
+                                                                                           "Object Type" );
+
+    private final static String       CAT_GENERAL                = "General";
+    private final static String       CAT_OTHER                  = "Other";
+
+    protected BaseVertex              vertex                     = null;
+
+    // Map<String,NodeValue>
+    private Map                       values                     = new HashMap();
+
+    /**
+     * Constructor initializing properties from <code>vertex</code>
+     * 
+     * @param vertex source vertex for this property source
+     */
+    public VertexPropertySource(BaseVertex vertex) {
+        this.vertex = vertex;
+
+        initProperties( vertex );
+    }
+
+    final private void initProperties(BaseVertex vertex) {
+
+        List descriptorList = new ArrayList();
+
+        if ( vertex instanceof TerminalNodeVertex ) {
+            initTerminalNodeProperties( (TerminalNodeVertex) vertex,
+                                        descriptorList,
+                                        values );
+        } else if ( vertex instanceof EvalConditionNodeVertex ) {
+            initEvalConditionNodeProperties( (EvalConditionNodeVertex) vertex,
+                                             descriptorList,
+                                             values );
+        } else if ( vertex instanceof NotNodeVertex ) {
+            initNotNodeProperties( (NotNodeVertex) vertex,
+                                   descriptorList,
+                                   values );
+        } else if ( vertex instanceof JoinNodeVertex ) {
+            initJoinNodeProperties( (JoinNodeVertex) vertex,
+                                    descriptorList,
+                                    values );
+        } else if ( vertex instanceof RightInputAdapterNodeVertex ) {
+            initRightInputAdapterNodeProperties( descriptorList,
+                                                 values );
+        } else if ( vertex instanceof LeftInputAdapterNodeVertex ) {
+            initLeftInputAdapterNodeProperties( (LeftInputAdapterNodeVertex) vertex,
+                                                descriptorList,
+                                                values );
+        } else if ( vertex instanceof AlphaNodeVertex ) {
+            initAlphaNodeProperties( (AlphaNodeVertex) vertex,
+                                     descriptorList,
+                                     values );
+        } else if ( vertex instanceof ObjectTypeNodeVertex ) {
+            initObjectTypeNodeProperties( (ObjectTypeNodeVertex) vertex,
+                                          descriptorList,
+                                          values );
+        } else if ( vertex instanceof ReteVertex ) {
+            initReteNodeProperties( (ReteVertex) vertex,
+                                    descriptorList,
+                                    values );
+        }
+
+        descriptors = (IPropertyDescriptor[]) descriptorList.toArray( new IPropertyDescriptor[0] );
+    }
+
+    private void initReteNodeProperties(ReteVertex vertex,
+                                        List descriptorList,
+                                        Map valueMap) {
+        addProperty( PROP_NAME,
+                     VERTEX_RETE,
+                     descriptorList,
+                     valueMap );
+        addProperty( PROP_ID,
+                     Integer.toString( vertex.getId() ),
+                     descriptorList,
+                     valueMap );
+    }
+
+    private void initObjectTypeNodeProperties(ObjectTypeNodeVertex vertex,
+                                              List descriptorList,
+                                              Map valueMap) {
+        addProperty( PROP_NAME,
+                     VERTEX_OBJECT_TYPE,
+                     descriptorList,
+                     valueMap );
+        addProperty( PROP_OBJ_TYPE,
+                     vertex.getObjectType(),
+                     descriptorList,
+                     valueMap );
+
+    }
+
+    private void initAlphaNodeProperties(AlphaNodeVertex vertex,
+                                         List descriptorList,
+                                         Map valueMap) {
+        addProperty( PROP_NAME,
+                     VERTEX_ALPHA,
+                     descriptorList,
+                     valueMap );
+        addProperty( PROP_ALPHA_FIELD_NAME,
+                     vertex.getFieldName(),
+                     descriptorList,
+                     valueMap );
+        addProperty( PROP_ALPHA_EVALUATOR,
+                     vertex.getEvaluator(),
+                     descriptorList,
+                     valueMap );
+        addProperty( PROP_ALPHA_VALUE,
+                     vertex.getValue(),
+                     descriptorList,
+                     valueMap );
+
+        Constraint constraint = vertex.getConstraint();
+        if ( constraint == null ) {
+            return;
+        }
+        IPropertyDescriptor prop = new PropertyDescriptor( CONSTRAINT,
+                                                           CONSTRAINT_CAP );
+        addProperty( prop,
+                     constraint.toString(),
+                     descriptorList,
+                     valueMap );
+
+    }
+
+    private void initLeftInputAdapterNodeProperties(LeftInputAdapterNodeVertex vertex,
+                                                    List descriptorList,
+                                                    Map valueMap) {
+        addProperty( PROP_NAME,
+                     VERTEX_LEFT_INPUT_ADAPTER,
+                     descriptorList,
+                     valueMap );
+
+    }
+
+    private void initRightInputAdapterNodeProperties(List descriptorList,
+                                                     Map valueMap) {
+        addProperty( PROP_NAME,
+                     VERTEX_RIGHT_INPUT_ADAPTER,
+                     descriptorList,
+                     valueMap );
+    }
+
+    private void initJoinNodeProperties(JoinNodeVertex vertex,
+                                        List descriptorList,
+                                        Map valueMap) {
+
+        addProperty( PROP_NAME,
+                     VERTEX_JOIN,
+                     descriptorList,
+                     valueMap );
+        addProperty( PROP_ID,
+                     Integer.toString( vertex.getId() ),
+                     descriptorList,
+                     valueMap );
+
+        Constraint[] constraints = vertex.getConstraints();
+
+        if ( constraints == null ) {
+            return;
+        }
+
+        for ( int i = 0, length = constraints.length; i < length; i++ ) {
+            PropertyDescriptor prop = new PropertyDescriptor( CONSTRAINT + (i + 1),
+                                                              CONSTRAINT_CAP + " " + (i + 1) );
+            addOther( prop,
+                      constraints[i].toString(),
+                      descriptorList,
+                      valueMap );
+        }
+
+    }
+
+    private void initNotNodeProperties(NotNodeVertex vertex,
+                                       List descriptorList,
+                                       Map valueMap) {
+        addProperty( PROP_NAME,
+                     VERTEX_NOT,
+                     descriptorList,
+                     valueMap );
+        addProperty( PROP_ID,
+                     Integer.toString( vertex.getId() ),
+                     descriptorList,
+                     valueMap );
+    }
+
+    private void initEvalConditionNodeProperties(EvalConditionNodeVertex vertex,
+                                                 List descriptorList,
+                                                 Map valueMap) {
+        addProperty( PROP_NAME,
+                     VERTEX_EVAL_CONDITION,
+                     descriptorList,
+                     valueMap );
+        addProperty( PROP_ID,
+                     Integer.toString( vertex.getId() ),
+                     descriptorList,
+                     valueMap );
+    }
+
+    private void initTerminalNodeProperties(TerminalNodeVertex node,
+                                            List descriptorList,
+                                            Map valueMap) {
+
+        addProperty( PROP_NAME,
+                     VERTEX_TERMINAL,
+                     descriptorList,
+                     valueMap );
+        addProperty( PROP_ID,
+                     Integer.toString( node.getId() ),
+                     descriptorList,
+                     valueMap );
+        addProperty( PROP_RULE,
+                     node.getRuleName(),
+                     descriptorList,
+                     valueMap );
+
+    }
+
+    private void addProperty(IPropertyDescriptor field,
+                             String value,
+                             List descriptorList,
+                             Map valueMap) {
+        descriptorList.add( field );
+        valueMap.put( field.getId().toString(),
+                      new NodeValue( CAT_GENERAL,
+                                     value ) );
+        if ( field instanceof PropertyDescriptor ) {
+            ((PropertyDescriptor) field).setAlwaysIncompatible( true );
+            ((PropertyDescriptor) field).setCategory( CAT_GENERAL );
+        }
+
+    }
+
+    private void addOther(IPropertyDescriptor field,
+                          String value,
+                          List descriptorList,
+                          Map valueMap) {
+        descriptorList.add( field );
+        valueMap.put( field.getId().toString(),
+                      new NodeValue( CAT_OTHER,
+                                     value ) );
+
+        if ( field instanceof PropertyDescriptor ) {
+            ((PropertyDescriptor) field).setAlwaysIncompatible( true );
+            ((PropertyDescriptor) field).setCategory( CAT_OTHER );
+        }
+
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.ui.views.properties.IPropertySource#getEditableValue()
+     */
+    public Object getEditableValue() {
+        return null;
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyValue(java.lang.Object)
+     */
+    public Object getPropertyValue(Object propName) {
+        return getPropertyValue( (String) propName );
+    }
+
+    /**
+     * Property value.
+     * 
+     * @param propName
+     * @return
+     */
+    public Object getPropertyValue(String propName) {
+        return ((NodeValue) (values.get( propName ))).value;
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.ui.views.properties.IPropertySource#setPropertyValue(java.lang.Object, java.lang.Object)
+     */
+    public void setPropertyValue(Object propName,
+                                 Object value) {
+        setPropertyValue( propName,
+                          value );
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyDescriptors()
+     */
+    public IPropertyDescriptor[] getPropertyDescriptors() {
+        return descriptors;
+    }
+
+    /**
+     * Doing nothing as resetting properties from property sheet is not possible.
+     */
+    public void resetPropertyValue(Object propName) {
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.ui.views.properties.IPropertySource#isPropertySet(java.lang.Object)
+     */
+    public boolean isPropertySet(Object propName) {
+        return values.containsKey( propName );
+    }
+
+    private class NodeValue {
+        final String category;
+        final String value;
+
+        NodeValue(String category,
+                  String value) {
+            this.category = category;
+            this.value = value;
+        }
+    }
+
+}

Copied: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/part (from rev 7597, labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/ide/editors/rete/part)

Deleted: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/part/ConnectionEditPart.java
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/ide/editors/rete/part/ConnectionEditPart.java	2006-11-14 19:21:59 UTC (rev 7597)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/part/ConnectionEditPart.java	2006-11-17 15:52:24 UTC (rev 7683)
@@ -1,82 +0,0 @@
-/*
- * Copyright 2006 JBoss Inc
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.drools.ide.editors.rete.part;
-
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-
-import org.drools.ide.editors.rete.figure.ConnectionFigure;
-import org.drools.ide.editors.rete.model.ModelElement;
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.PolylineConnection;
-import org.eclipse.draw2d.PolylineDecoration;
-import org.eclipse.gef.EditPolicy;
-import org.eclipse.gef.editparts.AbstractConnectionEditPart;
-import org.eclipse.gef.editpolicies.ConnectionEndpointEditPolicy;
-
-/**
- * Edit part for Connection model elements.
- */
-class ConnectionEditPart extends AbstractConnectionEditPart
-    implements
-    PropertyChangeListener {
-
-    /* (non-Javadoc)
-     * @see org.eclipse.gef.editparts.AbstractGraphicalEditPart#activate()
-     */
-    public void activate() {
-        if ( !isActive() ) {
-            super.activate();
-            ((ModelElement) getModel()).addPropertyChangeListener( this );
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.gef.editparts.AbstractEditPart#createEditPolicies()
-     */
-    protected void createEditPolicies() {
-        installEditPolicy( EditPolicy.CONNECTION_ENDPOINTS_ROLE,
-                           new ConnectionEndpointEditPolicy() );
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.gef.editparts.AbstractGraphicalEditPart#createFigure()
-     */
-    protected IFigure createFigure() {
-        PolylineConnection connection = new ConnectionFigure();
-        PolylineDecoration decoration = new PolylineDecoration();
-        connection.setTargetDecoration( decoration );
-        return connection;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.gef.editparts.AbstractGraphicalEditPart#deactivate()
-     */
-    public void deactivate() {
-        if ( isActive() ) {
-            super.deactivate();
-            ((ModelElement) getModel()).removePropertyChangeListener( this );
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see java.beans.PropertyChangeListener#propertyChange(java.beans.PropertyChangeEvent)
-     */
-    public void propertyChange(PropertyChangeEvent evt) {
-        // Doing nothing   
-    }
-
-}
\ No newline at end of file

Copied: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/part/ConnectionEditPart.java (from rev 7597, labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/ide/editors/rete/part/ConnectionEditPart.java)

Deleted: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/part/DiagramEditPart.java
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/ide/editors/rete/part/DiagramEditPart.java	2006-11-14 19:21:59 UTC (rev 7597)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/part/DiagramEditPart.java	2006-11-17 15:52:24 UTC (rev 7683)
@@ -1,154 +0,0 @@
-/*
- * Copyright 2006 JBoss Inc
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.drools.ide.editors.rete.part;
-
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-import java.util.List;
-
-import org.drools.ide.editors.rete.commands.NodeSetConstraintCommand;
-import org.drools.ide.editors.rete.model.ModelElement;
-import org.drools.ide.editors.rete.model.ReteGraph;
-import org.drools.reteoo.BaseVertex;
-import org.eclipse.draw2d.Figure;
-import org.eclipse.draw2d.FreeformLayer;
-import org.eclipse.draw2d.FreeformLayout;
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.MarginBorder;
-import org.eclipse.draw2d.geometry.Rectangle;
-import org.eclipse.gef.EditPart;
-import org.eclipse.gef.EditPolicy;
-import org.eclipse.gef.NodeEditPart;
-import org.eclipse.gef.commands.Command;
-import org.eclipse.gef.editparts.AbstractGraphicalEditPart;
-import org.eclipse.gef.editpolicies.RootComponentEditPolicy;
-import org.eclipse.gef.editpolicies.XYLayoutEditPolicy;
-import org.eclipse.gef.requests.ChangeBoundsRequest;
-import org.eclipse.gef.requests.CreateRequest;
-
-/**
- * EditPart for ReteGraph
- * 
- */
-public class DiagramEditPart extends AbstractGraphicalEditPart
-    implements
-    PropertyChangeListener {
-
-    /* (non-Javadoc)
-     * @see org.eclipse.gef.editparts.AbstractGraphicalEditPart#activate()
-     */
-    public void activate() {
-        if ( !isActive() ) {
-            super.activate();
-            ((ModelElement) getModel()).addPropertyChangeListener( this );
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.gef.editparts.AbstractEditPart#createEditPolicies()
-     */
-    protected void createEditPolicies() {
-        installEditPolicy( EditPolicy.COMPONENT_ROLE,
-                           new RootComponentEditPolicy() );
-        installEditPolicy( EditPolicy.LAYOUT_ROLE,
-                           new NodesXYLayoutEditPolicy() );
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.gef.editparts.AbstractGraphicalEditPart#createFigure()
-     */
-    protected IFigure createFigure() {
-        Figure f = new FreeformLayer();
-        f.setBorder( new MarginBorder( 3 ) );
-        f.setLayoutManager( new FreeformLayout() );
-        return f;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.gef.editparts.AbstractGraphicalEditPart#deactivate()
-     */
-    public void deactivate() {
-        if ( isActive() ) {
-            super.deactivate();
-            ((ModelElement) getModel()).removePropertyChangeListener( this );
-        }
-    }
-
-    private ReteGraph getCastedModel() {
-        return (ReteGraph) getModel();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.gef.editparts.AbstractEditPart#getModelChildren()
-     */
-    protected List getModelChildren() {
-        return getCastedModel().getChildren(); // return a list of nodes
-    }
-
-    /* (non-Javadoc)
-     * @see java.beans.PropertyChangeListener#propertyChange(PropertyChangeEvent)
-     */
-    public void propertyChange(PropertyChangeEvent evt) {
-        String prop = evt.getPropertyName();
-        if ( ReteGraph.PROP_CHILD_ADDED.equals( prop ) || ReteGraph.PROP_CHILD_REMOVED.equals( prop ) ) {
-            refreshChildren();
-        }
-    }
-
-    private static class NodesXYLayoutEditPolicy extends XYLayoutEditPolicy {
-
-        /* (non-Javadoc)
-         * @see ConstrainedLayoutEditPolicy#createChangeConstraintCommand(ChangeBoundsRequest, EditPart, Object)
-         */
-        protected Command createChangeConstraintCommand(ChangeBoundsRequest request,
-                                                        EditPart child,
-                                                        Object constraint) {
-            if ( child instanceof NodeEditPart && constraint instanceof Rectangle ) {
-                // return a command that can move and/or resize a BaseVertex
-                return new NodeSetConstraintCommand( (BaseVertex) child.getModel(),
-                                                     request,
-                                                     (Rectangle) constraint );
-            }
-            return super.createChangeConstraintCommand( request,
-                                                        child,
-                                                        constraint );
-        }
-
-        /* (non-Javadoc)
-         * @see ConstrainedLayoutEditPolicy#createChangeConstraintCommand(EditPart, Object)
-         */
-        protected Command createChangeConstraintCommand(EditPart child,
-                                                        Object constraint) {
-            return null;
-        }
-
-        /* (non-Javadoc)
-         * @see LayoutEditPolicy#getCreateCommand(CreateRequest)
-         */
-        protected Command getCreateCommand(CreateRequest request) {
-            return null;
-        }
-
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.gef.editparts.AbstractGraphicalEditPart#getAdapter(java.lang.Class)
-     */
-    public Object getAdapter(Class key) {
-        return super.getAdapter( key );
-    }
-
-}
\ No newline at end of file

Copied: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/part/DiagramEditPart.java (from rev 7597, labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/ide/editors/rete/part/DiagramEditPart.java)

Deleted: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/part/VertexEditPart.java
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/ide/editors/rete/part/VertexEditPart.java	2006-11-14 19:21:59 UTC (rev 7597)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/part/VertexEditPart.java	2006-11-17 15:52:24 UTC (rev 7683)
@@ -1,167 +0,0 @@
-package org.drools.ide.editors.rete.part;
-
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-import java.util.List;
-
-import org.drools.ide.editors.rete.figure.VertexFigure;
-import org.drools.ide.editors.rete.model.GraphicalVertex;
-import org.drools.ide.editors.rete.model.ModelElement;
-import org.drools.ide.editors.rete.model.VertexPropertySource;
-import org.drools.reteoo.BaseVertex;
-import org.eclipse.draw2d.ConnectionAnchor;
-import org.eclipse.draw2d.EllipseAnchor;
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.geometry.Rectangle;
-import org.eclipse.gef.ConnectionEditPart;
-import org.eclipse.gef.GraphicalEditPart;
-import org.eclipse.gef.Request;
-import org.eclipse.gef.editparts.AbstractGraphicalEditPart;
-import org.eclipse.ui.views.properties.IPropertySource;
-
-/**
- * EditPart used for Vertices
- */
-class VertexEditPart extends AbstractGraphicalEditPart
-    implements
-    PropertyChangeListener,
-    org.eclipse.gef.NodeEditPart {
-
-    private IPropertySource  propertySource;
-
-    private ConnectionAnchor anchor;
-
-    /* (non-Javadoc)
-     * @see org.eclipse.gef.editparts.AbstractGraphicalEditPart#activate()
-     */
-    public void activate() {
-        if ( !isActive() ) {
-            super.activate();
-            ((ModelElement) getModel()).addPropertyChangeListener( this );
-            propertySource = new VertexPropertySource( getCastedModel() );
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.gef.editparts.AbstractEditPart#createEditPolicies()
-     */
-    protected void createEditPolicies() {
-    }
-
-    /*(non-Javadoc)
-     * @see org.eclipse.gef.editparts.AbstractGraphicalEditPart#createFigure()
-     */
-    protected IFigure createFigure() {
-        return new VertexFigure( getCastedModel().getFillColor(),
-                                 getCastedModel().getDrawColor() );
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.gef.editparts.AbstractGraphicalEditPart#deactivate()
-     */
-    public void deactivate() {
-        if ( isActive() ) {
-            super.deactivate();
-            ((ModelElement) getModel()).removePropertyChangeListener( this );
-            propertySource = null;
-        }
-    }
-
-    private BaseVertex getCastedModel() {
-        return (BaseVertex) getModel();
-    }
-
-    private ConnectionAnchor getConnectionAnchor() {
-        if ( anchor == null ) {
-            if ( getModel() instanceof BaseVertex ) anchor = new EllipseAnchor( getFigure() );
-            else
-            // if Nodes gets extended the conditions above must be updated
-            throw new IllegalArgumentException( "unexpected model" );
-        }
-        return anchor;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.eclipse.gef.editparts.AbstractGraphicalEditPart#getModelSourceConnections()
-     */
-    protected List getModelSourceConnections() {
-        return getCastedModel().getSourceConnections();
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.eclipse.gef.editparts.AbstractGraphicalEditPart#getModelTargetConnections()
-     */
-    protected List getModelTargetConnections() {
-        return getCastedModel().getTargetConnections();
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.eclipse.gef.NodeEditPart#getSourceConnectionAnchor(org.eclipse.gef.ConnectionEditPart)
-     */
-    public ConnectionAnchor getSourceConnectionAnchor(ConnectionEditPart connection) {
-        return getConnectionAnchor();
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.eclipse.gef.NodeEditPart#getSourceConnectionAnchor(org.eclipse.gef.Request)
-     */
-    public ConnectionAnchor getSourceConnectionAnchor(Request request) {
-        return getConnectionAnchor();
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.eclipse.gef.NodeEditPart#getTargetConnectionAnchor(org.eclipse.gef.ConnectionEditPart)
-     */
-    public ConnectionAnchor getTargetConnectionAnchor(ConnectionEditPart connection) {
-        return getConnectionAnchor();
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see org.eclipse.gef.NodeEditPart#getTargetConnectionAnchor(org.eclipse.gef.Request)
-     */
-    public ConnectionAnchor getTargetConnectionAnchor(Request request) {
-        return getConnectionAnchor();
-    }
-
-    /* (non-Javadoc)
-     * @see java.beans.PropertyChangeListener#propertyChange(java.beans.PropertyChangeEvent)
-     */
-    public void propertyChange(PropertyChangeEvent evt) {
-        String prop = evt.getPropertyName();
-        if ( GraphicalVertex.SIZE_PROP.equals( prop ) || GraphicalVertex.LOCATION_PROP.equals( prop ) ) {
-            refreshVisuals();
-        } else if ( GraphicalVertex.SOURCE_CONNECTIONS_PROP.equals( prop ) ) {
-            refreshSourceConnections();
-        } else if ( GraphicalVertex.TARGET_CONNECTIONS_PROP.equals( prop ) ) {
-            refreshTargetConnections();
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.gef.editparts.AbstractEditPart#refreshVisuals()
-     */
-    protected void refreshVisuals() {
-        Rectangle bounds = new Rectangle( getCastedModel().getLocation(),
-                                          getCastedModel().getSize() );
-        ((GraphicalEditPart) getParent()).setLayoutConstraint( this,
-                                                               getFigure(),
-                                                               bounds );
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.gef.editparts.AbstractGraphicalEditPart#getAdapter(java.lang.Class)
-     */
-    public Object getAdapter(Class key) {
-        if ( key == IPropertySource.class ) {
-            return propertySource;
-        }
-        return super.getAdapter( key );
-    }
-
-}
\ No newline at end of file

Copied: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/part/VertexEditPart.java (from rev 7597, labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/ide/editors/rete/part/VertexEditPart.java)

Deleted: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/part/VertexEditPartFactory.java
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/ide/editors/rete/part/VertexEditPartFactory.java	2006-11-14 19:21:59 UTC (rev 7597)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/part/VertexEditPartFactory.java	2006-11-17 15:52:24 UTC (rev 7683)
@@ -1,50 +0,0 @@
-package org.drools.ide.editors.rete.part;
-
-import org.drools.ide.DroolsIDEPlugin;
-import org.drools.ide.editors.rete.model.Connection;
-import org.drools.ide.editors.rete.model.ReteGraph;
-import org.drools.reteoo.BaseVertex;
-import org.eclipse.gef.EditPart;
-import org.eclipse.gef.EditPartFactory;
-
-/**
- * Factory mapping model elements to edit parts
- */
-public class VertexEditPartFactory
-    implements
-    EditPartFactory {
-
-    /*
-     * (non-Javadoc)
-     * @see org.eclipse.gef.EditPartFactory#createEditPart(org.eclipse.gef.EditPart, java.lang.Object)
-     */
-    public EditPart createEditPart(EditPart context,
-                                   Object modelElement) {
-        // get EditPart for model element
-        EditPart part = getPartForElement( modelElement );
-        // store model element in EditPart
-        part.setModel( modelElement );
-        return part;
-    }
-
-    /**
-     * Maps object to EditPart.
-     *  
-     * @throws RuntimeException if no match was found
-     */
-    private EditPart getPartForElement(Object modelElement) {
-        if ( modelElement instanceof ReteGraph ) {
-            return new DiagramEditPart();
-        }
-        if ( modelElement instanceof BaseVertex ) {
-            return new VertexEditPart();
-        }
-        if ( modelElement instanceof Connection ) {
-            return new ConnectionEditPart();
-        }
-        DroolsIDEPlugin.log( new Exception( "Can't create part for model element: " + ((modelElement != null) ? modelElement.getClass().getName() : "null") ) );
-        return null;
-        
-    }
-
-}
\ No newline at end of file

Copied: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/part/VertexEditPartFactory.java (from rev 7597, labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/ide/editors/rete/part/VertexEditPartFactory.java)

Copied: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/reteoo (from rev 7597, labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/reteoo)

Deleted: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/reteoo/AlphaNodeVertex.java
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/reteoo/AlphaNodeVertex.java	2006-11-14 19:21:59 UTC (rev 7597)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/reteoo/AlphaNodeVertex.java	2006-11-17 15:52:24 UTC (rev 7683)
@@ -1,96 +0,0 @@
-/**
- * 
- */
-package org.drools.reteoo;
-
-import org.drools.base.ClassFieldExtractor;
-import org.drools.rule.LiteralConstraint;
-import org.drools.spi.FieldConstraint;
-import org.eclipse.draw2d.ColorConstants;
-import org.eclipse.swt.graphics.Color;
-
-/**
- * Wraps {@link AlphaNode} and adds visual extras like color information
- *
- */
-public class AlphaNodeVertex extends BaseVertex {
-
-    private final AlphaNode node;
-
-    private final String    NODE_NAME = "AlphaNode";
-
-    /**
-     * Constructor
-     * 
-     * @param node node to be wrapped
-     */
-    public AlphaNodeVertex(final AlphaNode node) {
-        super();
-        this.node = node;
-    }
-
-    /* (non-Javadoc)
-     * @see org.drools.reteoo.BaseNodeVertex#getHtml()
-     */
-    public String getHtml() {
-        final LiteralConstraint constraint = (LiteralConstraint) this.node.getConstraint();
-        final ClassFieldExtractor extractor = (ClassFieldExtractor) constraint.getFieldExtractor();
-        return NODE_NAME + "<BR/>field : " + extractor.getFieldName() + "<BR/>evaluator : " + constraint.getEvaluator() + "<BR/>value :  " + constraint.getField();
-    }
-
-    /* (non-Javadoc)
-     * @see org.drools.ide.editors.rete.model.BaseVertex#toString()
-     */
-    public String toString() {
-        return this.node.toString();
-    }
-
-    /* (non-Javadoc)
-     * @see org.drools.reteoo.BaseNodeVertex#getFillColor()
-     */
-    public Color getFillColor() {
-        return ColorConstants.blue;
-    }
-
-    /**
-     * Constraint has field extractor and this method is returning fieldName
-     * it.
-     * 
-     * @return field name
-     */
-    public String getFieldName() {
-        LiteralConstraint constraint = (LiteralConstraint) this.node.getConstraint();
-        ClassFieldExtractor extractor = (ClassFieldExtractor) constraint.getFieldExtractor();
-        return extractor.getFieldName();
-    }
-
-    /**
-     * Constraint's evaluator string
-     * 
-     * @return evaluator string
-     */
-    public String getEvaluator() {
-        LiteralConstraint constraint = (LiteralConstraint) this.node.getConstraint();
-        return constraint.getEvaluator().toString();
-    }
-
-    /**
-     * Constraint field string
-     * 
-     * @return field string
-     */
-    public String getValue() {
-        LiteralConstraint constraint = (LiteralConstraint) this.node.getConstraint();
-        return constraint.getField().toString();
-    }
-
-    /**
-     * Constraint
-     * 
-     * @return constraint
-     */
-    public FieldConstraint getConstraint() {
-        return this.node.getConstraint();
-    }
-
-}
\ No newline at end of file

Copied: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/reteoo/AlphaNodeVertex.java (from rev 7597, labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/reteoo/AlphaNodeVertex.java)
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/reteoo/AlphaNodeVertex.java	2006-11-14 19:21:59 UTC (rev 7597)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/reteoo/AlphaNodeVertex.java	2006-11-17 15:52:24 UTC (rev 7683)
@@ -0,0 +1,96 @@
+/**
+ * 
+ */
+package org.drools.reteoo;
+
+import org.drools.base.ClassFieldExtractor;
+import org.drools.rule.LiteralConstraint;
+import org.drools.spi.Constraint;
+import org.eclipse.draw2d.ColorConstants;
+import org.eclipse.swt.graphics.Color;
+
+/**
+ * Wraps {@link AlphaNode} and adds visual extras like color information
+ *
+ */
+public class AlphaNodeVertex extends BaseVertex {
+
+    private final AlphaNode node;
+
+    private final String    NODE_NAME = "AlphaNode";
+
+    /**
+     * Constructor
+     * 
+     * @param node node to be wrapped
+     */
+    public AlphaNodeVertex(final AlphaNode node) {
+        super();
+        this.node = node;
+    }
+
+    /* (non-Javadoc)
+     * @see org.drools.reteoo.BaseNodeVertex#getHtml()
+     */
+    public String getHtml() {
+        final LiteralConstraint constraint = (LiteralConstraint) this.node.getConstraint();
+        final ClassFieldExtractor extractor = (ClassFieldExtractor) constraint.getFieldExtractor();
+        return NODE_NAME + "<BR/>field : " + extractor.getFieldName() + "<BR/>evaluator : " + constraint.getEvaluator() + "<BR/>value :  " + constraint.getField();
+    }
+
+    /* (non-Javadoc)
+     * @see org.drools.ide.editors.rete.model.BaseVertex#toString()
+     */
+    public String toString() {
+        return this.node.toString();
+    }
+
+    /* (non-Javadoc)
+     * @see org.drools.reteoo.BaseNodeVertex#getFillColor()
+     */
+    public Color getFillColor() {
+        return ColorConstants.blue;
+    }
+
+    /**
+     * Constraint has field extractor and this method is returning fieldName
+     * it.
+     * 
+     * @return field name
+     */
+    public String getFieldName() {
+        LiteralConstraint constraint = (LiteralConstraint) this.node.getConstraint();
+        ClassFieldExtractor extractor = (ClassFieldExtractor) constraint.getFieldExtractor();
+        return extractor.getFieldName();
+    }
+
+    /**
+     * Constraint's evaluator string
+     * 
+     * @return evaluator string
+     */
+    public String getEvaluator() {
+        LiteralConstraint constraint = (LiteralConstraint) this.node.getConstraint();
+        return constraint.getEvaluator().toString();
+    }
+
+    /**
+     * Constraint field string
+     * 
+     * @return field string
+     */
+    public String getValue() {
+        LiteralConstraint constraint = (LiteralConstraint) this.node.getConstraint();
+        return constraint.getField().toString();
+    }
+
+    /**
+     * Constraint
+     * 
+     * @return constraint
+     */
+    public Constraint getConstraint() {
+        return this.node.getConstraint();
+    }
+
+}
\ No newline at end of file

Deleted: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/reteoo/BaseVertex.java
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/reteoo/BaseVertex.java	2006-11-14 19:21:59 UTC (rev 7597)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/reteoo/BaseVertex.java	2006-11-17 15:52:24 UTC (rev 7683)
@@ -1,33 +0,0 @@
-/*
- * Copyright 2006 JBoss Inc
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.drools.reteoo;
-
-import org.drools.ide.editors.rete.model.GraphicalVertex;
-
-/**
- * Intermediate class to have a workaround for *Node default visibility  
- * and ReteooVisitor.
- * 
- * It's not good to have {@link GraphicalVertex} dependency in
- * org.drools.reteoo package. 
- * 
- * @author Ahti Kitsik
- *
- */
-abstract public class BaseVertex extends GraphicalVertex {
-
-
-}
\ No newline at end of file

Copied: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/reteoo/BaseVertex.java (from rev 7597, labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/reteoo/BaseVertex.java)

Deleted: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/reteoo/EvalConditionNodeVertex.java
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/reteoo/EvalConditionNodeVertex.java	2006-11-14 19:21:59 UTC (rev 7597)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/reteoo/EvalConditionNodeVertex.java	2006-11-17 15:52:24 UTC (rev 7683)
@@ -1,57 +0,0 @@
-/**
- * 
- */
-package org.drools.reteoo;
-
-import org.eclipse.draw2d.ColorConstants;
-import org.eclipse.swt.graphics.Color;
-
-/**
- * Wraps {@link EvalConditionNode} and adds visual extras like color information
- *
- */
-public class EvalConditionNodeVertex extends BaseVertex {
-    
-    private static final String     NODE_NAME = "EvalConditionNode";
-    private final EvalConditionNode node;
-
-    /**
-     * Constructor
-     * 
-     * @param node node to be wrapped
-     */
-    public EvalConditionNodeVertex(final EvalConditionNode node) {
-        super();
-        this.node = node;
-    }
-
-    /* (non-Javadoc)
-     * @see org.drools.reteoo.BaseNodeVertex#getHtml()
-     */
-    public String getHtml() {
-        return NODE_NAME + " : " + this.node.getId();
-    }
-
-    /* (non-Javadoc)
-     * @see org.drools.ide.editors.rete.model.BaseVertex#toString()
-     */
-    public String toString() {
-        return NODE_NAME;
-    }
-
-    /**
-     * Node ID
-     * 
-     * @return node id
-     */
-    public int getId() {
-        return node.getId();
-    }
-
-    /* (non-Javadoc)
-     * @see org.drools.reteoo.BaseNodeVertex#getFillColor()
-     */
-    public Color getFillColor() {
-        return ColorConstants.white;
-    }
-}
\ No newline at end of file

Copied: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/reteoo/EvalConditionNodeVertex.java (from rev 7597, labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/reteoo/EvalConditionNodeVertex.java)

Deleted: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/reteoo/JoinNodeVertex.java
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/reteoo/JoinNodeVertex.java	2006-11-14 19:21:59 UTC (rev 7597)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/reteoo/JoinNodeVertex.java	2006-11-17 15:52:24 UTC (rev 7683)
@@ -1,69 +0,0 @@
-/**
- * 
- */
-package org.drools.reteoo;
-
-import org.drools.spi.FieldConstraint;
-import org.eclipse.draw2d.ColorConstants;
-import org.eclipse.swt.graphics.Color;
-
-/**
- * Wraps {@link JoinNode} and adds visual extras like color information
- *
- */
-public class JoinNodeVertex extends BaseVertex {
-
-    private static final String NODE_NAME = "JoinNode";
-
-    private final JoinNode      node;
-
-    /**
-     * Constructor
-     * 
-     * @param node node to be wrapped
-     */
-    public JoinNodeVertex(final JoinNode node) {
-        super();
-        this.node = node;
-    }
-
-    /* (non-Javadoc)
-     * @see org.drools.reteoo.BaseNodeVertex#getHtml()
-     */
-    public String getHtml() {
-        return NODE_NAME + "<BR/>" + dumpConstraints( this.node.getConstraints() );
-    }
-
-    /* (non-Javadoc)
-     * @see org.drools.ide.editors.rete.model.BaseVertex#toString()
-     */
-    public String toString() {
-        return NODE_NAME;
-    }
-
-    /* (non-Javadoc)
-     * @see org.drools.reteoo.BaseNodeVertex#getFillColor()
-     */
-    public Color getFillColor() {
-        return ColorConstants.green;
-    }
-
-    /**
-     * Node constraints
-     * 
-     * @return array of constraints
-     */
-    public FieldConstraint[] getConstraints() {
-        return node.getConstraints();
-    }
-
-    /**
-     * Node ID
-     * 
-     * @return node id
-     */
-    public int getId() {
-        return node.getId();
-    }
-
-}
\ No newline at end of file

Copied: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/reteoo/JoinNodeVertex.java (from rev 7597, labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/reteoo/JoinNodeVertex.java)
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/reteoo/JoinNodeVertex.java	2006-11-14 19:21:59 UTC (rev 7597)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/reteoo/JoinNodeVertex.java	2006-11-17 15:52:24 UTC (rev 7683)
@@ -0,0 +1,69 @@
+/**
+ * 
+ */
+package org.drools.reteoo;
+
+import org.drools.spi.Constraint;
+import org.eclipse.draw2d.ColorConstants;
+import org.eclipse.swt.graphics.Color;
+
+/**
+ * Wraps {@link JoinNode} and adds visual extras like color information
+ *
+ */
+public class JoinNodeVertex extends BaseVertex {
+
+    private static final String NODE_NAME = "JoinNode";
+
+    private final JoinNode      node;
+
+    /**
+     * Constructor
+     * 
+     * @param node node to be wrapped
+     */
+    public JoinNodeVertex(final JoinNode node) {
+        super();
+        this.node = node;
+    }
+
+    /* (non-Javadoc)
+     * @see org.drools.reteoo.BaseNodeVertex#getHtml()
+     */
+    public String getHtml() {
+        return NODE_NAME + "<BR/>" + dumpConstraints( this.node.getConstraints() );
+    }
+
+    /* (non-Javadoc)
+     * @see org.drools.ide.editors.rete.model.BaseVertex#toString()
+     */
+    public String toString() {
+        return NODE_NAME;
+    }
+
+    /* (non-Javadoc)
+     * @see org.drools.reteoo.BaseNodeVertex#getFillColor()
+     */
+    public Color getFillColor() {
+        return ColorConstants.green;
+    }
+
+    /**
+     * Node constraints
+     * 
+     * @return array of constraints
+     */
+    public Constraint[] getConstraints() {
+        return node.getConstraints();
+    }
+
+    /**
+     * Node ID
+     * 
+     * @return node id
+     */
+    public int getId() {
+        return node.getId();
+    }
+
+}
\ No newline at end of file

Deleted: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/reteoo/LeftInputAdapterNodeVertex.java
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/reteoo/LeftInputAdapterNodeVertex.java	2006-11-14 19:21:59 UTC (rev 7597)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/reteoo/LeftInputAdapterNodeVertex.java	2006-11-17 15:52:24 UTC (rev 7683)
@@ -1,59 +0,0 @@
-/**
- * 
- */
-package org.drools.reteoo;
-
-import org.drools.spi.FieldConstraint;
-import org.eclipse.draw2d.ColorConstants;
-import org.eclipse.swt.graphics.Color;
-
-/**
- * Wraps {@link LeftInputAdapterNode} and adds visual extras like color information
- *
- */
-public class LeftInputAdapterNodeVertex extends BaseVertex {
-
-    private static final String        NODE_NAME = "LeftInputAdapterNode";
-
-    private final LeftInputAdapterNode node;
-
-    /**
-     * Constructor
-     * 
-     * @param node node to be wrapped
-     */
-    public LeftInputAdapterNodeVertex(final LeftInputAdapterNode node) {
-        super();
-        this.node = node;
-    }
-
-    /* (non-Javadoc)
-     * @see org.drools.reteoo.BaseNodeVertex#getHtml()
-     */
-    public String getHtml() {
-        return NODE_NAME + "<BR/>" + dumpConstraints( this.node.getConstraints() );
-    }
-
-    /* (non-Javadoc)
-     * @see org.drools.ide.editors.rete.model.BaseVertex#toString()
-     */
-    public String toString() {
-        return this.node.toString();
-    }
-
-    /* (non-Javadoc)
-     * @see org.drools.reteoo.BaseNodeVertex#getFillColor()
-     */
-    public Color getFillColor() {
-        return ColorConstants.yellow;
-    }
-
-    /**
-     * Node constraints
-     * 
-     * @return array of node constraints
-     */
-    public FieldConstraint[] getConstraints() {
-        return node.getConstraints();
-    }
-}
\ No newline at end of file

Copied: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/reteoo/LeftInputAdapterNodeVertex.java (from rev 7597, labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/reteoo/LeftInputAdapterNodeVertex.java)
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/reteoo/LeftInputAdapterNodeVertex.java	2006-11-14 19:21:59 UTC (rev 7597)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/reteoo/LeftInputAdapterNodeVertex.java	2006-11-17 15:52:24 UTC (rev 7683)
@@ -0,0 +1,50 @@
+/**
+ * 
+ */
+package org.drools.reteoo;
+
+import org.eclipse.draw2d.ColorConstants;
+import org.eclipse.swt.graphics.Color;
+
+/**
+ * Wraps {@link LeftInputAdapterNode} and adds visual extras like color information
+ *
+ */
+public class LeftInputAdapterNodeVertex extends BaseVertex {
+
+    private static final String        NODE_NAME = "LeftInputAdapterNode";
+
+    private final LeftInputAdapterNode node;
+
+    /**
+     * Constructor
+     * 
+     * @param node node to be wrapped
+     */
+    public LeftInputAdapterNodeVertex(final LeftInputAdapterNode node) {
+        super();
+        this.node = node;
+    }
+
+    /* (non-Javadoc)
+     * @see org.drools.reteoo.BaseNodeVertex#getHtml()
+     */
+    public String getHtml() {
+        return NODE_NAME;
+    }
+
+    /* (non-Javadoc)
+     * @see org.drools.ide.editors.rete.model.BaseVertex#toString()
+     */
+    public String toString() {
+        return this.node.toString();
+    }
+
+    /* (non-Javadoc)
+     * @see org.drools.reteoo.BaseNodeVertex#getFillColor()
+     */
+    public Color getFillColor() {
+        return ColorConstants.yellow;
+    }
+
+}
\ No newline at end of file

Deleted: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/reteoo/NotNodeVertex.java
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/reteoo/NotNodeVertex.java	2006-11-14 19:21:59 UTC (rev 7597)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/reteoo/NotNodeVertex.java	2006-11-17 15:52:24 UTC (rev 7683)
@@ -1,59 +0,0 @@
-/**
- * 
- */
-package org.drools.reteoo;
-
-import org.eclipse.draw2d.ColorConstants;
-import org.eclipse.swt.graphics.Color;
-
-/**
- * Wraps {@link NotNode} and adds visual extras like color information
- *
- */
-public class NotNodeVertex extends BaseVertex {
-    
-    private static final String NODE_NAME = "NotNode";
-    
-    private final NotNode node;
-
-    /**
-     * Constructor
-     * 
-     * @param node node to be wrapped
-     */
-    public NotNodeVertex(final NotNode node) {
-        super();
-        this.node = node;
-    }
-
-    /* (non-Javadoc)
-     * @see org.drools.reteoo.BaseNodeVertex#getHtml()
-     */
-    public String getHtml() {
-        return NODE_NAME+" : " + this.node.getId();
-    }
-
-    /* (non-Javadoc)
-     * @see org.drools.ide.editors.rete.model.BaseVertex#toString()
-     */
-    public String toString() {
-        return NODE_NAME;
-    }
-
-    /* (non-Javadoc)
-     * @see org.drools.reteoo.BaseNodeVertex#getFillColor()
-     */
-    public Color getFillColor() {
-        return ColorConstants.cyan;
-    }
-
-    /**
-     * Node ID
-     * 
-     * @return node id
-     */
-    public int getId() {
-        return node.getId();
-    }
-
-}
\ No newline at end of file

Copied: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/reteoo/NotNodeVertex.java (from rev 7597, labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/reteoo/NotNodeVertex.java)

Deleted: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/reteoo/ObjectTypeNodeVertex.java
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/reteoo/ObjectTypeNodeVertex.java	2006-11-14 19:21:59 UTC (rev 7597)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/reteoo/ObjectTypeNodeVertex.java	2006-11-17 15:52:24 UTC (rev 7683)
@@ -1,59 +0,0 @@
-/**
- * 
- */
-package org.drools.reteoo;
-
-import org.drools.spi.ObjectType;
-import org.eclipse.draw2d.ColorConstants;
-import org.eclipse.swt.graphics.Color;
-
-/**
- * Wraps {@link ObjectTypeNode} and adds visual extras like color information
- *
- */
-public class ObjectTypeNodeVertex extends BaseVertex {
-
-    private static final String  NODE_NAME = "ObjectTypeNode";
-
-    private final ObjectTypeNode node;
-
-    /**
-     * Constructor
-     * 
-     * @param node node to be wrapped
-     */
-    public ObjectTypeNodeVertex(final ObjectTypeNode node) {
-        super();
-        this.node = node;
-    }
-
-    /* (non-Javadoc)
-     * @see org.drools.reteoo.BaseNodeVertex#getHtml()
-     */
-    public String getHtml() {
-        return NODE_NAME + " : " + this.node.getObjectType();
-    }
-
-    /* (non-Javadoc)
-     * @see org.drools.ide.editors.rete.model.BaseVertex#toString()
-     */
-    public String toString() {
-        return NODE_NAME;
-    }
-
-    /* (non-Javadoc)
-     * @see org.drools.reteoo.BaseNodeVertex#getFillColor()
-     */
-    public Color getFillColor() {
-        return ColorConstants.red;
-    }
-
-    /**
-     * {@link ObjectType} as {@link String}
-     * 
-     * @return object type as string
-     */
-    public String getObjectType() {
-        return node.getObjectType().toString();
-    }
-}
\ No newline at end of file

Copied: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/reteoo/ObjectTypeNodeVertex.java (from rev 7597, labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/reteoo/ObjectTypeNodeVertex.java)

Deleted: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/reteoo/ReteVertex.java
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/reteoo/ReteVertex.java	2006-11-14 19:21:59 UTC (rev 7597)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/reteoo/ReteVertex.java	2006-11-17 15:52:24 UTC (rev 7683)
@@ -1,59 +0,0 @@
-/**
- * 
- */
-package org.drools.reteoo;
-
-import org.eclipse.draw2d.ColorConstants;
-import org.eclipse.swt.graphics.Color;
-
-/**
- * Wraps {@link Rete} and adds visual extras like color information
- *
- */
-public class ReteVertex extends BaseVertex {
-    
-    private static final String NODE_NAME = "Rete";
-    
-    private final Rete node;
-
-    /**
-     * Constructor
-     * 
-     * @param node node to be wrapped
-     */
-    public ReteVertex(final Rete node) {
-        super();
-        this.node = node;
-    }
-
-    /* (non-Javadoc)
-     * @see org.drools.reteoo.BaseNodeVertex#getHtml()
-     */
-    public String getHtml() {
-        return NODE_NAME+" : " + this.node.getId();
-    }
-
-    /* (non-Javadoc)
-     * @see org.drools.ide.editors.rete.model.BaseVertex#toString()
-     */
-    public String toString() {
-        return NODE_NAME;
-    }
-
-    /**
-     * Node ID
-     * 
-     * @return node id
-     */
-    public int getId() {
-        return node.getId();
-    }
-
-    /* (non-Javadoc)
-     * @see org.drools.reteoo.BaseNodeVertex#getFillColor()
-     */
-    public Color getFillColor() {
-        return ColorConstants.white;
-    }
-
-}
\ No newline at end of file

Copied: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/reteoo/ReteVertex.java (from rev 7597, labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/reteoo/ReteVertex.java)

Deleted: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/reteoo/ReteooVisitor.java
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/reteoo/ReteooVisitor.java	2006-11-14 19:21:59 UTC (rev 7597)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/reteoo/ReteooVisitor.java	2006-11-17 15:52:24 UTC (rev 7683)
@@ -1,136 +0,0 @@
-package org.drools.reteoo;
-
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.drools.ide.editors.rete.model.Connection;
-import org.drools.ide.editors.rete.model.ReteGraph;
-import org.drools.util.ReflectiveVisitor;
-
-/**
- * Produces a graph in GraphViz DOT format.
- *
- * @see http://www.research.att.com/sw/tools/graphviz/ 
- * @see http://www.pixelglow.com/graphviz/
- *
- * @author Andy Barnett
- */
-public class ReteooVisitor extends ReflectiveVisitor {
-
-    private static final String PACKAGE_NAME = "org.drools.reteoo.";
-
-    /**
-     * Keeps track of visited JoinNode DOT IDs. This mapping allows the visitor
-     * to recognize JoinNodes it has already visited and as a consequence link
-     * existing nodes back together. This is vital to the Visitor being able to
-     * link two JoinNodeInputs together through their common JoinNode.
-     */
-    private final Map           visitedNodes = new HashMap();
-
-    private ReteGraph           graph;
-
-    private BaseVertex          rootVertex;
-
-    private BaseVertex          parentVertex;
-
-    /**
-     * Constructor.
-     */
-    public ReteooVisitor(final ReteGraph graph) {
-        this.graph = graph;
-    }
-
-    public ReteGraph getGraph() {
-        return this.graph;
-    }
-
-    public BaseVertex getRootVertex() {
-        return this.rootVertex;
-    }
-
-    /**
-     * RuleBaseImpl visits its Rete.
-     */
-    public void visitReteooRuleBase(final ReteooRuleBase ruleBase) {
-        visit( (ruleBase).getRete() );
-    }
-
-    /**
-     * Rete visits each of its ObjectTypeNodes.
-     */
-    public void visitRete(final Rete rete) {
-        this.rootVertex = (ReteVertex) this.visitedNodes.get( dotId( rete ) );
-        if ( this.rootVertex == null ) {
-            this.rootVertex = new ReteVertex( rete );
-            this.visitedNodes.put( dotId( rete ),
-                                   this.rootVertex );
-        }
-
-        this.graph.addChild( this.rootVertex );
-        this.parentVertex = this.rootVertex;
-        for ( final Iterator i = rete.objectTypeNodeIterator(); i.hasNext(); ) {
-            final Object nextNode = i.next();
-            visitNode( nextNode );
-        }
-    }
-
-    public void visitBaseNode(final BaseNode node) {
-        BaseVertex vertex = (BaseVertex) this.visitedNodes.get( dotId( node ) );
-        if ( vertex == null ) {
-            try {
-                String name = node.getClass().getName();
-                name = name.substring( name.lastIndexOf( '.' ) + 1 ) + "Vertex";
-                final Class clazz = Class.forName( PACKAGE_NAME + name );
-                vertex = (BaseVertex) clazz.getConstructor( new Class[]{node.getClass()} ).newInstance( new Object[]{node} );
-            } catch ( final Exception e ) {
-                throw new RuntimeException( "problem visiting vertex " + node.getClass().getName(),
-                                            e );
-            }
-            this.graph.addChild( vertex );
-            this.visitedNodes.put( dotId( node ),
-                                   vertex );
-
-            new Connection( this.parentVertex,
-                            vertex );
-
-            final BaseVertex oldParentVertex = this.parentVertex;
-            this.parentVertex = vertex;
-
-            List list = null;
-            if ( node instanceof ObjectSource ) {
-                list = ((ObjectSource) node).getObjectSinksAsList();
-            } else if ( node instanceof TupleSource ) {
-                list = ((TupleSource) node).getTupleSinks();
-            }
-
-            if ( list != null ) {
-                for ( final Iterator it = list.iterator(); it.hasNext(); ) {
-                    final Object nextNode = it.next();
-                    visitNode( nextNode );
-                }
-            }
-            this.parentVertex = oldParentVertex;
-        } else {
-            new Connection( this.parentVertex,
-                            vertex );
-        }
-    }
-
-    /**
-     * Helper method to ensure nodes are not visited more than once.
-     */
-    private void visitNode(final Object node) {
-        visit( node );
-    }
-
-    /**
-     * The identity hashCode for the given object is used as its unique DOT
-     * identifier.
-     */
-    private static String dotId(final Object object) {
-        return Integer.toHexString( System.identityHashCode( object ) ).toUpperCase();
-    }
-
-}

Copied: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/reteoo/ReteooVisitor.java (from rev 7597, labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/reteoo/ReteooVisitor.java)
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/reteoo/ReteooVisitor.java	2006-11-14 19:21:59 UTC (rev 7597)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/reteoo/ReteooVisitor.java	2006-11-17 15:52:24 UTC (rev 7683)
@@ -0,0 +1,149 @@
+package org.drools.reteoo;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.drools.common.BaseNode;
+import org.drools.ide.editors.rete.model.Connection;
+import org.drools.ide.editors.rete.model.ReteGraph;
+import org.drools.util.Iterator;
+import org.drools.util.ObjectHashMap;
+import org.drools.util.ReflectiveVisitor;
+import org.drools.util.ObjectHashMap.ObjectEntry;
+
+/**
+ * Produces a graph in GraphViz DOT format.
+ *
+ * @see http://www.research.att.com/sw/tools/graphviz/ 
+ * @see http://www.pixelglow.com/graphviz/
+ *
+ * @author Andy Barnett
+ */
+public class ReteooVisitor extends ReflectiveVisitor {
+
+    private static final String PACKAGE_NAME = "org.drools.reteoo.";
+
+    /**
+     * Keeps track of visited JoinNode DOT IDs. This mapping allows the visitor
+     * to recognize JoinNodes it has already visited and as a consequence link
+     * existing nodes back together. This is vital to the Visitor being able to
+     * link two JoinNodeInputs together through their common JoinNode.
+     */
+    private final Map           visitedNodes = new HashMap();
+
+    private ReteGraph           graph;
+
+    private BaseVertex          rootVertex;
+
+    private BaseVertex          parentVertex;
+
+    /**
+     * Constructor.
+     */
+    public ReteooVisitor(final ReteGraph graph) {
+        this.graph = graph;
+    }
+
+    public ReteGraph getGraph() {
+        return this.graph;
+    }
+
+    public BaseVertex getRootVertex() {
+        return this.rootVertex;
+    }
+
+    /**
+     * RuleBaseImpl visits its Rete.
+     */
+    public void visitReteooRuleBase(final ReteooRuleBase ruleBase) {
+        visit( (ruleBase).getRete() );
+    }
+
+    /**
+     * Rete visits each of its ObjectTypeNodes.
+     */
+    public void visitRete(final Rete rete) {
+        this.rootVertex = (ReteVertex) this.visitedNodes.get( dotId( rete ) );
+        if ( this.rootVertex == null ) {
+            this.rootVertex = new ReteVertex( rete );
+            this.visitedNodes.put( dotId( rete ),
+                                   this.rootVertex );
+        }
+
+        this.graph.addChild( this.rootVertex );
+        this.parentVertex = this.rootVertex;
+
+        final ObjectHashMap map = rete.getObjectTypeNodes();
+
+        final Iterator it = map.iterator();
+        for ( ObjectEntry entry = (ObjectEntry) it.next(); entry != null; entry = (ObjectEntry) it.next() ) {
+            visit( entry.getValue() );
+        }
+
+    }
+
+    public void visitBaseNode(final BaseNode node) {
+        BaseVertex vertex = (BaseVertex) this.visitedNodes.get( dotId( node ) );
+        if ( vertex == null ) {
+            try {
+                String name = node.getClass().getName();
+                name = name.substring( name.lastIndexOf( '.' ) + 1 ) + "Vertex";
+                final Class clazz = Class.forName( PACKAGE_NAME + name );
+                vertex = (BaseVertex) clazz.getConstructor( new Class[]{node.getClass()} ).newInstance( new Object[]{node} );
+            } catch ( final Exception e ) {
+                throw new RuntimeException( "problem visiting vertex " + node.getClass().getName(),
+                                            e );
+            }
+            this.graph.addChild( vertex );
+            this.visitedNodes.put( dotId( node ),
+                                   vertex );
+
+            new Connection( this.parentVertex,
+                            vertex );
+
+            final BaseVertex oldParentVertex = this.parentVertex;
+            this.parentVertex = vertex;
+
+            List list = null;
+            if ( node instanceof ObjectSource ) {
+                list = Arrays.asList( ((ObjectSource) node).getSinkPropagator().getSinks() );
+            } else if ( node instanceof TupleSource ) {
+                list = Arrays.asList( ((TupleSource) node).getSinkPropagator().getSinks() );
+            }
+
+            if ( list != null ) {
+                for ( final java.util.Iterator it = list.iterator(); it.hasNext(); ) {
+                    final Object nextNode = it.next();
+                    visitNode( nextNode );
+                }
+            }
+            this.parentVertex = oldParentVertex;
+        } else {
+            new Connection( this.parentVertex,
+                            vertex );
+        }
+    }
+
+    /**
+     * Helper method to ensure nodes are not visited more than once.
+     */
+    private void visitNode(final Object node) {
+        Object realNode = node;
+        if ( node instanceof ObjectHashMap.ObjectEntry ) {
+            ObjectHashMap.ObjectEntry entry = (ObjectHashMap.ObjectEntry) node;
+            realNode = entry.getValue();
+        }
+        visit( realNode );
+    }
+
+    /**
+     * The identity hashCode for the given object is used as its unique DOT
+     * identifier.
+     */
+    private static String dotId(final Object object) {
+        return Integer.toHexString( System.identityHashCode( object ) ).toUpperCase();
+    }
+
+}

Deleted: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/reteoo/RightInputAdapterNodeVertex.java
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/reteoo/RightInputAdapterNodeVertex.java	2006-11-14 19:21:59 UTC (rev 7597)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/reteoo/RightInputAdapterNodeVertex.java	2006-11-17 15:52:24 UTC (rev 7683)
@@ -1,38 +0,0 @@
-/**
- * 
- */
-package org.drools.reteoo;
-
-import org.eclipse.draw2d.ColorConstants;
-import org.eclipse.swt.graphics.Color;
-
-/**
- * Wraps {@link RightInputAdapterNode} and adds visual extras like color information
- *
- */
-public class RightInputAdapterNodeVertex extends BaseVertex {
-
-    private static final String NODE_NAME = "RightInputAdapterNode";
-
-    /**
-     * Constructor
-     * 
-     * @param node node to be wrapped
-     */
-    public RightInputAdapterNodeVertex(final RightInputAdapterNode node) {
-        super();
-    }
-
-    public String getHtml() {
-        return NODE_NAME;
-    }
-
-    public String toString() {
-        return NODE_NAME;
-    }
-
-    public Color getFillColor() {
-        return ColorConstants.orange;
-    }
-
-}
\ No newline at end of file

Copied: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/reteoo/RightInputAdapterNodeVertex.java (from rev 7597, labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/reteoo/RightInputAdapterNodeVertex.java)

Deleted: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/reteoo/TerminalNodeVertex.java
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/reteoo/TerminalNodeVertex.java	2006-11-14 19:21:59 UTC (rev 7597)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/reteoo/TerminalNodeVertex.java	2006-11-17 15:52:24 UTC (rev 7683)
@@ -1,66 +0,0 @@
-/**
- * 
- */
-package org.drools.reteoo;
-
-import org.eclipse.draw2d.ColorConstants;
-import org.eclipse.swt.graphics.Color;
-
-/**
- * Wraps {@link TerminalNode} and adds visual extras like color information
- *
- */
-public class TerminalNodeVertex extends BaseVertex {
-    
-    private static final String NODE_NAME = "TerminalNode";
-    
-    private final TerminalNode node;
-
-    /**
-     * Constructor
-     * 
-     * @param node node to be wrapped
-     */
-    public TerminalNodeVertex(final TerminalNode node) {
-        super();
-        this.node = node;
-    }
-
-    /* (non-Javadoc)
-     * @see org.drools.reteoo.BaseNodeVertex#getHtml()
-     */
-    public String getHtml() {
-        return NODE_NAME+" : " + this.node.getId() + " : " + this.node.getRule();
-    }
-
-    /* (non-Javadoc)
-     * @see org.drools.ide.editors.rete.model.BaseVertex#toString()
-     */
-    public String toString() {
-        return NODE_NAME;
-    }
-
-    /* (non-Javadoc)
-     * @see org.drools.reteoo.BaseNodeVertex#getFillColor()
-     */
-    public Color getFillColor() {
-        return ColorConstants.darkGray;
-    }
-
-    /**
-     * Node ID
-     * 
-     * @return id
-     */
-    public int getId() {
-        return this.node.getId();
-    }
-
-    /**
-     * @return
-     */
-    public String getRuleName() {
-        return node.getRule().getName();
-    }
-
-}
\ No newline at end of file

Copied: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/reteoo/TerminalNodeVertex.java (from rev 7597, labs/jbossrules/branches/3.0.x/drools-ide/src/main/java/org/drools/reteoo/TerminalNodeVertex.java)

Modified: labs/jbossrules/trunk/drools-ide-feature/.project
===================================================================
--- labs/jbossrules/trunk/drools-ide-feature/.project	2006-11-17 15:27:18 UTC (rev 7682)
+++ labs/jbossrules/trunk/drools-ide-feature/.project	2006-11-17 15:52:24 UTC (rev 7683)
@@ -1,17 +1,11 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>drools-ide-feature</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.pde.FeatureBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.FeatureNature</nature>
-	</natures>
-</projectDescription>
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>drools-ide-feature</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+	</buildSpec>
+	<natures>
+	</natures>
+</projectDescription>

Copied: labs/jbossrules/trunk/drools-ide-test (from rev 7597, labs/jbossrules/branches/3.0.x/drools-ide-test)


Property changes on: labs/jbossrules/trunk/drools-ide-test
___________________________________________________________________
Name: svn:ignore
   + bin


Deleted: labs/jbossrules/trunk/drools-ide-test/.classpath
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-ide-test/.classpath	2006-11-14 19:21:59 UTC (rev 7597)
+++ labs/jbossrules/trunk/drools-ide-test/.classpath	2006-11-17 15:52:24 UTC (rev 7683)
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src/test/java"/>
-	<classpathentry kind="src" path="src/test/resources/"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.4"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>

Copied: labs/jbossrules/trunk/drools-ide-test/.classpath (from rev 7597, labs/jbossrules/branches/3.0.x/drools-ide-test/.classpath)

Deleted: labs/jbossrules/trunk/drools-ide-test/.project
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-ide-test/.project	2006-11-14 19:21:59 UTC (rev 7597)
+++ labs/jbossrules/trunk/drools-ide-test/.project	2006-11-17 15:52:24 UTC (rev 7683)
@@ -1,27 +0,0 @@
-<projectDescription>
-	<name>drools-ide-test</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>
\ No newline at end of file

Copied: labs/jbossrules/trunk/drools-ide-test/.project (from rev 7597, labs/jbossrules/branches/3.0.x/drools-ide-test/.project)

Copied: labs/jbossrules/trunk/drools-ide-test/.settings (from rev 7597, labs/jbossrules/branches/3.0.x/drools-ide-test/.settings)

Deleted: labs/jbossrules/trunk/drools-ide-test/.settings/org.eclipse.jdt.core.prefs
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-ide-test/.settings/org.eclipse.jdt.core.prefs	2006-11-14 19:21:59 UTC (rev 7597)
+++ labs/jbossrules/trunk/drools-ide-test/.settings/org.eclipse.jdt.core.prefs	2006-11-17 15:52:24 UTC (rev 7683)
@@ -1,7 +0,0 @@
-#Fri Oct 20 11:59:49 PDT 2006
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
-org.eclipse.jdt.core.compiler.compliance=1.4
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
-org.eclipse.jdt.core.compiler.source=1.3

Copied: labs/jbossrules/trunk/drools-ide-test/.settings/org.eclipse.jdt.core.prefs (from rev 7597, labs/jbossrules/branches/3.0.x/drools-ide-test/.settings/org.eclipse.jdt.core.prefs)
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-ide-test/.settings/org.eclipse.jdt.core.prefs	2006-11-14 19:21:59 UTC (rev 7597)
+++ labs/jbossrules/trunk/drools-ide-test/.settings/org.eclipse.jdt.core.prefs	2006-11-17 15:52:24 UTC (rev 7683)
@@ -0,0 +1,8 @@
+#Wed Nov 15 23:49:39 EET 2006
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
+org.eclipse.jdt.core.compiler.compliance=1.4
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
+org.eclipse.jdt.core.compiler.source=1.3

Copied: labs/jbossrules/trunk/drools-ide-test/META-INF (from rev 7597, labs/jbossrules/branches/3.0.x/drools-ide-test/META-INF)

Deleted: labs/jbossrules/trunk/drools-ide-test/META-INF/MANIFEST.MF
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-ide-test/META-INF/MANIFEST.MF	2006-11-14 19:21:59 UTC (rev 7597)
+++ labs/jbossrules/trunk/drools-ide-test/META-INF/MANIFEST.MF	2006-11-17 15:52:24 UTC (rev 7683)
@@ -1,12 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Drools IDE Test fragment
-Bundle-SymbolicName: org.drools.ide.test
-Bundle-Version: 3.0.5
-Bundle-Vendor: krisv,mic
-Fragment-Host: org.drools.ide;bundle-version="3.0.0"
-Bundle-Localization: plugin
-Require-Bundle: org.junit
-Bundle-ClassPath: .
-Bundle-RequiredExecutionEnvironment: J2SE-1.4
-Eclipse-LazyStart: true

Copied: labs/jbossrules/trunk/drools-ide-test/META-INF/MANIFEST.MF (from rev 7597, labs/jbossrules/branches/3.0.x/drools-ide-test/META-INF/MANIFEST.MF)

Deleted: labs/jbossrules/trunk/drools-ide-test/build.properties
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-ide-test/build.properties	2006-11-14 19:21:59 UTC (rev 7597)
+++ labs/jbossrules/trunk/drools-ide-test/build.properties	2006-11-17 15:52:24 UTC (rev 7683)
@@ -1,12 +0,0 @@
-bin.includes = META-INF/,\
-               .
-jars.compile.order = .
-source.. = src/test/java/,\
-           src/test/resources/
-output.. = bin/
-src.includes = .classpath,\
-               .project,\
-               .settings/,\
-               META-INF/,\
-               build.properties,\
-               src/

Copied: labs/jbossrules/trunk/drools-ide-test/build.properties (from rev 7597, labs/jbossrules/branches/3.0.x/drools-ide-test/build.properties)

Copied: labs/jbossrules/trunk/drools-ide-test/src (from rev 7597, labs/jbossrules/branches/3.0.x/drools-ide-test/src)

Copied: labs/jbossrules/trunk/drools-ide-test/src/test (from rev 7597, labs/jbossrules/branches/3.0.x/drools-ide-test/src/test)

Copied: labs/jbossrules/trunk/drools-ide-test/src/test/java (from rev 7597, labs/jbossrules/branches/3.0.x/drools-ide-test/src/test/java)

Copied: labs/jbossrules/trunk/drools-ide-test/src/test/java/org (from rev 7597, labs/jbossrules/branches/3.0.x/drools-ide-test/src/test/java/org)

Copied: labs/jbossrules/trunk/drools-ide-test/src/test/java/org/drools (from rev 7597, labs/jbossrules/branches/3.0.x/drools-ide-test/src/test/java/org/drools)

Copied: labs/jbossrules/trunk/drools-ide-test/src/test/java/org/drools/ide (from rev 7597, labs/jbossrules/branches/3.0.x/drools-ide-test/src/test/java/org/drools/ide)

Copied: labs/jbossrules/trunk/drools-ide-test/src/test/java/org/drools/ide/editors (from rev 7597, labs/jbossrules/branches/3.0.x/drools-ide-test/src/test/java/org/drools/ide/editors)

Modified: labs/jbossrules/trunk/drools-ide-test/src/test/java/org/drools/ide/editors/DSLAdapterTest.java
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-ide-test/src/test/java/org/drools/ide/editors/DSLAdapterTest.java	2006-11-14 19:21:59 UTC (rev 7597)
+++ labs/jbossrules/trunk/drools-ide-test/src/test/java/org/drools/ide/editors/DSLAdapterTest.java	2006-11-17 15:52:24 UTC (rev 7683)
@@ -7,50 +7,46 @@
  * @author Michael Neale
  */
 public class DSLAdapterTest extends TestCase {
-
+    
     public void testFindExpander() {
-
+        
         StringBuffer buf = largeString();
-
+        
         String pat = "\nexpander  \t abc.dsl";
-
+        
         DSLAdapter ad = new DSLAdapter();
-        assertEquals( "abc.dsl",
-                      DSLAdapter.findDSLConfigName( pat ) );
-
-        assertEquals( "abc.dsl",
-                      DSLAdapter.findDSLConfigName( buf.toString() ) );
-
-        assertEquals( null,
-                      DSLAdapter.findDSLConfigName( "abc /n/n" ) );
-
-        ad = new DSLAdapter( "fdfds",
-                             null );
-        assertEquals( null,
-                      ad.getDSLConfigName() );
-
+        assertEquals("abc.dsl", DSLAdapter.findDSLConfigName( pat ));
+        
+        
+        assertEquals("abc.dsl", DSLAdapter.findDSLConfigName( buf.toString() ));
+        
+        assertEquals(null, DSLAdapter.findDSLConfigName( "abc /n/n" ));
+        
+        ad = new DSLAdapter("fdfds", null);
+        assertEquals(null, ad.getDSLConfigName());
+        
     }
-
+    
     public void testLoadGrammar() throws Exception {
         DSLAdapter ad = new DSLAdapter();
-
+        
         ad.readConfig( this.getClass().getResourceAsStream( "test.dsl" ) );
-        assertNotNull( ad.listConditionItems() );
-        assertNotNull( ad.listConsequenceItems() );
+        assertNotNull(ad.listConditionItems());
+        assertNotNull(ad.listConsequenceItems());
     }
 
     private StringBuffer largeString() {
         StringBuffer buf = new StringBuffer();
-        for ( int i = 0; i < 1000; i++ ) {
-            if ( i == 42 ) {
+        for (int i = 0; i < 1000; i++) {
+            if (i == 42) {
                 buf.append( "\nuse expander abc.dsl  \n" );
             }
-
+            
             buf.append( "\n" );
-            buf.append( " fdsfdsfds && " + i );
-
+            buf.append( " fdsfdsfds && " + i);
+            
         }
         return buf;
     }
-
+    
 }

Modified: labs/jbossrules/trunk/drools-ide-test/src/test/java/org/drools/ide/editors/ExpressionSpaceNormaliseTest.java
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-ide-test/src/test/java/org/drools/ide/editors/ExpressionSpaceNormaliseTest.java	2006-11-14 19:21:59 UTC (rev 7597)
+++ labs/jbossrules/trunk/drools-ide-test/src/test/java/org/drools/ide/editors/ExpressionSpaceNormaliseTest.java	2006-11-17 15:52:24 UTC (rev 7683)
@@ -9,16 +9,15 @@
     public void testNormaliseSpaces() {
         String with = "This  has some  extra\t spaces.";
         String without = "This has some extra spaces.";
-
-        assertEquals( without,
-                      NLGrammarModel.normaliseSpaces( with ) );
-
-        assertEquals( without,
-                      NLGrammarModel.normaliseSpaces( without ) );
-
-        assertEquals( "smeg",
-                      NLGrammarModel.normaliseSpaces( "smeg" ) );
-
+        
+        assertEquals(without, NLGrammarModel.normaliseSpaces( with ));
+        
+        assertEquals(without, NLGrammarModel.normaliseSpaces( without ));
+        
+        assertEquals("smeg", NLGrammarModel.normaliseSpaces( "smeg" ));
+        
     }
 
+
+    
 }

Copied: labs/jbossrules/trunk/drools-ide-test/src/test/java/org/drools/ide/editors/completion (from rev 7597, labs/jbossrules/branches/3.0.x/drools-ide-test/src/test/java/org/drools/ide/editors/completion)

Modified: labs/jbossrules/trunk/drools-ide-test/src/test/java/org/drools/ide/editors/completion/ContextScanningTest.java
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-ide-test/src/test/java/org/drools/ide/editors/completion/ContextScanningTest.java	2006-11-14 19:21:59 UTC (rev 7597)
+++ labs/jbossrules/trunk/drools-ide-test/src/test/java/org/drools/ide/editors/completion/ContextScanningTest.java	2006-11-17 15:52:24 UTC (rev 7683)
@@ -8,25 +8,27 @@
 public class ContextScanningTest extends TestCase {
 
     public void testCheckAfterToken() {
-
-        assertTrue( checkContains( "when",
-                                   "rule something \nwhen \t blah" ) );
-        assertTrue( checkContains( "when",
-                                   "rule something when nothing" ) );
-        assertFalse( checkContains( "when",
-                                    "rule something whennothing" ) );
-        assertTrue( checkContains( "when",
-                                   "rule something \twhen nothing" ) );
+        
+        
+        
+        assertTrue(checkContains("when", "rule something \nwhen \t blah"));
+        assertTrue(checkContains("when", "rule something when nothing"));
+        assertFalse(checkContains("when", "rule something whennothing"));
+        assertTrue(checkContains("when", "rule something \twhen nothing"));
     }
 
     private boolean checkContains(String keyword,
-                                  String chunk) {
+                                 String chunk) {
         //Pattern p = Pattern.compile(".*(.)" + keyword + "(.).*", Pattern.DOTALL);
-        Pattern p = Pattern.compile( ".*rule.*\\W" + keyword + "\\W.*",
-                                     Pattern.DOTALL );
-        Matcher matcher = p.matcher( chunk );
-
+        Pattern p = Pattern.compile(".*rule.*\\W" + keyword + "\\W.*", Pattern.DOTALL);
+        Matcher matcher = p.matcher(chunk);
+       
         return matcher.matches();
     }
+    
+    
 
+
+
+    
 }

Modified: labs/jbossrules/trunk/drools-ide-test/src/test/java/org/drools/ide/editors/completion/DRLCompletionProcessorTest.java
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-ide-test/src/test/java/org/drools/ide/editors/completion/DRLCompletionProcessorTest.java	2006-11-14 19:21:59 UTC (rev 7597)
+++ labs/jbossrules/trunk/drools-ide-test/src/test/java/org/drools/ide/editors/completion/DRLCompletionProcessorTest.java	2006-11-17 15:52:24 UTC (rev 7683)
@@ -8,58 +8,35 @@
 public class DRLCompletionProcessorTest extends TestCase {
 
     public void testLookBehind() {
-        DefaultCompletionProcessor proc = new DefaultCompletionProcessor( null );
-
-        assertEquals( "something",
-                      proc.stripWhiteSpace( " something" ) );
-        assertEquals( "another",
-                      proc.stripWhiteSpace( "another" ) );
-
+        assertEquals("something", CompletionUtil.stripLastWord(" something"));
+        assertEquals("another", CompletionUtil.stripLastWord("another"));
+        
         String s = "rule something \n\nwhen";
-        assertEquals( "when",
-                      proc.stripWhiteSpace( s ) );
-
+        assertEquals("when", CompletionUtil.stripLastWord(s));
     }
-
+    
     public void testPrefixFiltering() {
-        DefaultCompletionProcessor proc = new DefaultCompletionProcessor( null );
+        DefaultCompletionProcessor proc = new DefaultCompletionProcessor(null);
 
         List list = new ArrayList();
-        list.add( new RuleCompletionProposal( 0,
-                                              "aardvark",
-                                              "something" ) );
-        list.add( new RuleCompletionProposal( 0,
-                                              "smeg" ) );
-        list.add( new RuleCompletionProposal( 0,
-                                              "apple" ) );
-        list.add( new RuleCompletionProposal( 0,
-                                              "ape",
-                                              "ape" ) );
+        list.add(new RuleCompletionProposal(0, "aardvark", "something"));
+        list.add(new RuleCompletionProposal(0, "smeg"));
+        list.add(new RuleCompletionProposal(0, "apple"));
+        list.add(new RuleCompletionProposal(0, "ape", "ape"));
+        
+        proc.filterProposalsOnPrefix("a", list);
+        assertEquals(2, list.size());
+        assertEquals("apple", list.get(0).toString());
+        assertEquals("ape", list.get(1).toString());
 
-        proc.filterProposalsOnPrefix( "a",
-                                      list );
-        assertEquals( 2,
-                      list.size() );
-        assertEquals( "apple",
-                      list.get( 0 ).toString() );
-        assertEquals( "ape",
-                      list.get( 1 ).toString() );
-
+        
         list = new ArrayList();
-        list.add( new RuleCompletionProposal( 0,
-                                              "aardvark",
-                                              "something" ) );
-        list.add( new RuleCompletionProposal( 0,
-                                              "smeg" ) );
-        list.add( new RuleCompletionProposal( 0,
-                                              "apple" ) );
-        list.add( new RuleCompletionProposal( 0,
-                                              "ape",
-                                              "zzzzz" ) );
-        proc.filterProposalsOnPrefix( "xzyz",
-                                      list );
-        assertEquals( 0,
-                      list.size() );
+        list.add(new RuleCompletionProposal(0, "aardvark", "something"));
+        list.add(new RuleCompletionProposal(0, "smeg"));
+        list.add(new RuleCompletionProposal(0, "apple"));
+        list.add(new RuleCompletionProposal(0, "ape", "zzzzz"));
+        proc.filterProposalsOnPrefix("xzyz", list);
+        assertEquals(0, list.size());
     }
-
+    
 }

Modified: labs/jbossrules/trunk/drools-ide-test/src/test/java/org/drools/ide/editors/completion/KeywordsTest.java
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-ide-test/src/test/java/org/drools/ide/editors/completion/KeywordsTest.java	2006-11-14 19:21:59 UTC (rev 7597)
+++ labs/jbossrules/trunk/drools-ide-test/src/test/java/org/drools/ide/editors/completion/KeywordsTest.java	2006-11-17 15:52:24 UTC (rev 7683)
@@ -1,18 +1,17 @@
 package org.drools.ide.editors.completion;
 
-import junit.framework.TestCase;
-
 import org.drools.ide.editors.Keywords;
 
+import junit.framework.TestCase;
+
 public class KeywordsTest extends TestCase {
 
     public void testAll() {
         Keywords keys = Keywords.getInstance();
         String[] all = keys.getAllDroolsKeywords();
-        assertTrue( all.length > 0 );
-        assertEquals( "when",
-                      all[0] );
+        assertTrue(all.length > 0);
+        assertEquals("when", all[0]);
 
     }
-
+    
 }

Modified: labs/jbossrules/trunk/drools-ide-test/src/test/java/org/drools/ide/editors/completion/LocationDeterminatorTest.java
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-ide-test/src/test/java/org/drools/ide/editors/completion/LocationDeterminatorTest.java	2006-11-14 19:21:59 UTC (rev 7597)
+++ labs/jbossrules/trunk/drools-ide-test/src/test/java/org/drools/ide/editors/completion/LocationDeterminatorTest.java	2006-11-17 15:52:24 UTC (rev 7683)
@@ -6,707 +6,1193 @@
  * Test to check the location determination when doing code completion inside
  * rule condtions.
  * 
- * Possible locations:
- * LOCATION_BEGIN_OF_CONDITION
- * 		-> all drools condition keywords + imported classes
- * LOCATION_INSIDE_CONDITION_START
- * 		-> all properties of specified class
- * 
  * @author <a href="mailto:kris_verlaenen at hotmail.com">kris verlaenen </a>
  *
  */
 public class LocationDeterminatorTest extends TestCase {
 
     public void testColumnOperatorPattern() {
-        assertTrue( LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher( "( property " ).matches() );
-        assertTrue( LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher( "(    property " ).matches() );
-        assertTrue( LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher( "( property   " ).matches() );
-        assertTrue( LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher( "( name : property " ).matches() );
-        assertTrue( LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher( "(name:property " ).matches() );
-        assertTrue( LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher( "(    name:property " ).matches() );
-        assertTrue( LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher( "( name:property   " ).matches() );
-        assertTrue( LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher( "(   name  :  property  " ).matches() );
-        assertTrue( LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher( "( property1 == \"value\", property2 " ).matches() );
-        assertTrue( LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher( "( property1 == \"value\", name : property2 " ).matches() );
-        assertTrue( LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher( "( property1 == \"value\", name:property2 " ).matches() );
-        assertTrue( LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher( "( property1 == \"value\",   name  :  property2  " ).matches() );
-        assertFalse( LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher( "( prop" ).matches() );
-        assertFalse( LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher( "(prop" ).matches() );
-        assertFalse( LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher( "(    prop" ).matches() );
-        assertFalse( LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher( "( name:prop" ).matches() );
-        assertFalse( LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher( "(name:prop" ).matches() );
-        assertFalse( LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher( "( name : prop" ).matches() );
-        assertFalse( LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher( "(   name  :  prop" ).matches() );
-        assertFalse( LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher( "( property <= " ).matches() );
-        assertFalse( LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher( "( name : property == " ).matches() );
-        assertFalse( LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher( "(property==" ).matches() );
-        assertFalse( LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher( "( property contains " ).matches() );
-        assertFalse( LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher( "( property1 == \"value\", property2 >= " ).matches() );
+    	assertTrue(LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher("( property ").matches());
+    	assertTrue(LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher("(    property ").matches());
+    	assertTrue(LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher("( property   ").matches());
+    	assertTrue(LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher("( name : property ").matches());
+    	assertTrue(LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher("(name:property ").matches());
+    	assertTrue(LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher("(    name:property ").matches());
+    	assertTrue(LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher("( name:property   ").matches());
+    	assertTrue(LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher("(   name  :  property  ").matches());
+    	assertTrue(LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher("( property1 == \"value\", property2 ").matches());
+    	assertTrue(LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher("( property1 == \"value\", name : property2 ").matches());
+    	assertTrue(LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher("( property1 == \"value\", name:property2 ").matches());
+    	assertTrue(LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher("( property1 == \"value\",   name  :  property2  ").matches());
+    	assertFalse(LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher("( prop").matches());
+    	assertFalse(LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher("(prop").matches());
+    	assertFalse(LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher("(    prop").matches());
+    	assertFalse(LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher("( name:prop").matches());
+    	assertFalse(LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher("(name:prop").matches());
+    	assertFalse(LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher("( name : prop").matches());
+    	assertFalse(LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher("(   name  :  prop").matches());
+    	assertFalse(LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher("( property <= ").matches());
+    	assertFalse(LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher("( name : property == ").matches());
+    	assertFalse(LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher("(property==").matches());
+    	assertFalse(LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher("( property contains ").matches());
+    	assertFalse(LocationDeterminator.COLUMN_PATTERN_OPERATOR.matcher("( property1 == \"value\", property2 >= ").matches());
     }
 
     public void testColumnArgumentPattern() {
-        assertTrue( LocationDeterminator.COLUMN_PATTERN_COMPARATOR_ARGUMENT.matcher( "( property == " ).matches() );
-        assertTrue( LocationDeterminator.COLUMN_PATTERN_COMPARATOR_ARGUMENT.matcher( "( property >= " ).matches() );
-        assertTrue( LocationDeterminator.COLUMN_PATTERN_COMPARATOR_ARGUMENT.matcher( "(property== " ).matches() );
-        assertTrue( LocationDeterminator.COLUMN_PATTERN_COMPARATOR_ARGUMENT.matcher( "(   property   ==   " ).matches() );
-        assertTrue( LocationDeterminator.COLUMN_PATTERN_COMPARATOR_ARGUMENT.matcher( "( name : property == " ).matches() );
-        assertTrue( LocationDeterminator.COLUMN_PATTERN_COMPARATOR_ARGUMENT.matcher( "(name:property== " ).matches() );
-        assertTrue( LocationDeterminator.COLUMN_PATTERN_COMPARATOR_ARGUMENT.matcher( "(  name  :  property  ==  " ).matches() );
-        assertTrue( LocationDeterminator.COLUMN_PATTERN_COMPARATOR_ARGUMENT.matcher( "( property1 == \"value\", property2 == " ).matches() );
-        assertTrue( LocationDeterminator.COLUMN_PATTERN_COMPARATOR_ARGUMENT.matcher( "( property1 == \"value\",property2== " ).matches() );
-        assertTrue( LocationDeterminator.COLUMN_PATTERN_COMPARATOR_ARGUMENT.matcher( "( property1 == \"value\",  property2  ==  " ).matches() );
-        assertTrue( LocationDeterminator.COLUMN_PATTERN_COMPARATOR_ARGUMENT.matcher( "( property == otherProp" ).matches() );
-        assertTrue( LocationDeterminator.COLUMN_PATTERN_COMPARATOR_ARGUMENT.matcher( "(property==otherProp" ).matches() );
-        assertTrue( LocationDeterminator.COLUMN_PATTERN_CONTAINS_ARGUMENT.matcher( "( property contains " ).matches() );
-        assertTrue( LocationDeterminator.COLUMN_PATTERN_EXCLUDES_ARGUMENT.matcher( "(   property   excludes   " ).matches() );
+    	assertTrue(LocationDeterminator.COLUMN_PATTERN_COMPARATOR_ARGUMENT.matcher("( property == ").matches());
+    	assertTrue(LocationDeterminator.COLUMN_PATTERN_COMPARATOR_ARGUMENT.matcher("( property >= ").matches());
+    	assertTrue(LocationDeterminator.COLUMN_PATTERN_COMPARATOR_ARGUMENT.matcher("(property== ").matches());
+    	assertTrue(LocationDeterminator.COLUMN_PATTERN_COMPARATOR_ARGUMENT.matcher("(   property   ==   ").matches());
+    	assertTrue(LocationDeterminator.COLUMN_PATTERN_COMPARATOR_ARGUMENT.matcher("( name : property == ").matches());
+    	assertTrue(LocationDeterminator.COLUMN_PATTERN_COMPARATOR_ARGUMENT.matcher("(name:property== ").matches());
+    	assertTrue(LocationDeterminator.COLUMN_PATTERN_COMPARATOR_ARGUMENT.matcher("(  name  :  property  ==  ").matches());
+    	assertTrue(LocationDeterminator.COLUMN_PATTERN_COMPARATOR_ARGUMENT.matcher("( property1 == \"value\", property2 == ").matches());
+    	assertTrue(LocationDeterminator.COLUMN_PATTERN_COMPARATOR_ARGUMENT.matcher("( property1 == \"value\",property2== ").matches());
+    	assertTrue(LocationDeterminator.COLUMN_PATTERN_COMPARATOR_ARGUMENT.matcher("( property1 == \"value\",  property2  ==  ").matches());
+    	assertTrue(LocationDeterminator.COLUMN_PATTERN_COMPARATOR_ARGUMENT.matcher("( property == otherProp").matches());
+    	assertTrue(LocationDeterminator.COLUMN_PATTERN_COMPARATOR_ARGUMENT.matcher("(property==otherProp").matches());
+    	assertTrue(LocationDeterminator.COLUMN_PATTERN_CONTAINS_ARGUMENT.matcher("( property contains ").matches());
+    	assertTrue(LocationDeterminator.COLUMN_PATTERN_EXCLUDES_ARGUMENT.matcher("(   property   excludes   ").matches());
     }
-
+    
     public void testCheckLocationDetermination() {
-        String input = "rule MyRule \n" + "	when \n" + "		";
-        LocationDeterminator.Location location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_BEGIN_OF_CONDITION,
-                      location.getType() );
+        String input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		";
+        LocationDeterminator.Location location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_BEGIN_OF_CONDITION, location.getType());
+        
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class( condition == true ) \n" +
+        	"		";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_BEGIN_OF_CONDITION, location.getType());
+        
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		class: Class( condition == true, condition2 == null ) \n" +
+        	"		";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_BEGIN_OF_CONDITION, location.getType());
+        
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Cl";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_BEGIN_OF_CONDITION, location.getType());
 
-        input = "rule MyRule \n" + "	when \n" + "		Class( condition == true ) \n" + "		";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_BEGIN_OF_CONDITION,
-                      location.getType() );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class( condition == true ) \n" +
+        	"		Cl";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_BEGIN_OF_CONDITION, location.getType());
 
-        input = "rule MyRule \n" + "	when \n" + "		class: Class( condition == true, condition2 == null ) \n" + "		";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_BEGIN_OF_CONDITION,
-                      location.getType() );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		class: Cl";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_BEGIN_OF_CONDITION, location.getType());
 
-        input = "rule MyRule \n" + "	when \n" + "		Cl";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_BEGIN_OF_CONDITION,
-                      location.getType() );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		class:Cl";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_BEGIN_OF_CONDITION, location.getType());
 
-        input = "rule MyRule \n" + "	when \n" + "		Class( condition == true ) \n" + "		Cl";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_BEGIN_OF_CONDITION,
-                      location.getType() );
+        /** Inside of condition: start */
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class (";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_START, location.getType());
+        assertEquals("Class", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+    
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( na";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_START, location.getType());
+        assertEquals("Class", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+    
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( condition == true, ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_START, location.getType());
+        assertEquals("Class", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+    
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( condition == true, na";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_START, location.getType());
+        assertEquals("Class", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+    
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( \n" +
+        	"			";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_START, location.getType());
+        assertEquals("Class", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+    
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( condition == true, \n" +
+        	"			";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_START, location.getType());
+        assertEquals("Class", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+    
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( name : ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_START, location.getType());
+        assertEquals("Class", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+    
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( name: ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_START, location.getType());
+        assertEquals("Class", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+    
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( name:";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_START, location.getType());
+        assertEquals("Class", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+    
+        /** Inside of condition: Operator */
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( property ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_OPERATOR, location.getType());
+        assertEquals("Class", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+        assertEquals("property", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_PROPERTY_NAME));
+        
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class(property ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_OPERATOR, location.getType());
+        assertEquals("Class", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+        assertEquals("property", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_PROPERTY_NAME));
+        
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( name : property ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_OPERATOR, location.getType());
+        assertEquals("Class", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+        assertEquals("property", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_PROPERTY_NAME));
 
-        input = "rule MyRule \n" + "	when \n" + "		class: Cl";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_BEGIN_OF_CONDITION,
-                      location.getType() );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class (name:property ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_OPERATOR, location.getType());
+        assertEquals("Class", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+        assertEquals("property", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_PROPERTY_NAME));
 
-        input = "rule MyRule \n" + "	when \n" + "		class:Cl";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_BEGIN_OF_CONDITION,
-                      location.getType() );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class (name:property   ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_OPERATOR, location.getType());
+        assertEquals("Class", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+        assertEquals("property", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_PROPERTY_NAME));
 
-        /** Inside of condition: start */
-        input = "rule MyRule \n" + "	when \n" + "		Class (";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_INSIDE_CONDITION_START,
-                      location.getType() );
-        assertEquals( "Class",
-                      location.getProperty( LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME ) );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( name1 : property1, name : property ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_OPERATOR, location.getType());
+        assertEquals("Class", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+        assertEquals("property", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_PROPERTY_NAME));
 
-        input = "rule MyRule \n" + "	when \n" + "		Class ( na";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_INSIDE_CONDITION_START,
-                      location.getType() );
-        assertEquals( "Class",
-                      location.getProperty( LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME ) );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( name1 : property1 == \"value\", name : property ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_OPERATOR, location.getType());
+        assertEquals("Class", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+        assertEquals("property", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_PROPERTY_NAME));
 
-        input = "rule MyRule \n" + "	when \n" + "		Class ( condition == true, ";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_INSIDE_CONDITION_START,
-                      location.getType() );
-        assertEquals( "Class",
-                      location.getProperty( LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME ) );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( name1 : property1 == \"value\",property ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_OPERATOR, location.getType());
+        assertEquals("Class", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+        assertEquals("property", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_PROPERTY_NAME));
 
-        input = "rule MyRule \n" + "	when \n" + "		Class ( condition == true, na";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_INSIDE_CONDITION_START,
-                      location.getType() );
-        assertEquals( "Class",
-                      location.getProperty( LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME ) );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( name1 : property1, \n" + 
+        	"			name : property ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_OPERATOR, location.getType());
+        assertEquals("Class", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+        assertEquals("property", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_PROPERTY_NAME));
 
-        input = "rule MyRule \n" + "	when \n" + "		Class ( \n" + "			";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_INSIDE_CONDITION_START,
-                      location.getType() );
-        assertEquals( "Class",
-                      location.getProperty( LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME ) );
+        /** Inside of condition: argument */
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( property == ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_ARGUMENT, location.getType());
+        assertEquals("Class", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+        assertEquals("property", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_PROPERTY_NAME));
+        assertEquals("==", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_OPERATOR));
+        
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( property== ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_ARGUMENT, location.getType());
+        assertEquals("Class", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+        assertEquals("property", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_PROPERTY_NAME));
+        assertEquals("==", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_OPERATOR));
+        
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( name : property <= ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_ARGUMENT, location.getType());
+        assertEquals("Class", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+        assertEquals("property", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_PROPERTY_NAME));
+        assertEquals("<=", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_OPERATOR));
+        
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( name:property != ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_ARGUMENT, location.getType());
+        assertEquals("Class", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+        assertEquals("property", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_PROPERTY_NAME));
+        assertEquals("!=", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_OPERATOR));
+        
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( name1 : property1, property2 == ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_ARGUMENT, location.getType());
+        assertEquals("Class", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+        assertEquals("property2", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_PROPERTY_NAME));
+        assertEquals("==", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_OPERATOR));
+        
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class (name:property== ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_ARGUMENT, location.getType());
+        assertEquals("Class", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+        assertEquals("property", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_PROPERTY_NAME));
+        assertEquals("==", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_OPERATOR));
+        
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( property == otherPropertyN";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_ARGUMENT, location.getType());
+        assertEquals("Class", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+        assertEquals("property", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_PROPERTY_NAME));
+        assertEquals("==", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_OPERATOR));
+        
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( property == \"someth";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_ARGUMENT, location.getType());
+        assertEquals("Class", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+        assertEquals("property", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_PROPERTY_NAME));
+        assertEquals("==", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_OPERATOR));
+        
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( property contains ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_ARGUMENT, location.getType());
+        assertEquals("Class", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+        assertEquals("property", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_PROPERTY_NAME));
+        assertEquals("contains", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_OPERATOR));
+        
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( property excludes ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_ARGUMENT, location.getType());
+        assertEquals("Class", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+        assertEquals("property", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_PROPERTY_NAME));
+        assertEquals("excludes", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_OPERATOR));
+        
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( property matches \"prop";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_ARGUMENT, location.getType());
+        assertEquals("Class", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+        assertEquals("property", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_PROPERTY_NAME));
+        assertEquals("matches", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_OPERATOR));
+        
+        /** EXISTS */
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		exists ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_BEGIN_OF_CONDITION_EXISTS, location.getType());
 
-        input = "rule MyRule \n" + "	when \n" + "		Class ( condition == true, \n" + "			";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_INSIDE_CONDITION_START,
-                      location.getType() );
-        assertEquals( "Class",
-                      location.getProperty( LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME ) );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		exists ( ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_BEGIN_OF_CONDITION_EXISTS, location.getType());
 
-        input = "rule MyRule \n" + "	when \n" + "		Class ( name : ";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_INSIDE_CONDITION_START,
-                      location.getType() );
-        assertEquals( "Class",
-                      location.getProperty( LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME ) );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		exists(";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_BEGIN_OF_CONDITION_EXISTS, location.getType());
 
-        input = "rule MyRule \n" + "	when \n" + "		Class ( name: ";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_INSIDE_CONDITION_START,
-                      location.getType() );
-        assertEquals( "Class",
-                      location.getProperty( LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME ) );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		exists Cl";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_BEGIN_OF_CONDITION_EXISTS, location.getType());
 
-        input = "rule MyRule \n" + "	when \n" + "		Class ( name:";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_INSIDE_CONDITION_START,
-                      location.getType() );
-        assertEquals( "Class",
-                      location.getProperty( LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME ) );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		exists ( Cl";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_BEGIN_OF_CONDITION_EXISTS, location.getType());
 
-        /** Inside of condition: Operator */
-        input = "rule MyRule \n" + "	when \n" + "		Class ( property ";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_INSIDE_CONDITION_OPERATOR,
-                      location.getType() );
-        assertEquals( "Class",
-                      location.getProperty( LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME ) );
-        assertEquals( "property",
-                      location.getProperty( LocationDeterminator.LOCATION_PROPERTY_PROPERTY_NAME ) );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		exists ( name : Cl";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_BEGIN_OF_CONDITION_EXISTS, location.getType());
 
-        input = "rule MyRule \n" + "	when \n" + "		Class(property ";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_INSIDE_CONDITION_OPERATOR,
-                      location.getType() );
-        assertEquals( "Class",
-                      location.getProperty( LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME ) );
-        assertEquals( "property",
-                      location.getProperty( LocationDeterminator.LOCATION_PROPERTY_PROPERTY_NAME ) );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		exists Class (";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_START, location.getType());
+        assertEquals("Class", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
 
-        input = "rule MyRule \n" + "	when \n" + "		Class ( name : property ";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_INSIDE_CONDITION_OPERATOR,
-                      location.getType() );
-        assertEquals( "Class",
-                      location.getProperty( LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME ) );
-        assertEquals( "property",
-                      location.getProperty( LocationDeterminator.LOCATION_PROPERTY_PROPERTY_NAME ) );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		exists Class ( ) \n" +
+        	"       ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_BEGIN_OF_CONDITION, location.getType());
 
-        input = "rule MyRule \n" + "	when \n" + "		Class (name:property ";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_INSIDE_CONDITION_OPERATOR,
-                      location.getType() );
-        assertEquals( "Class",
-                      location.getProperty( LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME ) );
-        assertEquals( "property",
-                      location.getProperty( LocationDeterminator.LOCATION_PROPERTY_PROPERTY_NAME ) );
+        /** NOT */
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		not ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_BEGIN_OF_CONDITION_NOT, location.getType());
+    
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		not Cl";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_BEGIN_OF_CONDITION_NOT, location.getType());
 
-        input = "rule MyRule \n" + "	when \n" + "		Class (name:property   ";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_INSIDE_CONDITION_OPERATOR,
-                      location.getType() );
-        assertEquals( "Class",
-                      location.getProperty( LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME ) );
-        assertEquals( "property",
-                      location.getProperty( LocationDeterminator.LOCATION_PROPERTY_PROPERTY_NAME ) );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		not exists ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_BEGIN_OF_CONDITION_EXISTS, location.getType());
 
-        input = "rule MyRule \n" + "	when \n" + "		Class ( name1 : property1, name : property ";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_INSIDE_CONDITION_OPERATOR,
-                      location.getType() );
-        assertEquals( "Class",
-                      location.getProperty( LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME ) );
-        assertEquals( "property",
-                      location.getProperty( LocationDeterminator.LOCATION_PROPERTY_PROPERTY_NAME ) );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		not exists Cl";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_BEGIN_OF_CONDITION_EXISTS, location.getType());
 
-        input = "rule MyRule \n" + "	when \n" + "		Class ( name1 : property1 == \"value\", name : property ";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_INSIDE_CONDITION_OPERATOR,
-                      location.getType() );
-        assertEquals( "Class",
-                      location.getProperty( LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME ) );
-        assertEquals( "property",
-                      location.getProperty( LocationDeterminator.LOCATION_PROPERTY_PROPERTY_NAME ) );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		not Class (";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_START, location.getType());
+        assertEquals("Class", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
 
-        input = "rule MyRule \n" + "	when \n" + "		Class ( name1 : property1 == \"value\",property ";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_INSIDE_CONDITION_OPERATOR,
-                      location.getType() );
-        assertEquals( "Class",
-                      location.getProperty( LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME ) );
-        assertEquals( "property",
-                      location.getProperty( LocationDeterminator.LOCATION_PROPERTY_PROPERTY_NAME ) );
+        // TODO        
+//        input = 
+//        	"rule MyRule \n" +
+//        	"	when \n" +
+//        	"		not exists Class (";
+//        location = LocationDeterminator.getLocationInCondition(input);
+//        assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_START, location.getType());
+//        assertEquals("Class", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
 
-        input = "rule MyRule \n" + "	when \n" + "		Class ( name1 : property1, \n" + "			name : property ";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_INSIDE_CONDITION_OPERATOR,
-                      location.getType() );
-        assertEquals( "Class",
-                      location.getProperty( LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME ) );
-        assertEquals( "property",
-                      location.getProperty( LocationDeterminator.LOCATION_PROPERTY_PROPERTY_NAME ) );
+//        input = 
+//        	"rule MyRule \n" +
+//        	"	when \n" +
+//        	"		not exists name : Class (";
+//        location = LocationDeterminator.getLocationInCondition(input);
+//        assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_START, location.getType());
+//        assertEquals("Class", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
 
-        /** Inside of condition: argument */
-        input = "rule MyRule \n" + "	when \n" + "		Class ( property == ";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_INSIDE_CONDITION_ARGUMENT,
-                      location.getType() );
-        assertEquals( "Class",
-                      location.getProperty( LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME ) );
-        assertEquals( "property",
-                      location.getProperty( LocationDeterminator.LOCATION_PROPERTY_PROPERTY_NAME ) );
-        assertEquals( "==",
-                      location.getProperty( LocationDeterminator.LOCATION_PROPERTY_OPERATOR ) );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		not Class () \n" +
+        	"		";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_BEGIN_OF_CONDITION, location.getType());
+    
+        /** AND */
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( ) and ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_BEGIN_OF_CONDITION_AND_OR, location.getType());
 
-        input = "rule MyRule \n" + "	when \n" + "		Class ( property== ";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_INSIDE_CONDITION_ARGUMENT,
-                      location.getType() );
-        assertEquals( "Class",
-                      location.getProperty( LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME ) );
-        assertEquals( "property",
-                      location.getProperty( LocationDeterminator.LOCATION_PROPERTY_PROPERTY_NAME ) );
-        assertEquals( "==",
-                      location.getProperty( LocationDeterminator.LOCATION_PROPERTY_OPERATOR ) );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( ) &&  ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_BEGIN_OF_CONDITION_AND_OR, location.getType());
 
-        input = "rule MyRule \n" + "	when \n" + "		Class ( name : property <= ";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_INSIDE_CONDITION_ARGUMENT,
-                      location.getType() );
-        assertEquals( "Class",
-                      location.getProperty( LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME ) );
-        assertEquals( "property",
-                      location.getProperty( LocationDeterminator.LOCATION_PROPERTY_PROPERTY_NAME ) );
-        assertEquals( "<=",
-                      location.getProperty( LocationDeterminator.LOCATION_PROPERTY_OPERATOR ) );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class () and   ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_BEGIN_OF_CONDITION_AND_OR, location.getType());
+    
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		name : Class ( name: property ) and ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_BEGIN_OF_CONDITION_AND_OR, location.getType());
 
-        input = "rule MyRule \n" + "	when \n" + "		Class ( name:property != ";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_INSIDE_CONDITION_ARGUMENT,
-                      location.getType() );
-        assertEquals( "Class",
-                      location.getProperty( LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME ) );
-        assertEquals( "property",
-                      location.getProperty( LocationDeterminator.LOCATION_PROPERTY_PROPERTY_NAME ) );
-        assertEquals( "!=",
-                      location.getProperty( LocationDeterminator.LOCATION_PROPERTY_OPERATOR ) );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( name: property ) \n" + 
+        	"       and ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_BEGIN_OF_CONDITION_AND_OR, location.getType());
 
-        input = "rule MyRule \n" + "	when \n" + "		Class ( name1 : property1, property2 == ";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_INSIDE_CONDITION_ARGUMENT,
-                      location.getType() );
-        assertEquals( "Class",
-                      location.getProperty( LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME ) );
-        assertEquals( "property2",
-                      location.getProperty( LocationDeterminator.LOCATION_PROPERTY_PROPERTY_NAME ) );
-        assertEquals( "==",
-                      location.getProperty( LocationDeterminator.LOCATION_PROPERTY_OPERATOR ) );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( ) and Cl";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_BEGIN_OF_CONDITION_AND_OR, location.getType());
 
-        input = "rule MyRule \n" + "	when \n" + "		Class (name:property== ";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_INSIDE_CONDITION_ARGUMENT,
-                      location.getType() );
-        assertEquals( "Class",
-                      location.getProperty( LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME ) );
-        assertEquals( "property",
-                      location.getProperty( LocationDeterminator.LOCATION_PROPERTY_PROPERTY_NAME ) );
-        assertEquals( "==",
-                      location.getProperty( LocationDeterminator.LOCATION_PROPERTY_OPERATOR ) );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( ) and name : Cl";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_BEGIN_OF_CONDITION_AND_OR, location.getType());
 
-        input = "rule MyRule \n" + "	when \n" + "		Class ( property == otherPropertyN";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_INSIDE_CONDITION_ARGUMENT,
-                      location.getType() );
-        assertEquals( "Class",
-                      location.getProperty( LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME ) );
-        assertEquals( "property",
-                      location.getProperty( LocationDeterminator.LOCATION_PROPERTY_PROPERTY_NAME ) );
-        assertEquals( "==",
-                      location.getProperty( LocationDeterminator.LOCATION_PROPERTY_OPERATOR ) );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( ) && name : Cl";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_BEGIN_OF_CONDITION_AND_OR, location.getType());
 
-        input = "rule MyRule \n" + "	when \n" + "		Class ( property == \"someth";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_INSIDE_CONDITION_ARGUMENT,
-                      location.getType() );
-        assertEquals( "Class",
-                      location.getProperty( LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME ) );
-        assertEquals( "property",
-                      location.getProperty( LocationDeterminator.LOCATION_PROPERTY_PROPERTY_NAME ) );
-        assertEquals( "==",
-                      location.getProperty( LocationDeterminator.LOCATION_PROPERTY_OPERATOR ) );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( ) and Class ( ) \n" +
+        	"       ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_BEGIN_OF_CONDITION, location.getType());
 
-        input = "rule MyRule \n" + "	when \n" + "		Class ( property contains ";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_INSIDE_CONDITION_ARGUMENT,
-                      location.getType() );
-        assertEquals( "Class",
-                      location.getProperty( LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME ) );
-        assertEquals( "property",
-                      location.getProperty( LocationDeterminator.LOCATION_PROPERTY_PROPERTY_NAME ) );
-        assertEquals( "contains",
-                      location.getProperty( LocationDeterminator.LOCATION_PROPERTY_OPERATOR ) );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( ) and not Class ( ) \n" +
+        	"       ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_BEGIN_OF_CONDITION, location.getType());
 
-        input = "rule MyRule \n" + "	when \n" + "		Class ( property excludes ";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_INSIDE_CONDITION_ARGUMENT,
-                      location.getType() );
-        assertEquals( "Class",
-                      location.getProperty( LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME ) );
-        assertEquals( "property",
-                      location.getProperty( LocationDeterminator.LOCATION_PROPERTY_PROPERTY_NAME ) );
-        assertEquals( "excludes",
-                      location.getProperty( LocationDeterminator.LOCATION_PROPERTY_OPERATOR ) );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( ) and exists Class ( ) \n" +
+        	"       ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_BEGIN_OF_CONDITION, location.getType());
 
-        input = "rule MyRule \n" + "	when \n" + "		Class ( property matches \"prop";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_INSIDE_CONDITION_ARGUMENT,
-                      location.getType() );
-        assertEquals( "Class",
-                      location.getProperty( LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME ) );
-        assertEquals( "property",
-                      location.getProperty( LocationDeterminator.LOCATION_PROPERTY_PROPERTY_NAME ) );
-        assertEquals( "matches",
-                      location.getProperty( LocationDeterminator.LOCATION_PROPERTY_OPERATOR ) );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( ) and Class ( ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_START, location.getType());
 
-        /** EXISTS */
-        input = "rule MyRule \n" + "	when \n" + "		exists ";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_BEGIN_OF_CONDITION_EXISTS,
-                      location.getType() );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( ) and Class ( name ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_OPERATOR, location.getType());
+        assertEquals("name", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_PROPERTY_NAME));
 
-        input = "rule MyRule \n" + "	when \n" + "		exists ( ";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_BEGIN_OF_CONDITION_EXISTS,
-                      location.getType() );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( ) and Class ( name == ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_ARGUMENT, location.getType());
 
-        input = "rule MyRule \n" + "	when \n" + "		exists(";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_BEGIN_OF_CONDITION_EXISTS,
-                      location.getType() );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		exists Class ( ) and not ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_BEGIN_OF_CONDITION_NOT, location.getType());
 
-        input = "rule MyRule \n" + "	when \n" + "		exists Cl";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_BEGIN_OF_CONDITION_EXISTS,
-                      location.getType() );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		exists Class ( ) and exists ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_BEGIN_OF_CONDITION_EXISTS, location.getType());
 
-        input = "rule MyRule \n" + "	when \n" + "		exists ( Cl";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_BEGIN_OF_CONDITION_EXISTS,
-                      location.getType() );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( ) and not Class ( ) \n" +
+        	"       ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_BEGIN_OF_CONDITION, location.getType());
 
-        input = "rule MyRule \n" + "	when \n" + "		exists ( name : Cl";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_BEGIN_OF_CONDITION_EXISTS,
-                      location.getType() );
+        /** OR */
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( ) or ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_BEGIN_OF_CONDITION_AND_OR, location.getType());
 
-        input = "rule MyRule \n" + "	when \n" + "		exists Class (";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_INSIDE_CONDITION_START,
-                      location.getType() );
-        assertEquals( "Class",
-                      location.getProperty( LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME ) );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( ) || ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_BEGIN_OF_CONDITION_AND_OR, location.getType());
 
-        input = "rule MyRule \n" + "	when \n" + "		exists Class ( ) \n" + "       ";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_BEGIN_OF_CONDITION,
-                      location.getType() );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class () or   ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_BEGIN_OF_CONDITION_AND_OR, location.getType());
+    
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		name : Class ( name: property ) or ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_BEGIN_OF_CONDITION_AND_OR, location.getType());
 
-        /** NOT */
-        input = "rule MyRule \n" + "	when \n" + "		not ";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_BEGIN_OF_CONDITION_NOT,
-                      location.getType() );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( name: property ) \n" + 
+        	"       or ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_BEGIN_OF_CONDITION_AND_OR, location.getType());
 
-        input = "rule MyRule \n" + "	when \n" + "		not Cl";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_BEGIN_OF_CONDITION_NOT,
-                      location.getType() );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( ) or Cl";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_BEGIN_OF_CONDITION_AND_OR, location.getType());
 
-        input = "rule MyRule \n" + "	when \n" + "		not exists ";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_BEGIN_OF_CONDITION_EXISTS,
-                      location.getType() );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( ) or name : Cl";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_BEGIN_OF_CONDITION_AND_OR, location.getType());
 
-        input = "rule MyRule \n" + "	when \n" + "		not exists Cl";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_BEGIN_OF_CONDITION_EXISTS,
-                      location.getType() );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( ) || name : Cl";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_BEGIN_OF_CONDITION_AND_OR, location.getType());
 
-        input = "rule MyRule \n" + "	when \n" + "		not Class (";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_INSIDE_CONDITION_START,
-                      location.getType() );
-        assertEquals( "Class",
-                      location.getProperty( LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME ) );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( ) or Class ( ) \n" +
+        	"       ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_BEGIN_OF_CONDITION, location.getType());
 
-        // TODO        
-        //        input = 
-        //        	"rule MyRule \n" +
-        //        	"	when \n" +
-        //        	"		not exists Class (";
-        //        location = LocationDeterminator.getLocationInCondition(input);
-        //        assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_START, location.getType());
-        //        assertEquals("Class", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
-        //
-        //        input = 
-        //        	"rule MyRule \n" +
-        //        	"	when \n" +
-        //        	"		not exists name : Class (";
-        //        location = LocationDeterminator.getLocationInCondition(input);
-        //        assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_START, location.getType());
-        //        assertEquals("Class", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( ) or Class ( ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_START, location.getType());
 
-        input = "rule MyRule \n" + "	when \n" + "		not Class () \n" + "		";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_BEGIN_OF_CONDITION,
-                      location.getType() );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( ) or Class ( name ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_OPERATOR, location.getType());
+        assertEquals("name", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_PROPERTY_NAME));
 
-        /** AND */
-        input = "rule MyRule \n" + "	when \n" + "		Class ( ) and ";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_BEGIN_OF_CONDITION_AND_OR,
-                      location.getType() );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( ) or Class ( name == ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_ARGUMENT, location.getType());
 
-        input = "rule MyRule \n" + "	when \n" + "		Class ( ) &&  ";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_BEGIN_OF_CONDITION_AND_OR,
-                      location.getType() );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		exists Class ( ) or not ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_BEGIN_OF_CONDITION_NOT, location.getType());
 
-        input = "rule MyRule \n" + "	when \n" + "		Class () and   ";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_BEGIN_OF_CONDITION_AND_OR,
-                      location.getType() );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		exists Class ( ) or exists ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_BEGIN_OF_CONDITION_EXISTS, location.getType());
 
-        input = "rule MyRule \n" + "	when \n" + "		name : Class ( name: property ) and ";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_BEGIN_OF_CONDITION_AND_OR,
-                      location.getType() );
+        /** EVAL */
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		eval ( ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_INSIDE_EVAL, location.getType());
+        assertEquals("", location.getProperty(LocationDeterminator.LOCATION_EVAL_CONTENT));
 
-        input = "rule MyRule \n" + "	when \n" + "		Class ( name: property ) \n" + "       and ";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_BEGIN_OF_CONDITION_AND_OR,
-                      location.getType() );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		eval(";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_INSIDE_EVAL, location.getType());
+        assertEquals("", location.getProperty(LocationDeterminator.LOCATION_EVAL_CONTENT));
 
-        input = "rule MyRule \n" + "	when \n" + "		Class ( ) and Cl";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_BEGIN_OF_CONDITION_AND_OR,
-                      location.getType() );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		eval( myCla";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_INSIDE_EVAL, location.getType());
+        assertEquals("myCla", location.getProperty(LocationDeterminator.LOCATION_EVAL_CONTENT));
 
-        input = "rule MyRule \n" + "	when \n" + "		Class ( ) and name : Cl";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_BEGIN_OF_CONDITION_AND_OR,
-                      location.getType() );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		eval( param.getMetho";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_INSIDE_EVAL, location.getType());
+        assertEquals("param.getMetho", location.getProperty(LocationDeterminator.LOCATION_EVAL_CONTENT));
 
-        input = "rule MyRule \n" + "	when \n" + "		Class ( ) && name : Cl";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_BEGIN_OF_CONDITION_AND_OR,
-                      location.getType() );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		eval( param.getMethod(";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_INSIDE_EVAL, location.getType());
+        assertEquals("param.getMethod(", location.getProperty(LocationDeterminator.LOCATION_EVAL_CONTENT));
 
-        input = "rule MyRule \n" + "	when \n" + "		Class ( ) and Class ( ) \n" + "       ";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_BEGIN_OF_CONDITION,
-                      location.getType() );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		eval( param.getMethod().get";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_INSIDE_EVAL, location.getType());
+        assertEquals("param.getMethod().get", location.getProperty(LocationDeterminator.LOCATION_EVAL_CONTENT));
 
-        input = "rule MyRule \n" + "	when \n" + "		Class ( ) and not Class ( ) \n" + "       ";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_BEGIN_OF_CONDITION,
-                      location.getType() );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		eval( param.getMethod(\"someStringWith)))\").get";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_INSIDE_EVAL, location.getType());
+        assertEquals("param.getMethod(\"someStringWith)))\").get", location.getProperty(LocationDeterminator.LOCATION_EVAL_CONTENT));
 
-        input = "rule MyRule \n" + "	when \n" + "		Class ( ) and exists Class ( ) \n" + "       ";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_BEGIN_OF_CONDITION,
-                      location.getType() );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		eval( param.getMethod(\"someStringWith(((\").get";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_INSIDE_EVAL, location.getType());
+        assertEquals("param.getMethod(\"someStringWith(((\").get", location.getProperty(LocationDeterminator.LOCATION_EVAL_CONTENT));
 
-        input = "rule MyRule \n" + "	when \n" + "		Class ( ) and Class ( ";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_INSIDE_CONDITION_START,
-                      location.getType() );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		eval( true )";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_BEGIN_OF_CONDITION, location.getType());
 
-        input = "rule MyRule \n" + "	when \n" + "		Class ( ) and Class ( name ";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_INSIDE_CONDITION_OPERATOR,
-                      location.getType() );
-        assertEquals( "name",
-                      location.getProperty( LocationDeterminator.LOCATION_PROPERTY_PROPERTY_NAME ) );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		eval( param.getProperty(name).isTrue() )";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_BEGIN_OF_CONDITION, location.getType());
 
-        input = "rule MyRule \n" + "	when \n" + "		Class ( ) and Class ( name == ";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_INSIDE_CONDITION_ARGUMENT,
-                      location.getType() );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		eval( param.getProperty(\"someStringWith(((\").isTrue() )";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_BEGIN_OF_CONDITION, location.getType());
 
-        input = "rule MyRule \n" + "	when \n" + "		exists Class ( ) and not ";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_BEGIN_OF_CONDITION_NOT,
-                      location.getType() );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		eval( param.getProperty((((String) s) )";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_INSIDE_EVAL, location.getType());
+        assertEquals("param.getProperty((((String) s) )", location.getProperty(LocationDeterminator.LOCATION_EVAL_CONTENT));
 
-        input = "rule MyRule \n" + "	when \n" + "		exists Class ( ) and exists ";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_BEGIN_OF_CONDITION_EXISTS,
-                      location.getType() );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		eval( param.getProperty((((String) s))))";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_BEGIN_OF_CONDITION, location.getType());
 
-        input = "rule MyRule \n" + "	when \n" + "		Class ( ) and not Class ( ) \n" + "       ";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_BEGIN_OF_CONDITION,
-                      location.getType() );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		eval( true ) \n" +
+        	"       ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_BEGIN_OF_CONDITION, location.getType());
 
-        /** OR */
-        input = "rule MyRule \n" + "	when \n" + "		Class ( ) or ";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_BEGIN_OF_CONDITION_AND_OR,
-                      location.getType() );
+        /** MULTIPLE RESTRICTIONS */
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( property > 0 & ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_OPERATOR, location.getType());
+        assertEquals("Class", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+        assertEquals("property", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_PROPERTY_NAME));
 
-        input = "rule MyRule \n" + "	when \n" + "		Class ( ) || ";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_BEGIN_OF_CONDITION_AND_OR,
-                      location.getType() );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( property > 0 & " +
+        	"       ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_OPERATOR, location.getType());
+        assertEquals("Class", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+        assertEquals("property", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_PROPERTY_NAME));
 
-        input = "rule MyRule \n" + "	when \n" + "		Class () or   ";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_BEGIN_OF_CONDITION_AND_OR,
-                      location.getType() );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( name : property1, property2 > 0 & ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_OPERATOR, location.getType());
+        assertEquals("Class", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+        assertEquals("property2", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_PROPERTY_NAME));
 
-        input = "rule MyRule \n" + "	when \n" + "		name : Class ( name: property ) or ";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_BEGIN_OF_CONDITION_AND_OR,
-                      location.getType() );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( property1 < 20, property2 > 0 & ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_OPERATOR, location.getType());
+        assertEquals("Class", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+        assertEquals("property2", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_PROPERTY_NAME));
 
-        input = "rule MyRule \n" + "	when \n" + "		Class ( name: property ) \n" + "       or ";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_BEGIN_OF_CONDITION_AND_OR,
-                      location.getType() );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( property > 0 & < ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_ARGUMENT, location.getType());
+        assertEquals("Class", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+        assertEquals("property", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_PROPERTY_NAME));
+        assertEquals("<", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_OPERATOR));
 
-        input = "rule MyRule \n" + "	when \n" + "		Class ( ) or Cl";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_BEGIN_OF_CONDITION_AND_OR,
-                      location.getType() );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( property > 0 | ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_OPERATOR, location.getType());
+        assertEquals("Class", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+        assertEquals("property", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_PROPERTY_NAME));
 
-        input = "rule MyRule \n" + "	when \n" + "		Class ( ) or name : Cl";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_BEGIN_OF_CONDITION_AND_OR,
-                      location.getType() );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( property > 0 | \n" +
+        	"       ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_OPERATOR, location.getType());
+        assertEquals("Class", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+        assertEquals("property", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_PROPERTY_NAME));
 
-        input = "rule MyRule \n" + "	when \n" + "		Class ( ) || name : Cl";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_BEGIN_OF_CONDITION_AND_OR,
-                      location.getType() );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( name : property1, property2 > 0 | ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_OPERATOR, location.getType());
+        assertEquals("Class", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+        assertEquals("property2", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_PROPERTY_NAME));
 
-        input = "rule MyRule \n" + "	when \n" + "		Class ( ) or Class ( ) \n" + "       ";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_BEGIN_OF_CONDITION,
-                      location.getType() );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( property1 < 20, property2 > 0 | ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_OPERATOR, location.getType());
+        assertEquals("Class", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+        assertEquals("property2", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_PROPERTY_NAME));
 
-        input = "rule MyRule \n" + "	when \n" + "		Class ( ) or Class ( ";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_INSIDE_CONDITION_START,
-                      location.getType() );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( property > 0 ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_END, location.getType());
 
-        input = "rule MyRule \n" + "	when \n" + "		Class ( ) or Class ( name ";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_INSIDE_CONDITION_OPERATOR,
-                      location.getType() );
-        assertEquals( "name",
-                      location.getProperty( LocationDeterminator.LOCATION_PROPERTY_PROPERTY_NAME ) );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( property > 0 \n" +
+        	"       ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_END, location.getType());
 
-        input = "rule MyRule \n" + "	when \n" + "		Class ( ) or Class ( name == ";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_INSIDE_CONDITION_ARGUMENT,
-                      location.getType() );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( property > 0 & < 10 ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_END, location.getType());
 
-        input = "rule MyRule \n" + "	when \n" + "		exists Class ( ) or not ";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_BEGIN_OF_CONDITION_NOT,
-                      location.getType() );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( property > 0 | < 10 ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_END, location.getType());
 
-        input = "rule MyRule \n" + "	when \n" + "		exists Class ( ) or exists ";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_BEGIN_OF_CONDITION_EXISTS,
-                      location.getType() );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( property == \"test\" | == \"test2\" ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_END, location.getType());
 
-        /** EVAL */
-        input = "rule MyRule \n" + "	when \n" + "		eval ( ";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_INSIDE_EVAL,
-                      location.getType() );
-        assertEquals( "",
-                      location.getProperty( LocationDeterminator.LOCATION_EVAL_CONTENT ) );
+        /** FROM */
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( property > 0 ) ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_BEGIN_OF_CONDITION, location.getType());
 
-        input = "rule MyRule \n" + "	when \n" + "		eval(";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_INSIDE_EVAL,
-                      location.getType() );
-        assertEquals( "",
-                      location.getProperty( LocationDeterminator.LOCATION_EVAL_CONTENT ) );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( property > 0 ) fr";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_BEGIN_OF_CONDITION, location.getType());
 
-        input = "rule MyRule \n" + "	when \n" + "		eval( myCla";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_INSIDE_EVAL,
-                      location.getType() );
-        assertEquals( "myCla",
-                      location.getProperty( LocationDeterminator.LOCATION_EVAL_CONTENT ) );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( property > 0 ) from ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_FROM, location.getType());
+        assertEquals("", location.getProperty(LocationDeterminator.LOCATION_FROM_CONTENT));
 
-        input = "rule MyRule \n" + "	when \n" + "		eval( param.getMetho";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_INSIDE_EVAL,
-                      location.getType() );
-        assertEquals( "param.getMetho",
-                      location.getProperty( LocationDeterminator.LOCATION_EVAL_CONTENT ) );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( property > 0 ) from myGlob";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_FROM, location.getType());
+        assertEquals("myGlob", location.getProperty(LocationDeterminator.LOCATION_FROM_CONTENT));
 
-        input = "rule MyRule \n" + "	when \n" + "		eval( param.getMethod(";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_INSIDE_EVAL,
-                      location.getType() );
-        assertEquals( "param.getMethod(",
-                      location.getProperty( LocationDeterminator.LOCATION_EVAL_CONTENT ) );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( property > 0 ) from myGlobal.get";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_FROM, location.getType());
+        assertEquals("myGlobal.get", location.getProperty(LocationDeterminator.LOCATION_FROM_CONTENT));
 
-        input = "rule MyRule \n" + "	when \n" + "		eval( param.getMethod().get";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_INSIDE_EVAL,
-                      location.getType() );
-        assertEquals( "param.getMethod().get",
-                      location.getProperty( LocationDeterminator.LOCATION_EVAL_CONTENT ) );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( property > 0 ) from myGlobal.getList() \n" +
+        	"       ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_BEGIN_OF_CONDITION, location.getType());
 
-        input = "rule MyRule \n" + "	when \n" + "		eval( param.getMethod(\"someStringWith)))\").get";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_INSIDE_EVAL,
-                      location.getType() );
-        assertEquals( "param.getMethod(\"someStringWith)))\").get",
-                      location.getProperty( LocationDeterminator.LOCATION_EVAL_CONTENT ) );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( property > 0 ) from getDroolsFunction() \n" +
+        	"       ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_BEGIN_OF_CONDITION, location.getType());
 
-        input = "rule MyRule \n" + "	when \n" + "		eval( param.getMethod(\"someStringWith(((\").get";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_INSIDE_EVAL,
-                      location.getType() );
-        assertEquals( "param.getMethod(\"someStringWith(((\").get",
-                      location.getProperty( LocationDeterminator.LOCATION_EVAL_CONTENT ) );
+        /** FROM ACCUMULATE */
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( property > 0 ) from accumulate ( ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_FROM_ACCUMULATE, location.getType());
 
-        input = "rule MyRule \n" + "	when \n" + "		eval( true )";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_BEGIN_OF_CONDITION,
-                      location.getType() );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( property > 0 ) from accumulate(";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_FROM_ACCUMULATE, location.getType());
 
-        input = "rule MyRule \n" + "	when \n" + "		eval( param.getProperty(name).isTrue() )";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_BEGIN_OF_CONDITION,
-                      location.getType() );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( property > 0 ) from accumulate( \n" +
+        	"			$cheese : Cheese( type == $likes ), \n" +
+        	"			init( int total = 0; ), \n" +
+        	"			action( total += $cheese.getPrice(); ), \n" +
+        	"           result( new Integer( total ) ) \n" +
+        	"		) \n" +
+        	"		";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_BEGIN_OF_CONDITION, location.getType());
 
-        input = "rule MyRule \n" + "	when \n" + "		eval( param.getProperty(\"someStringWith(((\").isTrue() )";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_BEGIN_OF_CONDITION,
-                      location.getType() );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( property > 0 ) from accumulate( \n" +
+        	"			$cheese : Cheese( type == $likes ), \n" +
+        	"			init( ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_FROM_ACCUMULATE_INIT_INSIDE, location.getType());
+        assertEquals("", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_FROM_ACCUMULATE_INIT_CONTENT));
 
-        input = "rule MyRule \n" + "	when \n" + "		eval( param.getProperty((((String) s) )";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_INSIDE_EVAL,
-                      location.getType() );
-        assertEquals( "param.getProperty((((String) s) )",
-                      location.getProperty( LocationDeterminator.LOCATION_EVAL_CONTENT ) );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( property > 0 ) from accumulate( \n" +
+        	"			$cheese : Cheese( type == $likes ), \n" +
+        	"			init( int total = 0; ), \n" +
+        	"			action( ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_FROM_ACCUMULATE_ACTION_INSIDE, location.getType());
+        assertEquals("int total = 0; ", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_FROM_ACCUMULATE_INIT_CONTENT));
+        assertEquals("", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_FROM_ACCUMULATE_ACTION_CONTENT));
 
-        input = "rule MyRule \n" + "	when \n" + "		eval( param.getProperty((((String) s))))";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_BEGIN_OF_CONDITION,
-                      location.getType() );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( property > 0 ) from accumulate( \n" +
+        	"			$cheese : Cheese( type == $likes ), \n" +
+        	"			init( int total = 0; ), \n" +
+        	"			action( total += $cheese.getPrice(); ), \n" +
+        	"           result( ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_FROM_ACCUMULATE_RESULT_INSIDE, location.getType());
+        assertEquals("int total = 0; ", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_FROM_ACCUMULATE_INIT_CONTENT));
+        assertEquals("total += $cheese.getPrice(); ", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_FROM_ACCUMULATE_ACTION_CONTENT));
+        assertEquals("", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_FROM_ACCUMULATE_RESULT_CONTENT));
 
-        input = "rule MyRule \n" + "	when \n" + "		eval( true ) \n" + "       ";
-        location = LocationDeterminator.getLocationInCondition( input );
-        assertEquals( LocationDeterminator.LOCATION_BEGIN_OF_CONDITION,
-                      location.getType() );
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( property > 0 ) from accumulate( \n" +
+        	"			$cheese : Cheese( type == $likes ), \n" +
+        	"			init( int total =";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_FROM_ACCUMULATE_INIT_INSIDE, location.getType());
+        assertEquals("int total =", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_FROM_ACCUMULATE_INIT_CONTENT));
+
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( property > 0 ) from accumulate( \n" +
+        	"			$cheese : Cheese( type == $likes ), \n" +
+        	"			init( int total = 0; ), \n" +
+        	"			action( total += $ch";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_FROM_ACCUMULATE_ACTION_INSIDE, location.getType());
+        assertEquals("int total = 0; ", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_FROM_ACCUMULATE_INIT_CONTENT));
+        assertEquals("total += $ch", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_FROM_ACCUMULATE_ACTION_CONTENT));
+
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( property > 0 ) from accumulate( \n" +
+        	"			$cheese : Cheese( type == $likes ), \n" +
+        	"			init( int total = 0; ), \n" +
+        	"			action( total += $cheese.getPrice(); ), \n" +
+        	"           result( new Integer( tot";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_FROM_ACCUMULATE_RESULT_INSIDE, location.getType());
+        assertEquals("int total = 0; ", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_FROM_ACCUMULATE_INIT_CONTENT));
+        assertEquals("total += $cheese.getPrice(); ", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_FROM_ACCUMULATE_ACTION_CONTENT));
+        assertEquals("new Integer( tot", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_FROM_ACCUMULATE_RESULT_CONTENT));
+
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( property > 0 ) from accumulate( \n" +
+        	"			$cheese : Cheese( ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_START, location.getType());
+        assertEquals("Cheese", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( property > 0 ) from accumulate( \n" +
+        	"			$cheese : Cheese( type ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_OPERATOR, location.getType());
+        assertEquals("Cheese", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+        assertEquals("type", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_PROPERTY_NAME));
+
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( property > 0 ) from accumulate( \n" +
+        	"			$cheese : Cheese( type == ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_ARGUMENT, location.getType());
+        assertEquals("Cheese", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+        assertEquals("type", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_PROPERTY_NAME));
+
+        /** FROM COLLECT */
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( property > 0 ) from collect ( ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_FROM_COLLECT, location.getType());
+
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( property > 0 ) from collect(";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_FROM_COLLECT, location.getType());
+
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( property > 0 ) from collect ( \n" +
+        	"			Cheese( type == $likes )" +
+        	"		) \n" +
+        	"		";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_BEGIN_OF_CONDITION, location.getType());
+
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( property > 0 ) from collect ( \n" +
+        	"			Cheese( ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_START, location.getType());
+        assertEquals("Cheese", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( property > 0 ) from collect ( \n" +
+        	"			Cheese( type ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_OPERATOR, location.getType());
+        assertEquals("Cheese", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+        assertEquals("type", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_PROPERTY_NAME));
+
+        input = 
+        	"rule MyRule \n" +
+        	"	when \n" +
+        	"		Class ( property > 0 ) from collect ( \n" +
+        	"			Cheese( type == ";
+        location = LocationDeterminator.getLocationInCondition(input);
+        assertEquals(LocationDeterminator.LOCATION_INSIDE_CONDITION_ARGUMENT, location.getType());
+        assertEquals("Cheese", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_CLASS_NAME));
+        assertEquals("type", location.getProperty(LocationDeterminator.LOCATION_PROPERTY_PROPERTY_NAME));
     }
-
+    
 }

Copied: labs/jbossrules/trunk/drools-ide-test/src/test/java/org/drools/ide/editors/rete (from rev 7597, labs/jbossrules/branches/3.0.x/drools-ide-test/src/test/java/org/drools/ide/editors/rete)

Deleted: labs/jbossrules/trunk/drools-ide-test/src/test/java/org/drools/ide/editors/rete/ReteooLayoutFactoryTest.java
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-ide-test/src/test/java/org/drools/ide/editors/rete/ReteooLayoutFactoryTest.java	2006-11-14 19:21:59 UTC (rev 7597)
+++ labs/jbossrules/trunk/drools-ide-test/src/test/java/org/drools/ide/editors/rete/ReteooLayoutFactoryTest.java	2006-11-17 15:52:24 UTC (rev 7683)
@@ -1,209 +0,0 @@
-package org.drools.ide.editors.rete;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.util.Arrays;
-import java.util.Comparator;
-import java.util.List;
-
-import junit.framework.TestCase;
-
-import org.drools.PackageIntegrationException;
-import org.drools.RuleBase;
-import org.drools.compiler.DroolsParserException;
-import org.drools.ide.editors.rete.model.ReteGraph;
-import org.drools.reteoo.AlphaNodeVertex;
-import org.drools.reteoo.BaseVertex;
-import org.drools.reteoo.LeftInputAdapterNodeVertex;
-import org.drools.reteoo.ObjectTypeNodeVertex;
-import org.drools.reteoo.ReteVertex;
-import org.drools.reteoo.ReteooVisitor;
-import org.drools.reteoo.TerminalNodeVertex;
-
-/**
- * 
- * Integration-like tests
- * 
- * Testing {@link ReteooLayoutFactory}
- * It is using following components:
- * {@link Row},
- * {@link RowList},
- * org.drools.reteoo.*Vertex,
- * org.drools.ide.editors.rete.model.*
- * 
- * @author Ahti Kitsik
- *
- */
-public class ReteooLayoutFactoryTest extends TestCase {
-
-    /**
-     * Constructor.
-     * 
-     * @param name case name
-     */
-    public ReteooLayoutFactoryTest(String name) {
-        super( name );
-    }
-
-    /**
-     * Test method for {@link org.drools.ide.editors.rete.ReteooLayoutFactory#calculateReteRows(org.drools.reteoo.BaseVertex)}.
-     * @throws IOException 
-     * @throws DroolsParserException 
-     * @throws PackageIntegrationException 
-     */
-    public final void testCalculateReteRows() throws IOException,
-                                             PackageIntegrationException,
-                                             DroolsParserException {
-        ReteGraph graph = new ReteGraph();
-        BaseVertex root = loadRete( graph );
-        final RowList rows = ReteooLayoutFactory.calculateReteRows( root );
-
-        int rownum = rows.getDepth();
-
-        assertEquals( 5,
-                      rownum );
-
-        int[] expectedDepths = new int[]{-1, 0, 1, 2, 3};
-        int[] expectedSizes = new int[]{1, 1, 2, 2, 2};
-
-        for ( int j = 0; j < rownum; j++ ) {
-            final Row row = rows.get( j );
-            final int rowDepth = row.getDepth();
-            assertEquals( expectedDepths[j],
-                          rowDepth );
-            assertEquals( expectedSizes[j],
-                          row.getVertices().size() );
-        }
-
-    }
-
-    /**
-     * Test method for {@link org.drools.ide.editors.rete.ReteooLayoutFactory#layoutRowList(org.drools.ide.editors.rete.model.ReteGraph, org.drools.ide.editors.rete.RowList)}.
-     * 
-     * @throws IOException 
-     * @throws DroolsParserException 
-     * @throws PackageIntegrationException 
-     */
-    public final void testLayoutRowList() throws PackageIntegrationException,
-                                         DroolsParserException,
-                                         IOException {
-        ReteGraph graph = new ReteGraph();
-        BaseVertex root = loadRete( graph );
-        final RowList rows = ReteooLayoutFactory.calculateReteRows( root );
-
-        ReteooLayoutFactory.layoutRowList( graph,
-                                           rows );
-
-        final List nodes = graph.getChildren();
-
-        BaseVertex[] yOrder = (BaseVertex[]) nodes.toArray( new BaseVertex[0] );
-        Arrays.sort( yOrder,
-                     new Comparator() {
-                         public int compare(Object o1,
-                                            Object o2) {
-                             BaseVertex v1 = (BaseVertex) o1;
-                             BaseVertex v2 = (BaseVertex) o2;
-                             int y1 = v1.getLocation().y;
-                             int y2 = v2.getLocation().y;
-                             return new Integer( y1 ).compareTo( new Integer( y2 ) );
-                         }
-
-                     } );
-
-        Class[] expectedTypes = new Class[]{ReteVertex.class, ObjectTypeNodeVertex.class, AlphaNodeVertex.class, AlphaNodeVertex.class, LeftInputAdapterNodeVertex.class, LeftInputAdapterNodeVertex.class, TerminalNodeVertex.class,
-                TerminalNodeVertex.class};
-
-        for ( int i = 0; i < yOrder.length; i++ ) {
-            assertEquals( expectedTypes[i],
-                          yOrder[i].getClass() );
-            if ( i > 0 ) {
-                // If current vertex has same type as previous then
-                // y-pos should match and x-pos should not match.                
-                // If type is different then y-pos should *not* match.
-
-                BaseVertex current = yOrder[i];
-                BaseVertex previous = yOrder[i - 1];
-                if ( current.getClass().equals( previous.getClass() ) ) {
-                    assertEquals( current.getLocation().y,
-                                  previous.getLocation().y );
-                    assertNotSame( new Integer( current.getLocation().x ),
-                                   new Integer( previous.getLocation().x ) );
-                } else {
-                    assertNotSame( new Integer( current.getLocation().y ),
-                                   new Integer( previous.getLocation().y ) );
-                }
-            }
-        }
-
-    }
-
-    private BaseVertex loadRete(ReteGraph graph) throws IOException,
-                                                DroolsParserException,
-                                                PackageIntegrationException {
-        final InputStream is = getClass().getClassLoader().getResourceAsStream( "simplerule.drl" );
-        String drl = streamToString( is );
-
-        final RuleBase ruleBase = ReteViewer.parseRuleBase( drl,
-                                                            null );
-
-        final ReteooVisitor visitor = new ReteooVisitor( graph );
-        visitor.visit( ruleBase );
-
-        BaseVertex root = visitor.getRootVertex();
-        return root;
-    }
-
-    private String streamToString(InputStream is) throws IOException {
-        byte[] buffer = new byte[4096];
-        OutputStream outputStream = new ByteArrayOutputStream();
-
-        while ( true ) {
-            int read = is.read( buffer );
-
-            if ( read == -1 ) {
-                break;
-            }
-
-            outputStream.write( buffer,
-                                0,
-                                read );
-        }
-
-        outputStream.close();
-        is.close();
-
-        return outputStream.toString();
-    }
-
-    /**
-     * Used by simplerule.drl
-     *
-     */
-    public static class Message {
-        public static final int HELLO   = 0;
-        public static final int GOODBYE = 1;
-
-        private String          message;
-
-        private int             status;
-
-        public String getMessage() {
-            return this.message;
-        }
-
-        public void setMessage(final String message) {
-            this.message = message;
-        }
-
-        public int getStatus() {
-            return this.status;
-        }
-
-        public void setStatus(final int status) {
-            this.status = status;
-        }
-    }
-
-}

Copied: labs/jbossrules/trunk/drools-ide-test/src/test/java/org/drools/ide/editors/rete/ReteooLayoutFactoryTest.java (from rev 7597, labs/jbossrules/branches/3.0.x/drools-ide-test/src/test/java/org/drools/ide/editors/rete/ReteooLayoutFactoryTest.java)
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-ide-test/src/test/java/org/drools/ide/editors/rete/ReteooLayoutFactoryTest.java	2006-11-14 19:21:59 UTC (rev 7597)
+++ labs/jbossrules/trunk/drools-ide-test/src/test/java/org/drools/ide/editors/rete/ReteooLayoutFactoryTest.java	2006-11-17 15:52:24 UTC (rev 7683)
@@ -0,0 +1,213 @@
+package org.drools.ide.editors.rete;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.Arrays;
+import java.util.Comparator;
+import java.util.List;
+
+import junit.framework.TestCase;
+
+import org.drools.PackageIntegrationException;
+import org.drools.RuleBase;
+import org.drools.compiler.DroolsParserException;
+import org.drools.ide.editors.rete.model.ReteGraph;
+import org.drools.reteoo.AlphaNodeVertex;
+import org.drools.reteoo.BaseVertex;
+import org.drools.reteoo.LeftInputAdapterNodeVertex;
+import org.drools.reteoo.ObjectTypeNodeVertex;
+import org.drools.reteoo.ReteVertex;
+import org.drools.reteoo.ReteooVisitor;
+import org.drools.reteoo.TerminalNodeVertex;
+
+/**
+ * 
+ * Integration-like tests
+ * 
+ * Testing {@link ReteooLayoutFactory}
+ * It is using following components:
+ * {@link Row},
+ * {@link RowList},
+ * org.drools.reteoo.*Vertex,
+ * org.drools.ide.editors.rete.model.*
+ * 
+ * @author Ahti Kitsik
+ *
+ */
+public class ReteooLayoutFactoryTest extends TestCase {
+
+    /**
+     * Constructor.
+     * 
+     * @param name case name
+     */
+    public ReteooLayoutFactoryTest(String name) {
+        super( name );
+    }
+
+    /**
+     * Test method for {@link org.drools.ide.editors.rete.ReteooLayoutFactory#calculateReteRows(org.drools.reteoo.BaseVertex)}.
+     * @throws IOException 
+     * @throws DroolsParserException 
+     * @throws PackageIntegrationException 
+     * @throws DroolsParserException 
+     * @throws PackageIntegrationException 
+     */
+    public final void testCalculateReteRows() throws IOException,
+                                             PackageIntegrationException,
+                                             DroolsParserException {
+        ReteGraph graph = new ReteGraph();
+        BaseVertex root = loadRete( graph );
+        final RowList rows = ReteooLayoutFactory.calculateReteRows( root );
+
+        int rownum = rows.getDepth();
+
+        assertEquals( 5,
+                      rownum );
+
+        int[] expectedDepths = new int[]{-1, 0, 1, 2, 3};
+        int[] expectedSizes = new int[]{1, 1, 2, 2, 2};
+
+        for ( int j = 0; j < rownum; j++ ) {
+            final Row row = rows.get( j );
+            final int rowDepth = row.getDepth();
+            assertEquals( expectedDepths[j],
+                          rowDepth );
+            assertEquals( expectedSizes[j],
+                          row.getVertices().size() );
+        }
+
+    }
+
+    /**
+     * Test method for {@link org.drools.ide.editors.rete.ReteooLayoutFactory#layoutRowList(org.drools.ide.editors.rete.model.ReteGraph, org.drools.ide.editors.rete.RowList)}.
+     * 
+     * @throws IOException 
+     * @throws DroolsParserException 
+     * @throws PackageIntegrationException 
+     * @throws DroolsParserException 
+     * @throws PackageIntegrationException 
+     */
+    public final void testLayoutRowList() throws IOException,
+                                         PackageIntegrationException,
+                                         DroolsParserException {
+        ReteGraph graph = new ReteGraph();
+        BaseVertex root = loadRete( graph );
+        final RowList rows = ReteooLayoutFactory.calculateReteRows( root );
+
+        ReteooLayoutFactory.layoutRowList( graph,
+                                           rows );
+
+        final List nodes = graph.getChildren();
+
+        BaseVertex[] yOrder = (BaseVertex[]) nodes.toArray( new BaseVertex[0] );
+        Arrays.sort( yOrder,
+                     new Comparator() {
+                         public int compare(Object o1,
+                                            Object o2) {
+                             BaseVertex v1 = (BaseVertex) o1;
+                             BaseVertex v2 = (BaseVertex) o2;
+                             int y1 = v1.getLocation().y;
+                             int y2 = v2.getLocation().y;
+                             return new Integer( y1 ).compareTo( new Integer( y2 ) );
+                         }
+
+                     } );
+
+        Class[] expectedTypes = new Class[]{ReteVertex.class, ObjectTypeNodeVertex.class, AlphaNodeVertex.class, AlphaNodeVertex.class, LeftInputAdapterNodeVertex.class, LeftInputAdapterNodeVertex.class, TerminalNodeVertex.class,
+                TerminalNodeVertex.class};
+
+        for ( int i = 0; i < yOrder.length; i++ ) {
+            assertEquals( expectedTypes[i],
+                          yOrder[i].getClass() );
+            if ( i > 0 ) {
+                // If current vertex has same type as previous then
+                // y-pos should match and x-pos should not match.                
+                // If type is different then y-pos should *not* match.
+
+                BaseVertex current = yOrder[i];
+                BaseVertex previous = yOrder[i - 1];
+                if ( current.getClass().equals( previous.getClass() ) ) {
+                    assertEquals( current.getLocation().y,
+                                  previous.getLocation().y );
+                    assertNotSame( new Integer( current.getLocation().x ),
+                                   new Integer( previous.getLocation().x ) );
+                } else {
+                    assertNotSame( new Integer( current.getLocation().y ),
+                                   new Integer( previous.getLocation().y ) );
+                }
+            }
+        }
+
+    }
+
+    private BaseVertex loadRete(ReteGraph graph) throws IOException,
+                                                PackageIntegrationException,
+                                                DroolsParserException {
+        final InputStream is = getClass().getClassLoader().getResourceAsStream( "simplerule.drl" );
+        String drl = streamToString( is );
+
+        final RuleBase ruleBase = ReteViewer.parseRuleBase( drl,
+                                                            null );
+
+        final ReteooVisitor visitor = new ReteooVisitor( graph );
+        visitor.visit( ruleBase );
+
+        BaseVertex root = visitor.getRootVertex();
+        return root;
+    }
+
+    private String streamToString(InputStream is) throws IOException {
+        byte[] buffer = new byte[4096];
+        OutputStream outputStream = new ByteArrayOutputStream();
+
+        while ( true ) {
+            int read = is.read( buffer );
+
+            if ( read == -1 ) {
+                break;
+            }
+
+            outputStream.write( buffer,
+                                0,
+                                read );
+        }
+
+        outputStream.close();
+        is.close();
+
+        return outputStream.toString();
+    }
+
+    /**
+     * Used by simplerule.drl
+     *
+     */
+    public static class Message {
+        public static final int HELLO   = 0;
+        public static final int GOODBYE = 1;
+
+        private String          message;
+
+        private int             status;
+
+        public String getMessage() {
+            return this.message;
+        }
+
+        public void setMessage(final String message) {
+            this.message = message;
+        }
+
+        public int getStatus() {
+            return this.status;
+        }
+
+        public void setStatus(final int status) {
+            this.status = status;
+        }
+    }
+
+}

Deleted: labs/jbossrules/trunk/drools-ide-test/src/test/java/org/drools/ide/editors/rete/ZoomControlTest.java
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-ide-test/src/test/java/org/drools/ide/editors/rete/ZoomControlTest.java	2006-11-14 19:21:59 UTC (rev 7597)
+++ labs/jbossrules/trunk/drools-ide-test/src/test/java/org/drools/ide/editors/rete/ZoomControlTest.java	2006-11-17 15:52:24 UTC (rev 7683)
@@ -1,223 +0,0 @@
-package org.drools.ide.editors.rete;
-
-import java.io.InputStream;
-import java.io.StringBufferInputStream;
-
-import junit.framework.TestCase;
-
-import org.drools.ide.editors.DRLRuleEditor2;
-import org.drools.ide.editors.ZoomInAction2;
-import org.drools.ide.editors.ZoomOutAction2;
-import org.eclipse.core.filebuffers.manipulation.ContainerCreator;
-import org.eclipse.core.resources.IContainer;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IFolder;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IWorkspaceRoot;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.gef.ui.actions.ZoomComboContributionItem;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.ide.IDE;
-
-public class ZoomControlTest extends TestCase {
-
-    private IFile                         fFile1;
-    private IFile                         fFile2;
-
-    private final static IProgressMonitor NULL_MONITOR     = new NullProgressMonitor();
-
-    private static final String           ORIGINAL_CONTENT = "package test\nrule \"a\"\nend\nrule \"b\"\nend";
-
-    public ZoomControlTest(String name) {
-        super( name );
-    }
-
-    private String getOriginalContent() {
-        return ORIGINAL_CONTENT;
-    }
-
-    /*
-     * @see junit.framework.TestCase#setUp()
-     */
-    protected void setUp() throws Exception {
-        IFolder folder = createFolder( "ZoomControlTestProject/multipleEditorTest/" );
-        fFile1 = createFile( folder,
-                             "myfile1.drl",
-                             getOriginalContent() );
-        fFile2 = createFile( folder,
-                             "myfile2.drl",
-                             getOriginalContent() );
-    }
-
-    /*
-     * @see junit.framework.TestCase#tearDown()
-     */
-    protected void tearDown() throws Exception {
-        deleteProject( "ZoomControlTestProject" );
-        fFile1 = null;
-        fFile2 = null;
-    }
-
-    public void testMultipleEditors() throws PartInitException {
-
-        IWorkbench workbench = PlatformUI.getWorkbench();
-        IWorkbenchPage page = workbench.getActiveWorkbenchWindow().getActivePage();
-
-        DRLRuleEditor2 part1 = (DRLRuleEditor2) IDE.openEditor( page,
-                                                                fFile1 );
-        DRLRuleEditor2 part2 = (DRLRuleEditor2) IDE.openEditor( page,
-                                                                fFile2 );
-
-        checkVisibility( part1,
-                         part2,
-                         false );
-
-        // Editor1 active
-        page.activate( part1 );
-        checkVisibility( part1,
-                         part2,
-                         false );
-
-        part1.setActivePage( 1 );
-        checkVisibility( part1,
-                         part2,
-                         true );
-
-        part1.setActivePage( 0 );
-        checkVisibility( part1,
-                         part2,
-                         false );
-
-        part1.setActivePage( 1 );
-        checkVisibility( part1,
-                         part2,
-                         true );
-
-        // Editor2 active
-        page.activate( part2 );
-        part2.setActivePage( 0 );
-        checkVisibility( part1,
-                         part2,
-                         false );
-
-        part2.setActivePage( 1 );
-        checkVisibility( part1,
-                         part2,
-                         true );
-
-        // Editor1 active
-        page.activate( part1 );
-        checkVisibility( part1,
-                         part2,
-                         true );
-
-        // Editor2 active
-        page.activate( part2 );
-        checkVisibility( part1,
-                         part2,
-                         true );
-
-        part2.setActivePage( 0 );
-        checkVisibility( part1,
-                         part2,
-                         false );
-
-        // Editor1 active
-        page.activate( part1 );
-        checkVisibility( part1,
-                         part2,
-                         true );
-        part2.setActivePage( 0 );
-        checkVisibility( part1,
-                         part2,
-                         false );
-
-    }
-
-    public void testSecondEditorAfterFirst() throws PartInitException {
-
-        IWorkbench workbench = PlatformUI.getWorkbench();
-        IWorkbenchPage page = workbench.getActiveWorkbenchWindow().getActivePage();
-
-        DRLRuleEditor2 part1 = (DRLRuleEditor2) IDE.openEditor( page,
-                                                                fFile1 );
-
-        // Editor1 active
-        page.activate( part1 );
-        part1.setActivePage( 1 );
-        checkVisibility( part1,
-                         null,
-                         true );
-
-        DRLRuleEditor2 part2 = (DRLRuleEditor2) IDE.openEditor( page,
-                                                                fFile2 );
-        page.activate( part2 );
-        checkVisibility( part1,
-                         part2,
-                         false );
-
-    }
-
-    private void checkVisibility(DRLRuleEditor2 part1,
-                                 DRLRuleEditor2 part2,
-                                 boolean enabled) {
-        if ( part1 != null ) {
-            checkVisibility( part1,
-                             enabled );
-        }
-
-        if ( part2 != null ) {
-            checkVisibility( part2,
-                             enabled );
-        }
-    }
-
-    private void checkVisibility(DRLRuleEditor2 editor,
-                                 boolean enabled) {
-        ZoomInAction2 zoomIn = (ZoomInAction2) editor.getAdapter( ZoomInAction2.class );
-        ZoomOutAction2 zoomOut = (ZoomOutAction2) editor.getAdapter( ZoomOutAction2.class );
-        ZoomComboContributionItem zitem = (ZoomComboContributionItem) editor.getAdapter( ZoomComboContributionItem.class );
-
-        assertEquals( enabled,
-                      zoomIn.isEnabled() );
-        assertEquals( enabled,
-                      zoomOut.isEnabled() );
-        assertEquals( enabled,
-                      zitem.getZoomManager() != null );
-
-    }
-
-    private IFile createFile(IFolder folder,
-                             String name,
-                             String contents) throws CoreException {
-        IFile file = folder.getFile( name );
-        InputStream inputStream = new StringBufferInputStream( contents );
-        file.create( inputStream,
-                     true,
-                     NULL_MONITOR );
-        return file;
-    }
-
-    private IFolder createFolder(String portableFolderPath) throws CoreException {
-        ContainerCreator creator = new ContainerCreator( ResourcesPlugin.getWorkspace(),
-                                                         new Path( portableFolderPath ) );
-        IContainer container = creator.createContainer( NULL_MONITOR );
-        return (IFolder) container;
-    }
-
-    private void deleteProject(String projectName) throws CoreException {
-        IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
-        IProject project = root.getProject( projectName );
-        if ( project.exists() ) project.delete( true,
-                                                true,
-                                                NULL_MONITOR );
-    }
-
-}

Copied: labs/jbossrules/trunk/drools-ide-test/src/test/java/org/drools/ide/editors/rete/ZoomControlTest.java (from rev 7597, labs/jbossrules/branches/3.0.x/drools-ide-test/src/test/java/org/drools/ide/editors/rete/ZoomControlTest.java)

Modified: labs/jbossrules/trunk/drools-ide-test/src/test/java/org/drools/ide/editors/test.dsl
===================================================================

Copied: labs/jbossrules/trunk/drools-ide-test/src/test/java/org/drools/ide/wizard (from rev 7597, labs/jbossrules/branches/3.0.x/drools-ide-test/src/test/java/org/drools/ide/wizard)

Copied: labs/jbossrules/trunk/drools-ide-test/src/test/java/org/drools/ide/wizard/rule (from rev 7597, labs/jbossrules/branches/3.0.x/drools-ide-test/src/test/java/org/drools/ide/wizard/rule)

Modified: labs/jbossrules/trunk/drools-ide-test/src/test/java/org/drools/ide/wizard/rule/DRLGenTemplateTest.java
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-ide-test/src/test/java/org/drools/ide/wizard/rule/DRLGenTemplateTest.java	2006-11-14 19:21:59 UTC (rev 7597)
+++ labs/jbossrules/trunk/drools-ide-test/src/test/java/org/drools/ide/wizard/rule/DRLGenTemplateTest.java	2006-11-17 15:52:24 UTC (rev 7683)
@@ -8,43 +8,43 @@
 import junit.framework.TestCase;
 
 public class DRLGenTemplateTest extends TestCase {
-
+    
     public void testNewRule() throws Exception {
         DRLGenerator gen = new DRLGenerator();
-        InputStream result = gen.generateRule( "myPackage",
-                                               getClass().getResourceAsStream( "new_rule.drl.template" ) );
-
-        assertNotNull( result );
+        InputStream result = gen.generateRule("myPackage", getClass().getResourceAsStream( "new_rule.drl.template" ));
+        
+        assertNotNull(result);
         StringBuffer buf = getResult( result );
-        assertTrue( buf.toString().indexOf( "package myPackage" ) > -1 );
-        assertFalse( buf.toString().indexOf( "$date$" ) > -1 );
-
+        assertTrue(buf.toString().indexOf( "package myPackage" ) > -1);
+        assertFalse(buf.toString().indexOf( "$date$" ) > -1);
+        
     }
-
+    
     public void testNewPackage() throws Exception {
         DRLGenerator gen = new DRLGenerator();
-        InputStream result = gen.generatePackage( "myPackage",
-                                                  true,
-                                                  true,
-                                                  getClass().getResourceAsStream( "new_rule.drl.template" ) );
-
-        assertNotNull( result );
+        InputStream result = gen.generatePackage("myPackage", true, true, getClass().getResourceAsStream( "new_rule.drl.template" ));
+        
+        assertNotNull(result);
         StringBuffer buf = getResult( result );
-        assertTrue( buf.toString().indexOf( "package myPackage" ) > -1 );
-        assertFalse( buf.toString().indexOf( "$date$" ) > -1 );
-        assertFalse( buf.toString().indexOf( "$expander$" ) > -1 );
-        assertFalse( buf.toString().indexOf( "$functions$" ) > -1 );
-
+        assertTrue(buf.toString().indexOf( "package myPackage" ) > -1);
+        assertFalse(buf.toString().indexOf( "$date$" ) > -1);
+        assertFalse(buf.toString().indexOf( "$expander$" ) > -1);
+        assertFalse(buf.toString().indexOf( "$functions$" ) > -1);
+     
+        
+        
     }
+    
 
     private StringBuffer getResult(InputStream result) throws IOException {
-        BufferedReader reader = new BufferedReader( new InputStreamReader( result ) );
+        BufferedReader reader = new BufferedReader(new InputStreamReader(result));
         String line = null;
         StringBuffer buf = new StringBuffer();
-        while ( (line = reader.readLine()) != null ) {
-            buf.append( line + "\n" );
+        while ((line = reader.readLine())  != null) {
+            buf.append(line + "\n");
         }
         return buf;
     }
-
+    
+    
 }

Copied: labs/jbossrules/trunk/drools-ide-test/src/test/resources (from rev 7597, labs/jbossrules/branches/3.0.x/drools-ide-test/src/test/resources)

Deleted: labs/jbossrules/trunk/drools-ide-test/src/test/resources/simplerule.drl
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-ide-test/src/test/resources/simplerule.drl	2006-11-14 19:21:59 UTC (rev 7597)
+++ labs/jbossrules/trunk/drools-ide-test/src/test/resources/simplerule.drl	2006-11-17 15:52:24 UTC (rev 7683)
@@ -1,24 +0,0 @@
-package org.drools.examples
-
-// Rules for ReteooLayoutFactoryTest
-
-import org.drools.ide.editors.rete.ReteooLayoutFactoryTest.Message;
-
-rule "Hello World"
-        when
-                m : Message( status == Message.HELLO, message : message )
-        then
-                System.out.println( message );
-                m.setMessage( "Goodbye cruel world" );
-                m.setStatus( Message.GOODBYE );
-                modify( m );
-end
-
-rule "GoodBye"
-        no-loop true
-        when
-                m : Message( status == Message.GOODBYE, message : message )
-        then
-                System.out.println( message );
-                m.setMessage( message );
-end

Copied: labs/jbossrules/trunk/drools-ide-test/src/test/resources/simplerule.drl (from rev 7597, labs/jbossrules/branches/3.0.x/drools-ide-test/src/test/resources/simplerule.drl)

Modified: labs/jbossrules/trunk/drools-jsr94/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-jsr94/.classpath	2006-11-17 15:27:18 UTC (rev 7682)
+++ labs/jbossrules/trunk/drools-jsr94/.classpath	2006-11-17 15:52:24 UTC (rev 7683)
@@ -1,33 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <classpath>
-  <classpathentry kind="src" path="src/main/java"/>
-  <classpathentry kind="src" path="src/main/resources"/>
-  <classpathentry kind="src" path="src/test/java" output="target/test-classes"/>
-  <classpathentry kind="src" path="src/test/resources" output="target/test-classes"/>
-  <classpathentry kind="output" path="target/classes"/>
-  <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-  <classpathentry kind="var" path="M2_REPO/jsr94/jsr94/1.1/jsr94-1.1.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/apache/commons/commons-jci-core/1.0-406301/commons-jci-core-1.0-406301.jar"/>
-  <classpathentry kind="var" path="M2_REPO/jsr94/jsr94-tck/1.0.3/jsr94-tck-1.0.3.jar"/>
-  <classpathentry kind="var" path="M2_REPO/colt/colt/1.2.0/colt-1.2.0.jar"/>
-  <classpathentry kind="var" path="M2_REPO/commons-io/commons-io/1.1/commons-io-1.1.jar"/>
-  <classpathentry kind="var" path="M2_REPO/antlr/stringtemplate/2.3b6/stringtemplate-2.3b6.jar"/>
-  <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/antlr/antlr/3.0ea8/antlr-3.0ea8.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/eclipse/jdt/core/3.2.0.666/core-3.2.0.666.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/apache/commons/commons-jci-eclipse/3.2.0.666/commons-jci-eclipse-3.2.0.666.jar"/>
-  <classpathentry kind="src" path="/drools-core"/>
-  <classpathentry kind="var" path="M2_REPO/xstream/xstream/1.1.3/xstream-1.1.3.jar"/>
-  <classpathentry kind="var" path="M2_REPO/xpp3/xpp3/1.1.3.4.O/xpp3-1.1.3.4.O.jar"/>
-  <classpathentry kind="var" path="M2_REPO/jsr94/jsr94-sigtest/1.1/jsr94-sigtest-1.1.jar"/>
-  <classpathentry kind="var" path="M2_REPO/antlr/antlr/2.7.6/antlr-2.7.6.jar"/>
-  <classpathentry kind="var" path="M2_REPO/janino/janino/2.4.3/janino-2.4.3.jar"/>
-  <classpathentry kind="var" path="M2_REPO/xerces/xercesImpl/2.6.2/xercesImpl-2.6.2.jar"/>
-  <classpathentry kind="var" path="M2_REPO/jung/jung/1.7.2/jung-1.7.2.jar"/>
-  <classpathentry kind="src" path="/drools-compiler"/>
-  <classpathentry kind="var" path="M2_REPO/commons-collections/commons-collections/3.1/commons-collections-3.1.jar"/>
-  <classpathentry kind="var" path="M2_REPO/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/apache/commons/commons-jci-janino/2.4.3/commons-jci-janino-2.4.3.jar"/>
-  <classpathentry kind="var" path="M2_REPO/commons-lang/commons-lang/2.1/commons-lang-2.1.jar"/>
-  <classpathentry kind="var" path="M2_REPO/commons-logging/commons-logging-api/1.0.4/commons-logging-api-1.0.4.jar"/>
-  <classpathentry kind="var" path="M2_REPO/concurrent/concurrent/1.3.4/concurrent-1.3.4.jar"/>
-</classpath>
\ No newline at end of file
+	<classpathentry kind="src" path="src/main/java"/>
+	<classpathentry kind="src" path="src/main/resources"/>
+	<classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
+	<classpathentry kind="src" output="target/test-classes" path="src/test/resources"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="var" path="M2_REPO/jsr94/jsr94/1.1/jsr94-1.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/apache/commons/commons-jci-core/1.0-406301/commons-jci-core-1.0-406301.jar"/>
+	<classpathentry kind="var" path="M2_REPO/jsr94/jsr94-tck/1.0.3/jsr94-tck-1.0.3.jar"/>
+	<classpathentry kind="var" path="M2_REPO/commons-io/commons-io/1.1/commons-io-1.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/antlr/stringtemplate/2.3b6/stringtemplate-2.3b6.jar"/>
+	<classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/antlr/antlr/3.0ea8/antlr-3.0ea8.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/eclipse/jdt/core/3.2.0.666/core-3.2.0.666.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/apache/commons/commons-jci-eclipse/3.2.0.666/commons-jci-eclipse-3.2.0.666.jar"/>
+	<classpathentry kind="src" path="/drools-core"/>
+	<classpathentry kind="var" path="M2_REPO/xstream/xstream/1.1.3/xstream-1.1.3.jar"/>
+	<classpathentry kind="var" path="M2_REPO/xpp3/xpp3/1.1.3.4.O/xpp3-1.1.3.4.O.jar"/>
+	<classpathentry kind="var" path="M2_REPO/jsr94/jsr94-sigtest/1.1/jsr94-sigtest-1.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/antlr/antlr/2.7.6/antlr-2.7.6.jar"/>
+	<classpathentry kind="var" path="M2_REPO/janino/janino/2.4.3/janino-2.4.3.jar"/>
+	<classpathentry kind="src" path="/drools-compiler"/>
+	<classpathentry kind="var" path="M2_REPO/commons-collections/commons-collections/3.1/commons-collections-3.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/apache/commons/commons-jci-janino/2.4.3/commons-jci-janino-2.4.3.jar"/>
+	<classpathentry kind="var" path="M2_REPO/commons-lang/commons-lang/2.1/commons-lang-2.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/commons-logging/commons-logging-api/1.0.4/commons-logging-api-1.0.4.jar"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>




More information about the jboss-svn-commits mailing list