List of usage examples for org.eclipse.jdt.core IJavaProject findPackageFragmentRoot
IPackageFragmentRoot findPackageFragmentRoot(IPath path) throws JavaModelException;
null
if one does not exist. From source file:org.eclipse.e4.internal.tools.wizards.classes.AbstractNewClassPage.java
License:Open Source License
private IPackageFragmentRoot choosePackageRoot() { IJavaElement initElement = clazz.getFragmentRoot(); Class[] acceptedClasses = new Class[] { IPackageFragmentRoot.class, IJavaProject.class }; TypedElementSelectionValidator validator = new TypedElementSelectionValidator(acceptedClasses, false) { @Override/*from w w w. j a v a 2 s . c o m*/ public boolean isSelectedValid(Object element) { try { if (element instanceof IJavaProject) { IJavaProject jproject = (IJavaProject) element; IPath path = jproject.getProject().getFullPath(); return (jproject.findPackageFragmentRoot(path) != null); } else if (element instanceof IPackageFragmentRoot) { return (((IPackageFragmentRoot) element).getKind() == IPackageFragmentRoot.K_SOURCE); } return true; } catch (JavaModelException e) { JavaPlugin.log(e.getStatus()); // just log, no UI in validation } return false; } }; acceptedClasses = new Class[] { IJavaModel.class, IPackageFragmentRoot.class, IJavaProject.class }; ViewerFilter filter = new TypedViewerFilter(acceptedClasses) { @Override public boolean select(Viewer viewer, Object parent, Object element) { if (element instanceof IPackageFragmentRoot) { try { return (((IPackageFragmentRoot) element).getKind() == IPackageFragmentRoot.K_SOURCE); } catch (JavaModelException e) { JavaPlugin.log(e.getStatus()); // just log, no UI in validation return false; } } return super.select(viewer, parent, element); } }; StandardJavaElementContentProvider provider = new StandardJavaElementContentProvider(); ILabelProvider labelProvider = new JavaElementLabelProvider(JavaElementLabelProvider.SHOW_DEFAULT); ElementTreeSelectionDialog dialog = new ElementTreeSelectionDialog(getShell(), labelProvider, provider); dialog.setValidator(validator); dialog.setComparator(new JavaElementComparator()); dialog.setTitle(NewWizardMessages.NewContainerWizardPage_ChooseSourceContainerDialog_title); dialog.setMessage(NewWizardMessages.NewContainerWizardPage_ChooseSourceContainerDialog_description); dialog.addFilter(filter); dialog.setInput(JavaCore.create(fWorkspaceRoot)); dialog.setInitialSelection(initElement); dialog.setHelpAvailable(false); if (dialog.open() == Window.OK) { Object element = dialog.getFirstResult(); if (element instanceof IJavaProject) { IJavaProject jproject = (IJavaProject) element; return jproject.getPackageFragmentRoot(jproject.getProject()); } else if (element instanceof IPackageFragmentRoot) { return (IPackageFragmentRoot) element; } return null; } return null; }
From source file:org.eclipse.e4.xwt.tools.ui.designer.dialogs.AccessorConfigurationDialog.java
License:Open Source License
/** * Uses the standard container selection dialog to choose the new value for the container field. *//*from ww w. java2 s.com*/ private IPackageFragmentRoot chooseSourceContainer(IPackageFragmentRoot root) { Class[] acceptedClasses = new Class[] { IPackageFragmentRoot.class, IJavaProject.class }; TypedElementSelectionValidator validator = new TypedElementSelectionValidator(acceptedClasses, false) { public boolean isSelectedValid(Object element) { try { if (element instanceof IJavaProject) { IJavaProject jproject = (IJavaProject) element; IPath path = jproject.getProject().getFullPath(); return (jproject.findPackageFragmentRoot(path) != null); } else if (element instanceof IPackageFragmentRoot) { return (((IPackageFragmentRoot) element).getKind() == IPackageFragmentRoot.K_SOURCE); } return true; } catch (JavaModelException e) { JavaPlugin.log(e.getStatus()); // just log, no ui in validation } return false; } }; acceptedClasses = new Class[] { IJavaModel.class, IPackageFragmentRoot.class, IJavaProject.class }; ViewerFilter filter = new TypedViewerFilter(acceptedClasses) { public boolean select(Viewer viewer, Object parent, Object element) { if (element instanceof IPackageFragmentRoot) { try { return (((IPackageFragmentRoot) element).getKind() == IPackageFragmentRoot.K_SOURCE); } catch (JavaModelException e) { JavaPlugin.log(e.getStatus()); // just log, no ui in validation return false; } } return super.select(viewer, parent, element); } }; StandardJavaElementContentProvider provider = new StandardJavaElementContentProvider(); ILabelProvider labelProvider = new JavaElementLabelProvider(JavaElementLabelProvider.SHOW_DEFAULT); ElementTreeSelectionDialog dialog = new ElementTreeSelectionDialog(getShell(), labelProvider, provider); dialog.setValidator(validator); dialog.setComparator(new JavaElementComparator()); dialog.setTitle("Source Folder Selection"); dialog.setMessage("Choose a source folder:"); dialog.addFilter(filter); dialog.setInput(JavaCore.create(ResourcesPlugin.getWorkspace().getRoot())); if (dialog.open() == Window.OK) { Object element = dialog.getFirstResult(); if (element instanceof IJavaProject) { IJavaProject jproject = (IJavaProject) element; return jproject.getPackageFragmentRoot(jproject.getProject()); } else if (element instanceof IPackageFragmentRoot) { return (IPackageFragmentRoot) element; } return null; } return root; }
From source file:org.eclipse.gmf.internal.common.codegen.GeneratorBase.java
License:Open Source License
/** * @param javaSource workspace absolute path to java source folder of the generated project, e.g. '/org.sample.aaa/sources'. * @param projectLocation {@link IPath} to folder where <code>.project</code> file would reside. Use <code>null</code> to use default workspace location. * @param referencedProjects collection of {@link IProject} * @throws UnexpectedBehaviourException something goes really wrong * @throws InterruptedException user canceled operation *//*from w w w. j a v a 2 s . c om*/ protected final void initializeEditorProject(IPath javaSource, IPath projectLocation, List<IProject> referencedProjects) throws UnexpectedBehaviourException, InterruptedException { myDestProject = ResourcesPlugin.getWorkspace().getRoot().getProject(javaSource.segment(0)); final int style = org.eclipse.emf.codegen.ecore.Generator.EMF_PLUGIN_PROJECT_STYLE; // pluginVariables is NOT used when style is EMF_PLUGIN_PROJECT_STYLE final List<?> pluginVariables = null; final IProgressMonitor pm = getNextStepMonitor(); setProgressTaskName(Messages.initproject); org.eclipse.emf.codegen.ecore.Generator.createEMFProject(javaSource, projectLocation, referencedProjects, pm, style, pluginVariables); try { final IJavaProject jp = JavaCore.create(myDestProject); myDestRoot = jp.findPackageFragmentRoot(javaSource); // createEMFProject doesn't create source entry in case project exists and has some classpath entries already, // though the folder gets created. if (myDestRoot == null) { IClasspathEntry[] oldCP = jp.getRawClasspath(); IClasspathEntry[] newCP = new IClasspathEntry[oldCP.length + 1]; System.arraycopy(oldCP, 0, newCP, 0, oldCP.length); newCP[oldCP.length] = JavaCore.newSourceEntry(javaSource); jp.setRawClasspath(newCP, new NullProgressMonitor()); myDestRoot = jp.findPackageFragmentRoot(javaSource); } } catch (JavaModelException ex) { throw new UnexpectedBehaviourException(ex.getMessage()); } if (myDestRoot == null) { throw new UnexpectedBehaviourException("no source root can be found"); } }
From source file:org.eclipse.jpt.jaxb.ui.internal.wizards.classesgen.ClassesGeneratorWizardPage.java
License:Open Source License
/** * Override to allow selection of source folder in current project only * @see org.eclipse.jdt.ui.wizards.NewContainerWizardPage#chooseContainer() * Only 1 line in this code is different from the parent *//*ww w . j a v a2 s . c o m*/ @Override protected IPackageFragmentRoot chooseContainer() { Class<?>[] acceptedClasses = new Class[] { IPackageFragmentRoot.class, IJavaProject.class }; TypedElementSelectionValidator validator = new TypedElementSelectionValidator(acceptedClasses, false) { @Override public boolean isSelectedValid(Object element) { try { if (element instanceof IJavaProject) { IJavaProject jproject = (IJavaProject) element; IPath path = jproject.getProject().getFullPath(); return (jproject.findPackageFragmentRoot(path) != null); } else if (element instanceof IPackageFragmentRoot) { return (((IPackageFragmentRoot) element).getKind() == IPackageFragmentRoot.K_SOURCE); } return true; } catch (JavaModelException e) { JptJaxbUiPlugin.instance().logError(e); // just log, no UI in validation } return false; } }; acceptedClasses = new Class[] { IJavaModel.class, IPackageFragmentRoot.class, IJavaProject.class }; ViewerFilter filter = new TypedViewerFilter(acceptedClasses) { @Override public boolean select(Viewer viewer, Object parent, Object element) { if (element instanceof IPackageFragmentRoot) { try { return (((IPackageFragmentRoot) element).getKind() == IPackageFragmentRoot.K_SOURCE); } catch (JavaModelException e) { JptJaxbUiPlugin.instance().logError(e); // just log, no UI in validation return false; } } return super.select(viewer, parent, element); } }; StandardJavaElementContentProvider provider = new StandardJavaElementContentProvider(); ILabelProvider labelProvider = new JavaElementLabelProvider(JavaElementLabelProvider.SHOW_DEFAULT); ElementTreeSelectionDialog dialog = new ElementTreeSelectionDialog(getShell(), labelProvider, provider); dialog.setValidator(validator); dialog.setComparator(new JavaElementComparator()); dialog.setTitle(JptJaxbUiMessages.CLASSES_GENERATOR_WIZARD_PAGE_SOURCE_FOLDER_SELECTION_DIALOG_TITLE); dialog.setMessage(JptJaxbUiMessages.CLASSES_GENERATOR_WIZARD_PAGE_CHOOSE_SOURCE_FOLDER_DIALOG_DESC); dialog.addFilter(filter); //set the java project as the input instead of the workspace like the NewContainerWizardPage was doing //******************************************************// dialog.setInput(this.getJavaProject()); // //******************************************************// dialog.setInitialSelection(getPackageFragmentRoot()); dialog.setHelpAvailable(false); if (dialog.open() == Window.OK) { Object element = dialog.getFirstResult(); if (element instanceof IJavaProject) { IJavaProject jproject = (IJavaProject) element; return jproject.getPackageFragmentRoot(jproject.getProject()); } else if (element instanceof IPackageFragmentRoot) { return (IPackageFragmentRoot) element; } return null; } return null; }
From source file:org.eclipse.jpt.jpa.ui.internal.wizards.gen.DefaultTableGenerationWizardPage.java
License:Open Source License
/** Override to allow select source folder in current project only * @see org.eclipse.jdt.ui.wizards.NewContainerWizardPage#chooseContainer() *//*w w w.ja va 2 s. c om*/ @Override protected IPackageFragmentRoot chooseContainer() { Class<?>[] acceptedClasses = new Class[] { IPackageFragmentRoot.class, IJavaProject.class }; TypedElementSelectionValidator validator = new TypedElementSelectionValidator(acceptedClasses, false) { @Override public boolean isSelectedValid(Object element) { try { if (element instanceof IJavaProject) { IJavaProject jproject = (IJavaProject) element; IPath path = jproject.getProject().getFullPath(); return (jproject.findPackageFragmentRoot(path) != null); } else if (element instanceof IPackageFragmentRoot) { return PackageFragmentRootTools.isSourceFolder((IPackageFragmentRoot) element); } return true; } catch (JavaModelException e) { JptJpaUiPlugin.instance().logError(e); // just log, no UI in validation } return false; } }; acceptedClasses = new Class[] { IJavaModel.class, IPackageFragmentRoot.class, IJavaProject.class }; ViewerFilter filter = new TypedViewerFilter(acceptedClasses) { @Override public boolean select(Viewer viewer, Object parent, Object element) { if (element instanceof IPackageFragmentRoot) { return PackageFragmentRootTools.isSourceFolder((IPackageFragmentRoot) element); } return super.select(viewer, parent, element); } }; StandardJavaElementContentProvider provider = new StandardJavaElementContentProvider(); ILabelProvider labelProvider = new JavaElementLabelProvider(JavaElementLabelProvider.SHOW_DEFAULT); ElementTreeSelectionDialog dialog = new ElementTreeSelectionDialog(getShell(), labelProvider, provider); dialog.setValidator(validator); dialog.setComparator(new JavaElementComparator()); dialog.setTitle(NewWizardMessages.NewContainerWizardPage_ChooseSourceContainerDialog_title); dialog.setMessage(NewWizardMessages.NewContainerWizardPage_ChooseSourceContainerDialog_description); dialog.addFilter(filter); dialog.setInput(jpaProject.getJavaProject()); dialog.setInitialSelection(getPackageFragmentRoot()); dialog.setHelpAvailable(false); if (dialog.open() == Window.OK) { Object element = dialog.getFirstResult(); if (element instanceof IJavaProject) { IJavaProject jproject = (IJavaProject) element; return jproject.getPackageFragmentRoot(jproject.getProject()); } else if (element instanceof IPackageFragmentRoot) { return (IPackageFragmentRoot) element; } return null; } return null; }
From source file:org.eclipse.jst.jsp.ui.internal.hyperlink.XMLJavaHyperlinkDetector.java
License:Open Source License
private IHyperlink createHyperlink(String elementName, IRegion region, IDocument document) { // try file buffers ITextFileBuffer textFileBuffer = FileBuffers.getTextFileBufferManager().getTextFileBuffer(document); if (textFileBuffer != null) { IPath basePath = textFileBuffer.getLocation(); if (basePath != null && !basePath.isEmpty()) { IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(basePath.segment(0)); try { if (basePath.segmentCount() > 1 && project.isAccessible() && project.hasNature(JavaCore.NATURE_ID)) { return createJavaElementHyperlink(JavaCore.create(project), elementName, region); }/* w ww .ja v a2 s . co m*/ } catch (CoreException e) { Logger.logException(e); } } } // fallback to SSE-specific knowledge IStructuredModel model = null; try { model = StructuredModelManager.getModelManager().getExistingModelForRead(document); if (model != null) { String baseLocation = model.getBaseLocation(); // URL fixup from the taglib index record if (baseLocation.startsWith("jar:/file:")) { //$NON-NLS-1$ baseLocation = StringUtils.replace(baseLocation, "jar:/", "jar:"); //$NON-NLS-1$ //$NON-NLS-2$ } /* * Handle opened TLD files from JARs on the Java Build Path by * finding a package fragment root for the same .jar file and * opening the class from there. Note that this might be from * a different Java project's build path than the TLD. */ if (baseLocation.startsWith(JAR_FILE_PROTOCOL) && baseLocation.indexOf('!') > JAR_FILE_PROTOCOL.length()) { String baseFile = baseLocation.substring(JAR_FILE_PROTOCOL.length(), baseLocation.indexOf('!')); IPath basePath = new Path(baseFile); IProject[] projects = ResourcesPlugin.getWorkspace().getRoot().getProjects(); for (int i = 0; i < projects.length; i++) { try { if (projects[i].isAccessible() && projects[i].hasNature(JavaCore.NATURE_ID)) { IJavaProject javaProject = JavaCore.create(projects[i]); if (javaProject.exists()) { IPackageFragmentRoot root = javaProject.findPackageFragmentRoot(basePath); if (root != null) { return createJavaElementHyperlink(javaProject, elementName, region); } } } } catch (CoreException e) { Logger.logException(e); } } } else { IPath basePath = new Path(baseLocation); if (basePath.segmentCount() > 1) { return createJavaElementHyperlink( JavaCore.create( ResourcesPlugin.getWorkspace().getRoot().getProject(basePath.segment(0))), elementName, region); } } } } finally { if (model != null) model.releaseFromRead(); } return null; }
From source file:org.eclipse.jst.jsp.ui.internal.taginfo.XMLJavadocHoverProcessor.java
License:Open Source License
public String getHoverInfo(ITextViewer textViewer, IRegion hoverRegion) { String elementName = null;// w w w. j av a 2s. c om try { elementName = textViewer.getDocument().get(hoverRegion.getOffset(), hoverRegion.getLength()); } catch (BadLocationException e) { return null; } IStructuredModel model = null; try { model = StructuredModelManager.getModelManager().getExistingModelForRead(textViewer.getDocument()); if (model != null) { String baseLocation = model.getBaseLocation(); // URL fixup from the taglib index record if (baseLocation.startsWith("jar:/file:")) { baseLocation = StringUtils.replace(baseLocation, "jar:/", "jar:"); } /* * Handle opened TLD files from JARs on the Java Build Path by * finding a package fragment root for the same .jar file and * opening the class from there. Note that this might be from * a different Java project's build path than the TLD. */ if (baseLocation.startsWith("jar:file:") && baseLocation.indexOf('!') > 9) { String baseFile = baseLocation.substring(9, baseLocation.indexOf('!')); IPath basePath = new Path(baseFile); IProject[] projects = ResourcesPlugin.getWorkspace().getRoot().getProjects(); for (int i = 0; i < projects.length; i++) { try { if (projects[i].isAccessible() && projects[i].hasNature(JavaCore.NATURE_ID)) { IJavaProject javaProject = JavaCore.create(projects[i]); if (javaProject.exists()) { IPackageFragmentRoot root = javaProject.findPackageFragmentRoot(basePath); if (root != null) { // TLDs don't reference method names IType type = javaProject.findType(elementName); if (type != null) { return getHoverInfo(new IJavaElement[] { type }); } } } } } catch (CoreException e) { Logger.logException(e); } } } else { IPath basePath = new Path(baseLocation); if (basePath.segmentCount() > 1) { IJavaProject javaProject = JavaCore .create(ResourcesPlugin.getWorkspace().getRoot().getProject(basePath.segment(0))); if (javaProject.exists()) { try { // TLDs don't reference method names IType type = javaProject.findType(elementName); if (type != null) { return getHoverInfo(new IJavaElement[] { type }); } } catch (JavaModelException e) { Logger.logException(e); } } } } } } finally { if (model != null) model.releaseFromRead(); } return null; }
From source file:org.eclipse.jst.ws.internal.common.ResourceUtils.java
License:Open Source License
/** * Returns a build source package fragment root of the <code>project</code> * as an <code>IPackageFragmentRoot</code>, or null if the project either * has no Java nature or if the project's build classpath contains no * folders local to the project. If the project has more than one of its own * folders on the build classpath, then one of them is chosen arbitrarily as * the build source location./*from www. j a va 2s . com*/ * * @param project * The project. * @return A build source package fragment root of the <code>project</code> * or null if the project has no Java nature or if the project's * build classpath contains no folders local to the project. * * @deprecated not used */ public static IPackageFragmentRoot getJavaSourcePackageFragmentRoot(IProject project) { IPackageFragmentRoot packageFragmentRoot = null; IPath javaSourceLocation = getJavaSourceLocation(project); try { IJavaProject javaProject = JavaCore.create(project); if (javaProject != null) { packageFragmentRoot = javaProject.findPackageFragmentRoot(javaSourceLocation); } } catch (JavaModelException e) { } return packageFragmentRoot; }
From source file:org.eclipse.m2e.tests.BuildPathManagerTest.java
License:Open Source License
private IPackageFragmentRoot getPackageFragmentRoot(IJavaProject javaProject, IClasspathEntry cp) throws JavaModelException { return javaProject.findPackageFragmentRoot(cp.getPath()); }
From source file:org.eclipse.m2e.tests.BuildPathManagerTest.java
License:Open Source License
public void testDownloadSources_006_nonMavenProject() throws Exception { RepositoryRegistry repositoryRegistry = (RepositoryRegistry) MavenPlugin.getRepositoryRegistry(); repositoryRegistry.updateRegistry(monitor); NexusIndexManager indexManager = (NexusIndexManager) MavenPlugin.getIndexManager(); indexManager.getIndexUpdateJob().join(); IMutableIndex localIndex = indexManager.getLocalIndex(); localIndex.updateIndex(true, monitor); for (IRepository repository : repositoryRegistry.getRepositories(IRepositoryRegistry.SCOPE_SETTINGS)) { if ("file:repositories/remoterepo".equals(repository.getUrl())) { NexusIndex remoteIndex = indexManager.getIndex(repository); remoteIndex.updateIndex(true, monitor); // actually scan the repo }/*from ww w .java2 s . c om*/ } IProject project = createExisting("downloadsources-p006", "projects/downloadsources/p006"); File log4jJar = new File("repositories/remoterepo/log4j/log4j/1.2.13/log4j-1.2.13.jar"); Path log4jPath = new Path(log4jJar.getAbsolutePath()); File junitJar = new File("repositories/remoterepo/junit/junit/3.8.1/junit-3.8.1.jar"); Path junitPath = new Path(junitJar.getAbsolutePath()); IJavaProject javaProject = JavaCore.create(project); IClasspathEntry[] origCp = javaProject.getRawClasspath(); IClasspathEntry[] cp = new IClasspathEntry[origCp.length + 2]; System.arraycopy(origCp, 0, cp, 0, origCp.length); cp[cp.length - 2] = JavaCore.newLibraryEntry(log4jPath, null, null, true); cp[cp.length - 1] = JavaCore.newLibraryEntry(junitPath, null, null, false); javaProject.setRawClasspath(cp, monitor); getBuildPathManager().scheduleDownload(javaProject.findPackageFragmentRoot(log4jPath), true, false); waitForJobsToComplete(); cp = javaProject.getRawClasspath(); assertEquals(log4jJar.getAbsoluteFile(), cp[cp.length - 2].getPath().toFile()); assertEquals("log4j-1.2.13-sources.jar", cp[cp.length - 2].getSourceAttachmentPath().lastSegment()); assertEquals(true, cp[cp.length - 2].isExported()); getBuildPathManager().scheduleDownload(javaProject.findPackageFragmentRoot(junitPath), true, false); waitForJobsToComplete(); assertEquals(junitJar.getAbsoluteFile(), cp[cp.length - 1].getPath().toFile()); assertEquals("junit-3.8.1-sources.jar", cp[cp.length - 1].getSourceAttachmentPath().lastSegment()); assertEquals(false, cp[cp.length - 1].isExported()); }