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:com.iw.plugins.spindle.ui.wizards.fields.ContainerDialogField.java

License:Mozilla Public License

protected IStatus containerChanged() {
    SpindleStatus status = new SpindleStatus();

    fCurrentRoot = null;/*ww w.j  av a2  s . c o  m*/
    String str = getContainerText();
    if (str == null || "".equals(str)) {
        status.setError(UIPlugin.getString(fName + ".error.EnterContainerName"));
        return status;
    }
    IPath path = new Path(str);
    IResource res = fWorkspaceRoot.findMember(path);
    if (res != null) {
        int resType = res.getType();
        if (resType == IResource.PROJECT || resType == IResource.FOLDER) {
            IProject proj = res.getProject();
            if (!proj.isOpen()) {
                status.setError(
                        UIPlugin.getString(fName + ".error.ProjectClosed", proj.getFullPath().toString()));
                return status;
            }
            IJavaProject jproject = JavaCore.create(proj);
            fCurrentRoot = jproject.getPackageFragmentRoot(res);
            if (fCurrentRoot.exists()) {
                try {
                    if (!proj.hasNature(JavaCore.NATURE_ID)) {
                        if (resType == IResource.PROJECT) {
                            status.setWarning(UIPlugin.getString(fName + ".warning.NotAJavaProject"));
                        } else {
                            status.setWarning(UIPlugin.getString(fName + ".warning.NotInAJavaProject"));
                        }
                        return status;
                    }
                } catch (CoreException e) {
                    status.setWarning(UIPlugin.getString(fName + ".warning.NotAJavaProject"));
                }
                try {
                    if (!CoreUtils.isOnBuildPath(jproject, fCurrentRoot)) {
                        status.setWarning(UIPlugin.getString(fName + ".warning.NotOnClassPath", str));
                    }
                } catch (JavaModelException e) {
                    status.setWarning(UIPlugin.getString(fName + ".warning.NotOnClassPath", str));
                }
                if (fCurrentRoot.isArchive()) {
                    status.setError(UIPlugin.getString(fName + ".error.ContainerIsBinary", str));
                    return status;
                }
            } else {
                status.setError(UIPlugin.getString(fName + ".error.NotOnClassPath", str));
            }
            return status;
        } else {
            status.setError(UIPlugin.getString(fName + ".error.NotAFolder", str));
            return status;
        }
    } else {
        status.setError(UIPlugin.getString(fName + ".error.ContainerDoesNotExist", str));
        return status;
    }
}

From source file:com.iw.plugins.spindle.wizards.fields.ContainerDialogField.java

License:Mozilla Public License

public void init(IJavaElement elem, IRunnableContext context) {
    super.init(context);

    setButtonLabel(MessageUtil.getString(name + ".button"));

    IPackageFragmentRoot initRoot = null;
    if (elem != null) {

        initRoot = Utils.getPackageFragmentRoot(elem);
        if (initRoot == null || initRoot.isArchive()) {
            IJavaProject jproject = elem.getJavaProject();
            try {
                initRoot = null;/*from  w w  w .  j a v a 2s.com*/
                IPackageFragmentRoot[] roots = jproject.getPackageFragmentRoots();
                for (int i = 0; i < roots.length; i++) {
                    if (roots[i].getKind() == IPackageFragmentRoot.K_SOURCE) {
                        initRoot = roots[i];
                        break;
                    }
                }
            } catch (JavaModelException e) {
                TapestryPlugin.getDefault().logException(e);
            }
            if (initRoot == null) {
                initRoot = jproject.getPackageFragmentRoot("");
            }
        }
        setPackageFragmentRoot(initRoot, true);
    }
}

From source file:com.iw.plugins.spindle.wizards.fields.ContainerDialogField.java

License:Mozilla Public License

