Example usage for org.eclipse.jdt.core IJavaProject getPackageFragmentRoot

List of usage examples for org.eclipse.jdt.core IJavaProject getPackageFragmentRoot

Introduction

In this page you can find the example usage for org.eclipse.jdt.core IJavaProject getPackageFragmentRoot.

Prototype

IPackageFragmentRoot getPackageFragmentRoot(IResource resource);

Source Link

Document

Returns a package fragment root for the given resource, which must either be a folder representing the top of a package hierarchy, or a ZIP archive (e.g.

Usage

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 ww  .  j  a  va  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. ja v a  2 s  .c o  m
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.edt.ide.ui.wizards.EGLProjectUtility.java

License:Open Source License

private static IClasspathEntry[] createNewClasspathEntries(IJavaProject javaProject, String folderName,
        String binFolderName, String encoding, IClasspathEntry[] oldEntries) throws InvocationTargetException {
    // Get or create the necessary folders as well as the file.
    IFolder baseFolder = createFolderIfNecessary(javaProject.getProject(), folderName, encoding);
    IFolder binFolder = createFolderIfNecessary(javaProject.getProject(), binFolderName, encoding);

    try {//ww w .j  a  v  a2  s . c  om
        IPackageFragmentRoot sourceRoot = javaProject.getPackageFragmentRoot(baseFolder);
        IPackageFragmentRoot binRoot = javaProject.getPackageFragmentRoot(binFolder);
        IClasspathEntry newEntry = JavaCore.newSourceEntry(sourceRoot.getPath(), new IPath[] {},
                binRoot.getPath());
        if (!EGLProjectUtility.classpathEntryExists(javaProject, newEntry)) {
            //oldEntries = javaProject.getRawClasspath();
            IClasspathEntry[] newEntries = new IClasspathEntry[oldEntries.length + 1];
            newEntries[0] = newEntry;
            System.arraycopy(oldEntries, 0, newEntries, 1, oldEntries.length);
            return newEntries;
        }
    } catch (JavaModelException ex) {
        throw new InvocationTargetException(ex, ex.getMessage());
    }
    // Return the old ones if a new entry wasn't created
    return oldEntries;
}

From source file:org.eclipse.egit.ui.test.team.actions.ShowBlameActionHandlerTest.java

License:Open Source License

private IJavaProject createJavaProject(final Repository repository, final String projectName) throws Exception {
    final IJavaProject[] jProjectHolder = new IJavaProject[] { null };
    IWorkspaceRunnable runnable = new IWorkspaceRunnable() {
        @Override/*from w w  w  .j  av a 2  s  .  com*/
        public void run(IProgressMonitor monitor) throws CoreException {
            IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
            IProject project = root.getProject(projectName);
            if (project.exists()) {
                project.delete(true, null);
                TestUtil.waitForJobs(100, 5000);
            }
            IProjectDescription desc = ResourcesPlugin.getWorkspace().newProjectDescription(projectName);
            desc.setLocation(new Path(new File(repository.getWorkTree(), projectName).getPath()));
            project.create(desc, null);
            project.open(null);
            TestUtil.waitForJobs(50, 5000);
            // Create a "bin" folder
            IFolder bin = project.getFolder(BIN_FOLDER_NAME);
            if (!bin.exists()) {
                bin.create(IResource.FORCE | IResource.DERIVED, true, null);
            }
            IPath outputLocation = bin.getFullPath();
            // Create a "src" folder
            IFolder src = project.getFolder(SRC_FOLDER_NAME);
            if (!src.exists()) {
                src.create(IResource.FORCE, true, null);
            }
            addNatureToProject(project, JavaCore.NATURE_ID);
            // Set up the IJavaProject
            IJavaProject jProject = JavaCore.create(project);
            IPackageFragmentRoot srcContainer = jProject.getPackageFragmentRoot(src);
            IClasspathEntry srcEntry = JavaCore.newSourceEntry(srcContainer.getPath());
            // Create a JRE classpath entry using the default JRE
            IClasspathEntry jreEntry = JavaRuntime.getDefaultJREContainerEntry();
            jProject.setRawClasspath(new IClasspathEntry[] { srcEntry, jreEntry }, outputLocation, true, null);
            // Create a package with a single test class
            IPackageFragment javaPackage = srcContainer.createPackageFragment(PACKAGE_NAME, true, null);
            javaPackage.createCompilationUnit(JAVA_FILE_NAME,
                    "package " + PACKAGE_NAME + ";\nclass " + JAVA_CLASS_NAME + " {\n\n}", true, null);
            jProjectHolder[0] = jProject;
        }
    };
    ResourcesPlugin.getWorkspace().run(runnable, null);
    return jProjectHolder[0];
}

From source file:org.eclipse.emf.mwe.internal.ui.debug.sourcelookup.SourceLookupUtil.java

License:Open Source License

private static IPackageFragmentRoot getPackageFragmentRoot(final IRuntimeClasspathEntry entry) {
    IResource resource = entry.getResource();

    if (resource != null) {
        // our own project jars...
        IProject project = resource.getProject();
        IJavaProject jp = JavaCore.create(project);
        if (project.isOpen() && jp.exists()) {
            IPackageFragmentRoot root = jp.getPackageFragmentRoot(resource);
            return root;
        }//  w ww . ja  v  a2 s . co m
    }

    if (model == null) {
        model = JavaCore.create(ResourcesPlugin.getWorkspace().getRoot());
    }

    // ... or external jars, that are registered in one of the open projects at runtime
    IPath reqPath = (resource == null ? new Path(entry.getLocation()) : entry.getPath());
    try {
        for (IJavaProject jp : model.getJavaProjects()) {
            if (jp.getProject().isOpen()) {
                for (IPackageFragmentRoot root : jp.getPackageFragmentRoots()) {
                    if (root.isExternal() && root.getPath().equals(reqPath)) {
                        return root;
                    }
                }
            }
        }
    } catch (JavaModelException e) {
        Activator.logError(e); // should not occur
    }
    return null;
}

From source file:org.eclipse.examples.slideshow.jdt.URLHandlingTests.java

License:Open Source License

@BeforeClass
public static void setup() throws Exception {
    // TODO This doesn't work. Need to figure out what's missing.
    IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
    IProject project = root.getProject("JavaProject");
    project.create(null);//from w  w  w .  j  a  v a 2s . c  o m
    project.open(null);

    IProjectDescription description = project.getDescription();
    description.setNatureIds(new String[] { JavaCore.NATURE_ID });
    project.setDescription(description, null);

    IJavaProject javaProject = JavaCore.create(project);
    IPackageFragmentRoot sourceFolder = javaProject.getPackageFragmentRoot(project);
    sourceFolder.open(null);

    IPackageFragment pack = sourceFolder.createPackageFragment("org.eclipse.test", false, null);
    pack.open(null);
    String contents = "package org.eclipse.test;\npublic class Junk {\npublic static void main(String[] args) {}}";
    pack.createCompilationUnit("Junk.java", contents, false, null);

    project.build(IncrementalProjectBuilder.FULL_BUILD, null);

    //      root.accept(new IResourceVisitor() {
    //
    //         public boolean visit(IResource resource) throws CoreException {
    //            System.out.println(resource);
    //            return true;
    //         }
    //         
    //      });
}

From source file:org.eclipse.gmf.tests.gen.CompilationTest.java

License:Open Source License

public void testPreexistingImportConflicts() throws Exception {
    DiaGenSource gmfGenSource = createLibraryGen(false);
    gmfGenSource.getGenDiagram().getEditorGen().setSameFileForDiagramAndModel(false);
    String pluginId = gmfGenSource.getGenDiagram().getEditorGen().getPlugin().getID();
    IProject diagramProject = ResourcesPlugin.getWorkspace().getRoot().getProject(pluginId);
    if (!diagramProject.isAccessible()) {
        //Initialize the plugin the same way it would be initialized if present.
        Generator.createEMFProject(diagramProject.getFolder("src").getFullPath(), null, //$NON-NLS-1$
                Collections.<IProject>emptyList(), new NullProgressMonitor(),
                Generator.EMF_PLUGIN_PROJECT_STYLE);
    }//from  w ww.  j  a v a2s.com
    IJavaProject javaProject = JavaCore.create(diagramProject);
    assertTrue(javaProject.exists());
    IPackageFragment pf = javaProject.getPackageFragmentRoot(diagramProject.getFolder("src")) //$NON-NLS-1$
            .createPackageFragment(gmfGenSource.getGenDiagram().getNotationViewFactoriesPackageName(), false,
                    new NullProgressMonitor());
    ICompilationUnit cu = pf
            .getCompilationUnit(gmfGenSource.getGenDiagram().getNotationViewFactoryClassName() + ".java"); //$NON-NLS-1$
    String contents = MessageFormat.format(
            "package {0};\nimport {2};\n /**\n * @generated\n */\npublic class {1} '{ }'", //$NON-NLS-1$
            gmfGenSource.getGenDiagram().getNotationViewFactoriesPackageName(),
            gmfGenSource.getGenDiagram().getNotationViewFactoryClassName(), "javax.swing.text.View");
    if (cu.exists()) {
        IBuffer buffer = cu.getBuffer();
        buffer.setContents(contents);
        buffer.save(new NullProgressMonitor(), true);
    } else {
        pf.createCompilationUnit(cu.getElementName(), contents, false, new NullProgressMonitor());
    }
    generateAndCompile(gmfGenSource);
}

From source file:org.eclipse.imp.wizards.IMPWizardPage.java

License:Open Source License

protected WizardDialog getDialogWithClassName(String componentID, String interfaceQualName,
        String superClassName, Text text, WizardDialog dialog, NewClassWizardPage page) {
    try {//from   ww w.java 2 s. c o  m
        String intfName = interfaceQualName.substring(interfaceQualName.lastIndexOf('.') + 1);
        IJavaProject javaProject = JavaCore.create(getProjectOfRecord());
        if (javaProject == null) {
            ErrorHandler.reportError("Java project is null", true);
            return null;
        }
        // RMF 7/5/2005 - If the project doesn't yet have the necessary
        // plug-in
        // dependency for this reference to be satisfiable, an error ensues.
        if (interfaceQualName != null && interfaceQualName.length() > 0) {
            if (javaProject.findType(interfaceQualName) == null) {
                ErrorHandler.reportError("Base interface '" + interfaceQualName
                        + "' does not exist in project's build path; be sure to add the appropriate plugin to the dependencies.",
                        true);
                return null;
                // TODO: Do we want to continue from this point, or should
                // we just throw an exception?
            }
        }
        if (superClassName != null && superClassName.length() > 0) {
            if (javaProject.findType(superClassName) == null) {
                ErrorHandler.reportError("Base class '" + superClassName
                        + "' does not exist in project's build path; be sure to add the appropriate plugin to the dependencies.",
                        true);
                return null;
                // TODO: Do we want to continue from this point, or should
                // we just throw an exception?
            }
        }
        String givenPackageName = "";
        String givenClassName = "";
        if (text != null && text.getText().length() > 0) {
            givenPackageName = text.getText().substring(0, text.getText().lastIndexOf('.'));
            givenClassName = text.getText().substring(text.getText().lastIndexOf('.') + 1);
        }
        page.setSuperClass(superClassName, true);
        ArrayList<String> interfaces = new ArrayList<String>();
        if (interfaceQualName != null && interfaceQualName.length() > 0) {
            interfaces.add(interfaceQualName);
            page.setSuperInterfaces(interfaces, true);
        }
        String langName = fLanguageText.getText();
        String langClassName = upperCaseFirst(langName);
        String langPackageName = lowerCaseFirst(langName);
        // Compute name of package for new service class
        String servicePackageName = givenPackageName;
        if (servicePackageName == null || servicePackageName.length() == 0) {
            servicePackageName = "org.eclipse.imp."
                    + ((langPackageName == null || langPackageName.length() == 0) ? "" : langPackageName)
                    + componentID.substring(componentID.lastIndexOf('.') + 1);
        }
        // Compute unqualified name of new service class
        String serviceClassName = givenClassName;
        if (serviceClassName == null || serviceClassName.length() == 0) {
            serviceClassName = ((langClassName == null || langClassName.length() == 0) ? "" : langClassName);
            if (intfName.charAt(0) == 'I' && Character.isUpperCase(intfName.charAt(1)))
                serviceClassName = serviceClassName + intfName.substring(1);
            else
                serviceClassName = serviceClassName + intfName;
        }
        WizardUtilities.createSubFolders(servicePackageName.replace('.', '\\'), getProjectOfRecord(),
                new NullProgressMonitor());
        // SMS 2 Mar 2008: Setting of srcFolder could be more sophisticated
        // TODO: set srcFolder with a properly computed value
        IFolder srcFolder = getProjectOfRecord().getFolder("src/");
        IPackageFragmentRoot pkgFragRoot = javaProject.getPackageFragmentRoot(srcFolder);
        IPackageFragment pkgFrag = pkgFragRoot.getPackageFragment(servicePackageName);
        page.setPackageFragmentRoot(pkgFragRoot, true);
        page.setPackageFragment(pkgFrag, true);
        page.setTypeName(serviceClassName, true);
        // SWTUtil.setDialogSize(dialog, 400, 500);
        // if (dialog.open() == WizardDialog.OK) {
        // String name= page.getTypeName();
        // String pkg= page.getPackageText();
        // if (pkg.length() > 0)
        // name= pkg + '.' + name;
        // text.setText(name);
        // fPackageName= pkg;
        // }
        return dialog;
    } catch (Exception e) {
        ErrorHandler.reportError("Could not create class implementing " + interfaceQualName, true, e);
    }
    // return null;
    return dialog;
}

From source file:org.eclipse.jdt.internal.core.JavaModelManager.java

License:Open Source License

/**
 * Creates and returns a class file element for the given <code>.class</code> file,
 * its project being the given project. Returns <code>null</code> if unable
 * to recognize the class file./*  w  ww.  j ava  2 s. c  om*/
 */
public static IClassFile createClassFileFrom(IFile file, IJavaProject project) {
    if (file == null) {
        return null;
    }
    if (project == null) {
        project = JavaCore.create(file.getProject());
    }
    IPackageFragment pkg = (IPackageFragment) determineIfOnClasspath(file, project);
    if (pkg == null) {
        // fix for 1FVS7WE
        // not on classpath - make the root its folder, and a default package
        PackageFragmentRoot root = (PackageFragmentRoot) project.getPackageFragmentRoot(file.getParent());
        pkg = root.getPackageFragment(CharOperation.NO_STRINGS);
    }
    return pkg.getClassFile(file.getName());
}

From source file:org.eclipse.jdt.internal.core.JavaModelManager.java

License:Open Source License

/**
 * Creates and returns a compilation unit element for the given <code>.java</code>
 * file, its project being the given project. Returns <code>null</code> if unable
 * to recognize the compilation unit./* w  w w.j  av  a 2s . co m*/
 */
public static ICompilationUnit createCompilationUnitFrom(IFile file, IJavaProject project) {

    if (file == null)
        return null;

    if (project == null) {
        project = JavaCore.create(file.getProject());
    }
    IPackageFragment pkg = (IPackageFragment) determineIfOnClasspath(file, project);
    if (pkg == null) {
        // not on classpath - make the root its folder, and a default package
        PackageFragmentRoot root = (PackageFragmentRoot) project.getPackageFragmentRoot(file.getParent());
        pkg = root.getPackageFragment(CharOperation.NO_STRINGS);

        if (VERBOSE) {
            System.out.println("WARNING : creating unit element outside classpath (" + Thread.currentThread() //$NON-NLS-1$
                    + "): " + file.getFullPath()); //$NON-NLS-1$
        }
    }
    return pkg.getCompilationUnit(file.getName());
}