[jboss-svn-commits] JBL Code SVN: r5960 - in labs/jbossrules/trunk/drools-ide: . src/main/java/org/drools/ide/action src/main/java/org/drools/ide/wizard/project

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Aug 22 18:21:44 EDT 2006


Author: KrisVerlaenen
Date: 2006-08-22 18:21:41 -0400 (Tue, 22 Aug 2006)
New Revision: 5960

Added:
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/action/ConvertToDroolsProjectAction.java
Modified:
   labs/jbossrules/trunk/drools-ide/plugin.xml
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/wizard/project/NewDroolsProjectWizard.java
Log:
JBRULES-322: Allow the conversion of normal Java projects to Drools projects
 - by right-clicking the .project file, you can select the "Convert to Drools Project"
   which adds the drools builder (for validation of drl files) and the drools library

Modified: labs/jbossrules/trunk/drools-ide/plugin.xml
===================================================================
--- labs/jbossrules/trunk/drools-ide/plugin.xml	2006-08-22 22:21:38 UTC (rev 5959)
+++ labs/jbossrules/trunk/drools-ide/plugin.xml	2006-08-22 22:21:41 UTC (rev 5960)
@@ -244,4 +244,20 @@
    
    -->
    
+   <extension point = "org.eclipse.ui.popupMenus">
+     <objectContribution
+        	id="org.drools.ide.action.ConvertToDroolsProject"
+        	objectClass="org.eclipse.core.resources.IFile"
+        	nameFilter=".project">
+	    <action id="org.drools.ide.action.ConvertToDroolsProjectAction"
+	       label="Convert to JBoss Rules Project"
+	       icon="icons/drools.gif"
+	       menubarPath="additions"
+	       class="org.drools.ide.action.ConvertToDroolsProjectAction"	
+           definitionId="org.drools.ide.action.ConvertToDroolsProjectAction"
+	       enablesFor="1">
+	    </action>
+	 </objectContribution>
+   </extension>
+   
 </plugin>

Added: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/action/ConvertToDroolsProjectAction.java
===================================================================
--- labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/action/ConvertToDroolsProjectAction.java	2006-08-22 22:21:38 UTC (rev 5959)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/action/ConvertToDroolsProjectAction.java	2006-08-22 22:21:41 UTC (rev 5960)
@@ -0,0 +1,67 @@
+package org.drools.ide.action;
+
+import org.apache.commons.lang.ArrayUtils;
+import org.drools.ide.DroolsIDEPlugin;
+import org.drools.ide.builder.DroolsBuilder;
+import org.drools.ide.wizard.project.NewDroolsProjectWizard;
+import org.eclipse.core.resources.ICommand;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProjectDescription;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.ui.IObjectActionDelegate;
+import org.eclipse.ui.IWorkbenchPart;
+
+public class ConvertToDroolsProjectAction implements IObjectActionDelegate {
+
+    private IFile file;
+    
+	public void setActivePart(IAction action, IWorkbenchPart targetPart) {
+	}
+
+	public void run(IAction action) {
+		IJavaProject javaProject = JavaCore.create(file.getProject());
+		if (javaProject != null && javaProject.exists()) {
+			try {
+				addDroolsBuilder(javaProject, null);
+				NewDroolsProjectWizard.addDroolsLibraries(javaProject, null);
+			} catch (Throwable t) {
+				DroolsIDEPlugin.log(t);
+			}
+		}
+
+	}
+
+	public void selectionChanged(IAction action, ISelection selection) {
+		if (selection instanceof IStructuredSelection) {
+			IStructuredSelection structured = (IStructuredSelection) selection;
+			if (structured.size() == 1) {
+				Object element = structured.getFirstElement();
+				if (element instanceof IFile) {
+					file = (IFile) element;
+				}
+			}
+		}
+	}
+	
+    public static void addDroolsBuilder(IJavaProject project, IProgressMonitor monitor) throws CoreException {
+        IProjectDescription description = project.getProject().getDescription();
+        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);
+        }
+    }
+}

Modified: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/wizard/project/NewDroolsProjectWizard.java
===================================================================
--- labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/wizard/project/NewDroolsProjectWizard.java	2006-08-22 22:21:38 UTC (rev 5959)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/wizard/project/NewDroolsProjectWizard.java	2006-08-22 22:21:41 UTC (rev 5960)
@@ -226,11 +226,11 @@
             .toArray(new IClasspathEntry[list.size()]), monitor);
     }
 
-    private IPath getClassPathContainerPath() {
+    private static IPath getClassPathContainerPath() {
         return new Path("DROOLS/" + getDroolsNamePref());
     }
 
-    private void createDroolsLibraryContainer(IJavaProject project, IProgressMonitor monitor)
+    private static void createDroolsLibraryContainer(IJavaProject project, IProgressMonitor monitor)
             throws JavaModelException {
         JavaCore.setClasspathContainer(getClassPathContainerPath(),
             new IJavaProject[] { project },
@@ -238,11 +238,11 @@
                     project, getClassPathContainerPath()) }, monitor);
     }
 
-    private String getDroolsNamePref() {
+    private static String getDroolsNamePref() {
         return JBOSS_RULES_NAME;
     }
 
-    private void addDroolsLibraries(IJavaProject project, IProgressMonitor monitor)
+    public static void addDroolsLibraries(IJavaProject project, IProgressMonitor monitor)
             throws JavaModelException {
         createDroolsLibraryContainer(project, monitor);
         List list = new ArrayList();




More information about the jboss-svn-commits mailing list