[jboss-svn-commits] JBL Code SVN: r14156 - in labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin: src/main/java/org/drools/eclipse/action and 1 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Aug 10 20:05:31 EDT 2007


Author: KrisVerlaenen
Date: 2007-08-10 20:05:31 -0400 (Fri, 10 Aug 2007)
New Revision: 14156

Modified:
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/plugin.xml
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/action/ConvertToDroolsProjectAction.java
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/wizard/project/NewDroolsProjectWizard.java
Log:
JBRULES-322: Allow the conversion of normal Java projects to Drools projects
 - Made a better solution, now allows you to right-click any (Java)Project and
   select convert action

Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/plugin.xml
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/plugin.xml	2007-08-10 20:12:51 UTC (rev 14155)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/plugin.xml	2007-08-11 00:05:31 UTC (rev 14156)
@@ -315,10 +315,10 @@
    </extension>
 
    <extension point = "org.eclipse.ui.popupMenus">
-     <objectContribution
-        	id="org.drools.eclipse.action.ConvertToDroolsProject"
-        	objectClass="org.eclipse.core.resources.IFile"
-        	nameFilter=".project">
+	 <objectContribution
+           objectClass="org.eclipse.core.resources.IProject"
+           id="org.drools.eclipse.action.ConvertToDroolsProject1">
+        <filter name="nature" value="org.eclipse.jdt.core.javanature"/>
 	    <action id="org.drools.eclipse.action.ConvertToDroolsProjectAction"
 	       label="Convert to Drools Project"
 	       icon="icons/drools.gif"
@@ -327,7 +327,19 @@
            definitionId="org.drools.eclipse.action.ConvertToDroolsProjectAction"
 	       enablesFor="1">
 	    </action>
-	 </objectContribution>
+      </objectContribution>
+      <objectContribution
+           objectClass="org.eclipse.jdt.core.IJavaProject"
+           id="org.drools.eclipse.action.ConvertToDroolsProject2">
+	    <action id="org.drools.eclipse.action.ConvertToDroolsProjectAction"
+	       label="Convert to Drools Project"
+	       icon="icons/drools.gif"
+	       menubarPath="additions"
+	       class="org.drools.eclipse.action.ConvertToDroolsProjectAction"
+           definitionId="org.drools.eclipse.action.ConvertToDroolsProjectAction"
+	       enablesFor="1">
+	    </action>
+      </objectContribution>
    </extension>
 
    <extension

Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/action/ConvertToDroolsProjectAction.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/action/ConvertToDroolsProjectAction.java	2007-08-10 20:12:51 UTC (rev 14155)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/action/ConvertToDroolsProjectAction.java	2007-08-11 00:05:31 UTC (rev 14156)
@@ -3,14 +3,15 @@
 import org.drools.eclipse.DroolsEclipsePlugin;
 import org.drools.eclipse.builder.DroolsBuilder;
 import org.drools.eclipse.wizard.project.NewDroolsProjectWizard;
-import org.drools.util.ArrayUtils;
 import org.eclipse.core.resources.ICommand;
-import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IProjectDescription;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jdt.core.IClasspathEntry;
 import org.eclipse.jdt.core.IJavaProject;
 import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jdt.core.JavaModelException;
 import org.eclipse.jface.action.IAction;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.IStructuredSelection;
