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

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

Introduction

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

Prototype

IJavaElement getParent();

Source Link

Document

Returns the element directly containing this element, or null if this element has no parent.

Usage

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

License:Open Source License

/**
 * Appends the label for a package fragment. Considers the P_* flags.
 *
 * @param pack the element to render//ww  w .  j  av  a  2 s.  c om
 * @param flags the rendering flags. Flags with names starting with P_' are considered.
 */
public void appendPackageFragmentLabel(IPackageFragment pack, long flags) {
    if (getFlag(flags, JavaElementLabels.P_QUALIFIED)) {
        appendPackageFragmentRootLabel((IPackageFragmentRoot) pack.getParent(),
                JavaElementLabels.ROOT_QUALIFIED);
        fBuffer.append('/');
    }
    if (pack.isDefaultPackage()) {
        fBuffer.append(JavaElementLabels.DEFAULT_PACKAGE);
    } else if (getFlag(flags, JavaElementLabels.P_COMPRESSED)) {
        if (isPackageNameAbbreviationEnabled())
            appendAbbreviatedPackageFragment(pack);
        else
            appendCompressedPackageFragment(pack);
    } else {
        fBuffer.append(getElementName(pack));
    }
    if (getFlag(flags, JavaElementLabels.P_POST_QUALIFIED)) {
        int offset = fBuffer.length();
        fBuffer.append(JavaElementLabels.CONCAT_STRING);
        appendPackageFragmentRootLabel((IPackageFragmentRoot) pack.getParent(),
                JavaElementLabels.ROOT_QUALIFIED);
        //         if (getFlag(flags, JavaElementLabels.COLORIZE)) {
        //            fBuffer.setStyle(offset, fBuffer.length() - offset, QUALIFIER_STYLE);
        //         }
    }
}

From source file:byke.DependencyAnalysis.java

License:Open Source License

private static List<IPackageFragment> withSubpackages(IPackageFragment packge) throws JavaModelException {
    IJavaElement[] allPackages = ((IPackageFragmentRoot) packge.getParent()).getChildren();
    List<IPackageFragment> ret = new ArrayList<IPackageFragment>();
    for (IJavaElement candidate : allPackages)
        if (candidate.getElementName().startsWith(packge.getElementName()))
            ret.add((IPackageFragment) candidate);

    return ret;/*from   w w  w.  ja va 2  s  .c  om*/
}

From source file:ca.uvic.chisel.diver.sequencediagrams.sc.java.editors.JavaSequenceContentProvider.java

License:Open Source License

public Object getContainingGroup(Object lifelineOrGroup) {
    if (lifelineOrGroup instanceof JavaObject) {
        IJavaElement element = ((JavaObject) lifelineOrGroup).getJavaElement();
        if (element instanceof IType) {
            return ((IType) element).getPackageFragment();
        }/*  w w w . jav a 2s. c o  m*/
    } else if (lifelineOrGroup instanceof IPackageFragment) {
        IPackageFragment fragment = (IPackageFragment) lifelineOrGroup;
        IPackageFragmentRoot root = (IPackageFragmentRoot) fragment.getParent();
        int lastDot = fragment.getElementName().lastIndexOf('.');
        if (lastDot > 0) {
            String name = fragment.getElementName().substring(0, lastDot);
            return root.getPackageFragment(name);
        }
    }
    return null;
}

From source file:ca.uvic.chisel.diver.sequencediagrams.sc.java.editors.JavaSequenceContentProvider.java

License:Open Source License

public boolean hasContainingGroup(Object lifelineOrGroup) {
    if (lifelineOrGroup instanceof JavaObject) {
        IJavaElement element = ((JavaObject) lifelineOrGroup).getJavaElement();
        if (element instanceof IType) {
            return ((IType) element).getPackageFragment() != null;
        }/*from  w  w w.j a  v a 2 s  .c  o m*/
    } else if (lifelineOrGroup instanceof IPackageFragment) {
        IPackageFragment fragment = (IPackageFragment) lifelineOrGroup;
        IPackageFragmentRoot root = (IPackageFragmentRoot) fragment.getParent();
        int lastDot = fragment.getElementName().lastIndexOf('.');
        if (lastDot > 0) {
            String name = fragment.getElementName().substring(0, lastDot);
            return root.getPackageFragment(name) != null;
        }
    }
    return false;
}

