Example usage for org.eclipse.jdt.core IPackageFragment getNonJavaResources

List of usage examples for org.eclipse.jdt.core IPackageFragment getNonJavaResources

Introduction

In this page you can find the example usage for org.eclipse.jdt.core IPackageFragment getNonJavaResources.

Prototype

Object[] getNonJavaResources() throws JavaModelException;

Source Link

Document

Returns an array of non-Java resources contained in this package fragment.

Usage

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

License:Open Source License

/**
 * Returns the Javadoc for a package which could be present in package.html, package-info.java
 * or from an attached Javadoc./*from   w w w .j  av  a  2 s. co  m*/
 *
 * @param packageFragment the package which is requesting for the document
 * @return the document content in HTML format or <code>null</code> if there is no associated
 *         Javadoc
 * @throws CoreException if the Java element does not exists or an exception occurs while
 *             accessing the file containing the package Javadoc
 * @since 3.9
 */
public static String getHTMLContent(IPackageFragment packageFragment) throws CoreException {
    IPackageFragmentRoot root = (IPackageFragmentRoot) packageFragment
            .getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT);

    //1==> Handle the case when the documentation is present in package-info.java or package-info.class file
    ITypeRoot packageInfo;
    boolean isBinary = root.getKind() == IPackageFragmentRoot.K_BINARY;
    if (isBinary) {
        packageInfo = packageFragment.getClassFile(JavaModelUtil.PACKAGE_INFO_CLASS);
    } else {
        packageInfo = packageFragment.getCompilationUnit(JavaModelUtil.PACKAGE_INFO_JAVA);
    }
    if (packageInfo != null && packageInfo.exists()) {
        String cuSource = packageInfo.getSource();
        //the source can be null for some of the class files
        if (cuSource != null) {
            Javadoc packageJavadocNode = getPackageJavadocNode(packageFragment, cuSource);
            if (packageJavadocNode != null) {
                IJavaElement element;
                if (isBinary) {
                    element = ((IClassFile) packageInfo).getType();
                } else {
                    element = packageInfo.getParent(); // parent is the IPackageFragment
                }
                return new JavadocContentAccess2(element, packageJavadocNode, cuSource).toHTML();
            }
        }
    }

    // 2==> Handle the case when the documentation is done in package.html file. The file can be either in normal source folder or coming from a jar file
    else {
        Object[] nonJavaResources = packageFragment.getNonJavaResources();
        // 2.1 ==>If the package.html file is present in the source or directly in the binary jar
        for (Object nonJavaResource : nonJavaResources) {
            if (nonJavaResource instanceof IFile) {
                IFile iFile = (IFile) nonJavaResource;
                if (iFile.exists() && JavaModelUtil.PACKAGE_HTML.equals(iFile.getName())) {
                    return getIFileContent(iFile);
                }
            }
        }

        // 2.2==>The file is present in a binary container
        if (isBinary) {
            for (Object nonJavaResource : nonJavaResources) {
                // The content is from an external binary class folder
                if (nonJavaResource instanceof IJarEntryResource) {
                    IJarEntryResource jarEntryResource = (IJarEntryResource) nonJavaResource;
                    String encoding = getSourceAttachmentEncoding(root);
                    if (JavaModelUtil.PACKAGE_HTML.equals(jarEntryResource.getName())
                            && jarEntryResource.isFile()) {
                        return getHTMLContent(jarEntryResource, encoding);
                    }
                }
            }
            //2.3 ==>The file is present in the source attachment path.
            String contents = getHTMLContentFromAttachedSource(root, packageFragment);
            if (contents != null)
                return contents;
        }
    }

    //3==> Handle the case when the documentation is coming from the attached Javadoc
    if ((root.isArchive() || root.isExternal())) {
        return packageFragment.getAttachedJavadoc(null);

    }

    return null;
}

From source file:at.component.newcomponentwizard.generator.NewProjectCreationOperation.java

License:Open Source License

@SuppressWarnings({ "rawtypes", "unchecked" })
private void addAllSourcePackages(IProject project, Set list) {
    try {//from  w w  w.  j  a  v a  2s.  c o  m
        IJavaProject javaProject = JavaCore.create(project);
        IClasspathEntry[] classpath = javaProject.getRawClasspath();
        for (int i = 0; i < classpath.length; i++) {
            IClasspathEntry entry = classpath[i];
            if (entry.getEntryKind() == IClasspathEntry.CPE_SOURCE) {
                IPath path = entry.getPath().removeFirstSegments(1);
                if (path.segmentCount() > 0) {
                    IPackageFragmentRoot root = javaProject.getPackageFragmentRoot(project.getFolder(path));
                    IJavaElement[] children = root.getChildren();
                    for (int j = 0; j < children.length; j++) {
                        IPackageFragment frag = (IPackageFragment) children[j];
                        if (frag.getChildren().length > 0 || frag.getNonJavaResources().length > 0)
                            list.add(children[j].getElementName());
                    }
                }
            }
        }
    } catch (JavaModelException e) {
    }
}

