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

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

Introduction

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

Prototype

IResource getResource();

Source Link

Document

Returns the innermost resource enclosing this element.

Usage

From source file:com.laex.j2objc.ToObjectiveCAction.java

License:Open Source License

@Override
public void run(IAction action) {
    if (!action.isEnabled()) {
        return;//from   w  ww  . java2s  . c om
    }

    /* Show the console view */
    final MessageConsole console = MessageUtil.findConsole(MessageUtil.J2OBJC_CONSOLE);

    IWorkbenchPage page = targetPart.getSite().getWorkbenchWindow().getActivePage();
    String id = IConsoleConstants.ID_CONSOLE_VIEW;
    IConsoleView view;
    try {
        view = (IConsoleView) page.showView(id);
        view.display(console);
    } catch (PartInitException e1) {
        LogUtil.logException(e1);
    }

    /* Before starting the job, check if the path to J2OBJC has been set up */
    final Display display = targetPart.getSite().getShell().getDisplay();
    final String pathToCompiler = Activator.getDefault().getPreferenceStore()
            .getString(PreferenceConstants.PATH_TO_COMPILER);

    console.clearConsole();
    MessageConsoleStream mct = console.newMessageStream();

    if (StringUtils.isEmpty(pathToCompiler)) {
        try {
            MessageUtil.setConsoleColor(display, mct, SWT.COLOR_RED);
            mct.write(
                    "Path to compiler empty. Please set the path to J2OBJC compiler from global preferences.");
        } catch (IOException e) {
            LogUtil.logException(e);
        }
        return;
    }

    /* Before starting the job, calculate total no. of files to compile */
    calculateWork();

    // Start the job
    final Job job = new Job("J2OBJC Command Line Executor") {
        @Override
        protected IStatus run(IProgressMonitor monitor) {

            try {
                monitor.beginTask("J2OBJC Compiliation", totalWork);

                IJavaElement elm = (IJavaElement) strucSelc.getFirstElement();
                IJavaProject javaProject = (IJavaProject) elm.getJavaProject();

                Map<String, String> props = PropertiesUtil.getProjectProperties(javaProject.getResource());
                props.put(PreferenceConstants.PATH_TO_COMPILER, pathToCompiler);

                // some initial message plumbing
                ToObjectiveCDelegate.clearPrebuiltSwitch();

                ToObjectiveCDelegate delegate = new ToObjectiveCDelegate(display, props, monitor);
                elm.getResource().accept(delegate);
                monitor.worked(1);

                // copy files to some external directory
                monitor.subTask("Exporting Objective-C Classes");
                String destinationDir = PropertiesUtil.getOutputDirectory(javaProject);

                doOutput(console, display, javaProject, destinationDir);
                monitor.worked(1);

                // refresh
                javaProject.getResource().refreshLocal(IResource.DEPTH_INFINITE, monitor);
                monitor.worked(1);
                monitor.done();

            } catch (CoreException ce) {
                LogUtil.logException(ce);
                return Status.CANCEL_STATUS;
            } catch (IOException e) {
                LogUtil.logException(e);
                return Status.CANCEL_STATUS;
            }

            return Status.OK_STATUS;
        }

        private void doOutput(final MessageConsole console, final Display display, IJavaProject javaProject,
                String destinationDir) throws IOException, CoreException {
            if (StringUtils.isNotEmpty(destinationDir)) {
                // Ant specific code
                String sourceDir = javaProject.getResource().getLocation().makeAbsolute().toOSString();

                AntDelegate antDelegate = new AntDelegate(javaProject);
                antDelegate.executeExport(display, sourceDir, destinationDir);
            } else {
                MessageConsoleStream mct = console.newMessageStream();
                MessageUtil.setConsoleColor(display, mct, SWT.COLOR_BLUE);
                mct.write("No Output directory specified. Files will not be exported.");
            }
        }
    };

    job.setUser(true);
    job.schedule();

}

From source file:com.laex.j2objc.ToObjectiveCAction.java

License:Open Source License

/**
 * Calculate work.//  w ww  .  j  a va  2s  .com
 */