From source file:com.codenvy.ide.ext.java.server.internal.core.DeltaProcessor.java

License:Open Source License

private void updateIndex(Openable element, IResourceDelta delta) {

    IndexManager indexManager = this.manager.indexManager;
    if (indexManager == null)
        return;/* w w  w.j  ava2s  .  c  o  m*/

    switch (element.getElementType()) {
    case IJavaElement.JAVA_PROJECT:
        switch (delta.getKind()) {
        case IResourceDelta.ADDED:
            indexManager.indexAll((JavaProject) element.getJavaProject());
            break;
        case IResourceDelta.REMOVED:
            indexManager.removeIndexFamily(element.getJavaProject().getProject().getFullPath());
            // NB: Discarding index jobs belonging to this project was done during PRE_DELETE
            break;
        // NB: Update of index if project is opened, closed, or its java nature is added or removed
        //     is done in updateCurrentDeltaAndIndex
        }
        break;
    case IJavaElement.PACKAGE_FRAGMENT_ROOT:
        if (element instanceof JarPackageFragmentRoot) {
            JarPackageFragmentRoot root = (JarPackageFragmentRoot) element;
            // index jar file only once (if the root is in its declaring project)
            IPath jarPath = root.getPath();
            switch (delta.getKind()) {
            case IResourceDelta.ADDED:
                // index the new jar
                indexManager.indexLibrary(jarPath, root.getIndexPath());
                break;
            case IResourceDelta.CHANGED:
                // first remove the index so that it is forced to be re-indexed
                indexManager.removeIndex(jarPath);
                // then index the jar
                indexManager.indexLibrary(jarPath, root.getIndexPath());
                break;
            case IResourceDelta.REMOVED:
                // the jar was physically removed: remove the index
                indexManager.discardJobs(jarPath.toString());
                indexManager.removeIndex(jarPath);
                break;
            }
            break;
        }
        int kind = delta.getKind();
        if (kind == IResourceDelta.ADDED || kind == IResourceDelta.REMOVED
                || (kind == IResourceDelta.CHANGED && (delta.getFlags() & IResourceDelta.LOCAL_CHANGED) != 0)) {
            PackageFragmentRoot root = (PackageFragmentRoot) element;
            updateRootIndex(root, CharOperation.NO_STRINGS, delta);
            break;
        }
        // don't break as packages of the package fragment root can be indexed below
        // $FALL-THROUGH$
    case IJavaElement.PACKAGE_FRAGMENT:
        switch (delta.getKind()) {
        case IResourceDelta.CHANGED:
            if ((delta.getFlags() & IResourceDelta.LOCAL_CHANGED) == 0)
                break;
            // $FALL-THROUGH$
        case IResourceDelta.ADDED:
        case IResourceDelta.REMOVED:
            IPackageFragment pkg = null;
            if (element instanceof IPackageFragmentRoot) {
                PackageFragmentRoot root = (PackageFragmentRoot) element;
                pkg = root.getPackageFragment(CharOperation.NO_STRINGS);
            } else {
                pkg = (IPackageFragment) element;
            }
            RootInfo rootInfo = rootInfo(pkg.getParent().getPath(), delta.getKind());
            boolean isSource = rootInfo == null // if null, defaults to source
                    || rootInfo.entryKind == IClasspathEntry.CPE_SOURCE;
            IResourceDelta[] children = (IResourceDelta[]) delta.getAffectedChildren();
            for (int i = 0, length = children.length; i < length; i++) {
                IResourceDelta child = children[i];
                IResource resource = child.getResource();
                // TODO (philippe) Why do this? Every child is added anyway as the delta is walked
                if (resource instanceof IFile) {
                    String name = resource.getName();
                    if (isSource) {
                        if (org.eclipse.jdt.internal.core.util.Util.isJavaLikeFileName(name)) {
                            Openable cu = (Openable) pkg.getCompilationUnit(name);
                            updateIndex(cu, child);
                        }
                    } else if (org.eclipse.jdt.internal.compiler.util.Util.isClassFileName(name)) {
                        Openable classFile = (Openable) pkg.getClassFile(name);
                        updateIndex(classFile, child);
                    }
                }
            }
            break;
        }
        break;
    case IJavaElement.CLASS_FILE:
        //            IFile file = (IFile) delta.getResource();
        //            IJavaProject project = element.getJavaProject();
        //            PackageFragmentRoot root = element.getPackageFragmentRoot();
        //            IPath binaryFolderPath = root.isExternal() && !root.isArchive() ? root.resource().getFullPath() : root.getPath();
        //            // if the class file is part of the binary output, it has been created by
        //            // the java builder -> ignore
        //            try {
        //               if (binaryFolderPath.equals(project.getOutputLocation())) {
        //                  break;
        //               }
        //            } catch (JavaModelException e) {
        //               // project doesn't exist: ignore
        //            }
        //            switch (delta.getKind()) {
        //               case IResourceDelta.CHANGED :
        //                  // no need to index if the content has not changed
        //                  int flags = delta.getFlags();
        //                  if ((flags & IResourceDelta.CONTENT) == 0 && (flags & IResourceDelta.ENCODING) == 0)
        //                     break;
        //                  // $FALL-THROUGH$
        //               case IResourceDelta.ADDED :
        //                  indexManager.addBinary(file, binaryFolderPath);
        //                  break;
        //               case IResourceDelta.REMOVED :
        //                  String containerRelativePath = Util.relativePath(file.getFullPath(), binaryFolderPath.segmentCount());
        //                  indexManager.remove(containerRelativePath, binaryFolderPath);
        //                  break;
        //            }
        break;
    case IJavaElement.COMPILATION_UNIT:
        File file = delta.getFile();
        switch (delta.getKind()) {
        case IResourceDelta.CHANGED:
            // no need to index if the content has not changed
            int flags = delta.getFlags();
            if ((flags & IResourceDelta.CONTENT) == 0 && (flags & IResourceDelta.ENCODING) == 0)
                break;
            // $FALL-THROUGH$
        case IResourceDelta.ADDED:
            indexManager.addSource(file.toPath(), element.getJavaProject().getPath(),
                    getSourceElementParser(element));
            // Clean file from secondary types cache but do not update indexing secondary type cache as it will be updated through indexing itself
            this.manager.secondaryTypesRemoving(file, false);
            break;
        case IResourceDelta.REMOVED:
            indexManager.remove(
                    file.getPath().substring(element.getJavaProject().getPath().toOSString().length()),
                    element.getJavaProject().getPath());
            // Clean file from secondary types cache and update indexing secondary type cache as indexing cannot remove secondary types from cache
            this.manager.secondaryTypesRemoving(file, true);
            break;
        }
    }
}