From source file:ccw.ClojureCore.java

License:Open Source License

/**
 * Tries to open a clojure file in an editor
 * @return an editor input if the file has been found, or null
 */// w ww.j  a  v  a2s.c o  m
private static IEditorInput findEditorInput(IPackageFragmentRoot packageFragmentRoot,
        IPackageFragment packageFragment, String searchedPackage, String searchedFileName)
        throws JavaModelException {
    if (packageFragment.exists() && packageFragment.getElementName().equals(searchedPackage)) {
        for (Object njr : packageFragment.isDefaultPackage() ? packageFragmentRoot.getNonJavaResources()
                : packageFragment.getNonJavaResources()) {
            if (njr instanceof IJarEntryResource) {
                IJarEntryResource jer = (IJarEntryResource) njr;
                if (jer.getName().equals(searchedFileName)) {
                    return new JarEntryEditorInput(jer);
                }
            } else if (njr instanceof IFile) {
                IFile file = (IFile) njr;
                if (file.getName().equals(searchedFileName)) {
                    return new FileEditorInput(file);
                }
            } else if (njr instanceof File) {
                File f = (File) njr;
                if (f.getName().equals(searchedFileName)) {
                    IFileStore fileStore = EFS.getLocalFileSystem().getStore(f.toURI());
                    return new FileStoreEditorInput(fileStore);
                }
            }
        }
    }
    return null;
}

From source file:com.codenvy.ide.ext.java.server.JavaNavigation.java

License:Open Source License

private static boolean isEmpty(IPackageFragment fragment) throws JavaModelException {
    return !fragment.containsJavaResources() && fragment.getNonJavaResources().length == 0;
}

From source file:com.codenvy.ide.ext.java.server.JavaNavigation.java

License:Open Source License

protected Object[] getPackageContent(IPackageFragment fragment) throws JavaModelException {

    // hierarchical package mode
    ArrayList<Object> result = new ArrayList<Object>();

    getHierarchicalPackageChildren((IPackageFragmentRoot) fragment.getParent(), fragment, result);
    IClassFile[] classFiles = fragment.getClassFiles();
    List<IClassFile> filtered = new ArrayList<>();
    //filter inner classes
    for (IClassFile classFile : classFiles) {
        if (!classFile.getElementName().contains("$")) {
            filtered.add(classFile);/*from   w w  w. java 2  s  .  c o  m*/
        }
    }
    Object[] nonPackages = concatenate(filtered.toArray(), fragment.getNonJavaResources());
    if (result.isEmpty())
        return nonPackages;
    Collections.addAll(result, nonPackages);
    return result.toArray();
}

From source file:com.ebmwebsourcing.petals.common.internal.provisional.ui.JarExportWizardPage.java

License:Open Source License