@@ -19,17 +20,16 @@
 
 public class ConvertToDroolsProjectAction implements IObjectActionDelegate {
 
-    private IFile file;
+    private IJavaProject project;
     
 	public void setActivePart(IAction action, IWorkbenchPart targetPart) {
 	}
 
 	public void run(IAction action) {
-		IJavaProject javaProject = JavaCore.create(file.getProject());
-		if (javaProject != null && javaProject.exists()) {
+		if (project != null && project.exists()) {
 			try {
-				addDroolsBuilder(javaProject, null);
-				NewDroolsProjectWizard.addDroolsLibraries(javaProject, null);
+				addDroolsBuilder(project, null);
+				addDroolsLibraries(project, null);
 			} catch (Throwable t) {
 				DroolsEclipsePlugin.log(t);
 			}
@@ -42,8 +42,13 @@
 			IStructuredSelection structured = (IStructuredSelection) selection;
 			if (structured.size() == 1) {
 				Object element = structured.getFirstElement();
-				if (element instanceof IFile) {
-					file = (IFile) element;
+				if (element instanceof IJavaProject) {
+					project = (IJavaProject) element;
+				} else if (element instanceof IProject) {
+					IJavaProject javaProject = JavaCore.create((IProject) element);
+					if (javaProject != null && javaProject.exists()) {
+						project = javaProject;
+					}
 				}
 			}
 		}
@@ -51,18 +56,34 @@
 	
     public static void addDroolsBuilder(IJavaProject project, IProgressMonitor monitor) throws CoreException {
         IProjectDescription description = project.getProject().getDescription();
+        // check whether Drools builder is already part of the project
         ICommand[] commands = description.getBuildSpec();
-        if (!ArrayUtils.contains(commands, DroolsBuilder.BUILDER_ID)) {
-	        ICommand[] newCommands = new ICommand[commands.length + 1];
-	        System.arraycopy(commands, 0, newCommands, 0, commands.length);
-	
-	        ICommand droolsCommand = description.newCommand();
-	        droolsCommand.setBuilderName(DroolsBuilder.BUILDER_ID);
-	        newCommands[commands.length] = droolsCommand;
-	        
-	        description.setBuildSpec(newCommands);
-	        project.getProject().setDescription(description, monitor);
+        for (int i = 0; i < commands.length; i++) {
+        	if (DroolsBuilder.BUILDER_ID.equals(commands[i].getBuilderName())) {
+        		return;
+        	}
         }
+        // add Drools builder
+        ICommand[] newCommands = new ICommand[commands.length + 1];
+        System.arraycopy(commands, 0, newCommands, 0, commands.length);
+
+        ICommand droolsCommand = description.newCommand();
+        droolsCommand.setBuilderName(DroolsBuilder.BUILDER_ID);
+        newCommands[commands.length] = droolsCommand;
+        
+        description.setBuildSpec(newCommands);
+        project.getProject().setDescription(description, monitor);
     }
+    
+    public static void addDroolsLibraries(IJavaProject project, IProgressMonitor monitor) throws JavaModelException {
+    	IClasspathEntry[] classpathEntries = project.getRawClasspath();
+    	for (int i = 0; i < classpathEntries.length; i++) {
+    		System.out.println(classpathEntries[i].getPath().toString());
+    		if (NewDroolsProjectWizard.DROOLS_CLASSPATH_CONTAINER_PATH.equals(classpathEntries[i].getPath().toString())) {
+    			return;
+    		}
+    	}
+		NewDroolsProjectWizard.addDroolsLibraries(project, null);
+    }
             
 }

Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/wizard/project/NewDroolsProjectWizard.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/wizard/project/NewDroolsProjectWizard.java	2007-08-10 20:12:51 UTC (rev 14155)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/wizard/project/NewDroolsProjectWizard.java	2007-08-11 00:05:31 UTC (rev 14156)
@@ -49,7 +49,8 @@
  */
 public class NewDroolsProjectWizard extends BasicNewResourceWizard {
 
-    private static final String JBOSS_RULES_NAME = "Drools";
+    public static final String DROOLS_CLASSPATH_CONTAINER_PATH = "DROOLS/Drools";
+    
     private IProject newProject;
     private WizardNewProjectCreationPage mainPage;
     private NewDroolsProjectWizardPage extraPage;
@@ -227,7 +228,7 @@
     }
 
     private static IPath getClassPathContainerPath() {
-        return new Path("DROOLS/" + getDroolsNamePref());
+        return new Path(DROOLS_CLASSPATH_CONTAINER_PATH);
     }
 
     private static void createDroolsLibraryContainer(IJavaProject project, IProgressMonitor monitor)
@@ -238,10 +239,6 @@
                     project, getClassPathContainerPath()) }, monitor);
     }
 
-    private static String getDroolsNamePref() {
-        return JBOSS_RULES_NAME;
-    }
-
     public static void addDroolsLibraries(IJavaProject project, IProgressMonitor monitor)
             throws JavaModelException {
         createDroolsLibraryContainer(project, monitor);




More information about the jboss-svn-commits mailing list