diff options
author | Thomas Schindl | 2011-02-16 20:14:07 +0000 |
---|---|---|
committer | Thomas Schindl | 2011-02-16 20:14:07 +0000 |
commit | a9bff0bd3efcc6c7d5514d7992292b7b89e613f6 (patch) | |
tree | 166d94e01cc7fd9dedffa236281deb49a2af10e6 | |
parent | 9f7a105905831d7feaa81ef215a9cb287958383c (diff) | |
download | org.eclipse.e4.tools-a9bff0bd3efcc6c7d5514d7992292b7b89e613f6.tar.gz org.eclipse.e4.tools-a9bff0bd3efcc6c7d5514d7992292b7b89e613f6.tar.xz org.eclipse.e4.tools-a9bff0bd3efcc6c7d5514d7992292b7b89e613f6.zip |
Bug 337174 - [ModelTooling] Creating class is default package fails
4 files changed, 70 insertions, 13 deletions
diff --git a/bundles/org.eclipse.e4.tools/src/org/eclipse/e4/internal/tools/wizards/classes/AbstractNewClassWizard.java b/bundles/org.eclipse.e4.tools/src/org/eclipse/e4/internal/tools/wizards/classes/AbstractNewClassWizard.java index 355a41c7..523e003b 100644 --- a/bundles/org.eclipse.e4.tools/src/org/eclipse/e4/internal/tools/wizards/classes/AbstractNewClassWizard.java +++ b/bundles/org.eclipse.e4.tools/src/org/eclipse/e4/internal/tools/wizards/classes/AbstractNewClassWizard.java @@ -11,9 +11,15 @@ package org.eclipse.e4.internal.tools.wizards.classes; import java.io.ByteArrayInputStream; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashSet; +import java.util.List; +import java.util.Set; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IFolder; +import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IAdaptable; @@ -29,10 +35,16 @@ import org.eclipse.jdt.core.JavaCore; import org.eclipse.jdt.core.JavaModelException; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.wizard.Wizard; +import org.eclipse.pde.core.project.IBundleProjectDescription; +import org.eclipse.pde.core.project.IBundleProjectService; +import org.eclipse.pde.core.project.IRequiredBundleDescription; import org.eclipse.ui.INewWizard; import org.eclipse.ui.IWorkbench; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.ide.IDE; +import org.osgi.framework.BundleContext; +import org.osgi.framework.FrameworkUtil; +import org.osgi.framework.ServiceReference; public abstract class AbstractNewClassWizard extends Wizard implements INewWizard { protected IPackageFragmentRoot root; @@ -115,7 +127,39 @@ public abstract class AbstractNewClassWizard extends Wizard implements INewWizar } protected void checkRequiredBundles() { - + IProject project = getDomainClass().getFragmentRoot().getJavaProject().getProject(); + BundleContext context = FrameworkUtil.getBundle(NewAddonClassWizard.class).getBundleContext(); + ServiceReference<IBundleProjectService> ref = context.getServiceReference(IBundleProjectService.class); + IBundleProjectService service = context.getService(ref); + try { + IBundleProjectDescription description = service.getDescription(project); + Set<String> requiredBundles = getRequiredBundles(); + IRequiredBundleDescription[] arTmp = description.getRequiredBundles(); + List<IRequiredBundleDescription> descs = new ArrayList<IRequiredBundleDescription>(); + if( arTmp != null ) { + descs.addAll(Arrays.asList(arTmp)); + } + for( IRequiredBundleDescription bd : descs ) { + requiredBundles.remove(bd.getName()); + } + + if( requiredBundles.size() > 0 ) { + for( String b : requiredBundles ) { + descs.add(service.newRequiredBundle(b, null, false, false)); + } + description.setRequiredBundles(descs.toArray(new IRequiredBundleDescription[0])); + description.apply(new NullProgressMonitor()); + } + } catch (CoreException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + protected Set<String> getRequiredBundles() { + Set<String> rv = new HashSet<String>(); + rv.add("javax.inject"); + return rv; } @Override diff --git a/bundles/org.eclipse.e4.tools/src/org/eclipse/e4/internal/tools/wizards/classes/NewAddonClassWizard.java b/bundles/org.eclipse.e4.tools/src/org/eclipse/e4/internal/tools/wizards/classes/NewAddonClassWizard.java index 48793ef0..58432912 100644 --- a/bundles/org.eclipse.e4.tools/src/org/eclipse/e4/internal/tools/wizards/classes/NewAddonClassWizard.java +++ b/bundles/org.eclipse.e4.tools/src/org/eclipse/e4/internal/tools/wizards/classes/NewAddonClassWizard.java @@ -10,6 +10,8 @@ ******************************************************************************/ package org.eclipse.e4.internal.tools.wizards.classes; +import java.util.Set; + import org.eclipse.core.databinding.DataBindingContext; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.e4.internal.tools.wizards.classes.templates.AddonTemplate; @@ -42,9 +44,10 @@ public class NewAddonClassWizard extends AbstractNewClassWizard { } @Override - protected void checkRequiredBundles() { - // TODO Auto-generated method stub - + protected Set<String> getRequiredBundles() { + Set<String> rv = super.getRequiredBundles(); + rv.add("javax.annotation"); + rv.add("org.eclipse.e4.core.services"); + return rv; } - -} +}
\ No newline at end of file diff --git a/bundles/org.eclipse.e4.tools/src/org/eclipse/e4/internal/tools/wizards/classes/NewHandlerClassWizard.java b/bundles/org.eclipse.e4.tools/src/org/eclipse/e4/internal/tools/wizards/classes/NewHandlerClassWizard.java index 100fb188..f970424a 100644 --- a/bundles/org.eclipse.e4.tools/src/org/eclipse/e4/internal/tools/wizards/classes/NewHandlerClassWizard.java +++ b/bundles/org.eclipse.e4.tools/src/org/eclipse/e4/internal/tools/wizards/classes/NewHandlerClassWizard.java @@ -10,6 +10,8 @@ ******************************************************************************/ package org.eclipse.e4.internal.tools.wizards.classes; +import java.util.Set; + import org.eclipse.core.databinding.DataBindingContext; import org.eclipse.core.databinding.beans.BeanProperties; import org.eclipse.core.resources.ResourcesPlugin; @@ -87,12 +89,12 @@ public class NewHandlerClassWizard extends AbstractNewClassWizard { } @Override - protected void checkRequiredBundles() { - // TODO Auto-generated method stub - + protected Set<String> getRequiredBundles() { + Set<String> set = super.getRequiredBundles(); + set.add("org.eclipse.e4.core.di"); + return set; } - public static class HandlerClass extends JavaClass { private String executeMethodName = "execute"; private String canExecuteMethodName = "canExecute"; diff --git a/bundles/org.eclipse.e4.tools/src/org/eclipse/e4/internal/tools/wizards/classes/NewPartClassWizard.java b/bundles/org.eclipse.e4.tools/src/org/eclipse/e4/internal/tools/wizards/classes/NewPartClassWizard.java index a28bdb19..db3d3bf6 100644 --- a/bundles/org.eclipse.e4.tools/src/org/eclipse/e4/internal/tools/wizards/classes/NewPartClassWizard.java +++ b/bundles/org.eclipse.e4.tools/src/org/eclipse/e4/internal/tools/wizards/classes/NewPartClassWizard.java @@ -12,6 +12,7 @@ package org.eclipse.e4.internal.tools.wizards.classes; import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; +import java.util.Set; import org.eclipse.core.databinding.DataBindingContext; import org.eclipse.core.databinding.beans.BeanProperties; @@ -136,11 +137,18 @@ public class NewPartClassWizard extends AbstractNewClassWizard { } @Override - protected void checkRequiredBundles() { - // TODO Auto-generated method stub + protected Set<String> getRequiredBundles() { + Set<String> rv = super.getRequiredBundles(); + PartClass cl = (PartClass)getDomainClass(); + if( cl.usePostConstruct || cl.usePredestroy ) { + rv.add("javax.annotation"); + } else if( cl.useFocus || cl.usePersist ) { + rv.add("org.eclipse.e4.ui.di"); + } + return rv; } - + @Override protected String getContent() { PartTemplate template = new PartTemplate(); |