private void calculateWork() {
    IJavaElement elm = (IJavaElement) strucSelc.getFirstElement();

    totalWork = 0;

    try {
        elm.getResource().accept(new IResourceVisitor() {
            @Override
            public boolean visit(IResource resource) throws CoreException {

                if (!(resource.getType() == IResource.FILE)) {
                    return true;
                }

                if (JavaCore.isJavaLikeFileName(resource.getName())) {
                    System.err.println(resource.getName());
                    totalWork++;
                    return true;
                }

                return true;
            }
        });
    } catch (CoreException e) {
        LogUtil.logException(e);
    }
}

From source file:com.microsoft.javapkgsrv.JavaParser.java

License:MIT License

public List<FindDefinitionResponse.JavaElement> ProcessFindDefinintionRequest(String fileParseContents,
        String typeRootId, int cursorPosition) throws Exception {
    if (ActiveTypeRoots.containsKey(typeRootId)) {
        ITypeRoot cu = ActiveTypeRoots.get(typeRootId);
        cu.getBuffer().setContents(fileParseContents.toCharArray());
        IJavaElement[] elements = cu.codeSelect(cursorPosition, 0);

        List<FindDefinitionResponse.JavaElement> ret = new ArrayList<FindDefinitionResponse.JavaElement>();
        for (IJavaElement element : elements) {
            String definition = element.toString();
            String path = element.getResource() != null ? element.getResource().getLocation().toOSString()
                    : element.getPath().toOSString();
            //String path = element.getPath().makeAbsolute().toOSString(); // element.getPath().toString();

            boolean isAvailable = false;
            int posStart = -1;
            int posLength = 0;
            String contents = null;
            String classFileName = null;
            IClassFile classFileObj = null;

            ISourceReference srcRef = (ISourceReference) element;
            if (srcRef != null) {
                ISourceRange range = srcRef.getSourceRange();
                if (SourceRange.isAvailable(range)) {
                    isAvailable = true;//from   w ww  . ja  v  a  2 s. co m
                    posStart = range.getOffset();
                    posLength = range.getLength();

                    //if (path.endsWith(".jar"))
                    //{
                    IOpenable op = element.getOpenable();
                    if (op != null && op instanceof IClassFile) {
                        IBuffer buff = op.getBuffer();
                        classFileObj = (IClassFile) op;
                        classFileName = classFileObj.getElementName();
                        contents = buff.getContents();
                    }
                    //}
                }
            }

            FindDefinitionResponse.JavaElement.Builder retItem = FindDefinitionResponse.JavaElement.newBuilder()
                    .setDefinition(definition).setFilePath(path).setHasSource(isAvailable)
                    .setPositionStart(posStart).setPositionLength(posLength);

            if (contents != null) {
                //int hashCode = classFileObj.hashCode();
                String handle = classFileObj.getHandleIdentifier();
                ActiveTypeRoots.put(handle, classFileObj);

                retItem.setFileName(classFileName);
                retItem.setTypeRootIdentifier(TypeRootIdentifier.newBuilder().setHandle(handle).build());
            }
            System.out.println(retItem.toString());
            if (contents != null) {
                retItem.setFileContents(contents);
            }
            ret.add(retItem.build());
        }
        return ret;
    }
    return null;
}

From source file:com.redhat.ceylon.eclipse.code.explorer.PackageExplorerContentProvider.java

License:Open Source License

/**
 * Processes a delta recursively. When more than two children are affected the
 * tree is fully refreshed starting at this node.
 *
 * @param delta the delta to process/*from  ww w .j a va2s .  c  o m*/
 * @param runnables the resulting view changes as runnables (type {@link Runnable})
 * @return true is returned if the conclusion is to refresh a parent of an element. In that case no siblings need
 * to be processed
 * @throws JavaModelException thrown when the access to an element failed
 */
