diff options
author | glefur | 2009-09-30 12:46:33 +0000 |
---|---|---|
committer | glefur | 2009-09-30 12:46:33 +0000 |
commit | 116910f775d90e83dc1086b8b29abb4b247a9522 (patch) | |
tree | 4571522e3dd2563017989a7d1c53d4c0ddd7e9c5 /plugins/org.eclipse.emf.eef.codegen | |
parent | 3d8b58e43b17cbee4dabae82d76036dafd9c8461 (diff) | |
download | org.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')
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)); + } + +} |