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

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

Introduction

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

Prototype

boolean isDefaultPackage();

Source Link

Document

Returns whether this package fragment is a default package.

Usage

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

License:Open Source License

/**
 * Appends the label for a type. Considers the T_* flags.
 *
 * @param type the element to render/*from   w w w .  ja v  a 2 s . c o  m*/
 * @param flags the rendering flags. Flags with names starting with 'T_' are considered.
 */
public void appendTypeLabel(IType type, long flags) {

    if (getFlag(flags, JavaElementLabels.T_FULLY_QUALIFIED)) {
        IPackageFragment pack = type.getPackageFragment();
        if (!pack.isDefaultPackage()) {
            appendPackageFragmentLabel(pack, (flags & QUALIFIER_FLAGS));
            fBuffer.append('.');
        }
    }
    IJavaElement parent = type.getParent();
    if (getFlag(flags, JavaElementLabels.T_FULLY_QUALIFIED | JavaElementLabels.T_CONTAINER_QUALIFIED)) {
        IType declaringType = type.getDeclaringType();
        if (declaringType != null) {
            appendTypeLabel(declaringType, JavaElementLabels.T_CONTAINER_QUALIFIED | (flags & QUALIFIER_FLAGS));
            fBuffer.append('.');
        }
        int parentType = parent.getElementType();
        if (parentType == IJavaElement.METHOD || parentType == IJavaElement.FIELD
                || parentType == IJavaElement.INITIALIZER) { // anonymous or local
            appendElementLabel(parent, 0);
            fBuffer.append('.');
        }
    }

    String typeName;
    boolean isAnonymous = false;
    if (type.isLambda()) {
        typeName = "() -> {...}"; //$NON-NLS-1$
        try {
            String[] superInterfaceSignatures = type.getSuperInterfaceTypeSignatures();
            if (superInterfaceSignatures.length > 0) {
                typeName = typeName + ' ' + getSimpleTypeName(type, superInterfaceSignatures[0]);
            }
        } catch (JavaModelException e) {
            //ignore
        }

    } else {
        typeName = getElementName(type);
        try {
            isAnonymous = type.isAnonymous();
        } catch (JavaModelException e1) {
            // should not happen, but let's play safe:
            isAnonymous = typeName.length() == 0;
        }
        if (isAnonymous) {
            try {
                if (parent instanceof IField && type.isEnum()) {
                    typeName = '{' + JavaElementLabels.ELLIPSIS_STRING + '}';
                } else {
                    String supertypeName = null;
                    String[] superInterfaceSignatures = type.getSuperInterfaceTypeSignatures();
                    if (superInterfaceSignatures.length > 0) {
                        supertypeName = getSimpleTypeName(type, superInterfaceSignatures[0]);
                    } else {
                        String supertypeSignature = type.getSuperclassTypeSignature();
                        if (supertypeSignature != null) {
                            supertypeName = getSimpleTypeName(type, supertypeSignature);
                        }
                    }
                    if (supertypeName == null) {
                        typeName = JavaUIMessages.JavaElementLabels_anonym;
                    } else {
                        typeName = Messages.format(JavaUIMessages.JavaElementLabels_anonym_type, supertypeName);
                    }
                }
            } catch (JavaModelException e) {
                //ignore
                typeName = JavaUIMessages.JavaElementLabels_anonym;
            }
        }
    }
    fBuffer.append(typeName);

    if (getFlag(flags, JavaElementLabels.T_TYPE_PARAMETERS)) {
        if (getFlag(flags, JavaElementLabels.USE_RESOLVED) && type.isResolved()) {
            BindingKey key = new BindingKey(type.getKey());
            if (key.isParameterizedType()) {
                String[] typeArguments = key.getTypeArguments();
                appendTypeArgumentSignaturesLabel(type, typeArguments, flags);
            } else {
                String[] typeParameters = Signature.getTypeParameters(key.toSignature());
                appendTypeParameterSignaturesLabel(typeParameters, flags);
            }
        } else if (type.exists()) {
            try {
                appendTypeParametersLabels(type.getTypeParameters(), flags);
            } catch (JavaModelException e) {
                // ignore
            }
        }
    }

    // category
    if (getFlag(flags, JavaElementLabels.T_CATEGORY) && type.exists()) {
        try {
            appendCategoryLabel(type, flags);
        } catch (JavaModelException e) {
            // ignore
        }
    }

    // post qualification
    if (getFlag(flags, JavaElementLabels.T_POST_QUALIFIED)) {
        int offset = fBuffer.length();
        fBuffer.append(JavaElementLabels.CONCAT_STRING);
        IType declaringType = type.getDeclaringType();
        if (declaringType == null && type.isBinary() && isAnonymous) {
            // workaround for Bug 87165: [model] IType#getDeclaringType() does not work for anonymous binary type
            String tqn = type.getTypeQualifiedName();
            int lastDollar = tqn.lastIndexOf('$');
            if (lastDollar != 1) {
                String declaringTypeCF = tqn.substring(0, lastDollar) + ".class"; //$NON-NLS-1$
                declaringType = type.getPackageFragment().getClassFile(declaringTypeCF).getType();
                try {
                    ISourceRange typeSourceRange = type.getSourceRange();
                    if (declaringType.exists() && SourceRange.isAvailable(typeSourceRange)) {
                        IJavaElement realParent = declaringType.getTypeRoot()
                                .getElementAt(typeSourceRange.getOffset() - 1);
                        if (realParent != null) {
                            parent = realParent;
                        }
                    }
                } catch (JavaModelException e) {
                    // ignore
                }
            }
        }
        if (declaringType != null) {
            appendTypeLabel(declaringType, JavaElementLabels.T_FULLY_QUALIFIED | (flags & QUALIFIER_FLAGS));
            int parentType = parent.getElementType();
            if (parentType == IJavaElement.METHOD || parentType == IJavaElement.FIELD
                    || parentType == IJavaElement.INITIALIZER) { // anonymous or local
                fBuffer.append('.');
                appendElementLabel(parent, 0);
            }
        } else {
            appendPackageFragmentLabel(type.getPackageFragment(), flags & QUALIFIER_FLAGS);
        }
        //         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

/**
 * Appends the label for a package fragment. Considers the P_* flags.
 *
 * @param pack the element to render// ww  w.j a va  2s .  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:at.bestsolution.fxide.jdt.text.viewersupport.JavaElementLabelComposer.java

License:Open Source License

/**
 * Appends the label for a class file. Considers the CF_* flags.
 *
 * @param classFile the element to render
 * @param flags the rendering flags. Flags with names starting with 'CF_' are considered.
 *//* w ww. j a  v a2s.  co  m*/
public void appendClassFileLabel(IClassFile classFile, long flags) {
    if (getFlag(flags, JavaElementLabels.CF_QUALIFIED)) {
        IPackageFragment pack = (IPackageFragment) classFile.getParent();
        if (!pack.isDefaultPackage()) {
            appendPackageFragmentLabel(pack, (flags & QUALIFIER_FLAGS));
            fBuffer.append('.');
        }
    }
    fBuffer.append(classFile.getElementName());

    if (getFlag(flags, JavaElementLabels.CF_POST_QUALIFIED)) {
        int offset = fBuffer.length();
        fBuffer.append(JavaElementLabels.CONCAT_STRING);
        appendPackageFragmentLabel((IPackageFragment) classFile.getParent(), flags & QUALIFIER_FLAGS);
        //         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

/**
 * Appends the label for a compilation unit. Considers the CU_* flags.
 *
 * @param cu the element to render//w w  w. j  a  v a2 s  . com
 * @param flags the rendering flags. Flags with names starting with 'CU_' are considered.
 */
public void appendCompilationUnitLabel(ICompilationUnit cu, long flags) {
    if (getFlag(flags, JavaElementLabels.CU_QUALIFIED)) {
        IPackageFragment pack = (IPackageFragment) cu.getParent();
        if (!pack.isDefaultPackage()) {
            appendPackageFragmentLabel(pack, (flags & QUALIFIER_FLAGS));
            fBuffer.append('.');
        }
    }
    fBuffer.append(cu.getElementName());

    if (getFlag(flags, JavaElementLabels.CU_POST_QUALIFIED)) {
        int offset = fBuffer.length();
        fBuffer.append(JavaElementLabels.CONCAT_STRING);
        appendPackageFragmentLabel((IPackageFragment) cu.getParent(), flags & QUALIFIER_FLAGS);
        //         if (getFlag(flags, JavaElementLabels.COLORIZE)) {
        //            fBuffer.setStyle(offset, fBuffer.length() - offset, QUALIFIER_STYLE);
        //         }
    }
}

From source file:bndtools.editor.pkgpatterns.PkgPatternsProposalProvider.java

License:Open Source License

@Override
protected Collection<? extends IContentProposal> doGenerateProposals(String contents, int position) {
    String prefix = contents.substring(0, position);

    final int replaceFromPos;
    if (prefix.startsWith("!")) { //$NON-NLS-1$
        prefix = prefix.substring(1);/*from w  ww  .j a v a 2 s .  c  o m*/
        replaceFromPos = 1;
    } else {
        replaceFromPos = 0;
    }

    Comparator<PkgPatternProposal> comparator = new Comparator<PkgPatternProposal>() {
        @Override
        public int compare(PkgPatternProposal o1, PkgPatternProposal o2) {
            int result = o1.getPackageFragment().getElementName()
                    .compareTo(o2.getPackageFragment().getElementName());
            if (result == 0) {
                result = Boolean.valueOf(o1.isWildcard()).compareTo(Boolean.valueOf(o2.isWildcard()));
            }
            return result;
        }
    };
    final TreeSet<PkgPatternProposal> result = new TreeSet<PkgPatternProposal>(comparator);

    final IJavaSearchScope scope = SearchEngine
            .createJavaSearchScope(new IJavaElement[] { searchContext.getJavaProject() });
    final SearchPattern pattern = SearchPattern.createPattern("*" + prefix + "*", IJavaSearchConstants.PACKAGE,
            IJavaSearchConstants.DECLARATIONS, SearchPattern.R_PATTERN_MATCH);
    final SearchRequestor requestor = new SearchRequestor() {
        @Override
        public void acceptSearchMatch(SearchMatch match) throws CoreException {
            IPackageFragment pkg = (IPackageFragment) match.getElement();
            // Reject the default package and any package starting with
            // "java." since these cannot be imported
            if (pkg.isDefaultPackage() || pkg.getElementName().startsWith("java."))
                return;

            result.add(new PkgPatternProposal(pkg, false, replaceFromPos));
            result.add(new PkgPatternProposal(pkg, true, replaceFromPos));
        }
    };
    IRunnableWithProgress runnable = new IRunnableWithProgress() {
        @Override
        public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
            try {
                new SearchEngine().search(pattern,
                        new SearchParticipant[] { SearchEngine.getDefaultSearchParticipant() }, scope,
                        requestor, monitor);
            } catch (CoreException e) {
                throw new InvocationTargetException(e);
            }
        }
    };

    try {
        IRunnableContext runContext = searchContext.getRunContext();
        if (runContext != null) {
            runContext.run(false, false, runnable);
        } else {
            runnable.run(new NullProgressMonitor());
        }
        return result;
    } catch (InvocationTargetException e) {
        logger.logError("Error searching for packages.", e);
        return Collections.emptyList();
    } catch (InterruptedException e) {
        Thread.currentThread().interrupt();
        return Collections.emptyList();
    }
}

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

License:Open Source License

public void handleFiles(Object toProcess) {

    setDoNotContinue(false);/*from  w ww  .j av  a  2  s. c o  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:ca.mcgill.sable.soot.launching.SootFileLauncher.java

License:Open Source License

private void handleSourceFile(ICompilationUnit cu) {
    IPackageFragmentRoot pfr = (IPackageFragmentRoot) cu.getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT);
    IPackageFragment pf = (IPackageFragment) cu.getAncestor(IJavaElement.PACKAGE_FRAGMENT);
    if (isSrcPrec() && getSrcPrec().equals("java")) {
        setClasspathAppend(platform_location + pfr.getPath().toOSString());
    } else {// ww  w. j a v a  2s.  c om

        try {
            IProject proj = cu.getJavaProject().getProject();

            IFolder output = proj.getFolder(cu.getJavaProject().getOutputLocation().lastSegment());
            IPackageFragment pkf = (IPackageFragment) cu.getAncestor(IJavaElement.PACKAGE_FRAGMENT);
            IFile exists = null;
            if (pkf.isDefaultPackage()) {
                exists = output.getFile(removeFileExt(cu.getElementName()) + ".class");
            } else {
                IFolder pkg = output.getFolder(dotsToSlashes(pf.getElementName()));
                exists = pkg.getFile(removeFileExt(cu.getElementName()) + ".class");
            }
            if (!exists.exists()) {
                window = SootPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow();
                MessageDialog noClassFound = new MessageDialog(window.getShell(), "Soot Information", null,
                        "No underlying class file was found, maybe build project.", 0, new String[] { "OK" },
                        0);
                noClassFound.open();
                setDoNotContinue(true);
            }
            setClasspathAppend(platform_location + cu.getJavaProject().getOutputLocation().toOSString());
        } catch (CoreException e) {
        }
    }
    addJars();
    if (pf.isDefaultPackage()) {
        getToProcessList().add(removeFileExt(cu.getElementName()));
    } else {
        getToProcessList().add(pf.getElementName() + "." + removeFileExt(cu.getElementName()));
    }

}

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
 *///from   w w  w.  j  a  v  a  2s. 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:co.turnus.widgets.util.WidgetsUtils.java

License:Open Source License

/**
 * Returns the qualified name of the given file, i.e. qualified.name.of.File
 * for <code>/project/sourceFolder/qualified/name/of/File.fileExt</code> or
 * <code>/project/outputFolder/qualified/name/of/File.fileExt</code>.
 * //  w w  w .  ja  v  a 2 s.c  om
 * @param file
 *            a file
 * @return a qualified name, or <code>null</code> if the file is not in a
 *         source folder
 */
public static String getQualifiedName(IFile file) {
    IProject project = file.getProject();

    IJavaProject javaProject = JavaCore.create(project);
    if (!javaProject.exists()) {
        return null;
    }

    try {
        IPath path = file.getParent().getFullPath();
        IPackageFragment fragment = null;
        if (javaProject.getOutputLocation().isPrefixOf(path)) {
            // create relative path
            int count = path.matchingFirstSegments(javaProject.getOutputLocation());
            IPath relPath = path.removeFirstSegments(count);

            // creates full path to source
            for (IFolder folder : getSourceFolders(project)) {
                path = folder.getFullPath().append(relPath);
                fragment = javaProject.findPackageFragment(path);
                if (fragment != null) {
                    break;
                }
            }
        } else {
            fragment = javaProject.findPackageFragment(path);
        }

        if (fragment == null) {
            return null;
        }

        String name = file.getFullPath().removeFileExtension().lastSegment();
        if (fragment.isDefaultPackage()) {
            // handles the default package case
            return name;
        }
        return fragment.getElementName() + "." + name;
    } catch (JavaModelException e) {
        e.printStackTrace();
        return null;
    }
}

From source file:com.codenvy.ide.ext.java.server.javadoc.JavaElementLabelComposer.java

License:Open Source License

/**
 * Appends the label for a type. Considers the T_* flags.
 *
 * @param type the element to render/*from  w ww .jav a  2 s .co  m*/
 * @param flags the rendering flags. Flags with names starting with 'T_' are considered.
 */
public void appendTypeLabel(IType type, long flags) {

    if (getFlag(flags, JavaElementLabels.T_FULLY_QUALIFIED)) {
        IPackageFragment pack = type.getPackageFragment();
        if (!pack.isDefaultPackage()) {
            appendPackageFragmentLabel(pack, (flags & QUALIFIER_FLAGS));
            fBuffer.append('.');
        }
    }
    IJavaElement parent = type.getParent();
    if (getFlag(flags, JavaElementLabels.T_FULLY_QUALIFIED | JavaElementLabels.T_CONTAINER_QUALIFIED)) {
        IType declaringType = type.getDeclaringType();
        if (declaringType != null) {
            appendTypeLabel(declaringType, JavaElementLabels.T_CONTAINER_QUALIFIED | (flags & QUALIFIER_FLAGS));
            fBuffer.append('.');
        }
        int parentType = parent.getElementType();
        if (parentType == IJavaElement.METHOD || parentType == IJavaElement.FIELD
                || parentType == IJavaElement.INITIALIZER) { // anonymous or local
            appendElementLabel(parent, 0);
            fBuffer.append('.');
        }
    }

    String typeName;
    boolean isAnonymous = false;
    if (type.isLambda()) {
        typeName = "() -> {...}"; //$NON-NLS-1$
        try {
            String[] superInterfaceSignatures = type.getSuperInterfaceTypeSignatures();
            if (superInterfaceSignatures.length > 0) {
                typeName = typeName + ' ' + getSimpleTypeName(type, superInterfaceSignatures[0]);
            }
        } catch (JavaModelException e) {
            //ignore
        }

    } else {
        typeName = getElementName(type);
        try {
            isAnonymous = type.isAnonymous();
        } catch (JavaModelException e1) {
            // should not happen, but let's play safe:
            isAnonymous = typeName.length() == 0;
        }
        if (isAnonymous) {
            try {
                if (parent instanceof IField && type.isEnum()) {
                    typeName = '{' + JavaElementLabels.ELLIPSIS_STRING + '}';
                } else {
                    String supertypeName;
                    String[] superInterfaceSignatures = type.getSuperInterfaceTypeSignatures();
                    if (superInterfaceSignatures.length > 0) {
                        supertypeName = getSimpleTypeName(type, superInterfaceSignatures[0]);
                    } else {
                        supertypeName = getSimpleTypeName(type, type.getSuperclassTypeSignature());
                    }
                    typeName = MessageFormat.format("new {0}() '{'...}", supertypeName);
                }
            } catch (JavaModelException e) {
                //ignore
                typeName = "new Anonymous";
            }
        }
    }
    fBuffer.append(typeName);

    if (getFlag(flags, JavaElementLabels.T_TYPE_PARAMETERS)) {
        if (getFlag(flags, JavaElementLabels.USE_RESOLVED) && type.isResolved()) {
            BindingKey key = new BindingKey(type.getKey());
            if (key.isParameterizedType()) {
                String[] typeArguments = key.getTypeArguments();
                appendTypeArgumentSignaturesLabel(type, typeArguments, flags);
            } else {
                String[] typeParameters = Signature.getTypeParameters(key.toSignature());
                appendTypeParameterSignaturesLabel(typeParameters, flags);
            }
        } else if (type.exists()) {
            try {
                appendTypeParametersLabels(type.getTypeParameters(), flags);
            } catch (JavaModelException e) {
                // ignore
            }
        }
    }

    // category
    if (getFlag(flags, JavaElementLabels.T_CATEGORY) && type.exists()) {
        try {
            appendCategoryLabel(type, flags);
        } catch (JavaModelException e) {
            // ignore
        }
    }

    // post qualification
    if (getFlag(flags, JavaElementLabels.T_POST_QUALIFIED)) {
        int offset = fBuffer.length();
        fBuffer.append(JavaElementLabels.CONCAT_STRING);
        IType declaringType = type.getDeclaringType();
        if (declaringType == null && type.isBinary() && isAnonymous) {
            // workaround for Bug 87165: [model] IType#getDeclaringType() does not work for anonymous binary type
            String tqn = type.getTypeQualifiedName();
            int lastDollar = tqn.lastIndexOf('$');
            if (lastDollar != 1) {
                String declaringTypeCF = tqn.substring(0, lastDollar) + ".class"; //$NON-NLS-1$
                declaringType = type.getPackageFragment().getClassFile(declaringTypeCF).getType();
                try {
                    ISourceRange typeSourceRange = type.getSourceRange();
                    if (declaringType.exists() && SourceRange.isAvailable(typeSourceRange)) {
                        IJavaElement realParent = declaringType.getTypeRoot()
                                .getElementAt(typeSourceRange.getOffset() - 1);
                        if (realParent != null) {
                            parent = realParent;
                        }
                    }
                } catch (JavaModelException e) {
                    // ignore
                }
            }
        }
        if (declaringType != null) {
            appendTypeLabel(declaringType, JavaElementLabels.T_FULLY_QUALIFIED | (flags & QUALIFIER_FLAGS));
            int parentType = parent.getElementType();
            if (parentType == IJavaElement.METHOD || parentType == IJavaElement.FIELD
                    || parentType == IJavaElement.INITIALIZER) { // anonymous or local
                fBuffer.append('.');
                appendElementLabel(parent, 0);
            }
        } else {
            appendPackageFragmentLabel(type.getPackageFragment(), flags & QUALIFIER_FLAGS);
        }
        //         if (getFlag(flags, JavaElementLabels.COLORIZE)) {
        //            fBuffer.setStyle(offset, fBuffer.length() - offset, QUALIFIER_STYLE);
        //         }
    }
}