[jboss-svn-commits] JBL Code SVN: r5162 - labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/completion

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Jul 18 19:32:46 EDT 2006


Author: KrisVerlaenen
Date: 2006-07-18 19:32:45 -0400 (Tue, 18 Jul 2006)
New Revision: 5162

Modified:
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/completion/DefaultCompletionProcessor.java
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/completion/RuleCompletionProcessor.java
Log:
JBRULES-376: Add Java code completion for consequences, eval and functions
 - only suggest functions and assert/retract keywords in consequences at
   the beginning of a new Java statement
 - filter out clone() and other standard object methods at the beginning of a
   new Java statement
 - code completion also works immediate after a ;

Modified: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/completion/DefaultCompletionProcessor.java
===================================================================
--- labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/completion/DefaultCompletionProcessor.java	2006-07-18 22:46:06 UTC (rev 5161)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/completion/DefaultCompletionProcessor.java	2006-07-18 23:32:45 UTC (rev 5162)
@@ -46,6 +46,7 @@
     private static final Pattern FUNCTION_PATTERN = Pattern.compile( ".*\n\\W*function\\s+(\\S+)\\s+(\\S+)\\s*\\(([^\\)]*)\\)\\s*\\{([^\\}]*)", Pattern.DOTALL);
     protected static final Image VARIABLE_ICON = DroolsPluginImages.getImage(DroolsPluginImages.VARIABLE);
     protected static final Image methodIcon = DroolsPluginImages.getImage(DroolsPluginImages.METHOD);
+    protected static final Pattern START_OF_NEW_JAVA_STATEMENT = Pattern.compile(".*[;{}]\\s*", Pattern.DOTALL);
 
     public DefaultCompletionProcessor(DRLRuleEditor editor) {
     	super(editor);
@@ -174,7 +175,7 @@
 	        char[] c = prefix.toCharArray();
 	        int start = 0;
 	        for (int i = c.length - 1; i >=0; i-- ) {
-	            if (Character.isWhitespace(c[i]) || c[i] == '(' || c[i] == ':' || c[i] == '=' || c[i] == '<' || c[i] == '>' || c[i] == '.' || c[i] == '{' || c[i] == '}') {
+	            if (Character.isWhitespace(c[i]) || c[i] == '(' || c[i] == ':' || c[i] == ';' || c[i] == '=' || c[i] == '<' || c[i] == '>' || c[i] == '.' || c[i] == '{' || c[i] == '}') {
 	                start = i + 1;
 	                break;
 	            }
@@ -202,7 +203,8 @@
 							break;
 						case CompletionProposal.METHOD_REF:
 							// TODO: Object methods are proposed when in the start of a line
-							if ("".equals(javaText)) {
+							String javaTextWithoutPrefix = javaText.substring(0, javaText.length() - prefix.length());
+							if ("".equals(javaTextWithoutPrefix.trim()) || START_OF_NEW_JAVA_STATEMENT.matcher(javaTextWithoutPrefix).matches()) {
 								return;
 							}
 							prop.setImage(methodIcon);

Modified: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/completion/RuleCompletionProcessor.java
===================================================================
--- labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/completion/RuleCompletionProcessor.java	2006-07-18 22:46:06 UTC (rev 5161)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/completion/RuleCompletionProcessor.java	2006-07-18 23:32:45 UTC (rev 5162)
@@ -51,6 +51,7 @@
     private static final Image droolsIcon = DroolsPluginImages.getImage(DroolsPluginImages.DROOLS);
     private static final Image dslIcon = DroolsPluginImages.getImage( DroolsPluginImages.DSL_EXPRESSION );
     private static final Image classIcon = DroolsPluginImages.getImage(DroolsPluginImages.CLASS);
+    private static final Pattern START_OF_CONSEQUENCE = Pattern.compile(".*then\\s*", Pattern.DOTALL);
     
     public RuleCompletionProcessor(DRLRuleEditor editor) {
     	super(editor);
@@ -72,19 +73,15 @@
             
         	if (consequence(backText)) {
 	        	List dslConsequences = adapter.listConsequenceItems();
-                addDSLProposals( list,
-                                 prefix,
-                                 dslConsequences );
+                addDSLProposals(list, prefix, dslConsequences);
 	            if (!adapter.hasConsequences()) {
-
-	            	
-                    addRHSCompletionProposals( list,
-                                               prefix );                    
-        			
-        			addRHSFunctionCompletionProposals( viewer,
-                                                       list,
-                                                       prefix );
-        			
+	            	// only add functions and keywords if at the beginning of a new statement
+	            	String backTextWithoutPrefix = backText.substring(0, backText.length() - prefix.length());
+	            	if (START_OF_CONSEQUENCE.matcher(backTextWithoutPrefix).matches()
+	            			|| START_OF_NEW_JAVA_STATEMENT.matcher(backTextWithoutPrefix).matches()) {
+            			addRHSCompletionProposals(list, prefix);                    
+            			addRHSFunctionCompletionProposals(viewer, list, prefix);
+	            	}
         			addRHSJavaCompletionProposals(list, backText, prefix);
 	            }
 	        } else if (condition(backText) || query(backText)) {




More information about the jboss-svn-commits mailing list