From source file:com.codenvy.ide.ext.java.server.internal.core.NameLookup.java

License:Open Source License

/**
 * Notifies the given requestor of all types (classes and interfaces) in the
 * given package fragment with the given (unqualified) name.
 * Checks the requestor at regular intervals to see if the requestor
 * has canceled. If the given package fragment is <code>null</code>, all types in the
 * project whose simple name matches the given name are found.
 *
 * @param name// ww  w  .java  2  s.c o m
 *         The name to search
 * @param pkg
 *         The corresponding package fragment
 * @param partialMatch
 *         partial name matches qualify when <code>true</code>;
 *         only exact name matches qualify when <code>false</code>
 * @param acceptFlags
 *         a bit mask describing if classes, interfaces or both classes and interfaces
 *         are desired results. If no flags are specified, all types are returned.
 * @param requestor
 *         The requestor that collects the result
 * @see #ACCEPT_CLASSES
 * @see #ACCEPT_INTERFACES
 * @see #ACCEPT_ENUMS
 * @see #ACCEPT_ANNOTATIONS
 */
public void seekTypes(String name, IPackageFragment pkg, boolean partialMatch, int acceptFlags,
        IJavaElementRequestor requestor, boolean considerSecondaryTypes) {
    /*      if (VERBOSE) {
             Util.verbose(" SEEKING TYPES");  //$NON-NLS-1$
             Util.verbose(" -> name: " + name);  //$NON-NLS-1$
             Util.verbose(" -> pkg: " + ((JavaElement) pkg).toStringWithAncestors());  //$NON-NLS-1$
             Util.verbose(" -> partial match:" + partialMatch);  //$NON-NLS-1$
          }
    */
    String matchName = partialMatch ? name.toLowerCase() : name;
    if (pkg == null) {
        findAllTypes(matchName, partialMatch, acceptFlags, requestor);
        return;
    }
    PackageFragmentRoot root = (PackageFragmentRoot) pkg.getParent();
    try {

        // look in working copies first
        int firstDot = -1;
        String topLevelTypeName = null;
        int packageFlavor = root.internalKind();
        if (this.typesInWorkingCopies != null || packageFlavor == IPackageFragmentRoot.K_SOURCE) {
            firstDot = matchName.indexOf('.');
            if (!partialMatch)
                topLevelTypeName = firstDot == -1 ? matchName : matchName.substring(0, firstDot);
        }
        if (this.typesInWorkingCopies != null) {
            if (seekTypesInWorkingCopies(matchName, pkg, firstDot, partialMatch, topLevelTypeName, acceptFlags,
                    requestor, considerSecondaryTypes))
                return;
        }

        // look in model
        switch (packageFlavor) {
        case IPackageFragmentRoot.K_BINARY:
            matchName = matchName.replace('.', '$');
            seekTypesInBinaryPackage(matchName, pkg, partialMatch, acceptFlags, requestor);
            break;
        case IPackageFragmentRoot.K_SOURCE:
            seekTypesInSourcePackage(matchName, pkg, firstDot, partialMatch, topLevelTypeName, acceptFlags,
                    requestor);
            if (matchName.indexOf('$') != -1) {
                matchName = matchName.replace('$', '.');
                firstDot = matchName.indexOf('.');
                if (!partialMatch)
                    topLevelTypeName = firstDot == -1 ? matchName : matchName.substring(0, firstDot);
                seekTypesInSourcePackage(matchName, pkg, firstDot, partialMatch, topLevelTypeName, acceptFlags,
                        requestor);
            }
            break;
        default:
            return;
        }
    } catch (JavaModelException e) {
        return;
    }
}

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

