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

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

Introduction

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

Prototype

IResource getResource();

Source Link

Document

Returns the innermost resource enclosing this element.

Usage

From source file:at.bestsolution.efxclipse.tooling.ui.util.RelativeFileLocator.java

License:Open Source License

public static File locateFile(URI uri, String filePath) {
    IProject p = ResourcesPlugin.getWorkspace().getRoot().getProject(uri.segment(1));
    IJavaProject jp = JavaCore.create(p);

    // Absolute to project
    if (filePath.startsWith("/")) {
        filePath = filePath.substring(1); // Remove the leading /
        IFile f = p.getFile(filePath);//  ww  w. j a  va 2  s  .  c  o m
        if (f.exists()) {
            return f.getLocation().toFile().getAbsoluteFile();
        } else if (jp != null) {
            try {
                for (IPackageFragmentRoot r : jp.getPackageFragmentRoots()) {
                    if (r.isArchive()) {
                        //TODO We should allow to load styles from the referenced jars
                    } else if (r.getResource() instanceof IFolder) {
                        IFolder folder = (IFolder) r.getResource();
                        if (folder.exists()) {
                            f = folder.getFile(filePath);
                            if (f.exists()) {
                                return f.getLocation().toFile().getAbsoluteFile();
                            }
                        }
                    }
                }
            } catch (JavaModelException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    } else {
        URI fileUri = null;

        try {
            fileUri = URI.createURI(filePath);
        } catch (Exception e) {
            // TODO: handle exception
        }

        if (fileUri != null && fileUri.isPlatformResource()) {
            Path path = new Path(fileUri.toPlatformString(true));
            IWorkspaceRoot root = jp.getProject().getWorkspace().getRoot();
            IFile file = root.getFile(path);
            if (file.exists()) {
                return file.getLocation().toFile().getAbsoluteFile();
            }
        } else {
            IPath path = null;
            for (int i = 2; i < uri.segmentCount() - 1; i++) {
                if (path == null) {
                    path = new Path(uri.segment(i));
                } else {
                    path = path.append(uri.segment(i));
                }
            }

            if (path != null) {
                IFile f = p.getFile(path.append(filePath));
                if (f.exists()) {
                    return f.getLocation().toFile().getAbsoluteFile();
                }
            }
        }
    }

    return null;
}

From source file:at.bestsolution.fxide.jdt.text.javadoc.JavadocContentAccess2.java

License:Open Source License

private boolean handleDocRoot(TagElement node) {
    if (!TagElement.TAG_DOCROOT.equals(node.getTagName()))
        return false;

    try {//from w  w  w  .j  a va2 s .  c  o  m
        String url = null;
        if (fElement instanceof IMember && ((IMember) fElement).isBinary()) {
            URL javadocBaseLocation = JavaDocLocations.getJavadocBaseLocation(fElement);
            if (javadocBaseLocation != null) {
                url = javadocBaseLocation.toExternalForm();
            }
        } else {
            IPackageFragmentRoot srcRoot = JavaModelUtil.getPackageFragmentRoot(fElement);
            if (srcRoot != null) {
                IResource resource = srcRoot.getResource();
                if (resource != null) {
                    /*
                     * Too bad: Browser widget knows nothing about EFS and custom URL handlers,
                     * so IResource#getLocationURI() does not work in all cases.
                     * We only support the local file system for now.
                     * A solution could be https://bugs.eclipse.org/bugs/show_bug.cgi?id=149022 .
                     */
                    IPath location = resource.getLocation();
                    if (location != null) {
                        url = location.toFile().toURI().toASCIIString();
                    }
                }

            }
        }
        if (url != null) {
            if (url.endsWith("/")) { //$NON-NLS-1$
                url = url.substring(0, url.length() - 1);
            }
            fBuf.append(url);
            return true;
        }
    } catch (JavaModelException e) {
    }
    return false;
}

From source file:at.bestsolution.fxide.jdt.text.viewersupport.JavaElementLabelComposer.java

License:Open Source License

private void appendFolderLabel(IPackageFragmentRoot root, long flags) {
    IResource resource = root.getResource();
    if (resource == null) {
        appendExternalArchiveLabel(root, flags);
        return;//from w  w  w. j a  v  a 2s .  com
    }

    boolean rootQualified = getFlag(flags, JavaElementLabels.ROOT_QUALIFIED);
    boolean referencedQualified = getFlag(flags, JavaElementLabels.REFERENCED_ROOT_POST_QUALIFIED)
            && isReferenced(root);
    if (rootQualified) {
        fBuffer.append(root.getPath().makeRelative().toString());
    } else {
        IPath projectRelativePath = resource.getProjectRelativePath();
        if (projectRelativePath.segmentCount() == 0) {
            fBuffer.append(resource.getName());
            referencedQualified = false;
        } else {
            fBuffer.append(projectRelativePath.toString());
        }

        int offset = fBuffer.length();
        if (referencedQualified) {
            fBuffer.append(JavaElementLabels.CONCAT_STRING);
            fBuffer.append(resource.getProject().getName());
        } else if (getFlag(flags, JavaElementLabels.ROOT_POST_QUALIFIED)) {
            fBuffer.append(JavaElementLabels.CONCAT_STRING);
            fBuffer.append(root.getParent().getElementName());
        } else {
            return;
        }
        //         if (getFlag(flags, JavaElementLabels.COLORIZE)) {
        //            fBuffer.setStyle(offset, fBuffer.length() - offset, QUALIFIER_STYLE);
        //         }
    }
}

From source file:at.bestsolution.fxide.jdt.text.viewersupport.JavaElementLabelComposer.java

License:Open Source License

/**
 * Returns <code>true</code> if the given package fragment root is
 * referenced. This means it is a descendant of a different project but is referenced
 * by the root's parent. Returns <code>false</code> if the given root
 * doesn't have an underlying resource.// w  w w  . j  a v  a2s . c  om
 *
 * @param root the package fragment root
 * @return returns <code>true</code> if the given package fragment root is referenced
 */
private boolean isReferenced(IPackageFragmentRoot root) {
    IResource resource = root.getResource();
    if (resource != null) {
        IProject jarProject = resource.getProject();
        IProject container = root.getJavaProject().getProject();
        return !container.equals(jarProject);
    }
    return false;
}

From source file:at.bestsolution.fxide.jdt.text.viewersupport.JavaElementLabelComposer.java

License:Open Source License

private void appendInternalArchiveLabel(IPackageFragmentRoot root, long flags) {
    IResource resource = root.getResource();
    boolean rootQualified = getFlag(flags, JavaElementLabels.ROOT_QUALIFIED);
    if (rootQualified) {
        fBuffer.append(root.getPath().makeRelative().toString());
    } else {/*  w w w .  j  a  v a 2  s.  c o m*/
        fBuffer.append(root.getElementName());
        int offset = fBuffer.length();
        boolean referencedPostQualified = getFlag(flags, JavaElementLabels.REFERENCED_ROOT_POST_QUALIFIED);
        if (referencedPostQualified && isReferenced(root)) {
            fBuffer.append(JavaElementLabels.CONCAT_STRING);
            fBuffer.append(resource.getParent().getFullPath().makeRelative().toString());
        } else if (getFlag(flags, JavaElementLabels.ROOT_POST_QUALIFIED)) {
            fBuffer.append(JavaElementLabels.CONCAT_STRING);
            fBuffer.append(root.getParent().getPath().makeRelative().toString());
        }
        if (referencedPostQualified) {
            try {
                IClasspathEntry referencingEntry = JavaModelUtil.getClasspathEntry(root).getReferencingEntry();
                if (referencingEntry != null) {
                    fBuffer.append(
                            Messages.format(JavaUIMessages.JavaElementLabels_onClassPathOf, new Object[] {
                                    Name.CLASS_PATH.toString(), referencingEntry.getPath().lastSegment() }));
                }
            } catch (JavaModelException e) {
                // ignore
            }
        }
        //         if (getFlag(flags, JavaElementLabels.COLORIZE)) {
        //            fBuffer.setStyle(offset, fBuffer.length() - offset, QUALIFIER_STYLE);
        //         }
    }
}

From source file:ca.mcgill.sable.soot.launching.SootFileLauncher.java

License:Open Source License

public void handleFiles(Object toProcess) {

    setDoNotContinue(false);/*  www .j ava 2s .co  m*/
    if (toProcess instanceof IClassFile) {
        IClassFile cf = (IClassFile) toProcess;
        IPackageFragmentRoot pfr = (IPackageFragmentRoot) cf.getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT);
        IPackageFragment pf = (IPackageFragment) cf.getAncestor(IJavaElement.PACKAGE_FRAGMENT);
        if (pfr.getResource() != null) {
            setClasspathAppend(platform_location + pfr.getPath().toOSString());
        } else {
            setClasspathAppend(pfr.getPath().toOSString());
        }
        addJars();
        if (pf.isDefaultPackage()) {
            getToProcessList().add(removeFileExt(cf.getElementName()));
        } else {
            getToProcessList().add(pf.getElementName() + "." + removeFileExt(cf.getElementName()));
        }
    } else if (toProcess instanceof IFile) {
        IFile file = (IFile) toProcess;
        if (file.getFileExtension().compareTo("jimple") == 0) {
            setClasspathAppend(platform_location + file.getParent().getFullPath().toOSString());
            addJars();
            setIsSrcPrec(true);
            setSrcPrec(LaunchCommands.JIMPLE_IN);
            getToProcessList().add(removeFileExt(file.getName()));
        } else if (file.getFileExtension().equals("java")) {
            try {

                handleSourceFile(JavaCore.createCompilationUnitFrom(file));
            } catch (Exception e) {
                System.out.println("problem creating CompilationUnit");
            }

        }

        else if (file.getFileExtension().equals("class")) {
            try {
                handleClassFile(file);

            } catch (Exception e) {
                System.out.println("not a class file");
            }
        }

    } else if (toProcess instanceof ICompilationUnit) {
        ICompilationUnit cu = (ICompilationUnit) toProcess;
        handleSourceFile(cu);

    }
}

From source file:ccw.ClojureProject.java

License:Open Source License

public List<IJavaProject> dependencies() {
    List<IJavaProject> ret = new ArrayList<IJavaProject>();
    try {//w  w  w .  j  av  a 2s.  co m
        for (IPackageFragmentRoot root : getJavaProject().getAllPackageFragmentRoots())
            if (root.getKind() == IPackageFragmentRoot.K_SOURCE) {
                // System.err.println("SOURCE: " + root + " " +
                // root.getClass());
                if (root.getResource() instanceof IProject) {
                    IProject p = (IProject) root.getResource();
                    if (!p.hasNature(JavaCore.NATURE_ID))
                        continue;
                    ret.add(JavaCore.create(p));
                    continue;
                }
            }
    } catch (JavaModelException e) {
        CCWPlugin.logError(e);
    } catch (CoreException e) {
        CCWPlugin.logError(e);
    }
    return ret;
}

From source file:ccw.ClojureProject.java

License:Open Source License

public static List<IFolder> sourceFolders(IJavaProject jp) {
    List<IFolder> ret = new ArrayList<IFolder>();
    try {//  ww w.  j a v a 2  s.  co m
        for (IPackageFragmentRoot root : jp.getAllPackageFragmentRoots())
            if (root.getKind() == IPackageFragmentRoot.K_SOURCE) {
                // System.err.println("SOURCE: " + root + " " +
                // root.getClass());
                if (root.getResource() instanceof IFolder
                        && root.getParent().getAdapter(IProject.class) == jp.getProject()) {
                    ret.add((IFolder) root.getResource());
                }
            }
    } catch (JavaModelException e) {
        CCWPlugin.logError(e);
    }
    return ret;
}

From source file:ccw.launching.ClojureElementViewerFilter.java

License:Open Source License

@Override
public boolean select(Viewer viewer, Object parentElement, Object element) {
    IResource resource = (IResource) element;
    IJavaProject javaProject = JavaCore.create(project);

    if (javaProject == null) {
        return true;
    }//from  w w  w.  j a  v a2  s . c  o  m

    if (contains(project.getFolder("classes"), resource)) {
        return false;
    }

    IPackageFragmentRoot[] froots;
    try {
        froots = javaProject.getAllPackageFragmentRoots();
    } catch (JavaModelException e) {
        return true;
    }

    for (IPackageFragmentRoot froot : froots) {
        IResource frootResource = froot.getResource();
        if (frootResource == null) {
            continue; // Continue to test following fragment roots
        } else if (contains(resource, froot.getResource())) {
            return true;
        } else if (contains(froot.getResource(), resource)) {
            if (resource.getType() == IResource.FILE) {
                return "clj".equals(((IFile) resource).getFileExtension());
            } else {
                return true;
            }
        } else {
            continue; // Continue to test following fragment roots
        }
    }
    return false;

}

From source file:ccw.launching.LaunchUtils.java

License:Open Source License

private static String fileArg(IProject project, IFile file) {
    String FILE_ARG_ERROR_PREFIX = "When trying to create clojure.main " + "file arg to launch, was "
            + "unable to ";

    IPath filePath = file.getLocation();

    IJavaProject javaProject = ClojureCore.getJavaProject(project);
    try {/*from   w  ww.  jav a 2 s  . co m*/
        IPackageFragmentRoot filePFR = findPackageFragmentRoot(javaProject, filePath);
        if (filePFR != null) {
            IPath pfrPath = filePFR.getResource().getLocation();
            // TODO we can use .makeRelativeTo again when we decide not to support Eclipse 3.4 anymore
            //             String classpathRelativeArg = filePath.makeRelativeTo(pfrPath).toString();
            String classpathRelativeArg = filePath.toString().substring(pfrPath.toString().length());
            if (classpathRelativeArg.startsWith("/")) {
                classpathRelativeArg = classpathRelativeArg.substring(1);
            }
            return " \"@/" + classpathRelativeArg + "\"";
        } else {
            CCWPlugin.logError(FILE_ARG_ERROR_PREFIX + " find package fragment root for file " + file
                    + " in project " + project);
            return "";
        }
    } catch (JavaModelException jme) {
        CCWPlugin.logError(FILE_ARG_ERROR_PREFIX
                + " complete due to a JavaModelException finding package fragment root for file " + file
                + " in project " + project, jme);
        return "";
    }
}