@Override
public void createControl(Composite parent) {

    Composite container = new Composite(parent, SWT.NONE);
    container.setLayout(new GridLayout());
    container.setLayoutData(new GridData(GridData.FILL_BOTH));
    new Label(container, SWT.NONE).setText(
            "Select the resources to export.\nThe following projects are the project you selected and the projects it depends on.");

    int labelFlags = JavaElementLabelProvider.SHOW_BASICS | JavaElementLabelProvider.SHOW_OVERLAY_ICONS
            | JavaElementLabelProvider.SHOW_SMALL_ICONS;

    ITreeContentProvider treeContentProvider = new StandardJavaElementContentProvider() {
        @Override/*from   ww w.  ja  va2  s  .co  m*/
        public boolean hasChildren(Object element) {
            return !(element instanceof IPackageFragment) && super.hasChildren(element);
        }

        @Override
        public Object[] getElements(Object parent) {
            if (parent instanceof IWorkspaceRoot) {
                List<IJavaProject> result = JavaUtils
                        .getJavaProjectDependencies(JarExportWizardPage.this.selectedProject);
                return result.toArray();
            }
            return super.getElements(parent);
        }
    };

    final DecoratingLabelProvider provider = new DecoratingLabelProvider(
            new JavaElementLabelProvider(labelFlags), new ProblemsLabelDecorator(null));

    this.javaSelectionViewer = new CheckboxTreeAndListGroup(container, ResourcesPlugin.getWorkspace().getRoot(),
            treeContentProvider, provider, new StandardJavaElementContentProvider(), provider, SWT.NONE, 420,
            150) {

        /*
         * (non-Javadoc)
         * @see com.ebmwebsourcing.petals.common.internal.provisional.ui.jdt.CheckboxTreeAndListGroup
         * #setTreeChecked(java.lang.Object, boolean)
         */
        @Override
        protected void setTreeChecked(final Object element, final boolean state) {
            if (element instanceof IResource) {
                final IResource resource = (IResource) element;
                if (resource.getName().charAt(0) == '.')
                    return;
            }
            super.setTreeChecked(element, state);
        }
    };

    this.javaSelectionViewer.addTreeFilter(new ViewerFilter() {
        @Override
        public boolean select(Viewer viewer, Object parent, Object element) {

            boolean result = true;
            if (element instanceof IPackageFragment) {
                IPackageFragment pkg = (IPackageFragment) element;
                try {
                    if (pkg.isDefaultPackage())
                        result = pkg.hasChildren();
                    else
                        result = !pkg.hasSubpackages() || pkg.hasChildren()
                                || pkg.getNonJavaResources().length > 0;

                } catch (JavaModelException e) {
                    result = false;
                }
            }

            return result;
        }
    });

    this.javaSelectionViewer.setTreeComparator(new JavaElementComparator());
    this.javaSelectionViewer.setListComparator(new JavaElementComparator());
    this.javaSelectionViewer.addTreeFilter(new ContainerFilter(ContainerFilter.FILTER_NON_CONTAINERS));
    this.javaSelectionViewer.addTreeFilter(new ViewerFilter() {
        @Override
        public boolean select(Viewer viewer, Object p, Object element) {
            if (element instanceof IPackageFragmentRoot) {
                IPackageFragmentRoot root = (IPackageFragmentRoot) element;
                return !root.isArchive() && !root.isExternal();
            }
            return true;
        }
    });

    this.javaSelectionViewer.addListFilter(new ContainerFilter(ContainerFilter.FILTER_CONTAINERS));
    this.javaSelectionViewer.expandTreeToLevel(this.selectedProject, 1);
    this.javaSelectionViewer.addCheckStateListener(new ICheckStateListener() {
        @Override
        public void checkStateChanged(CheckStateChangedEvent event) {
            validate();
        }
    });

    // Options
    final Button exportSourcesButton = new Button(container, SWT.CHECK);
    exportSourcesButton.setText("Export sources");
    exportSourcesButton.setSelection(this.exportSources);
    exportSourcesButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            JarExportWizardPage.this.exportSources = exportSourcesButton.getSelection();
            validate();
        }
    });

    final Button compressJarButton = new Button(container, SWT.CHECK);
    compressJarButton.setText("Compress the content of the JAR file");
    compressJarButton.setSelection(this.compressJar);
    compressJarButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            JarExportWizardPage.this.compressJar = compressJarButton.getSelection();
            validate();
        }
    });

    final Button exportWarningsAndErrorsButton = new Button(container, SWT.CHECK);
    exportWarningsAndErrorsButton.setText("Export class files with compile warnings or errors");
    exportWarningsAndErrorsButton.setSelection(this.exportWarningsAndErrors);
    exportWarningsAndErrorsButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            JarExportWizardPage.this.exportWarningsAndErrors = exportWarningsAndErrorsButton.getSelection();
            validate();
        }
    });

    validate();
    setErrorMessage(null);
    setControl(container);
}

From source file:com.google.gdt.eclipse.core.java.ClasspathResourceUtilities.java

License:Open Source License

/**
 * Returns the given file or JAR entry if it is on the given package fragment.
 * The file can be a Java file, class file, or a non-Java resource.
 * <p>/*from www. j ava  2 s  . c om*/
 * This method returns null for .java files or .class files inside JARs.
 * 
 * @param fileName the file name
 * @param pckgFragment the package fragment to search
 * @return the file as an IResource or IJarEntryResource, or null
 * @throws JavaModelException
 */