private boolean processDelta(IJavaElementDelta delta, Collection<Runnable> runnables)
        throws JavaModelException {

    int kind = delta.getKind();
    int flags = delta.getFlags();
    IJavaElement element = delta.getElement();
    int elementType = element.getElementType();

    if (elementType != IJavaElement.JAVA_MODEL && elementType != IJavaElement.JAVA_PROJECT) {
        IJavaProject proj = element.getJavaProject();
        if (proj == null || !proj.getProject().isOpen()) // TODO: Not needed if parent already did the 'open' check!
            return false;
    }

    if (elementType == IJavaElement.PACKAGE_FRAGMENT) {
        if ((flags & (IJavaElementDelta.F_CONTENT
                | IJavaElementDelta.F_CHILDREN)) == IJavaElementDelta.F_CONTENT) {
            // TODO: This should never be true for folders (F_CONTENT is only for files)
            if (!fIsFlatLayout) {
                Object parent = getHierarchicalPackageParent((IPackageFragment) element);
                if (!(parent instanceof IPackageFragmentRoot)) {
                    postRefresh(internalGetParent(parent), GRANT_PARENT, element, runnables);
                    return true;
                }
            }
            // content change, without children info (for example resource added/removed to class folder package)
            postRefresh(internalGetParent(element), PARENT, element, runnables);
            return true;
        }

        if (!fIsFlatLayout) {
            if (kind == IJavaElementDelta.REMOVED) {
                final Object parent = getHierarchicalPackageParent((IPackageFragment) element);
                if (parent instanceof IPackageFragmentRoot) {
                    postRemove(element, runnables);
                    return false;
                } else {
                    postRefresh(internalGetParent(parent), GRANT_PARENT, element, runnables);
                    return true;
                }
            } else if (kind == IJavaElementDelta.ADDED) {
                final Object parent = getHierarchicalPackageParent((IPackageFragment) element);
                if (parent instanceof IPackageFragmentRoot) {
                    if (fFoldPackages) {
                        postRefresh(parent, PARENT, element, runnables);
                        return true;
                    } else {
                        postAdd(parent, element, runnables);
                        return false;
                    }
                } else {
                    postRefresh(internalGetParent(parent), GRANT_PARENT, element, runnables);
                    return true;
                }
            }
            handleAffectedChildren(delta, element, runnables);
            return false;
        }
    }

    if (elementType == IJavaElement.COMPILATION_UNIT) {
        ICompilationUnit cu = (ICompilationUnit) element;
        if (!JavaModelUtil.isPrimary(cu)) {
            return false;
        }

        if (!getProvideMembers() && cu.isWorkingCopy() && kind == IJavaElementDelta.CHANGED) {
            return false;
        }

        if (kind == IJavaElementDelta.CHANGED && !isStructuralCUChange(flags)) {
            return false; // test moved ahead
        }

        if (!isOnClassPath(cu)) { // TODO: isOnClassPath expensive! Should be put after all cheap tests
            return false;
        }

    }

    if (elementType == IJavaElement.JAVA_PROJECT) {
        // handle open and closing of a project
        if ((flags & (IJavaElementDelta.F_CLOSED | IJavaElementDelta.F_OPENED)) != 0) {
            postRefresh(element, ORIGINAL, element, runnables);
            return false;
        }
        // if the class path has changed we refresh the entire project
        if ((flags & IJavaElementDelta.F_RESOLVED_CLASSPATH_CHANGED) != 0) {
            postRefresh(element, ORIGINAL, element, runnables);
            return false;
        }
        // if added it could be that the corresponding IProject is already shown. Remove it first.
        // bug 184296
        if (kind == IJavaElementDelta.ADDED) {
            postRemove(element.getResource(), runnables);
            postAdd(element.getParent(), element, runnables);
            return false;
        }
    }

    if (kind == IJavaElementDelta.REMOVED) {
        Object parent = internalGetParent(element);
        if (element instanceof IPackageFragment) {
            // refresh package fragment root to allow filtering empty (parent) packages: bug 72923
            if (fViewer.testFindItem(parent) != null)
                postRefresh(parent, PARENT, element, runnables);
            return true;

        } else if (element instanceof IPackageFragmentRoot) {
            // libs and class folders can show up twice (in library container and as resource at original location)
            IResource resource = element.getResource();
            if (resource != null && !resource.exists())
                postRemove(resource, runnables);
        }

        postRemove(element, runnables);
        if (parent instanceof IPackageFragment)
            postUpdateIcon((IPackageFragment) parent, runnables);
        // we are filtering out empty subpackages, so we
        // a package becomes empty we remove it from the viewer.
        if (isPackageFragmentEmpty(element.getParent())) {
            if (fViewer.testFindItem(parent) != null)
                postRefresh(internalGetParent(parent), GRANT_PARENT, element, runnables);
            return true;
        }
        return false;
    }

    if (kind == IJavaElementDelta.ADDED) {
        Object parent = internalGetParent(element);
        // we are filtering out empty subpackages, so we
        // have to handle additions to them specially.
        if (parent instanceof IPackageFragment) {
            Object grandparent = internalGetParent(parent);
            // 1GE8SI6: ITPJUI:WIN98 - Rename is not shown in Packages View
            // avoid posting a refresh to an invisible parent
            if (parent.equals(fInput)) {
                postRefresh(parent, PARENT, element, runnables);
            } else {
                // refresh from grandparent if parent isn't visible yet
                if (fViewer.testFindItem(parent) == null)
                    postRefresh(grandparent, GRANT_PARENT, element, runnables);
                else {
                    postRefresh(parent, PARENT, element, runnables);
                }
            }
            return true;
        } else {
            if (element instanceof IPackageFragmentRoot
                    && ((IPackageFragmentRoot) element).getKind() != IPackageFragmentRoot.K_SOURCE) {
                // libs and class folders can show up twice (in library container or under project, and as resource at original location)
                IResource resource = element.getResource();
                if (resource != null) {
                    Object resourceParent = super.internalGetParent(resource);
                    if (resourceParent != null) {
                        IJavaProject proj = element.getJavaProject();
                        if (fShowLibrariesNode || !resourceParent.equals(proj)) {
                            postAdd(resourceParent, resource, runnables);
                        }
                    }
                }
            }
            postAdd(parent, element, runnables);
        }
    }

    if (elementType == IJavaElement.COMPILATION_UNIT || elementType == IJavaElement.CLASS_FILE) {
        if (kind == IJavaElementDelta.CHANGED) {
            // isStructuralCUChange already performed above
            postRefresh(element, ORIGINAL, element, runnables);
        }
        return false;
    }

    if (elementType == IJavaElement.PACKAGE_FRAGMENT_ROOT) {
        // the contents of an external JAR has changed
        if ((flags & IJavaElementDelta.F_ARCHIVE_CONTENT_CHANGED) != 0) {
            postRefresh(element, ORIGINAL, element, runnables);
            return false;
        }
        if ((flags & (IJavaElementDelta.F_CONTENT
                | IJavaElementDelta.F_CHILDREN)) == IJavaElementDelta.F_CONTENT) {
            // TODO: This should never be true for folders (F_CONTENT is only for files)
            // content change, without children info (for example resource added/removed to class folder package)
            postRefresh(internalGetParent(element), PARENT, element, runnables);
            return true;
        }

        // the source attachment of a JAR has changed
        if ((flags & (IJavaElementDelta.F_SOURCEATTACHED | IJavaElementDelta.F_SOURCEDETACHED)) != 0)
            postUpdateIcon(element, runnables);

        if (isClassPathChange(delta)) {
            // throw the towel and do a full refresh of the affected java project.
            postRefresh(element.getJavaProject(), PROJECT, element, runnables);
            return true;
        }
    }

    handleAffectedChildren(delta, element, runnables);
    return false;
}

