Example usage for org.eclipse.jdt.core IPackageFragmentRoot getElementType

List of usage examples for org.eclipse.jdt.core IPackageFragmentRoot getElementType

Introduction

In this page you can find the example usage for org.eclipse.jdt.core IPackageFragmentRoot getElementType.

Prototype

int getElementType();

Source Link

Document

Returns this element's kind encoded as an integer.

Usage

From source file:com.motorola.studio.android.model.BuildingBlockModel.java

License:Apache License

/**
 * Extract source folder from selection.
 * @param selection/*w  w w.j  a  v  a2 s . com*/
 * @return
 * @throws CoreException
 */
private static IPackageFragmentRoot extractPackageFragmentRoot(IStructuredSelection selection)
        throws CoreException {
    IPackageFragmentRoot pack = null;
    Object selectionElement = selection.getFirstElement();

    if (selectionElement instanceof IPackageFragmentRoot) {
        pack = (IPackageFragmentRoot) selectionElement;
    } else if (selectionElement instanceof IJavaElement) {
        pack = (IPackageFragmentRoot) ((IJavaElement) selectionElement)
                .getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT);
        if (pack == null) {
            IJavaProject element = ((IJavaElement) selectionElement).getJavaProject();

            for (IPackageFragmentRoot root : element.getPackageFragmentRoots()) {
                if (root.getResource() != null) {
                    boolean isSrc = (root.getElementType()
                            & IPackageFragmentRoot.K_SOURCE) == IPackageFragmentRoot.K_SOURCE;
                    boolean isGen = root.getElementName().equals(IAndroidConstants.GEN_SRC_FOLDER)
                            && (root.getParent() instanceof IJavaProject);
                    if (isSrc && !isGen) {
                        pack = root;
                        break;
                    }
                }
            }
        }
    } else if (selectionElement instanceof IResource) {
        IJavaProject element = JavaCore.create(((IResource) selectionElement).getProject());

        if (element.isOpen()) {
            for (IPackageFragmentRoot root : element.getPackageFragmentRoots()) {
                if (root.getResource() != null) {
                    boolean isSrc = (root.getElementType()
                            & IPackageFragmentRoot.K_SOURCE) == IPackageFragmentRoot.K_SOURCE;
                    boolean isGen = root.getElementName().equals(IAndroidConstants.GEN_SRC_FOLDER)
                            && (root.getParent() instanceof IJavaProject);
                    if (isSrc && !isGen) {
                        pack = root;
                        break;
                    }
                }
            }
        }
    } else {
        IJavaProject[] allProjects = JavaCore.create(ResourcesPlugin.getWorkspace().getRoot())
                .getJavaProjects();
        if ((allProjects != null) && (allProjects.length > 0)) {
            for (IJavaProject project : allProjects) {
                if (project.getResource().getProject().hasNature(IAndroidConstants.ANDROID_NATURE)) {
                    IPackageFragmentRoot[] roots = project.getPackageFragmentRoots();

                    if ((roots != null) && (roots.length > 0)) {
                        boolean found = false;

                        for (IPackageFragmentRoot root : roots) {
                            boolean isSrc = (root.getElementType()
                                    & IPackageFragmentRoot.K_SOURCE) == IPackageFragmentRoot.K_SOURCE;
                            boolean isGen = root.getElementName().equals(IAndroidConstants.GEN_SRC_FOLDER)
                                    && (root.getParent() instanceof IJavaProject);
                            if (isSrc && !isGen) {
                                found = true;
                                pack = root;
                                break;
                            }
                        }

                        if (found) {
                            break;
                        }
                    }
                }
            }
        }
    }

    if (pack != null) {
        if (!pack.getJavaProject().getProject().hasNature(IAndroidConstants.ANDROID_NATURE)) {
            pack = extractPackageFragmentRoot(new TreeSelection());
        }
    }
    return pack;
}