License:Open Source License

public Object getHierarchicalPackageParent(IPackageFragment child) {
    String name = child.getElementName();
    IPackageFragmentRoot parent = (IPackageFragmentRoot) child.getParent();
    int index = name.lastIndexOf('.');
    if (index != -1) {
        String realParentName = name.substring(0, index);
        IPackageFragment element = parent.getPackageFragment(realParentName);
        if (element.exists()) {
            try {
                if (fFoldPackages && isEmpty(element)
                        && findSinglePackageChild(element, parent.getChildren()) != null) {
                    return getHierarchicalPackageParent(element);
                }/*  w w  w .  j  ava  2  s.c  o m*/
            } catch (JavaModelException e) {
                // ignore
            }
            return element;
        } /*else { // bug 65240
          IResource resource= element.getResource();
          if (resource != null) {
              return resource;
          }
          }*/
    }
    //        if (parent.getResource() instanceof IProject) {
    //            return parent.getJavaProject();
    //        }
    return parent;
}

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 ww  w  .j a  v a2s.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.google.gdt.eclipse.designer.util.Utils.java

License:Open Source License

/**
 * Accepts some {@link IPackageFragment} in "source" package and returns root "source" package.
 *///from w  ww .ja v a  2 s  . c  o m
public static IPackageFragment getRootSourcePackage(IPackageFragment pkg) throws Exception {
    IPackageFragmentRoot sourceRoot = (IPackageFragmentRoot) pkg.getParent();
    IPackageFragment clientRoot = pkg;
    while (isModuleSourcePackage(pkg)) {
        clientRoot = pkg;
        String pkgName = pkg.getElementName();
        String pkgParentName = CodeUtils.getPackage(pkgName);
        pkg = sourceRoot.getPackageFragment(pkgParentName);
    }
    return clientRoot;
}

From source file:com.google.gdt.eclipse.designer.wizards.model.common.ClientPackageSelectionDialogField.java

License:Open Source License

/**
 * Return strings presentation of package.
 *//*from  ww  w. j av  a 2 s.  com*/
private static String getPackageString(IPackageFragment packageFragment) {
    try {
        if (packageFragment != null) {
            IPackageFragmentRoot packageFragmentRoot = (IPackageFragmentRoot) packageFragment.getParent();
            IJavaProject javaProject = packageFragmentRoot.getJavaProject();
            if (packageFragmentRoot.getUnderlyingResource() == javaProject.getUnderlyingResource()) {
                return javaProject.getElementName() + "/" + packageFragment.getElementName();
            } else {
                return javaProject.getElementName() + "/" + packageFragmentRoot.getElementName() + "/"
                        + packageFragment.getElementName();
            }
        }
        return "";
    } catch (Throwable e) {
        throw ReflectionUtils.propagate(e);
    }
}