From source file:com.redhat.ceylon.eclipse.code.hover.DocumentationHover.java

License:Open Source License

private static String getBaseURL(IJavaElement element, boolean isBinary) throws JavaModelException {
    if (isBinary) {
        // Source attachment usually does not include Javadoc resources
        // => Always use the Javadoc location as base:
        URL baseURL = JavaUI.getJavadocLocation(element, false);
        if (baseURL != null) {
            if (baseURL.getProtocol().equals("jar")) {
                // It's a JarURLConnection, which is not known to the browser widget.
                // Let's start the help web server:
                URL baseURL2 = PlatformUI.getWorkbench().getHelpSystem().resolve(baseURL.toExternalForm(),
                        true);/*w w w  . jav a 2  s.c  o  m*/
                if (baseURL2 != null) { // can be null if org.eclipse.help.ui is not available
                    baseURL = baseURL2;
                }
            }
            return baseURL.toExternalForm();
        }
    } else {
        IResource resource = element.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) {
                return location.toFile().toURI().toString();
            }
        }
    }
    return null;
}

From source file:com.technophobia.substeps.junit.launcher.migration.SubstepsMigrationDelegate.java

License:Open Source License

/**
 * Returns a resource mapping for the given launch configuration, or
 * <code>null</code> if none.
 * //from   ww  w . j  a va2  s. co m
 * @param config
 *            working copy
 * @return resource or <code>null</code>
 * @throws CoreException
 *             if an exception occurs mapping resource
 */
