List of usage examples for org.eclipse.jdt.core IPackageFragmentRoot getResource
IResource getResource();
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 ""; } }