Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorglefur2009-09-30 12:46:33 +0000
committerglefur2009-09-30 12:46:33 +0000
commit116910f775d90e83dc1086b8b29abb4b247a9522 (patch)
tree4571522e3dd2563017989a7d1c53d4c0ddd7e9c5 /plugins/org.eclipse.emf.eef.codegen
parent3d8b58e43b17cbee4dabae82d76036dafd9c8461 (diff)
downloadorg.eclipse.eef-116910f775d90e83dc1086b8b29abb4b247a9522.tar.gz
org.eclipse.eef-116910f775d90e83dc1086b8b29abb4b247a9522.tar.xz
org.eclipse.eef-116910f775d90e83dc1086b8b29abb4b247a9522.zip
ADDED: Organize imports after generation
Diffstat (limited to 'plugins/org.eclipse.emf.eef.codegen')
-rw-r--r--plugins/org.eclipse.emf.eef.codegen/META-INF/MANIFEST.MF4
-rw-r--r--plugins/org.eclipse.emf.eef.codegen/src-custom/org/eclipse/emf/eef/codegen/ui/generators/actions/AbstractGenerateEEFAction.java17
-rw-r--r--plugins/org.eclipse.emf.eef.codegen/src-custom/org/eclipse/emf/eef/codegen/ui/generators/common/ImportOrganizer.java51
3 files changed, 70 insertions, 2 deletions
diff --git a/plugins/org.eclipse.emf.eef.codegen/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.eef.codegen/META-INF/MANIFEST.MF
index c95bb2141..289b9fd43 100644
--- a/plugins/org.eclipse.emf.eef.codegen/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.eef.codegen/META-INF/MANIFEST.MF
@@ -22,7 +22,9 @@ Require-Bundle: org.eclipse.core.runtime,
org.eclipse.ui.ide,
org.eclipse.emf.codegen.ecore,
org.eclipse.emf.eef.eefgen,
- org.eclipse.jdt.core,
+ org.eclipse.jdt.core;resolution:=optional,
+ org.eclipse.jdt.ui;resolution:=optional,
+ org.eclipse.jface.text;resolution:=optional,
org.eclipse.acceleo.ide.ui
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Bundle-ActivationPolicy: lazy
diff --git a/plugins/org.eclipse.emf.eef.codegen/src-custom/org/eclipse/emf/eef/codegen/ui/generators/actions/AbstractGenerateEEFAction.java b/plugins/org.eclipse.emf.eef.codegen/src-custom/org/eclipse/emf/eef/codegen/ui/generators/actions/AbstractGenerateEEFAction.java
index afd64123c..747029b23 100644
--- a/plugins/org.eclipse.emf.eef.codegen/src-custom/org/eclipse/emf/eef/codegen/ui/generators/actions/AbstractGenerateEEFAction.java
+++ b/plugins/org.eclipse.emf.eef.codegen/src-custom/org/eclipse/emf/eef/codegen/ui/generators/actions/AbstractGenerateEEFAction.java
@@ -26,16 +26,19 @@ import org.eclipse.core.runtime.Path;
import org.eclipse.emf.eef.EEFGen.EEFGenModel;
import org.eclipse.emf.eef.codegen.EEFCodegenPlugin;
import org.eclipse.emf.eef.codegen.ui.generators.common.GenerateAll;
+import org.eclipse.emf.eef.codegen.ui.generators.common.ImportOrganizer;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.dialogs.ProgressMonitorDialog;
import org.eclipse.jface.operation.IRunnableWithProgress;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IActionDelegate;
import org.eclipse.ui.IObjectActionDelegate;
import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchSite;
/**
* @author <a href="mailto:goulwen.lefur@obeo.fr">Goulwen Le Fur</a>
@@ -43,8 +46,10 @@ import org.eclipse.ui.IWorkbenchPart;
public abstract class AbstractGenerateEEFAction extends Action implements IObjectActionDelegate {
private Shell shell;
+ private IWorkbenchSite site;
protected List<IFile> selectedFiles;
protected List<EEFGenModel> eefGenModels;
+ protected ImportOrganizer organizer;
/**
*
@@ -52,6 +57,7 @@ public abstract class AbstractGenerateEEFAction extends Action implements IObjec
public AbstractGenerateEEFAction() {
selectedFiles = new ArrayList<IFile>();
eefGenModels = new ArrayList<EEFGenModel>();
+ organizer = new ImportOrganizer();
}
/**
@@ -59,6 +65,7 @@ public abstract class AbstractGenerateEEFAction extends Action implements IObjec
*/
public void setActivePart(IAction action, IWorkbenchPart targetPart) {
shell = targetPart.getSite().getShell();
+ site = targetPart.getSite();
}
/**
@@ -92,7 +99,7 @@ public abstract class AbstractGenerateEEFAction extends Action implements IObjec
if (eefGenModel.getViewsRepositories() != null)
count += eefGenModel.getViewsRepositories().size() * 5;
monitor.beginTask("Generating EEF Architecture", count);
- GenerateAll generator = new GenerateAll(target, eefGenModel);
+ final GenerateAll generator = new GenerateAll(target, eefGenModel);
generator.doGenerate(monitor);
for (Iterator<IContainer> iterator = generator.getGenerationTargets().iterator();
iterator.hasNext();) {
@@ -100,6 +107,14 @@ public abstract class AbstractGenerateEEFAction extends Action implements IObjec
nextContainer.refreshLocal(IResource.DEPTH_INFINITE, monitor);
}
monitor.worked(1);
+ monitor.beginTask("Organize imports", 1);
+ Display.getDefault().asyncExec(
+ new Runnable() {
+ public void run() {
+ organizer.organizeImports(site, generator.getGenerationTargets());
+ }
+ }
+ );
}
}
}
diff --git a/plugins/org.eclipse.emf.eef.codegen/src-custom/org/eclipse/emf/eef/codegen/ui/generators/common/ImportOrganizer.java b/plugins/org.eclipse.emf.eef.codegen/src-custom/org/eclipse/emf/eef/codegen/ui/generators/common/ImportOrganizer.java
new file mode 100644
index 000000000..aaef61655
--- /dev/null
+++ b/plugins/org.eclipse.emf.eef.codegen/src-custom/org/eclipse/emf/eef/codegen/ui/generators/common/ImportOrganizer.java
@@ -0,0 +1,51 @@
+/**
+ *
+ */
+package org.eclipse.emf.eef.codegen.ui.generators.common;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Set;
+
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.jdt.core.ICompilationUnit;
+import org.eclipse.jdt.core.IJavaElement;
+import org.eclipse.jdt.core.IPackageFragment;
+import org.eclipse.jdt.core.IPackageFragmentRoot;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jdt.ui.actions.OrganizeImportsAction;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.ui.IWorkbenchSite;
+
+/**
+ * @author glefur
+ *
+ */
+public class ImportOrganizer {
+
+ public void organizeImports(IWorkbenchSite site, Set<IContainer> folders) {
+ List<ICompilationUnit> units = new ArrayList<ICompilationUnit>();
+ for (IContainer container : folders) {
+ IJavaElement element = JavaCore.create(container);
+ IPackageFragmentRoot[] allPackageFragmentRoots;
+ try {
+ if (element instanceof IPackageFragmentRoot) {
+ IJavaElement[] children = ((IPackageFragmentRoot)element).getChildren();
+ for (int i = 0; i < children.length; i++) {
+ IJavaElement javaElement = children[i];
+ if (javaElement instanceof IPackageFragment) {
+ IPackageFragment fragment = (IPackageFragment)javaElement;
+ units.addAll(Arrays.asList(fragment.getCompilationUnits()));
+ }
+ }
+ }
+ } catch (JavaModelException e) {
+ }
+ }
+ OrganizeImportsAction organizeImportsAction = new OrganizeImportsAction(site);
+ organizeImportsAction.run(new StructuredSelection(units));
+ }
+
+}

Back to the top