private static IResource getResource(final ILaunchConfiguration config) throws CoreException {
    final String projName = config.getAttribute(IJavaLaunchConfigurationConstants.ATTR_PROJECT_NAME,
            (String) null);
    final String containerHandle = config.getAttribute(SubstepsLaunchConfigurationConstants.ATTR_TEST_CONTAINER,
            (String) null);
    final String typeName = config.getAttribute(IJavaLaunchConfigurationConstants.ATTR_MAIN_TYPE_NAME,
            (String) null);
    IJavaElement element = null;
    if (containerHandle != null && containerHandle.length() > 0) {
        element = JavaCore.create(containerHandle);
    } else if (projName != null && Path.ROOT.isValidSegment(projName)) {
        final IJavaProject javaProject = getJavaModel().getJavaProject(projName);
        if (javaProject.exists()) {
            if (typeName != null && typeName.length() > 0) {
                element = javaProject.findType(typeName);
            }
            if (element == null) {
                element = javaProject;
            }
        } else {
            final IProject project = javaProject.getProject();
            if (project.exists() && !project.isOpen()) {
                return project;
            }
        }
    }
    IResource resource = null;
    if (element != null) {
        resource = element.getResource();
    }
    return resource;
}

From source file:de.devboost.eclipse.jdtutilities.ClassDependencyUtility.java

License:Open Source License

private void addClassToSearchResult(Set<String> result, IJavaElement javaElement) throws JavaModelException {
    if (javaElement == null) {
        return;//from w w w.  jav a 2s .co  m
    }
    IResource resource = javaElement.getResource();
    if (resource == null) {
        return;
    }
    String path = resource.getFullPath().toString();
    result.add(path);
}

From source file:de.fu_berlin.inf.jtourbus.view.TourChangeListener.java

License:Open Source License

