[jboss-svn-commits] JBL Code SVN: r7751 - in labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide: . editors editors/rete
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Nov 21 17:59:22 EST 2006
Author: KrisVerlaenen
Date: 2006-11-21 17:59:20 -0500 (Tue, 21 Nov 2006)
New Revision: 7751
Modified:
labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/DroolsIDEPlugin.java
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/rete/ReteViewer.java
Log:
JBRULES-517: Port ReteOO viewer from Jung /Swing to GEF
- adjusting ReteViewer to new build system for drls
Modified: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/DroolsIDEPlugin.java
===================================================================
--- labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/DroolsIDEPlugin.java 2006-11-21 21:35:54 UTC (rev 7750)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/DroolsIDEPlugin.java 2006-11-21 22:59:20 UTC (rev 7751)
@@ -203,12 +203,17 @@
public DRLInfo parseResource(DRLRuleEditor editor, boolean useUnsavedContent, boolean compile) throws DroolsParserException {
IResource resource = editor.getResource();
- DRLInfo result = (DRLInfo) compiledRules.get(resource);
- if (result == null && !compile) {
- result = (DRLInfo) parsedRules.get(resource);
+ if (!editor.isDirty() || !useUnsavedContent) {
+ DRLInfo result = (DRLInfo) compiledRules.get(resource);
+ if (result == null && !compile) {
+ result = (DRLInfo) parsedRules.get(resource);
+ }
+ if (result != null) {
+ return result;
+ }
}
- if (result != null) {
- return result;
+ if (!editor.isDirty()) {
+ return generateParsedResource(editor.getContent(), resource, true, compile);
}
// TODO: can we cache result when using unsaved content as well?
return generateParsedResource(editor.getContent(), resource, !useUnsavedContent, compile);
@@ -297,6 +302,7 @@
// cache result
if (useCache) {
if (compile && !parser.hasErrors()) {
+ parsedRules.remove(resource);
compiledRules.put(resource, result);
RuleInfo[] ruleInfos = result.getRuleInfos();
for (int i = 0; i < ruleInfos.length; i++) {
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-21 21:35:54 UTC (rev 7750)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/DRLRuleEditor2.java 2006-11-21 22:59:20 UTC (rev 7751)
@@ -85,7 +85,7 @@
}
};
- reteViewer = new ReteViewer();
+ reteViewer = new ReteViewer(textEditor);
int text = addPage( textEditor,
getEditorInput() );
Modified: 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/ReteViewer.java 2006-11-21 21:35:54 UTC (rev 7750)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/ReteViewer.java 2006-11-21 22:59:20 UTC (rev 7751)
@@ -15,30 +15,21 @@
* 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.DRLInfo;
import org.drools.ide.DroolsIDEPlugin;
-import org.drools.ide.builder.DroolsBuilder;
-import org.drools.ide.editors.DSLAdapter;
+import org.drools.ide.editors.DRLRuleEditor;
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.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.draw2d.ColorConstants;
import org.eclipse.draw2d.ConnectionLayer;
@@ -59,10 +50,7 @@
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
@@ -74,8 +62,6 @@
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();
@@ -83,14 +69,16 @@
private ReteGraph diagram = new ReteGraph();
private boolean relayoutRequired = true;
+
+ private DRLRuleEditor drlEditor;
/**
* Constructor.
*
* @param documentProvider documentProvider must contain Document with rules.
*/
- public ReteViewer() {
- super();
+ public ReteViewer(DRLRuleEditor drlEditor) {
+ this.drlEditor = drlEditor;
setEditDomain( new DefaultEditDomain( this ) );
}
@@ -118,70 +106,22 @@
return super.getAdapter( type );
}
- private RuleBase getRuleBase(String contents) throws PackageIntegrationException,
- DroolsParserException,
- CoreException {
- if ( getEditorInput() instanceof IFileEditorInput ) {
- 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 );
-
- } finally {
- Thread.currentThread().setContextClassLoader( oldLoader );
- }
+ private RuleBase getRuleBase(String contents) {
+ try {
+ DRLInfo drlInfo = DroolsIDEPlugin.getDefault().parseResource(drlEditor, true, true);
+ if (drlInfo != null) {
+ Package pkg = drlInfo.getPackage();
+ ReteooRuleBase ruleBase = (ReteooRuleBase) RuleBaseFactory.newRuleBase(RuleBase.RETEOO);
+ ruleBase.addPackage(pkg);
+ return ruleBase;
+ }
+ } 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
@@ -362,4 +302,4 @@
}
-}
\ No newline at end of file
+}
More information about the jboss-svn-commits
mailing list