private IPackageFragmentRoot chooseSourceContainer(IJavaElement initElement) {

    final IJavaProject thisProject = initElement.getJavaProject();
    Class[] acceptedClasses = new Class[] { IPackageFragmentRoot.class, IJavaProject.class };
    ISelectionStatusValidator validator = new TypedElementSelectionValidator(acceptedClasses, false) {
        public boolean isSelectedValid(Object element) {
            try {
                boolean accepted = false;
                if (thisProjectOnly) {
                    accepted = element instanceof IJavaProject && thisProject.equals((IJavaProject) element);
                } else {
                    accepted = element instanceof IJavaProject;
                }/*from  w ww.  j a  v  a2 s.  co  m*/
                if (accepted) {

                    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) {
                TapestryPlugin.getDefault().logException(e); // 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 IJavaProject) {

                return thisProject.equals((IJavaProject) element);

            }
            if (element instanceof IPackageFragmentRoot) {
                try {
                    return (((IPackageFragmentRoot) element).getKind() == IPackageFragmentRoot.K_SOURCE);
                } catch (JavaModelException e) {
                    TapestryPlugin.getDefault().logException(e);
                    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.setSorter(new JavaElementSorter());
    dialog.setTitle(MessageUtil.getString(name + ".ChooseSourceContainerDialog.title"));
    dialog.setMessage(MessageUtil.getString(name + ".ChooseSourceContainerDialog.description"));
    dialog.addFilter(filter);
    dialog.setInput(JavaCore.create(workspaceRoot));
    dialog.setInitialSelection(initElement);

    if (dialog.open() == dialog.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:com.iw.plugins.spindle.wizards.fields.ContainerDialogField.java

License:Mozilla Public License

protected IStatus containerChanged() {
    SpindleStatus status = new SpindleStatus();

    currentRoot = null;//  www  .  j a v  a  2 s  .c om
    String str = getContainerText();
    if (str == null || "".equals(str)) {
        status.setError(MessageUtil.getString(name + ".error.EnterContainerName"));
        return status;
    }
    IPath path = new Path(str);
    IResource res = workspaceRoot.findMember(path);
    if (res != null) {
        int resType = res.getType();
        if (resType == IResource.PROJECT || resType == IResource.FOLDER) {
            IProject proj = res.getProject();
            if (!proj.isOpen()) {
                status.setError(MessageUtil.getFormattedString(name + ".error.ProjectClosed",
                        proj.getFullPath().toString()));
                return status;
            }
            IJavaProject jproject = JavaCore.create(proj);
            currentRoot = jproject.getPackageFragmentRoot(res);
            if (currentRoot.exists()) {
                try {
                    if (!proj.hasNature(JavaCore.NATURE_ID)) {
                        if (resType == IResource.PROJECT) {
                            status.setWarning(MessageUtil.getString(name + ".warning.NotAJavaProject"));
                        } else {
                            status.setWarning(MessageUtil.getString(name + ".warning.NotInAJavaProject"));
                        }
                        return status;
                    }
                } catch (CoreException e) {
                    status.setWarning(MessageUtil.getString(name + ".warning.NotAJavaProject"));
                }
                try {
                    if (!Utils.isOnBuildPath(jproject, currentRoot)) {
                        status.setWarning(
                                MessageUtil.getFormattedString(name + ".warning.NotOnClassPath", str));
                    }
                } catch (JavaModelException e) {
                    status.setWarning(MessageUtil.getFormattedString(name + ".warning.NotOnClassPath", str));
                }
                if (currentRoot.isArchive()) {
                    status.setError(MessageUtil.getFormattedString(name + ".error.ContainerIsBinary", str));
                    return status;
                }
            }
            return status;
        } else {
            status.setError(MessageUtil.getFormattedString(name + ".error.NotAFolder", str));
            return status;
        }
    } else {
        status.setError(MessageUtil.getFormattedString(name + ".error.ContainerDoesNotExist", str));
        return status;
    }
}

From source file:com.liferay.ide.hook.core.operation.NewHookDataModelProvider.java

License:Open Source License

/**
 * Subclasses may extend this method to perform their own retrieval mechanism. This implementation simply returns
 * the JDT package fragment root for the selected source folder. This method may return null.
 *
 * @see IJavaProject#getPackageFragmentRoot(org.eclipse.core.resources.IResource)
 * @return IPackageFragmentRoot//from  w  ww . ja v a  2 s.c o m
 */
protected IPackageFragmentRoot getJavaPackageFragmentRoot() {
    IProject project = getTargetProject();

    if (project != null) {
        IJavaProject aJavaProject = JemProjectUtilities.getJavaProject(project);

        // Return the source folder for the java project of the selected
        // project
        if (aJavaProject != null) {
            IFolder sourcefolder = (IFolder) getProperty(JAVA_SOURCE_FOLDER);

            if (sourcefolder != null)
                return aJavaProject.getPackageFragmentRoot(sourcefolder);
        }
    }

    return null;
}

From source file:com.liferay.ide.service.core.operation.NewServiceBuilderDataModelProvider.java

License:Open Source License

protected IPackageFragmentRoot getJavaPackageFragmentRoot() {
    IProject project = getTargetProject();

    if (project != null) {
        IJavaProject aJavaProject = JemProjectUtilities.getJavaProject(project);

        // Return the source folder for the java project of the selected
        // project
        if (aJavaProject != null) {
            IFolder sourcefolder = (IFolder) getProperty(JAVA_SOURCE_FOLDER);

            if (sourcefolder != null) {
                return aJavaProject.getPackageFragmentRoot(sourcefolder);
            }//www . j  a v a  2 s .c o  m
        }
    }

    return null;
}

From source file:com.motorola.studio.android.generatecode.JDTUtils.java

License:Apache License

/**
 * Retrieves the list of subclasses of a given {@code superclass} inside an {@code androidProject}.
 * @throws JavaModelException If there are problems parsing java files.
 * *///w w w  .ja  v a 2 s  . co  m
public static List<IType> getAvailableSubclasses(IProject androidProject, String superclass,
        IProgressMonitor monitor) throws JavaModelException {
    List<IType> availableActivities = new ArrayList<IType>();

    SubMonitor subMonitor = SubMonitor.convert(monitor);
    subMonitor.beginTask("Resolving available types", 1000); //$NON-NLS-1$

    IJavaProject javaProject = JavaCore.create(androidProject);
    IPackageFragmentRoot root = javaProject.getPackageFragmentRoot(androidProject.findMember("src")); //$NON-NLS-1$
    ArrayList<IPackageFragment> fragments = new ArrayList<IPackageFragment>();
    for (IJavaElement element : root.getChildren()) {
        fragments.add((IPackageFragment) element);
    }

    subMonitor.worked(100);

    if (fragments.size() == 0) {
        subMonitor.worked(900);
    }

    for (IPackageFragment fragment : fragments) {
        ICompilationUnit[] units = fragment.getCompilationUnits();
        if (units.length == 0) {
            subMonitor.worked(900 / fragments.size());
        }
        for (int j = 0; j < units.length; j++) {
            ICompilationUnit unit = units[j];
            IType[] availableTypes = unit.getTypes();
            if (availableTypes.length == 0) {
                subMonitor.worked(900 / fragments.size() / units.length);
            }

            for (int k = 0; k < availableTypes.length; k++) {
                ITypeHierarchy hierarchy = availableTypes[k].newSupertypeHierarchy(
                        subMonitor.newChild(900 / fragments.size() / units.length / availableTypes.length));

                if (isSubclass(hierarchy, availableTypes[k], superclass)) {
                    availableActivities.add(availableTypes[k]);
                }
            }

        }
    }

    return availableActivities;
}

From source file:com.motorola.studio.android.generatecode.JDTUtils.java

License:Apache License

/**
 * Retrieves the list of fragments of a given {@code androidProject}.
 * @throws JavaModelException If there are problems parsing java files.
 * *///from   w ww.ja va 2  s . c o m
public static List<IType> getAvailableFragmentsSubclasses(IProject androidProject, IProgressMonitor monitor)
        throws JavaModelException {
    List<IType> availableFragments = new ArrayList<IType>();

    SubMonitor subMonitor = SubMonitor.convert(monitor);
    subMonitor.beginTask("Resolving available types", 1000); //$NON-NLS-1$

    IJavaProject javaProject = JavaCore.create(androidProject);
    IPackageFragmentRoot root = javaProject.getPackageFragmentRoot(androidProject.findMember("src")); //$NON-NLS-1$
    ArrayList<IPackageFragment> fragments = new ArrayList<IPackageFragment>();
    for (IJavaElement element : root.getChildren()) {
        fragments.add((IPackageFragment) element);
    }

    subMonitor.worked(100);

    if (fragments.size() == 0) {
        subMonitor.worked(900);
    }

    for (IPackageFragment fragment : fragments) {
        ICompilationUnit[] units = fragment.getCompilationUnits();
        if (units.length == 0) {
            subMonitor.worked(900 / fragments.size());
        }
        for (int j = 0; j < units.length; j++) {
            ICompilationUnit unit = units[j];
            IType[] availableTypes = unit.getTypes();
            if (availableTypes.length == 0) {
                subMonitor.worked(900 / fragments.size() / units.length);
            }

            for (int k = 0; k < availableTypes.length; k++) {
                ITypeHierarchy hierarchy = availableTypes[k].newSupertypeHierarchy(
                        subMonitor.newChild(900 / fragments.size() / units.length / availableTypes.length));

                if (isFragmentSubclass(hierarchy, availableTypes[k])) {
                    availableFragments.add(availableTypes[k]);
                }
            }

        }
    }

    return availableFragments;
}

From source file:com.motorola.studio.android.wizards.buildingblocks.NewBuildingBlocksWizardPage.java

License:Apache License

@Override
protected IPackageFragmentRoot chooseContainer() {
    IJavaElement initElement = getPackageFragmentRoot();

    ISelectionStatusValidator validator = new ElementTreeValidator();
    ViewerFilter filter = new ElementTreeViewFilter();
    StandardJavaElementContentProvider provider = new ElementTreeContentProvider();

    ILabelProvider labelProvider = new JavaElementLabelProvider(JavaElementLabelProvider.SHOW_DEFAULT);
    ElementTreeSelectionDialog dialog = new ElementTreeSelectionDialog(getShell(), labelProvider, provider);
    dialog.setComparator(new JavaElementComparator());
    dialog.setValidator(validator);/* ww w .j a  va 2 s  .  c o  m*/
    dialog.setTitle(CodeUtilsNLS.UI_NewBuildingBlocksWizardPage_WizardTitle);
    dialog.setMessage(CodeUtilsNLS.UI_NewBuildingBlocksWizardPage_MessageChooseFolder);
    dialog.setInput(JavaCore.create(fWorkspaceRoot));
    dialog.setInitialSelection(initElement);
    dialog.addFilter(filter);
    dialog.setHelpAvailable(false);

    IPackageFragmentRoot rootSelection = null;
    if (dialog.open() == Window.OK) {
        Object element = dialog.getFirstResult();
        if (element instanceof IJavaProject) {
            IJavaProject jproject = (IJavaProject) element;
            rootSelection = jproject.getPackageFragmentRoot(jproject.getProject());
        } else if (element instanceof IPackageFragmentRoot) {
            rootSelection = (IPackageFragmentRoot) element;
        }
    }
    return rootSelection;
}

From source file:com.mtcflow.project.util.MTCProjectSupport.java

License:Open Source License

/**
 * For this marvelous project we need to: - create the default Eclipse
 * project - add the custom project nature - create the folder structure
 * /*from w w  w .j  a va 2  s .  c o m*/
 * @param projectName
 * @param location
 * @param natureId
 * @return
 */
public static IProject createProject(String projectName, URI location) {
    Assert.isNotNull(projectName);
    Assert.isTrue(projectName.trim().length() > 0);

    try {
        // create eclipse project
        IProject project = createBaseProject(projectName, location);
        project.setDefaultCharset("UTF-8", null);
        addNature(project);
        // create java project
        IJavaProject javaProject = JavaCore.create(project);
        javaProject.setOption(JavaCore.COMPILER_SOURCE, JavaCore.VERSION_1_5);
        javaProject.setOption(JavaCore.COMPILER_CODEGEN_TARGET_PLATFORM, JavaCore.VERSION_1_5);
        javaProject.setOption(JavaCore.COMPILER_COMPLIANCE, JavaCore.VERSION_1_5);

        // add bin/ouput folder
        IFolder binFolder = project.getFolder("bin");
        // binFolder.create(false, true, null);
        javaProject.setOutputLocation(binFolder.getFullPath(), null);

        // add libs to project class path
        List<IClasspathEntry> entries = new ArrayList<IClasspathEntry>();
        IVMInstall vmInstall = JavaRuntime.getDefaultVMInstall();

        // create source folder
        IFolder sourceFolder = project.getFolder("src");
        sourceFolder.create(false, true, null);
        IPackageFragmentRoot srcRoot = javaProject.getPackageFragmentRoot(sourceFolder);
        IClasspathEntry[] cEntries = new IClasspathEntry[3];
        cEntries[0] = JavaRuntime.getDefaultJREContainerEntry();
        // cEntries[2] = JavaCore.new
        cEntries[1] = JavaCore.newSourceEntry(srcRoot.getPath());
        cEntries[2] = JavaCore.newContainerEntry(new Path("org.eclipse.pde.core.requiredPlugins"));
        javaProject.setRawClasspath(cEntries, null);
        /*
         * Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name:
         * LePlugine Bundle-SymbolicName: LePlugine Bundle-Version:
         * 1.0.0.qualifier Bundle-RequiredExecutionEnvironment: JavaSE-1.7
         */
        String[] paths = { "transformations/T2M", //$NON-NLS-1$
                "transformations/M2M", //$NON-NLS-1$
                "transformations/M2T", //$NON-NLS-1$
                "transformations/HOT", //$NON-NLS-1$
                "mtcs", //$NON-NLS-1$ 
                "metamodels", //$NON-NLS-1$
                "libraries", //$NON-NLS-1$
                "scripts", //$NON-NLS-1$
                "validations", //$NON-NLS-1$
                "tests", //$NON-NLS-1$
                "models", "META-INF" }; //$NON-NLS-1$
        addToProjectStructure(javaProject.getProject(), paths);
        createTemplateFileInProjectAt(javaProject.getProject(), "build.properties", "build.properties");
        createTemplateFileInProjectAt(javaProject.getProject(), "default.mtc", "/mtcs/default.mtc");
        createTemplateFileInProjectAt(javaProject.getProject(), "default_diagram.mtcd", "/mtcs/default.mtcd");
        Manifest manifest = new Manifest();
        manifest.getMainAttributes().putValue("Manifest-Version", "1.0");
        manifest.getMainAttributes().putValue("Bundle-ManifestVersion", "2");
        manifest.getMainAttributes().putValue("Bundle-Name", projectName);
        manifest.getMainAttributes().putValue("Bundle-SymbolicName", projectName);
        manifest.getMainAttributes().putValue("Bundle-Version", "1.0.0");
        manifest.getMainAttributes().putValue("Require-Bundle",
                "com.mtcflow.model,com.mtcflow.engine,com.mtcflow.engine.core");
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        manifest.write(out);
        javaProject.getProject().getFile("/META-INF/MANIFEST.MF")
                .create(new ByteArrayInputStream(out.toByteArray()), true, null);
        return javaProject.getProject();
    } catch (Exception ex) {
        ex.printStackTrace();
        throw new RuntimeException("Error creating the project", ex);
    }
}