void visitInternal(IProgressMonitor pm, IJavaElementDelta delta) {

    IJavaElement elem = delta.getElement();
    IJavaElementDelta[] children = delta.getAffectedChildren();

    if (pm != null)
        pm.beginTask("", children.length + 2);

    if ((delta.getFlags() & IJavaElementDelta.F_CHILDREN) != 0) {

        if (delta.getKind() != IJavaElementDelta.CHANGED) {
            throw new RuntimeException("ASSERT: CHILDREN should always be CHANGE");
        }/*from   w w  w.jav a 2s .  c om*/

        for (int i = 0; i < children.length; i++) {
            visit(pm, children[i]);
        }
        return;
    }

    switch (delta.getKind()) {
    case IJavaElementDelta.ADDED: {
        if (!((delta.getFlags() & IJavaElementDelta.F_CHILDREN) == 0))
            throw new RuntimeException("ASSERT: ADDED has no children");

        switch (elem.getElementType()) {
        case IJavaElement.JAVA_MODEL:
            throw new RuntimeException("ASSERT: Adding Java Model not possible");
        case IJavaElement.JAVA_PROJECT:
            throw new RuntimeException("ASSERT: Adding Java Project not possible");
        case IJavaElement.PACKAGE_FRAGMENT_ROOT:
            // The user added a source folder

            for (BusStop bs : Utilities.findJTourBusStops(pm, elem.getResource()))
                fContentProvider.fTourPlan.add(bs);
            return;
        case IJavaElement.PACKAGE_FRAGMENT:
            // The user inserted a packaged

            for (BusStop bs : Utilities.findJTourBusStops(pm, elem.getResource()))
                fContentProvider.fTourPlan.add(bs);
            return;
        case IJavaElement.COMPILATION_UNIT: {
            ICompilationUnit cu = (ICompilationUnit) elem;
            if (cu.getPrimary().equals(cu)) {
                for (BusStop bs : Utilities.findJTourBusStops(pm, elem.getResource()))
                    fContentProvider.fTourPlan.add(bs);
            }
            return;
        }
        default:
            ICompilationUnit cu = (ICompilationUnit) delta.getElement()
                    .getAncestor(IJavaElement.COMPILATION_UNIT);

            redoCU(cu, pm);
            return;
        }
    }
    case IJavaElementDelta.REMOVED:
        if (!((delta.getFlags() & IJavaElementDelta.F_CHILDREN) == 0))
            throw new RuntimeException("REMOVED has children");

        switch (elem.getElementType()) {
        case IJavaElement.JAVA_MODEL:
            throw new RuntimeException("ASSERT: Java Model not possible");
        case IJavaElement.JAVA_PROJECT:
            fContentProvider.fTourPlan.removeAll();
            return;
        case IJavaElement.PACKAGE_FRAGMENT_ROOT:
        case IJavaElement.PACKAGE_FRAGMENT:
            fContentProvider.fTourPlan.removeAll();

            for (BusStop bs : Utilities.findJTourBusStops(pm, elem.getJavaProject().getResource()))
                fContentProvider.fTourPlan.add(bs);

            return;
        case IJavaElement.COMPILATION_UNIT: {
            ICompilationUnit cu = (ICompilationUnit) elem;
            if (cu.getPrimary().equals(cu)) {
                fContentProvider.fTourPlan.removeCU(cu);
            }
            return;
        }
        default: {
            ICompilationUnit cu = (ICompilationUnit) delta.getElement()
                    .getAncestor(IJavaElement.COMPILATION_UNIT);

            redoCU(cu, pm);
            return;
        }
        }
    case IJavaElementDelta.CHANGED:
        // F_CONTENT && F_FINE_GRAINED
        if ((delta.getFlags() & IJavaElementDelta.F_CONTENT) != 0
                && (delta.getFlags() & IJavaElementDelta.F_FINE_GRAINED) != 0) {

            ICompilationUnit cu = (ICompilationUnit) delta.getElement()
                    .getAncestor(IJavaElement.COMPILATION_UNIT);

            redoCU(cu, pm);
        }

        // Closing without saving will trigger this event. We thus re-read
        // the file.
        if ((delta.getFlags() & IJavaElementDelta.F_PRIMARY_WORKING_COPY) != 0) {

            ICompilationUnit cu = (ICompilationUnit) delta.getElement();

            /* FIXME */

            redoCU(cu, pm);
        }
        break;
    }
}

From source file:de.hentschel.visualdbc.datasource.ui.setting.JavaPackageSettingControl.java

License:Open Source License

/**
 * Sets the {@link IJavaElement} value.//from w ww.  java  2  s . c  o  m
 * @param value The {@link IJavaElement} value to set.
 */
protected void setJavaValue(IJavaElement value) {
    IJavaElement packageElement = JDTUtil.getPackage((IJavaElement) value);
    if (packageElement != null) { // Is null for example if a java project is selected.
        oldPackage = packageElement;
        fileButton.setSelection(false);
        resourceButton.setSelection(false);
        packageButton.setSelection(true);
        lastButton = packageButton;
        updatePathText(packageButton);
        IResource resource = oldPackage.getResource();
        if (resource != null) {
            oldResource = resource.getFullPath().toString();
            File file = ResourceUtil.getLocation(resource);
            if (file != null) {
                oldFile = file.toString();
            }
        }
    } else {
        setResourceValue(value.getResource());
    }
}

From source file:de.ovgu.cide.typing.jdt.checks.resolutions.ASTBindingFinderHelper.java

License:Open Source License

private static CompilationUnit getAST(IBinding binding) {
    IJavaElement element = binding.getJavaElement();
    if (element == null)
        return null;
    IResource res = element.getResource();
    if (!(res instanceof IFile))
        return null;

    try {/*from w  ww.  j av  a 2 s . c o  m*/
        return JDTParserWrapper.parseJavaFile((IFile) res);
    } catch (ParseException e) {
        e.printStackTrace();
        // if in doubt no error
        return null;
    }

}