Author: KrisVerlaenen Date: 2006-04-21 19:26:33 -0400 (Fri, 21 Apr 2006) New Revision: 3895 Added: labs/jbossrules/trunk/drools-ide/icons/methpub_obj.gif Modified: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/DroolsPluginImages.java labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/DRLRuleEditor.java labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/completion/RuleCompletionProcessor.java Log: fixed JBRULES-152 - rule completion now also suggests function names in drl Added: labs/jbossrules/trunk/drools-ide/icons/methpub_obj.gif =================================================================== (Binary files differ) Property changes on: labs/jbossrules/trunk/drools-ide/icons/methpub_obj.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Modified: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/DroolsPluginImages.java =================================================================== --- labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/DroolsPluginImages.java 2006-04-21 23:00:46 UTC (rev 3894) +++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/DroolsPluginImages.java 2006-04-21 23:26:33 UTC (rev 3895) @@ -44,6 +44,7 @@ public static final String EXECUTE_ACTIVATION = "ExecuteActivation"; public static final String CLASS = "Class"; public static final String PACKAGE = "Package"; + public static final String METHOD = "Method"; public static final String DROOLS = "Drools"; private static ImageRegistry imageRegistry; @@ -67,6 +68,7 @@ declareRegistryImage(EXECUTE_ACTIVATION, "bluediamond.GIF"); declareRegistryImage(CLASS, "class_obj.gif"); declareRegistryImage(PACKAGE, "package_obj.gif"); + declareRegistryImage(METHOD, "methpub_obj.gif"); declareRegistryImage(DROOLS, "drools.gif"); } Modified: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/DRLRuleEditor.java =================================================================== --- labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/DRLRuleEditor.java 2006-04-21 23:00:46 UTC (rev 3894) +++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/DRLRuleEditor.java 2006-04-21 23:26:33 UTC (rev 3895) @@ -22,6 +22,7 @@ //used to provide additional content assistance/popups when DSLs are used. private DSLAdapter dslAdapter; private List imports; + private List functions; private RuleContentOutlinePage ruleContentOutline = null; @@ -72,6 +73,14 @@ return imports; } + public void setFunctions(List functions) { + this.functions = functions; + } + + public List getFunctions() { + return functions; + } + public Object getAdapter(Class adapter) { if ( adapter.equals( IContentOutlinePage.class ) ) { return getContentOutline(); @@ -94,6 +103,7 @@ } dslAdapter = null; imports = null; + functions = null; } } 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-04-21 23:00:46 UTC (rev 3894) +++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/completion/RuleCompletionProcessor.java 2006-04-21 23:26:33 UTC (rev 3895) @@ -13,6 +13,7 @@ import org.drools.ide.builder.DroolsBuilder; import org.drools.ide.editors.DRLRuleEditor; import org.drools.ide.editors.DSLAdapter; +import org.drools.lang.descr.FunctionDescr; import org.drools.lang.descr.PackageDescr; import org.eclipse.core.runtime.CoreException; import org.eclipse.jface.text.IDocument; @@ -68,9 +69,27 @@ filterProposalsOnPrefix(prefix, list); } if (!adapter.hasConsequences()) { - list.add(new RuleCompletionProposal(prefix.length(), "modify", "modify();", 7)); - list.add(new RuleCompletionProposal(prefix.length(), "retract", "retract();", 8)); - list.add(new RuleCompletionProposal(prefix.length(), "assert", "assert();", 7)); + Image image = DroolsPluginImages.getImage(DroolsPluginImages.DROOLS); + RuleCompletionProposal prop = new RuleCompletionProposal(prefix.length(), "modify", "modify();", 7); + prop.setImage(image); + list.add(prop); + prop = new RuleCompletionProposal(prefix.length(), "retract", "retract();", 8); + prop.setImage(image); + list.add(prop); + prop = new RuleCompletionProposal(prefix.length(), "assert", "assert();", 7); + prop.setImage(image); + list.add(prop); + + List functions = getFunctions(viewer); + iterator = functions.iterator(); + while (iterator.hasNext()) { + String name = (String) iterator.next() + "()"; + prop = new RuleCompletionProposal(prefix.length(), name, name + ";", name.length() - 1); + prop.setPriority(-1); + prop.setImage(DroolsPluginImages.getImage(DroolsPluginImages.METHOD)); + list.add(prop); + } + filterProposalsOnPrefix(prefix, list); // IEditorInput input = getEditor().getEditorInput(); @@ -199,15 +218,36 @@ private List getImports(ITextViewer viewer) throws CoreException, DroolsParserException { List imports = getDRLEditor().getImports(); if (imports == null) { - String content = viewer.getDocument().get(); - Reader dslReader = DSLAdapter.getDSLContent(content, ((FileEditorInput) getEditor().getEditorInput()).getFile()); - DrlParser parser = new DrlParser(); - PackageDescr descr = DroolsBuilder.parsePackage(content, parser, dslReader); - imports = descr.getImports(); - getDRLEditor().setImports(imports); + loadImportsAndFunctions(viewer); + imports = getDRLEditor().getFunctions(); } return imports; } + + private void loadImportsAndFunctions(ITextViewer viewer) throws CoreException, DroolsParserException { + String content = viewer.getDocument().get(); + Reader dslReader = DSLAdapter.getDSLContent(content, ((FileEditorInput) getEditor().getEditorInput()).getFile()); + DrlParser parser = new DrlParser(); + PackageDescr descr = DroolsBuilder.parsePackage(content, parser, dslReader); + // imports + getDRLEditor().setImports(descr.getImports()); + // functions + List functionDescrs = descr.getFunctions(); + List functions = new ArrayList(functionDescrs.size()); + Iterator iterator = functionDescrs.iterator(); + while (iterator.hasNext()) { + functions.add(((FunctionDescr) iterator.next()).getName()); + } + getDRLEditor().setFunctions(functions); + } + private List getFunctions(ITextViewer viewer) throws CoreException, DroolsParserException { + List functions = getDRLEditor().getFunctions(); + if (functions == null) { + loadImportsAndFunctions(viewer); + functions = getDRLEditor().getFunctions(); + } + return functions; + } } |