public static IStorage resolveFileOnPackageFragment(String fileName, IPackageFragment pckgFragment)
        throws JavaModelException {

    boolean isJavaFile = JavaCore.isJavaLikeFileName(fileName);
    boolean isClassFile = ResourceUtils.endsWith(fileName, ".class");

    // Check the non-Java resources first
    Object[] nonJavaResources = pckgFragment.getNonJavaResources();
    for (Object nonJavaResource : nonJavaResources) {
        if (nonJavaResource instanceof IFile) {
            IFile file = (IFile) nonJavaResource;
            String resFileName = file.getName();

            if (ResourceUtils.areFilenamesEqual(resFileName, fileName)) {
                // Java source files that have been excluded from the build path
                // show up as non-Java resources, but we'll ignore them since
                // they're not available on the classpath.
                if (!JavaCore.isJavaLikeFileName(resFileName)) {
                    return file;
                } else {
                    return null;
                }
            }
        }

        // JAR resources are not IResource's, so we need to handle them
        // differently
        if (nonJavaResource instanceof IJarEntryResource) {
            IJarEntryResource jarEntry = (IJarEntryResource) nonJavaResource;
            if (jarEntry.isFile() && ResourceUtils.areFilenamesEqual(jarEntry.getName(), fileName)) {
                return jarEntry;
            }
        }
    }

    // If we're looking for a .java or .class file, we can use the regular
    // Java Model methods.

    if (isJavaFile) {
        ICompilationUnit cu = pckgFragment.getCompilationUnit(fileName);
        if (cu.exists()) {
            return (IFile) cu.getCorrespondingResource();
        }
    }

    if (isClassFile) {
        IClassFile cf = pckgFragment.getClassFile(fileName);
        if (cf.exists()) {
            return (IFile) cf.getCorrespondingResource();
        }
    }

    return null;
}

From source file:com.google.gdt.eclipse.designer.uibinder.editor.UiBinderPairResourceProvider.java

License:Open Source License

/**
 * @return the ui.xml {@link IFile} for given Java one.
 *///from   w  ww  .  j a  va2 s . c o  m
private IFile getUIFile(IFile javaFile) throws Exception {
    IProject project = javaFile.getProject();
    IJavaProject javaProject = JavaCore.create(project);
    // prepare form name
    String javaFormName = StringUtils.removeEnd(javaFile.getName(), ".java");
    // prepare package name
    String packageName;
    {
        IFolder folder = (IFolder) javaFile.getParent();
        IPackageFragment packageFragmentJava = (IPackageFragment) JavaCore.create(folder);
        packageName = packageFragmentJava.getElementName();
    }
    // try to find ui.xml file in package with same name
    for (IPackageFragmentRoot packageFragmentRoot : javaProject.getPackageFragmentRoots()) {
        IPackageFragment packageFragment = packageFragmentRoot.getPackageFragment(packageName);
        if (packageFragment.exists()) {
            for (Object object : packageFragment.getNonJavaResources()) {
                if (object instanceof IFile) {
                    IFile uiFile = (IFile) object;
                    String uiFileName = uiFile.getName();
                    if (StringUtils.endsWithIgnoreCase(uiFileName, ".ui.xml")) {
                        String uiFormName = StringUtils.removeEndIgnoreCase(uiFileName, ".ui.xml");
                        if (uiFormName.equals(javaFormName)) {
                            return uiFile;
                        }
                    }
                }
            }
        }
    }
    // no ui.xml file
    return null;
}

From source file:com.google.gdt.eclipse.designer.util.DefaultModuleProvider.java

License:Open Source License

/**
 * @return all module files in given {@link IJavaProject}.
 *//*from ww w  .  j  a  v  a  2s. c o m*/
private static List<IFile> getModuleFiles(IJavaProject javaProject) throws Exception {
    List<IFile> moduleFiles = Lists.newArrayList();
    for (IPackageFragmentRoot packageFragmentRoot : javaProject.getPackageFragmentRoots()) {
        // check only in source folders
        if (packageFragmentRoot.getKind() != IPackageFragmentRoot.K_SOURCE) {
            continue;
        }
        // check packages
        for (IJavaElement rootChild : packageFragmentRoot.getChildren()) {
            // check only packages
            if (rootChild instanceof IPackageFragment) {
                IPackageFragment pkg = (IPackageFragment) rootChild;
                for (Object object : pkg.getNonJavaResources()) {
                    // check only files
                    if (object instanceof IFile) {
                        IFile file = (IFile) object;
                        // check that file is GWT module file
                        if (isModuleFile(file)) {
                            moduleFiles.add(file);
                        }
                    }
                }
            }
        }
    }
    return moduleFiles;
}

From source file:com.google.gwt.eclipse.core.modules.ModuleUtils.java

License:Open Source License

/**
 * Find modules in package//from   w ww .j a va 2  s .  c o m
 *
 * @param pckg
 * @param modules
 * @param includeJars
 * @throws JavaModelException
 */
protected static void testNonJavaResourcesForModules(IPackageFragment pckg, Map<String, IModule> modules,
        boolean includeJars) throws JavaModelException {
    for (Object resource : pckg.getNonJavaResources()) {
        IModule module = create(resource, includeJars);
        if (module != null) {
            String moduleName = module.getQualifiedName();
            if (!modules.containsKey(moduleName)) {
                modules.put(moduleName, module);
            }
        }
    }
}