Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 166607 Details for
Bug 301606
Make dependency to JDT optional
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read
this important communication.
[patch]
Patch to make dependency to JDT optional
patch_bug301606.txt (text/plain), 57.61 KB, created by
Holger Schill
on 2010-04-30 08:56:30 EDT
(
hide
)
Description:
Patch to make dependency to JDT optional
Filename:
MIME Type:
Creator:
Holger Schill
Created:
2010-04-30 08:56:30 EDT
Size:
57.61 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.xtext.generator >Index: src/org/eclipse/xtext/ui/generator/projectWizard/ProjectCreator.xpt >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.tmf/org.eclipse.xtext/plugins/org.eclipse.xtext.generator/src/org/eclipse/xtext/ui/generator/projectWizard/ProjectCreator.xpt,v >retrieving revision 1.14 >diff -u -r1.14 ProjectCreator.xpt >--- src/org/eclipse/xtext/ui/generator/projectWizard/ProjectCreator.xpt 27 Apr 2010 11:59:03 -0000 1.14 >+++ src/org/eclipse/xtext/ui/generator/projectWizard/ProjectCreator.xpt 30 Apr 2010 12:49:47 -0000 >@@ -37,12 +37,16 @@ > import org.eclipse.xpand2.output.Outlet; > import org.eclipse.xpand2.output.OutputImpl; > import org.eclipse.xtext.ui.util.EclipseResourceUtil; >-import org.eclipse.xtext.ui.wizard.DefaultProjectCreator; >+import org.eclipse.xtext.ui.util.JavaProjectConfigurator; >+import org.eclipse.xtext.ui.wizard.AbstractProjectCreator; >+import org.eclipse.xtext.ui.util.ProjectCreatorDescription; > > import com.google.common.collect.Lists; > import com.google.common.collect.Sets; >+import com.google.inject.Inject; >+import com.google.inject.Provider; > >-public class «projectCreatorClassName().toSimpleName()» extends DefaultProjectCreator { >+public class «projectCreatorClassName().toSimpleName()» extends AbstractProjectCreator { > > private static final String DSL_GENERATOR_PROJECT_NAME = "«generatorProjectName»"; > >@@ -51,6 +55,9 @@ > private final List<String> SRC_FOLDER_LIST = Collections > .unmodifiableList(Arrays.asList(SRC_ROOT, SRC_GEN_ROOT)); > >+ @Inject >+ private Provider<EclipseResourceUtil> eclipseResourceUtilProvider; >+ > @Override > protected «projectInfoClassName().toSimpleName()» getProjectInfo() { > return («projectInfoClassName().toSimpleName()») super.getProjectInfo(); >@@ -75,20 +82,29 @@ > } > > protected IProject createProject(IProgressMonitor monitor) { >- final IProject project = EclipseResourceUtil.createProject( >- getProjectInfo().getProjectName(), >- getSourceFolders(), >- getReferencedProjects(), >- Sets.newLinkedHashSet(getRequiredBundles()), >- getExportedPackages(), >- getImportedPackages(), >- getActivatorClassName(), >- monitor, >- null, >- getProjectNatures() >- ); >+ ProjectCreatorDescription creatorDescription = new ProjectCreatorDescription(); >+ creatorDescription.setProjectName(getProjectInfo().getProjectName()); >+ creatorDescription.setSourceFolders(getSourceFolders()); >+ creatorDescription.setReferencedProjects(getReferencedProjects()); >+ creatorDescription.setRequiredBundles(Sets >+ .newLinkedHashSet(getRequiredBundles())); >+ creatorDescription.setExportedPackages(getExportedPackages()); >+ creatorDescription.setImportedPackages(getImportedPackages()); >+ creatorDescription.setActivatorClassName(getActivatorClassName()); >+ creatorDescription.setProjectNatures(getProjectNatures()); >+ creatorDescription.setBuilders(getBuilders()); >+ final IProject project = eclipseResourceUtilProvider.get().createProject( >+ creatorDescription, monitor, null); >+ configureProject(project, getSourceFolders(), monitor); > return project; > } >+ >+ @Override >+ protected void configureProject(IProject project, List<String> srcFolders, >+ IProgressMonitor monitor) { >+ JavaProjectConfigurator.configureJavaProject(project, srcFolders, >+ monitor); >+ } > > protected List<String> getSourceFolders() { > return SRC_FOLDER_LIST; >@@ -119,6 +135,14 @@ > }; > } > >+ protected String[] getBuilders() { >+ return new String[]{ >+ "org.eclipse.jdt.core.javabuilder", >+ "org.eclipse.pde.ManifestBuilder", >+ "org.eclipse.pde.SchemaBuilder" >+ }; >+ } >+ > protected List<String> getRequiredBundles() { > return Lists.newArrayList( > "com.ibm.icu", >#P org.eclipse.xtext.ui >Index: src/org/eclipse/xtext/ui/DefaultUiModule.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.tmf/org.eclipse.xtext/plugins/org.eclipse.xtext.ui/src/org/eclipse/xtext/ui/DefaultUiModule.java,v >retrieving revision 1.10 >diff -u -r1.10 DefaultUiModule.java >--- src/org/eclipse/xtext/ui/DefaultUiModule.java 28 Apr 2010 14:05:15 -0000 1.10 >+++ src/org/eclipse/xtext/ui/DefaultUiModule.java 30 Apr 2010 12:49:49 -0000 >@@ -44,6 +44,8 @@ > import org.eclipse.xtext.ui.editor.formatting.IContentFormatterFactory; > import org.eclipse.xtext.ui.editor.formatting.PreferenceStoreIndentationInformation; > import org.eclipse.xtext.ui.editor.hyperlinking.DefaultHyperlinkDetector; >+import org.eclipse.xtext.ui.editor.model.IResourceForEditorInputFactory; >+import org.eclipse.xtext.ui.editor.model.JavaClassPathResourceForIEditorInputFactory; > import org.eclipse.xtext.ui.editor.outline.IContentOutlineNodeComparer; > import org.eclipse.xtext.ui.editor.outline.IOutlineTreeProvider; > import org.eclipse.xtext.ui.editor.outline.XtextContentOutlinePage; >@@ -65,6 +67,8 @@ > import org.eclipse.xtext.ui.label.DefaultDescriptionLabelProvider; > import org.eclipse.xtext.ui.label.DefaultEObjectLabelProvider; > import org.eclipse.xtext.ui.label.InjectableAdapterFactoryLabelProvider; >+import org.eclipse.xtext.ui.resource.IResourceSetProvider; >+import org.eclipse.xtext.ui.resource.XtextResourceSetProvider; > > import com.google.inject.Binder; > import com.google.inject.name.Names; >@@ -231,4 +235,12 @@ > public Class<? extends IContentOutlineNodeComparer> bindIContentOutlineNodeComparer() { > return IContentOutlineNodeComparer.Default.class; > } >+ >+ public Class<? extends IResourceForEditorInputFactory> bindIResourceForEditorInputFactory() { >+ return JavaClassPathResourceForIEditorInputFactory.class; >+ } >+ >+ public Class<? extends IResourceSetProvider> bindIResourceSetProvider() { >+ return XtextResourceSetProvider.class; >+ } > } >Index: src/org/eclipse/xtext/ui/editor/model/IResourceForEditorInputFactory.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.tmf/org.eclipse.xtext/plugins/org.eclipse.xtext.ui/src/org/eclipse/xtext/ui/editor/model/IResourceForEditorInputFactory.java,v >retrieving revision 1.1 >diff -u -r1.1 IResourceForEditorInputFactory.java >--- src/org/eclipse/xtext/ui/editor/model/IResourceForEditorInputFactory.java 2 Feb 2010 22:23:48 -0000 1.1 >+++ src/org/eclipse/xtext/ui/editor/model/IResourceForEditorInputFactory.java 30 Apr 2010 12:49:49 -0000 >@@ -10,12 +10,9 @@ > import org.eclipse.emf.ecore.resource.Resource; > import org.eclipse.ui.IEditorInput; > >-import com.google.inject.ImplementedBy; >- > /** > * @author Sven Efftinge - Initial contribution and API > */ >-@ImplementedBy(JavaClassPathResourceForIEditorInputFactory.class) > public interface IResourceForEditorInputFactory { > Resource createResource(IEditorInput input); > } >Index: src/org/eclipse/xtext/ui/editor/model/JavaClassPathResourceForIEditorInputFactory.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.tmf/org.eclipse.xtext/plugins/org.eclipse.xtext.ui/src/org/eclipse/xtext/ui/editor/model/JavaClassPathResourceForIEditorInputFactory.java,v >retrieving revision 1.5 >diff -u -r1.5 JavaClassPathResourceForIEditorInputFactory.java >--- src/org/eclipse/xtext/ui/editor/model/JavaClassPathResourceForIEditorInputFactory.java 23 Apr 2010 07:25:19 -0000 1.5 >+++ src/org/eclipse/xtext/ui/editor/model/JavaClassPathResourceForIEditorInputFactory.java 30 Apr 2010 12:49:49 -0000 >@@ -12,7 +12,6 @@ > import org.eclipse.core.runtime.CoreException; > import org.eclipse.emf.common.util.URI; > import org.eclipse.emf.common.util.WrappedException; >-import org.eclipse.emf.ecore.resource.ContentHandler; > import org.eclipse.emf.ecore.resource.Resource; > import org.eclipse.emf.ecore.resource.ResourceSet; > import org.eclipse.jdt.core.IJarEntryResource; >@@ -20,10 +19,7 @@ > import org.eclipse.jdt.core.IPackageFragmentRoot; > import org.eclipse.ui.IEditorInput; > import org.eclipse.ui.IStorageEditorInput; >-import org.eclipse.xtext.resource.IExternalContentSupport; > import org.eclipse.xtext.resource.XtextResource; >-import org.eclipse.xtext.resource.IExternalContentSupport.IExternalContentProvider; >-import org.eclipse.xtext.ui.resource.IResourceSetProvider; > import org.eclipse.xtext.ui.resource.IStorage2UriMapper; > > import com.google.inject.Inject; >@@ -32,28 +28,20 @@ > * @author Michael Clay > * @author Jan Koehnlein > */ >-public class JavaClassPathResourceForIEditorInputFactory implements IResourceForEditorInputFactory { >+public class JavaClassPathResourceForIEditorInputFactory extends ResourceForIEditorInputFactory { > > @Inject > private IStorage2UriMapper storageToUriMapper; > >- @Inject >- private IResourceSetProvider resourceSetProvider; >- >- @Inject >- private IExternalContentSupport externalContentSupport; >- >- @Inject >- private IExternalContentProvider externalContentProvider; >- >+ @Override > public Resource createResource(IEditorInput editorInput) { > try { > if (editorInput instanceof IStorageEditorInput) { > IStorage storage = ((IStorageEditorInput) editorInput).getStorage(); >- if (storage instanceof IFile) { >- return createResourceFor((IFile) storage); >- } else if (storage instanceof IJarEntryResource) { >+ if (storage instanceof IJarEntryResource) { > return createResourceFor((IJarEntryResource) storage); >+ } else if (storage instanceof IFile) { >+ return super.createResource(editorInput); > } > } > throw new IllegalArgumentException("Couldn't create EMF Resource for input " + editorInput); >@@ -71,40 +59,19 @@ > return resource; > } > >- protected void configureResourceSet(ResourceSet resourceSet, URI primaryURI) { >- // TODO: Filter external content - primary resource should not use dirty state >- externalContentSupport.configureResourceSet(resourceSet, externalContentProvider); >- } >- >- protected XtextResource createResource(ResourceSet resourceSet, URI uri) { >- Resource aResource = resourceSet.createResource(uri, ContentHandler.UNSPECIFIED_CONTENT_TYPE); >- if (!(aResource instanceof XtextResource)) >- throw new IllegalStateException("The resource factory registered for " + uri >- + " does not yield an XtextResource. Make sure the right resource factory has been registered."); >- return (XtextResource) aResource; >- } >- >+ @Override > protected ResourceSet getResourceSet(IStorage storage) { >- if (storage instanceof IFile) { >- return resourceSetProvider.get(((IFile) storage).getProject()); >- } else if (storage instanceof IJarEntryResource){ >+ if (storage instanceof IJarEntryResource) { > IPackageFragmentRoot root = ((IJarEntryResource) storage).getPackageFragmentRoot(); > if (root != null) { > IJavaProject project = root.getJavaProject(); > if (project != null) >- return resourceSetProvider.get(project.getProject()); >+ return getResourceSetProvider().get(project.getProject()); > } >+ } else if (storage instanceof IFile) { >+ return super.getResourceSet(storage); > } >- return resourceSetProvider.get(null); >- } > >- protected Resource createResourceFor(IFile storage) throws CoreException { >- ResourceSet resourceSet = getResourceSet(storage); >- URI uri = URI.createPlatformResourceURI(storage.getFullPath().toString(), true); >- configureResourceSet(resourceSet, uri); >- XtextResource resource = createResource(resourceSet, uri); >- resource.setValidationDisabled(false); >- return resource; >+ return getResourceSetProvider().get(null); > } >- > } >\ No newline at end of file >Index: src/org/eclipse/xtext/ui/editor/model/ResourceForIEditorInputFactory.java >=================================================================== >RCS file: src/org/eclipse/xtext/ui/editor/model/ResourceForIEditorInputFactory.java >diff -N src/org/eclipse/xtext/ui/editor/model/ResourceForIEditorInputFactory.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/xtext/ui/editor/model/ResourceForIEditorInputFactory.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,101 @@ >+/******************************************************************************* >+ * Copyright (c) 2010 itemis AG (http://www.itemis.eu) and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ *******************************************************************************/ >+package org.eclipse.xtext.ui.editor.model; >+ >+import org.eclipse.core.resources.IFile; >+import org.eclipse.core.resources.IStorage; >+import org.eclipse.core.runtime.CoreException; >+import org.eclipse.emf.common.util.URI; >+import org.eclipse.emf.common.util.WrappedException; >+import org.eclipse.emf.ecore.resource.ContentHandler; >+import org.eclipse.emf.ecore.resource.Resource; >+import org.eclipse.emf.ecore.resource.ResourceSet; >+import org.eclipse.ui.IEditorInput; >+import org.eclipse.ui.IStorageEditorInput; >+import org.eclipse.xtext.resource.IExternalContentSupport; >+import org.eclipse.xtext.resource.IExternalContentSupport.IExternalContentProvider; >+import org.eclipse.xtext.resource.XtextResource; >+import org.eclipse.xtext.ui.resource.IResourceSetProvider; >+ >+import com.google.inject.Inject; >+ >+/** >+ * @author schill - Initial contribution and API >+ */ >+public class ResourceForIEditorInputFactory implements IResourceForEditorInputFactory { >+ >+ @Inject >+ private IResourceSetProvider resourceSetProvider; >+ >+ @Inject >+ private IExternalContentSupport externalContentSupport; >+ >+ @Inject >+ private IExternalContentProvider externalContentProvider; >+ >+ public Resource createResource(IEditorInput editorInput) { >+ try { >+ if (editorInput instanceof IStorageEditorInput) { >+ IStorage storage = ((IStorageEditorInput) editorInput).getStorage(); >+ if (storage instanceof IFile) >+ return createResourceFor((IFile) storage); >+ } >+ throw new IllegalArgumentException("Couldn't create EMF Resource for input " + editorInput); >+ } catch (CoreException e) { >+ throw new WrappedException(e); >+ } >+ } >+ >+ >+ protected Resource createResourceFor(IFile storage) throws CoreException { >+ ResourceSet resourceSet = getResourceSet(storage); >+ URI uri = URI.createPlatformResourceURI(storage.getFullPath().toString(), true); >+ configureResourceSet(resourceSet, uri); >+ XtextResource resource = createResource(resourceSet, uri); >+ resource.setValidationDisabled(false); >+ return resource; >+ } >+ >+ protected XtextResource createResource(ResourceSet resourceSet, URI uri) { >+ Resource aResource = resourceSet.createResource(uri, ContentHandler.UNSPECIFIED_CONTENT_TYPE); >+ if (!(aResource instanceof XtextResource)) >+ throw new IllegalStateException("The resource factory registered for " + uri >+ + " does not yield an XtextResource. Make sure the right resource factory has been registered."); >+ return (XtextResource) aResource; >+ } >+ >+ protected ResourceSet getResourceSet(IStorage storage) { >+ if (storage instanceof IFile) { >+ return resourceSetProvider.get(((IFile) storage).getProject()); >+ } >+ return resourceSetProvider.get(null); >+ } >+ >+ protected void configureResourceSet(ResourceSet resourceSet, URI primaryURI) { >+ // TODO: Filter external content - primary resource should not use dirty state >+ externalContentSupport.configureResourceSet(resourceSet, externalContentProvider); >+ } >+ >+ >+ protected IResourceSetProvider getResourceSetProvider() { >+ return resourceSetProvider; >+ } >+ >+ >+ protected IExternalContentSupport getExternalContentSupport() { >+ return externalContentSupport; >+ } >+ >+ >+ protected IExternalContentProvider getExternalContentProvider() { >+ return externalContentProvider; >+ } >+ >+ >+ >+} >Index: src/org/eclipse/xtext/ui/resource/IResourceSetProvider.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.tmf/org.eclipse.xtext/plugins/org.eclipse.xtext.ui/src/org/eclipse/xtext/ui/resource/IResourceSetProvider.java,v >retrieving revision 1.1 >diff -u -r1.1 IResourceSetProvider.java >--- src/org/eclipse/xtext/ui/resource/IResourceSetProvider.java 2 Feb 2010 22:23:41 -0000 1.1 >+++ src/org/eclipse/xtext/ui/resource/IResourceSetProvider.java 30 Apr 2010 12:49:50 -0000 >@@ -10,13 +10,10 @@ > import org.eclipse.core.resources.IProject; > import org.eclipse.emf.ecore.resource.ResourceSet; > >-import com.google.inject.ImplementedBy; >- > /** > * @author Sven Efftinge - Initial contribution and API > */ >-@ImplementedBy(XtextResourceSetProvider.class) > public interface IResourceSetProvider { >- >+ > ResourceSet get(IProject project); > } >Index: src/org/eclipse/xtext/ui/resource/SimpleResourceSetProvider.java >=================================================================== >RCS file: src/org/eclipse/xtext/ui/resource/SimpleResourceSetProvider.java >diff -N src/org/eclipse/xtext/ui/resource/SimpleResourceSetProvider.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/xtext/ui/resource/SimpleResourceSetProvider.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,29 @@ >+/******************************************************************************* >+ * Copyright (c) 2010 itemis AG (http://www.itemis.eu) and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ *******************************************************************************/ >+package org.eclipse.xtext.ui.resource; >+ >+import org.eclipse.core.resources.IProject; >+import org.eclipse.emf.ecore.resource.ResourceSet; >+import org.eclipse.xtext.resource.XtextResourceSet; >+ >+import com.google.inject.Inject; >+import com.google.inject.Provider; >+ >+/** >+ * @author schill - Initial contribution and API >+ */ >+public class SimpleResourceSetProvider implements IResourceSetProvider { >+ >+ @Inject >+ private Provider<XtextResourceSet> resourceSetProvider; >+ >+ public ResourceSet get(IProject project) { >+ return resourceSetProvider.get(); >+ } >+ >+} >Index: src/org/eclipse/xtext/ui/util/EclipseResourceUtil.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.tmf/org.eclipse.xtext/plugins/org.eclipse.xtext.ui/src/org/eclipse/xtext/ui/util/EclipseResourceUtil.java,v >retrieving revision 1.4 >diff -u -r1.4 EclipseResourceUtil.java >--- src/org/eclipse/xtext/ui/util/EclipseResourceUtil.java 20 Apr 2010 19:24:34 -0000 1.4 >+++ src/org/eclipse/xtext/ui/util/EclipseResourceUtil.java 30 Apr 2010 12:49:51 -0000 >@@ -9,16 +9,12 @@ > package org.eclipse.xtext.ui.util; > > import java.io.ByteArrayInputStream; >-import java.io.IOException; > import java.io.InputStream; >-import java.net.URL; >-import java.util.ArrayList; > import java.util.Iterator; > import java.util.List; > import java.util.Set; > > import org.apache.log4j.Logger; >-import org.eclipse.core.resources.ICommand; > import org.eclipse.core.resources.IContainer; > import org.eclipse.core.resources.IFile; > import org.eclipse.core.resources.IFolder; >@@ -27,58 +23,46 @@ > import org.eclipse.core.resources.IWorkspace; > import org.eclipse.core.resources.ResourcesPlugin; > import org.eclipse.core.runtime.CoreException; >-import org.eclipse.core.runtime.IPath; > import org.eclipse.core.runtime.IProgressMonitor; > import org.eclipse.core.runtime.NullProgressMonitor; > import org.eclipse.core.runtime.Path; >-import org.eclipse.core.runtime.Platform; > import org.eclipse.core.runtime.SubMonitor; >-import org.eclipse.jdt.core.IClasspathEntry; >-import org.eclipse.jdt.core.IJavaProject; >-import org.eclipse.jdt.core.JavaCore; > import org.eclipse.jface.dialogs.MessageDialog; > import org.eclipse.swt.widgets.Shell; >-import org.eclipse.ui.IWorkbench; > import org.eclipse.ui.IWorkbenchPage; >-import org.eclipse.ui.IWorkingSet; > import org.eclipse.ui.PartInitException; > import org.eclipse.ui.PlatformUI; > import org.eclipse.ui.ide.IDE; > > /** >- * Represents a helper/util class to work with eclipse core resource >- * abstractions for workspace,project,files and directories. For the most part >- * this code was copied from the last version (4.3.1) of openArchitectureWare. >- * >+ * Represents a helper/util class to work with eclipse core resource abstractions for workspace,project,files and >+ * directories. For the most part this code was copied from the last version (4.3.1) of openArchitectureWare. >+ * > * @author Michael Clay > */ > public class EclipseResourceUtil { > >- private static Logger logger = Logger.getLogger(EclipseResourceUtil.class); >+ private static final Logger logger = Logger.getLogger(EclipseResourceUtil.class); > >- public static final String ISO_8859_1 = "iso-8859-1"; >- >- public static IProject createProject(final String projectName, final IPath location, final List<String> srcFolders, >- final List<IProject> referencedProjects, final Set<String> requiredBundles, >- final List<String> exportedPackages, final List<String> importedPackages, final String activatorClassName, >- final IProgressMonitor monitor, final Shell theShell, String[] projectNatures, IWorkingSet[] workingSets, >- IWorkbench workbench) { >+ public IProject createProject(final ProjectCreatorDescription projectCreatorDescription, >+ final IProgressMonitor monitor, final Shell theShell) { > > IProject project = null; > SubMonitor subMonitor = SubMonitor.convert(monitor, 10); > try { >- subMonitor.subTask("Creating project " + projectName); >+ subMonitor.subTask("Creating project " + projectCreatorDescription.getProjectName()); > final IWorkspace workspace = ResourcesPlugin.getWorkspace(); >- project = workspace.getRoot().getProject(projectName); >- >+ project = workspace.getRoot().getProject(projectCreatorDescription.getProjectName()); > // Clean up any old project information. > if (project.exists()) { > final boolean[] result = new boolean[1]; > PlatformUI.getWorkbench().getDisplay().syncExec(new Runnable() { > public void run() { > result[0] = MessageDialog.openQuestion(theShell, "Do you want to overwrite the project " >- + projectName, "Note that everything inside the project '" + projectName >- + "' will be deleted if you confirm this dialog."); >+ + projectCreatorDescription.getProjectName(), >+ "Note that everything inside the project '" >+ + projectCreatorDescription.getProjectName() >+ + "' will be deleted if you confirm this dialog."); > } > }); > if (result[0]) { >@@ -86,61 +70,23 @@ > } else > return null; > } >- >- final IJavaProject javaProject = JavaCore.create(project); >- final IProjectDescription projectDescription = ResourcesPlugin.getWorkspace().newProjectDescription( >- projectName); >- if (location!=null && !Platform.getLocation().equals(location.removeLastSegments(1))) { >- projectDescription.setLocation(location); >- } >+ IProjectDescription projectDescription = projectCreatorDescription.createProjectDescription(); > project.create(projectDescription, subMonitor.newChild(1)); >- final List<IClasspathEntry> classpathEntries = new ArrayList<IClasspathEntry>(); >- if (referencedProjects.size() != 0) { >- projectDescription.setReferencedProjects(referencedProjects.toArray(new IProject[referencedProjects >- .size()])); >- for (final IProject referencedProject : referencedProjects) { >- final IClasspathEntry referencedProjectClasspathEntry = JavaCore.newProjectEntry(referencedProject >- .getFullPath()); >- classpathEntries.add(referencedProjectClasspathEntry); >- } >- } >- projectDescription.setNatureIds(projectNatures); >- >- final ICommand java = projectDescription.newCommand(); >- java.setBuilderName(JavaCore.BUILDER_ID); >- >- final ICommand manifest = projectDescription.newCommand(); >- manifest.setBuilderName("org.eclipse.pde.ManifestBuilder"); >- >- final ICommand schema = projectDescription.newCommand(); >- schema.setBuilderName("org.eclipse.pde.SchemaBuilder"); >- >- projectDescription.setBuildSpec(new ICommand[] { java, manifest, schema }); >- > project.open(subMonitor.newChild(1)); > project.setDescription(projectDescription, subMonitor.newChild(1)); >- >- for (final String src : srcFolders) { >+ for (final String src : projectCreatorDescription.getSourceFolders()) { > final IFolder srcContainer = project.getFolder(src); > if (!srcContainer.exists()) { > srcContainer.create(false, true, subMonitor.newChild(1)); > } >- final IClasspathEntry srcClasspathEntry = JavaCore.newSourceEntry(srcContainer.getFullPath()); >- classpathEntries.add(srcClasspathEntry); > } >- >- classpathEntries.add(JavaCore.newContainerEntry(new Path("org.eclipse.jdt.launching.JRE_CONTAINER"))); >- classpathEntries.add(JavaCore.newContainerEntry(new Path("org.eclipse.pde.core.requiredPlugins"))); >- >- javaProject.setRawClasspath(classpathEntries.toArray(new IClasspathEntry[classpathEntries.size()]), >- subMonitor.newChild(1)); >- >- javaProject.setOutputLocation(new Path("/" + projectName + "/bin"), subMonitor.newChild(1)); >- createManifest(projectName, requiredBundles, exportedPackages, importedPackages, activatorClassName, >- subMonitor.newChild(1), project); >- createBuildProps(subMonitor.newChild(1), project, srcFolders); >- if (workbench != null && workingSets != null) >- workbench.getWorkingSetManager().addToWorkingSets(project, workingSets); >+ createManifest(projectCreatorDescription.getProjectName(), projectCreatorDescription.getRequiredBundles(), >+ projectCreatorDescription.getExportedPackages(), projectCreatorDescription.getImportedPackages(), >+ projectCreatorDescription.getActivatorClassName(), subMonitor.newChild(1), project); >+ createBuildProps(subMonitor.newChild(1), project, projectCreatorDescription.getSourceFolders()); >+ if (projectCreatorDescription.getWorkbench() != null && projectCreatorDescription.getWorkingSets() != null) >+ projectCreatorDescription.getWorkbench().getWorkingSetManager().addToWorkingSets(project, >+ projectCreatorDescription.getWorkingSets()); > } catch (final Exception exception) { > exception.printStackTrace(); > logger.error(exception); >@@ -149,16 +95,8 @@ > } > return project; > } >- >- public static IProject createProject(final String projectName, final List<String> srcFolders, >- final List<IProject> referencedProjects, final Set<String> requiredBundles, >- final List<String> exportedPackages, final List<String> importedPackages, final String activatorClassName, >- final IProgressMonitor progressMonitor, final Shell theShell, String[] projectNatures) { >- return createProject(projectName, null, srcFolders, referencedProjects, requiredBundles, exportedPackages, >- importedPackages, activatorClassName, progressMonitor, theShell, projectNatures, null, null); >- } > >- public static IFile createFile(final String name, final IContainer container, final String content, >+ protected IFile createFile(final String name, final IContainer container, final String content, > final IProgressMonitor progressMonitor) { > final IFile file = container.getFile(new Path(name)); > assertExist(file.getParent()); >@@ -179,7 +117,7 @@ > return file; > } > >- public static IFile createFile(final String name, final IContainer container, final String content, >+ protected IFile createFile(final String name, final IContainer container, final String content, > final String charSet, final IProgressMonitor progressMonitor) throws CoreException { > final IFile file = createFile(name, container, content, progressMonitor); > if (file != null && charSet != null) { >@@ -188,7 +126,7 @@ > return file; > } > >- private static void createBuildProps(final IProgressMonitor progressMonitor, final IProject project, >+ protected void createBuildProps(final IProgressMonitor progressMonitor, final IProject project, > final List<String> srcFolders) { > final StringBuilder bpContent = new StringBuilder("source.. = "); > for (final Iterator<String> iterator = srcFolders.iterator(); iterator.hasNext();) { >@@ -205,7 +143,7 @@ > createFile("build.properties", project, bpContent.toString(), progressMonitor); > } > >- private static void createManifest(final String projectName, final Set<String> requiredBundles, >+ protected void createManifest(final String projectName, final Set<String> requiredBundles, > final List<String> exportedPackages, final List<String> importedPackages, final String activatorClassName, > final IProgressMonitor progressMonitor, final IProject project) throws CoreException { > final StringBuilder mainContent = new StringBuilder("Manifest-Version: 1.0\n"); >@@ -214,7 +152,6 @@ > mainContent.append("Bundle-Vendor: My Company\n"); > mainContent.append("Bundle-Version: 1.0.0\n"); > mainContent.append("Bundle-SymbolicName: " + projectName.toLowerCase() + "; singleton:=true\n"); >-// mainContent.append("Bundle-RequiredExecutionEnvironment: J2SE-1.5\n"); > if (null != activatorClassName) { > mainContent.append("Bundle-Activator: " + activatorClassName + "\n"); > } >@@ -261,50 +198,7 @@ > } > } > >- /** >- * @param name >- * of the destination file >- * @param container >- * directory containing the the destination file >- * @param contentUrl >- * Url pointing to the src of the content >- * @param progressMonitor >- * used to interact with and show the user the current operation >- * status >- * @return >- */ >- public static IFile createFile(final String name, final IContainer container, final URL contentUrl, >- final IProgressMonitor progressMonitor) { >- final IFile file = container.getFile(new Path(name)); >- SubMonitor subMonitor = SubMonitor.convert(progressMonitor, 1); >- try { >- InputStream inputStream = null; >- try { >- inputStream = contentUrl.openStream(); >- if (file.exists()) { >- file.setContents(inputStream, true, true, subMonitor.newChild(1)); >- } else { >- file.create(inputStream, true, subMonitor.newChild(1)); >- } >- inputStream.close(); >- } catch (final Exception e) { >- logger.error(e); >- } finally { >- if (null != inputStream) { >- try { >- inputStream.close(); >- } catch (final IOException e) { >- logger.error(e); >- } >- } >- } >- } finally { >- subMonitor.done(); >- } >- return file; >- } >- >- private static void assertExist(final IContainer c) { >+ protected void assertExist(final IContainer c) { > if (!c.exists()) { > if (!c.getParent().exists()) { > assertExist(c.getParent()); >@@ -319,7 +213,7 @@ > } > } > >- public static void openFileToEdit(final Shell s, final IFile file) { >+ public void openFileToEdit(final Shell s, final IFile file) { > s.getDisplay().asyncExec(new Runnable() { > public void run() { > final IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); >@@ -331,22 +225,4 @@ > } > }); > } >- >- public static void createPackagesWithDummyClasses(IProject dslProject, String string, List<String> exportedPackages) >- throws CoreException { >- for (String string2 : exportedPackages) { >- IFolder folder = dslProject.getFolder(string + "/" + (string2.replace('.', '/'))); >- create(folder); >- IFile file = folder.getFile("Foo.java"); >- String contents = "package " + string2 + ";\nclass Foo {}"; >- file.create(new ByteArrayInputStream(contents.getBytes()), true, null); >- } >- } >- >- private static void create(IFolder folder) throws CoreException { >- if (!folder.getParent().exists()) >- create((IFolder) folder.getParent()); >- folder.create(true, true, null); >- } >- > } >Index: src/org/eclipse/xtext/ui/util/JavaProjectConfigurator.java >=================================================================== >RCS file: src/org/eclipse/xtext/ui/util/JavaProjectConfigurator.java >diff -N src/org/eclipse/xtext/ui/util/JavaProjectConfigurator.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/xtext/ui/util/JavaProjectConfigurator.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,60 @@ >+/******************************************************************************* >+ * Copyright (c) 2010 itemis AG (http://www.itemis.eu) and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ *******************************************************************************/ >+package org.eclipse.xtext.ui.util; >+ >+import java.util.ArrayList; >+import java.util.List; >+ >+import org.apache.log4j.Logger; >+import org.eclipse.core.resources.IFolder; >+import org.eclipse.core.resources.IProject; >+import org.eclipse.core.runtime.IProgressMonitor; >+import org.eclipse.core.runtime.Path; >+import org.eclipse.core.runtime.SubMonitor; >+import org.eclipse.jdt.core.IClasspathEntry; >+import org.eclipse.jdt.core.IJavaProject; >+import org.eclipse.jdt.core.JavaCore; >+import org.eclipse.jdt.core.JavaModelException; >+ >+/** >+ * @author schill - Initial contribution and API >+ */ >+public class JavaProjectConfigurator { >+ >+ private static final Logger logger = Logger.getLogger(JavaProjectConfigurator.class); >+ >+ public static void configureJavaProject(final IProject project, final List<String> srcFolders, >+ final IProgressMonitor monitor) { >+ SubMonitor subMonitor = SubMonitor.convert(monitor, 10); >+ try { >+ subMonitor.subTask("Configure javaProject " + project.getName()); >+ final IJavaProject javaProject = JavaCore.create(project); >+ final List<IClasspathEntry> classpathEntries = new ArrayList<IClasspathEntry>(); >+ for (final IProject referencedProject : project.getReferencingProjects()) { >+ final IClasspathEntry referencedProjectClasspathEntry = JavaCore.newProjectEntry(referencedProject >+ .getFullPath()); >+ classpathEntries.add(referencedProjectClasspathEntry); >+ } >+ for (final String src : srcFolders) { >+ final IFolder srcContainer = project.getFolder(src); >+ final IClasspathEntry srcClasspathEntry = JavaCore.newSourceEntry(srcContainer.getFullPath()); >+ classpathEntries.add(srcClasspathEntry); >+ } >+ >+ classpathEntries.add(JavaCore.newContainerEntry(new Path("org.eclipse.jdt.launching.JRE_CONTAINER"))); >+ classpathEntries.add(JavaCore.newContainerEntry(new Path("org.eclipse.pde.core.requiredPlugins"))); >+ >+ javaProject.setRawClasspath(classpathEntries.toArray(new IClasspathEntry[classpathEntries.size()]), >+ subMonitor.newChild(1)); >+ javaProject.setOutputLocation(new Path("/" + project.getName() + "/bin"), subMonitor.newChild(1)); >+ } catch (JavaModelException e) { >+ e.printStackTrace(); >+ logger.error(e); >+ } >+ } >+} >Index: src/org/eclipse/xtext/ui/util/ProjectCreatorDescription.java >=================================================================== >RCS file: src/org/eclipse/xtext/ui/util/ProjectCreatorDescription.java >diff -N src/org/eclipse/xtext/ui/util/ProjectCreatorDescription.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/xtext/ui/util/ProjectCreatorDescription.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,169 @@ >+/******************************************************************************* >+ * Copyright (c) 2010 itemis AG (http://www.itemis.eu) and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ *******************************************************************************/ >+package org.eclipse.xtext.ui.util; >+ >+import java.util.List; >+import java.util.Set; >+ >+import org.eclipse.core.resources.ICommand; >+import org.eclipse.core.resources.IProject; >+import org.eclipse.core.resources.IProjectDescription; >+import org.eclipse.core.resources.ResourcesPlugin; >+import org.eclipse.core.runtime.IPath; >+import org.eclipse.core.runtime.Platform; >+import org.eclipse.ui.IWorkbench; >+import org.eclipse.ui.IWorkingSet; >+ >+import com.google.common.collect.Lists; >+ >+ >+/** >+ * @author schill - Initial contribution and API >+ */ >+public class ProjectCreatorDescription { >+ >+ private String projectName; >+ private IPath location; >+ private List<String> sourceFolders; >+ private List<IProject> referencedProjects; >+ private Set<String> requiredBundles; >+ private List<String> exportedPackages; >+ private List<String> importedPackages; >+ private String activatorClassName; >+ private String[] projectNatures; >+ private IWorkingSet[] workingSets; >+ private IWorkbench workbench; >+ private String[] builders; >+ >+ public String[] getBuilders() { >+ return builders; >+ } >+ >+ public void setBuilders(String[] builders) { >+ this.builders = builders; >+ } >+ >+ public String getProjectName() { >+ return projectName; >+ } >+ >+ public void setProjectName(String projectName) { >+ this.projectName = projectName; >+ } >+ >+ public IPath getLocation() { >+ return location; >+ } >+ >+ public void setLocation(IPath location) { >+ this.location = location; >+ } >+ >+ public List<String> getSourceFolders() { >+ return sourceFolders; >+ } >+ >+ public void setSourceFolders(List<String> sourceFolders) { >+ this.sourceFolders = sourceFolders; >+ } >+ >+ public List<IProject> getReferencedProjects() { >+ return referencedProjects; >+ } >+ >+ public void setReferencedProjects(List<IProject> referencedProjects) { >+ this.referencedProjects = referencedProjects; >+ } >+ >+ public Set<String> getRequiredBundles() { >+ return requiredBundles; >+ } >+ >+ public void setRequiredBundles(Set<String> requiredBundles) { >+ this.requiredBundles = requiredBundles; >+ } >+ >+ public List<String> getExportedPackages() { >+ return exportedPackages; >+ } >+ >+ public void setExportedPackages(List<String> exportedPackages) { >+ this.exportedPackages = exportedPackages; >+ } >+ >+ public List<String> getImportedPackages() { >+ return importedPackages; >+ } >+ >+ public void setImportedPackages(List<String> importedPackages) { >+ this.importedPackages = importedPackages; >+ } >+ >+ public String getActivatorClassName() { >+ return activatorClassName; >+ } >+ >+ public void setActivatorClassName(String activatorClassName) { >+ this.activatorClassName = activatorClassName; >+ } >+ >+ public String[] getProjectNatures() { >+ return projectNatures; >+ } >+ >+ public void setProjectNatures(String[] projectNatures) { >+ this.projectNatures = projectNatures; >+ } >+ >+ public IWorkingSet[] getWorkingSets() { >+ return workingSets; >+ } >+ >+ public void setWorkingSets(IWorkingSet[] workingSets) { >+ this.workingSets = workingSets; >+ } >+ >+ public IWorkbench getWorkbench() { >+ return workbench; >+ } >+ >+ public void setWorkbench(IWorkbench workbench) { >+ this.workbench = workbench; >+ } >+ >+ /** >+ * Creates an IProjectDescription out of the given informations >+ * >+ * @return {@link IProjectDescription} >+ */ >+ public IProjectDescription createProjectDescription() { >+ final IProjectDescription projectDescription = ResourcesPlugin.getWorkspace() >+ .newProjectDescription(projectName); >+ if (location != null && !Platform.getLocation().equals(location.removeLastSegments(1))) { >+ projectDescription.setLocation(location); >+ } >+ >+ if (referencedProjects.size() != 0) { >+ projectDescription.setReferencedProjects(referencedProjects >+ .toArray(new IProject[referencedProjects.size()])); >+ } >+ projectDescription.setNatureIds(projectNatures); >+ setBuilder(projectDescription, builders); >+ return projectDescription; >+ } >+ >+ protected void setBuilder(final IProjectDescription projectDescription, final String[] builders) { >+ List<ICommand> commands = Lists.newArrayList(); >+ for (int i = 0; i < builders.length; i++) { >+ ICommand command = projectDescription.newCommand(); >+ command.setBuilderName(builders[i]); >+ commands.add(command); >+ } >+ projectDescription.setBuildSpec(commands.toArray(new ICommand[commands.size()])); >+ } >+} >Index: src/org/eclipse/xtext/ui/wizard/AbstractProjectCreator.java >=================================================================== >RCS file: src/org/eclipse/xtext/ui/wizard/AbstractProjectCreator.java >diff -N src/org/eclipse/xtext/ui/wizard/AbstractProjectCreator.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/xtext/ui/wizard/AbstractProjectCreator.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,61 @@ >+/******************************************************************************* >+ * Copyright (c) 2009 itemis AG (http://www.itemis.eu) and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ *******************************************************************************/ >+package org.eclipse.xtext.ui.wizard; >+ >+import java.lang.reflect.InvocationTargetException; >+import java.util.List; >+ >+import org.eclipse.core.resources.IFile; >+import org.eclipse.core.resources.IProject; >+import org.eclipse.core.resources.ResourcesPlugin; >+import org.eclipse.core.runtime.CoreException; >+import org.eclipse.core.runtime.IProgressMonitor; >+import org.eclipse.ui.actions.WorkspaceModifyOperation; >+ >+/** >+ * @author Peter Friese - Initial contribution and API >+ */ >+public abstract class AbstractProjectCreator extends WorkspaceModifyOperation implements IProjectCreator { >+ >+ private IFile result; >+ private IProjectInfo projectInfo; >+ >+ public IFile getResult() { >+ return result; >+ } >+ >+ protected void setResult(IFile result) { >+ this.result = result; >+ } >+ >+ public void setProjectInfo(IProjectInfo projectInfo) { >+ this.projectInfo = projectInfo; >+ } >+ >+ protected IProjectInfo getProjectInfo() { >+ return projectInfo; >+ } >+ >+ @Override >+ protected void execute(IProgressMonitor monitor) throws CoreException, InvocationTargetException, >+ InterruptedException { >+ >+ } >+ >+ protected String getEncoding() throws CoreException { >+ return ResourcesPlugin.getWorkspace().getRoot().getDefaultCharset(); >+ } >+ /** >+ * Method to configure a project e.g. an IJavaProject's classpath >+ * @param project IProject to configure >+ * @param srcFolders List of sourceFolders e.g. to configure the classpath of an IJavaProject >+ */ >+ protected abstract void configureProject(IProject project, List<String> srcFolders, IProgressMonitor monitor); >+ >+} >Index: src/org/eclipse/xtext/ui/wizard/DefaultProjectCreator.java >=================================================================== >RCS file: src/org/eclipse/xtext/ui/wizard/DefaultProjectCreator.java >diff -N src/org/eclipse/xtext/ui/wizard/DefaultProjectCreator.java >--- src/org/eclipse/xtext/ui/wizard/DefaultProjectCreator.java 2 Feb 2010 22:23:43 -0000 1.1 >+++ /dev/null 1 Jan 1970 00:00:00 -0000 >@@ -1,53 +0,0 @@ >-/******************************************************************************* >- * Copyright (c) 2009 itemis AG (http://www.itemis.eu) and others. >- * All rights reserved. This program and the accompanying materials >- * are made available under the terms of the Eclipse Public License v1.0 >- * which accompanies this distribution, and is available at >- * http://www.eclipse.org/legal/epl-v10.html >- * >- *******************************************************************************/ >-package org.eclipse.xtext.ui.wizard; >- >-import java.lang.reflect.InvocationTargetException; >- >-import org.eclipse.core.resources.IFile; >-import org.eclipse.core.resources.ResourcesPlugin; >-import org.eclipse.core.runtime.CoreException; >-import org.eclipse.core.runtime.IProgressMonitor; >-import org.eclipse.ui.actions.WorkspaceModifyOperation; >- >-/** >- * @author Peter Friese - Initial contribution and API >- */ >-public class DefaultProjectCreator extends WorkspaceModifyOperation implements IProjectCreator { >- >- private IFile result; >- private IProjectInfo projectInfo; >- >- public IFile getResult() { >- return result; >- } >- >- protected void setResult(IFile result) { >- this.result = result; >- } >- >- public void setProjectInfo(IProjectInfo projectInfo) { >- this.projectInfo = projectInfo; >- } >- >- protected IProjectInfo getProjectInfo() { >- return projectInfo; >- } >- >- @Override >- protected void execute(IProgressMonitor monitor) throws CoreException, InvocationTargetException, >- InterruptedException { >- >- } >- >- protected String getEncoding() throws CoreException { >- return ResourcesPlugin.getWorkspace().getRoot().getDefaultCharset(); >- } >- >-} >Index: src/org/eclipse/xtext/ui/wizard/XtextNewProjectWizard.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.tmf/org.eclipse.xtext/plugins/org.eclipse.xtext.ui/src/org/eclipse/xtext/ui/wizard/XtextNewProjectWizard.java,v >retrieving revision 1.3 >diff -u -r1.3 XtextNewProjectWizard.java >--- src/org/eclipse/xtext/ui/wizard/XtextNewProjectWizard.java 4 Feb 2010 12:35:06 -0000 1.3 >+++ src/org/eclipse/xtext/ui/wizard/XtextNewProjectWizard.java 30 Apr 2010 12:49:52 -0000 >@@ -20,6 +20,9 @@ > import org.eclipse.ui.IWorkbench; > import org.eclipse.xtext.ui.util.EclipseResourceUtil; > >+import com.google.inject.Inject; >+import com.google.inject.Provider; >+ > /** > * @author Peter Friese - Initial contribution and API > */ >@@ -29,6 +32,9 @@ > > protected IStructuredSelection selection; > >+ @Inject >+ private Provider<EclipseResourceUtil> eclipseResourceUtilProvider; >+ > public XtextNewProjectWizard(IProjectCreator creator) { > this.creator = creator; > setNeedsProgressMonitor(true); >@@ -75,7 +81,7 @@ > try { > creator.setProjectInfo(projectInfo); > creator.run(monitor); >- EclipseResourceUtil.openFileToEdit(getShell(), creator.getResult()); >+ eclipseResourceUtilProvider.get().openFileToEdit(getShell(), creator.getResult()); > } > catch (final InvocationTargetException e) { > logger.error(e.getMessage(), e); >#P org.eclipse.xtext.ui.shared >Index: src/org/eclipse/xtext/ui/shared/internal/SharedModule.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.tmf/org.eclipse.xtext/plugins/org.eclipse.xtext.ui.shared/src/org/eclipse/xtext/ui/shared/internal/SharedModule.java,v >retrieving revision 1.1 >diff -u -r1.1 SharedModule.java >--- src/org/eclipse/xtext/ui/shared/internal/SharedModule.java 24 Feb 2010 12:09:14 -0000 1.1 >+++ src/org/eclipse/xtext/ui/shared/internal/SharedModule.java 30 Apr 2010 12:49:53 -0000 >@@ -27,8 +27,10 @@ > import org.eclipse.xtext.ui.editor.IDirtyStateManager; > import org.eclipse.xtext.ui.notification.IStateChangeEventBroker; > import org.eclipse.xtext.ui.notification.StateChangeEventBroker; >+import org.eclipse.xtext.ui.resource.IResourceSetProvider; > import org.eclipse.xtext.ui.resource.IStorage2UriMapper; > import org.eclipse.xtext.ui.resource.Storage2UriMapperImpl; >+import org.eclipse.xtext.ui.resource.SimpleResourceSetProvider; > > import com.google.inject.AbstractModule; > import com.google.inject.Provider; >@@ -45,6 +47,7 @@ > bind(IBuilderState.class).to(PersistableResourceDescriptionsImpl.class).in(Scopes.SINGLETON); > bind(IResourceDescriptions.class).to(DirtyStateAwareResourceDescriptions.class).in(Scopes.SINGLETON); > bind(IResourceServiceProvider.Registry.class).toInstance(IResourceServiceProvider.Registry.INSTANCE); >+ bind(IResourceSetProvider.class).to(SimpleResourceSetProvider.class); > bind(IExtensionRegistry.class).toInstance(Platform.getExtensionRegistry()); > bind(IResourceChangeListener.class).annotatedWith(Names.named(ProjectOpenedOrClosedListener.class.getName())).to(ProjectOpenedOrClosedListener.class); > >Index: src/org/eclipse/xtext/ui/shared/internal/SharedModuleWithJdt.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.tmf/org.eclipse.xtext/plugins/org.eclipse.xtext.ui.shared/src/org/eclipse/xtext/ui/shared/internal/SharedModuleWithJdt.java,v >retrieving revision 1.1 >diff -u -r1.1 SharedModuleWithJdt.java >--- src/org/eclipse/xtext/ui/shared/internal/SharedModuleWithJdt.java 24 Feb 2010 12:09:14 -0000 1.1 >+++ src/org/eclipse/xtext/ui/shared/internal/SharedModuleWithJdt.java 30 Apr 2010 12:49:53 -0000 >@@ -10,8 +10,10 @@ > import org.eclipse.xtext.builder.impl.ToBeBuiltComputer; > import org.eclipse.xtext.builder.impl.javasupport.ElementChangeListener; > import org.eclipse.xtext.builder.impl.javasupport.JdtToBeBuiltComputer; >+import org.eclipse.xtext.ui.resource.IResourceSetProvider; > import org.eclipse.xtext.ui.resource.IStorage2UriMapper; > import org.eclipse.xtext.ui.resource.Storage2UriMapperJavaImpl; >+import org.eclipse.xtext.ui.resource.XtextResourceSetProvider; > > import com.google.inject.AbstractModule; > >@@ -26,6 +28,7 @@ > bind(ToBeBuiltComputer.class).to(JdtToBeBuiltComputer.class); > bind(ElementChangeListener.class).asEagerSingleton(); > bind(IStorage2UriMapper.class).to(Storage2UriMapperJavaImpl.class); >+ bind(IResourceSetProvider.class).to(XtextResourceSetProvider.class); > } > > } >\ No newline at end of file >#P org.eclipse.xtext.xtext.ui >Index: src/org/eclipse/xtext/xtext/ui/wizard/project/XtextProjectCreator.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.tmf/org.eclipse.xtext/plugins/org.eclipse.xtext.xtext.ui/src/org/eclipse/xtext/xtext/ui/wizard/project/XtextProjectCreator.java,v >retrieving revision 1.36 >diff -u -r1.36 XtextProjectCreator.java >--- src/org/eclipse/xtext/xtext/ui/wizard/project/XtextProjectCreator.java 23 Apr 2010 13:55:36 -0000 1.36 >+++ src/org/eclipse/xtext/xtext/ui/wizard/project/XtextProjectCreator.java 30 Apr 2010 12:49:55 -0000 >@@ -14,14 +14,12 @@ > import java.util.Collections; > import java.util.LinkedHashSet; > 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.IPath; > import org.eclipse.core.runtime.IProgressMonitor; > import org.eclipse.core.runtime.Path; > import org.eclipse.core.runtime.SubMonitor; >@@ -35,15 +33,23 @@ > import org.eclipse.xtend.type.impl.java.JavaBeansMetaModel; > import org.eclipse.xtext.ui.XtextProjectHelper; > import org.eclipse.xtext.ui.util.EclipseResourceUtil; >-import org.eclipse.xtext.ui.wizard.DefaultProjectCreator; >+import org.eclipse.xtext.ui.util.JavaProjectConfigurator; >+import org.eclipse.xtext.ui.util.ProjectCreatorDescription; >+import org.eclipse.xtext.ui.wizard.AbstractProjectCreator; >+ >+import com.google.inject.Inject; >+import com.google.inject.Provider; > > /** > * XtextProjectCreator handles the actual creation of the new Xtext project. > * > * @author Michael Clay - Initial contribution and API > */ >-public class XtextProjectCreator extends DefaultProjectCreator { >+public class XtextProjectCreator extends AbstractProjectCreator { > >+ @Inject >+ private Provider<EclipseResourceUtil> eclipseResourceUtilProvider; >+ > private static final String[] DSL_PROJECT_NATURES = new String[] { > JavaCore.NATURE_ID, > "org.eclipse.pde.PluginNature", //$NON-NLS-1$ >@@ -54,6 +60,10 @@ > JavaCore.NATURE_ID, > "org.eclipse.pde.PluginNature" //$NON-NLS-1$ > }; >+ >+ private static final String[] BUILDERS = new String[]{ >+ JavaCore.BUILDER_ID, "org.eclipse.pde.ManifestBuilder", "org.eclipse.pde.SchemaBuilder" >+ }; > > private static final String[] GENERATOR_PROJECT_NATURES = DSL_UI_PROJECT_NATURES; > >@@ -88,11 +98,13 @@ > BasicNewResourceWizard.selectAndReveal(dslGrammarFile, PlatformUI.getWorkbench().getActiveWorkbenchWindow()); > setResult(dslGrammarFile); > } >+ >+ @Override >+ protected void configureProject(IProject project, List<String> srcFolders, IProgressMonitor monitor) { >+ JavaProjectConfigurator.configureJavaProject(project, srcFolders, monitor); >+ } > > private IProject createDslUiProject(final IProgressMonitor monitor) throws CoreException { >- >- String projectName = getXtextProjectInfo().getUiProjectName(); >- > LinkedHashSet<String> requiredBundles = new LinkedHashSet<String>(Arrays.asList(getXtextProjectInfo() > .getProjectName().toLowerCase() > + ";visibility:=reexport", //$NON-NLS-1$ >@@ -100,13 +112,21 @@ > "org.eclipse.ui.editors;bundle-version=\"3.5.0\"", //$NON-NLS-1$ > "org.eclipse.ui.ide;bundle-version=\"3.5.0\"")); //$NON-NLS-1$ > >- return createProject(getXtextProjectInfo(), getXtextProjectInfo().getUiProjectLocation(), projectName, DSL_UI_PROJECT_NATURES, requiredBundles, >- Collections.singletonList("org.apache.log4j"), SRC_FOLDER_LIST, getDslUiProjectTemplateName(), monitor); >+ ProjectCreatorDescription creatorDescription = new ProjectCreatorDescription(); >+ creatorDescription.setWorkbench(getXtextProjectInfo().getWorkbench()); >+ creatorDescription.setWorkingSets(getXtextProjectInfo().getWorkingSets()); >+ creatorDescription.setLocation(getXtextProjectInfo().getUiProjectLocation()); >+ creatorDescription.setProjectName(getXtextProjectInfo().getUiProjectName()); >+ creatorDescription.setProjectNatures(DSL_UI_PROJECT_NATURES); >+ creatorDescription.setBuilders(BUILDERS); >+ creatorDescription.setRequiredBundles(requiredBundles); >+ creatorDescription.setImportedPackages(Collections.singletonList("org.apache.log4j"));//$NON-NLS-1$ >+ creatorDescription.setSourceFolders(SRC_FOLDER_LIST); >+ >+ return createProject(creatorDescription, getDslUiProjectTemplateName(), monitor); > } > > private IProject createDslProject(final IProgressMonitor monitor) throws CoreException { >- String projectName = getXtextProjectInfo().getProjectName(); >- > LinkedHashSet<String> requiredBundles = new LinkedHashSet<String>(Arrays.asList("org.eclipse.xtext", //$NON-NLS-1$ > "org.eclipse.xtext.generator;resolution:=optional", //$NON-NLS-1$ > "de.itemis.xtext.antlr;resolution:=optional", //$NON-NLS-1$ >@@ -124,14 +144,22 @@ > for(String bundleId: getAdditionalRequiredBundles()) { > requiredBundles.add(bundleId.trim()); > } >+ >+ ProjectCreatorDescription creatorDescription = new ProjectCreatorDescription(); >+ creatorDescription.setWorkbench(getXtextProjectInfo().getWorkbench()); >+ creatorDescription.setWorkingSets(getXtextProjectInfo().getWorkingSets()); >+ creatorDescription.setLocation(getXtextProjectInfo().getProjectLocation()); >+ creatorDescription.setProjectName(getXtextProjectInfo().getProjectName()); >+ creatorDescription.setProjectNatures(DSL_PROJECT_NATURES); >+ creatorDescription.setBuilders(BUILDERS); >+ creatorDescription.setRequiredBundles(requiredBundles); >+ creatorDescription.setImportedPackages(Collections.singletonList("org.apache.log4j"));//$NON-NLS-1$ >+ creatorDescription.setSourceFolders(SRC_FOLDER_LIST); > >- return createProject(getXtextProjectInfo(), getXtextProjectInfo().getProjectLocation(), projectName, DSL_PROJECT_NATURES, requiredBundles, >- Collections.singletonList("org.apache.log4j"), SRC_FOLDER_LIST, getDslProjectTemplateName(), monitor); >+ return createProject(creatorDescription, getDslProjectTemplateName(), monitor); > } > > private IProject createGeneratorProject(final IProgressMonitor monitor) throws CoreException { >- String projectName = getXtextProjectInfo().getGeneratorProjectName(); >- > LinkedHashSet<String> requiredBundles = new LinkedHashSet<String>(Arrays.asList(getXtextProjectInfo() > .getProjectName().toLowerCase() > + ";visibility:=reexport", "org.eclipse.xpand;visibility:=reexport", //$NON-NLS-1$ >@@ -140,24 +168,30 @@ > "org.eclipse.emf.mwe2.launch;resolution:=optional", //$NON-NLS-1$ > "org.eclipse.emf.mwe.utils;visibility:=reexport",//$NON-NLS-1$ > "org.eclipse.xtend.typesystem.emf;visibility:=reexport")); //$NON-NLS-1$ >- >- return createProject(getXtextProjectInfo(), getXtextProjectInfo().getGeneratorProjectLocation(), projectName, GENERATOR_PROJECT_NATURES, requiredBundles, >- Collections.singletonList("org.apache.log4j"), SRC_FOLDER_LIST, getGeneratorProjectTemplateName(), monitor); >+ ProjectCreatorDescription creatorDescription = new ProjectCreatorDescription(); >+ creatorDescription.setWorkbench(getXtextProjectInfo().getWorkbench()); >+ creatorDescription.setWorkingSets(getXtextProjectInfo().getWorkingSets()); >+ creatorDescription.setLocation(getXtextProjectInfo().getGeneratorProjectLocation()); >+ creatorDescription.setProjectName(getXtextProjectInfo().getGeneratorProjectName()); >+ creatorDescription.setProjectNatures(GENERATOR_PROJECT_NATURES); >+ creatorDescription.setBuilders(BUILDERS); >+ creatorDescription.setRequiredBundles(requiredBundles); >+ creatorDescription.setImportedPackages(Collections.singletonList("org.apache.log4j"));//$NON-NLS-1$ >+ creatorDescription.setSourceFolders(SRC_FOLDER_LIST); >+ return createProject(creatorDescription, getGeneratorProjectTemplateName(), monitor); > } > >- private IProject createProject(XtextProjectInfo xtextProjectInfo, IPath projectLocation, String projectName, String[] projectNatures, >- Set<String> requiredBundles, List<String> importPackages, List<String> srcFolderList, String templateName, >+ private IProject createProject(ProjectCreatorDescription creatorDescription, String templateName, > final IProgressMonitor monitor) throws CoreException { >- monitor.beginTask(Messages.XtextProjectCreator_CreatingProjectsMessage + projectName, 3); >- final IProject dslProject = EclipseResourceUtil.createProject(projectName, projectLocation, >- srcFolderList, Collections.<IProject> emptyList(), requiredBundles, null, importPackages, null, >- monitor, null, projectNatures, xtextProjectInfo.getWorkingSets(), xtextProjectInfo.getWorkbench()); >+ monitor.beginTask(Messages.XtextProjectCreator_CreatingProjectsMessage + creatorDescription.getProjectName(), 3); >+ creatorDescription.setReferencedProjects( Collections.<IProject> emptyList()); >+ final IProject dslProject = eclipseResourceUtilProvider.get().createProject(creatorDescription, monitor, null); > > if (dslProject == null) { > return null; > } > >- IFolder srcFolder = (IFolder) dslProject.findMember(srcFolderList.get(0)); >+ IFolder srcFolder = (IFolder) dslProject.findMember(creatorDescription.getSourceFolders().get(0)); > > OutputImpl output = new OutputImpl(); > output.addOutlet(new Outlet(false, getEncoding(), null, true, srcFolder.getLocation().makeAbsolute() >@@ -169,7 +203,7 @@ > > // generate generator and activator for dsl and dsl.ui project > XpandFacade facade = XpandFacade.create(execCtx); >- facade.evaluate(templateName, xtextProjectInfo); >+ facade.evaluate(templateName, getXtextProjectInfo()); > > monitor.worked(1); > >@@ -177,7 +211,7 @@ > dslProject.refreshLocal(IResource.DEPTH_INFINITE, monitor); > > monitor.worked(1); >- >+ configureProject(dslProject, creatorDescription.getSourceFolders(), monitor); > return dslProject; > } > >@@ -200,5 +234,4 @@ > protected Collection<String> getAdditionalRequiredBundles() { > return Collections.emptyList(); > } >- > } >\ No newline at end of file
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 301606
:
166603
|
166607