/*******************************************************************************
* Copyright (c) 2000, 2010 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.che.ide.ext.java.jdt.internal.ui;
import org.eclipse.che.ide.ext.java.jdt.core.IType;
/**
* <code>JavaElementLabels</code> provides helper methods to render names of Java elements.
*
* @noinstantiate This class is not intended to be instantiated by clients.
* @noextend This class is not intended to be subclassed by clients.
* @since 3.1
*/
public class JavaElementLabels {
/**
* Method names contain parameter types.
* e.g. <code>foo(int)</code>
*/
public final static long M_PARAMETER_TYPES = 1L << 0;
/**
* Method names contain parameter names.
* e.g. <code>foo(index)</code>
*/
public final static long M_PARAMETER_NAMES = 1L << 1;
/**
* Method names contain type parameters prepended.
* e.g. <code><A> foo(A index)</code>
*/
public final static long M_PRE_TYPE_PARAMETERS = 1L << 2;
/**
* Method names contain type parameters appended.
* e.g. <code>foo(A index) <A></code>
*/
public final static long M_APP_TYPE_PARAMETERS = 1L << 3;
/**
* Method names contain thrown exceptions.
* e.g. <code>foo throws IOException</code>
*/
public final static long M_EXCEPTIONS = 1L << 4;
/**
* Method names contain return type (appended)
* e.g. <code>foo : int</code>
*/
public final static long M_APP_RETURNTYPE = 1L << 5;
/**
* Method names contain return type (appended)
* e.g. <code>int foo</code>
*/
public final static long M_PRE_RETURNTYPE = 1L << 6;
/**
* Method names are fully qualified.
* e.g. <code>java.util.Vector.size</code>
*/
public final static long M_FULLY_QUALIFIED = 1L << 7;
/**
* Method names are post qualified.
* e.g. <code>size - java.util.Vector</code>
*/
public final static long M_POST_QUALIFIED = 1L << 8;
/**
* Initializer names are fully qualified.
* e.g. <code>java.util.Vector.{ ... }</code>
*/
public final static long I_FULLY_QUALIFIED = 1L << 10;
/**
* Type names are post qualified.
* e.g. <code>{ ... } - java.util.Map</code>
*/
public final static long I_POST_QUALIFIED = 1L << 11;
/**
* Field names contain the declared type (appended)
* e.g. <code>fHello : int</code>
*/
public final static long F_APP_TYPE_SIGNATURE = 1L << 14;
/**
* Field names contain the declared type (prepended)
* e.g. <code>int fHello</code>
*/
public final static long F_PRE_TYPE_SIGNATURE = 1L << 15;
/**
* Fields names are fully qualified.
* e.g. <code>java.lang.System.out</code>
*/
public final static long F_FULLY_QUALIFIED = 1L << 16;
/**
* Fields names are post qualified.
* e.g. <code>out - java.lang.System</code>
*/
public final static long F_POST_QUALIFIED = 1L << 17;
/**
* Type names are fully qualified.
* e.g. <code>java.util.Map.Entry</code>
*/
public final static long T_FULLY_QUALIFIED = 1L << 18;
/**
* Type names are type container qualified.
* e.g. <code>Map.Entry</code>
*/
public final static long T_CONTAINER_QUALIFIED = 1L << 19;
/**
* Type names are post qualified.
* e.g. <code>Entry - java.util.Map</code>
*/
public final static long T_POST_QUALIFIED = 1L << 20;
/**
* Type names contain type parameters.
* e.g. <code>Map<S, T></code>
*/
public final static long T_TYPE_PARAMETERS = 1L << 21;
/**
* Type parameters are post qualified.
* e.g. <code>K - java.util.Map.Entry</code>
*
* @since 3.5
*/
public final static long TP_POST_QUALIFIED = 1L << 22;
/**
* Declarations (import container / declaration, package declaration) are qualified.
* e.g. <code>java.util.Vector.class/import container</code>
*/
public final static long D_QUALIFIED = 1L << 24;
/**
* Declarations (import container / declaration, package declaration) are post qualified.
* e.g. <code>import container - java.util.Vector.class</code>
*/
public final static long D_POST_QUALIFIED = 1L << 25;
/**
* Class file names are fully qualified.
* e.g. <code>java.util.Vector.class</code>
*/
public final static long CF_QUALIFIED = 1L << 27;
/**
* Class file names are post qualified.
* e.g. <code>Vector.class - java.util</code>
*/
public final static long CF_POST_QUALIFIED = 1L << 28;
/**
* Compilation unit names are fully qualified.
* e.g. <code>java.util.Vector.java</code>
*/
public final static long CU_QUALIFIED = 1L << 31;
/**
* Compilation unit names are post qualified.
* e.g. <code>Vector.java - java.util</code>
*/
public final static long CU_POST_QUALIFIED = 1L << 32;
/**
* Package names are qualified.
* e.g. <code>MyProject/src/java.util</code>
*/
public final static long P_QUALIFIED = 1L << 35;
/**
* Package names are post qualified.
* e.g. <code>java.util - MyProject/src</code>
*/
public final static long P_POST_QUALIFIED = 1L << 36;
/**
* Package names are abbreviated if
* {@link PreferenceConstants#APPEARANCE_ABBREVIATE_PACKAGE_NAMES} is <code>true</code> and/or
* compressed if {@link PreferenceConstants#APPEARANCE_COMPRESS_PACKAGE_NAMES} is
* <code>true</code>.
*/
public final static long P_COMPRESSED = 1L << 37;
/**
* Package Fragment Roots contain variable name if from a variable.
* e.g. <code>JRE_LIB - c:\java\lib\rt.jar</code>
*/
public final static long ROOT_VARIABLE = 1L << 40;
/**
* Package Fragment Roots contain the project name if not an archive (prepended).
* e.g. <code>MyProject/src</code>
*/
public final static long ROOT_QUALIFIED = 1L << 41;
/**
* Package Fragment Roots contain the project name if not an archive (appended).
* e.g. <code>src - MyProject</code>
*/
public final static long ROOT_POST_QUALIFIED = 1L << 42;
/**
* Add root path to all elements except Package Fragment Roots and Java projects.
* e.g. <code>java.lang.Vector - C:\java\lib\rt.jar</code>
* Option only applies to getElementLabel
*/
public final static long APPEND_ROOT_PATH = 1L << 43;
/**
* Add root path to all elements except Package Fragment Roots and Java projects.
* e.g. <code>C:\java\lib\rt.jar - java.lang.Vector</code>
* Option only applies to getElementLabel
*/
public final static long PREPEND_ROOT_PATH = 1L << 44;
/**
* Post qualify referenced package fragment roots. For example
* <code>jdt.jar - org.eclipse.jdt.ui</code> if the jar is referenced
* from another project.
*/
public final static long REFERENCED_ROOT_POST_QUALIFIED = 1L << 45;
/**
* Specifies to use the resolved information of a IType, IMethod or IField. See {@link IType#isResolved()}.
* If resolved information is available, types will be rendered with type parameters of the instantiated type.
* Resolved methods render with the parameter types of the method instance.
* <code>Vector<String>.get(String)</code>
*/
public final static long USE_RESOLVED = 1L << 48;
/**
* Specifies to apply color styles to labels. This flag only applies to methods taking or returning a {@link StyledString}.
*
* @since 3.4
*/
public final static long COLORIZE = 1L << 55;
/**
* Prepend first category (if any) to field.
*
* @since 3.2
*/
public final static long F_CATEGORY = 1L << 49;
/**
* Prepend first category (if any) to method.
*
* @since 3.2
*/
public final static long M_CATEGORY = 1L << 50;
/**
* Prepend first category (if any) to type.
*
* @since 3.2
*/
public final static long T_CATEGORY = 1L << 51;
/**
* Show category for all elements.
*
* @since 3.2
*/
public final static long ALL_CATEGORY = new Long(F_CATEGORY | M_CATEGORY | T_CATEGORY).longValue();
/** Qualify all elements */
public final static long ALL_FULLY_QUALIFIED = new Long(F_FULLY_QUALIFIED | M_FULLY_QUALIFIED | I_FULLY_QUALIFIED
| T_FULLY_QUALIFIED | D_QUALIFIED | CF_QUALIFIED | CU_QUALIFIED | P_QUALIFIED |
ROOT_QUALIFIED).longValue();
/** Post qualify all elements */
public final static long ALL_POST_QUALIFIED = new Long(F_POST_QUALIFIED | M_POST_QUALIFIED | I_POST_QUALIFIED
| T_POST_QUALIFIED | TP_POST_QUALIFIED | D_POST_QUALIFIED | CF_POST_QUALIFIED |
CU_POST_QUALIFIED
| P_POST_QUALIFIED | ROOT_POST_QUALIFIED).longValue();
/** Default options (M_PARAMETER_TYPES, M_APP_TYPE_PARAMETERS & T_TYPE_PARAMETERS enabled) */
public final static long ALL_DEFAULT = new Long(M_PARAMETER_TYPES | M_APP_TYPE_PARAMETERS | T_TYPE_PARAMETERS)
.longValue();
/** Default qualify options (All except Root and Package) */
public final static long DEFAULT_QUALIFIED = new Long(F_FULLY_QUALIFIED | M_FULLY_QUALIFIED | I_FULLY_QUALIFIED
| T_FULLY_QUALIFIED | D_QUALIFIED | CF_QUALIFIED | CU_QUALIFIED).longValue();
/** Default post qualify options (All except Root and Package) */
public final static long DEFAULT_POST_QUALIFIED = new Long(F_POST_QUALIFIED | M_POST_QUALIFIED | I_POST_QUALIFIED
| T_POST_QUALIFIED | TP_POST_QUALIFIED | D_POST_QUALIFIED |
CF_POST_QUALIFIED | CU_POST_QUALIFIED).longValue();
/** User-readable string for separating post qualified names (e.g. " - "). */
public final static String CONCAT_STRING = " - ";
/** User-readable string for separating list items (e.g. ", "). */
public final static String COMMA_STRING = ", ";
/** User-readable string for separating the return type (e.g. " : "). */
public final static String DECL_STRING = " : ";
/**
* User-readable string for concatenating categories (e.g. " ").
*
* @since 3.5
*/
public final static String CATEGORY_SEPARATOR_STRING = " ";
/** User-readable string for ellipsis ("..."). */
public final static String ELLIPSIS_STRING = "..."; //$NON-NLS-1$
/** User-readable string for the default package name (e.g. "(default package)"). */
public final static String DEFAULT_PACKAGE = "(default package)";
//
// private static final Styler DECORATIONS_STYLE= StyledString.DECORATIONS_STYLER;
//
//
// private JavaElementLabels() {
// }
//
// /**
// * Returns the label of the given object. The object must be of type {@link IJavaElement} or adapt to {@link IWorkbenchAdapter}.
// * If the element type is not known, the empty string is returned.
// * The returned label is BiDi-processed with {@link TextProcessor#process(String, String)}.
// *
// * @param obj object to get the label for
// * @param flags the rendering flags
// * @return the label or the empty string if the object type is not supported
// */
// public static String getTextLabel(Object obj, long flags) {
// if (obj instanceof IJavaElement) {
// return getElementLabel((IJavaElement) obj, flags);
//
// } else if (obj instanceof IResource) {
// return BasicElementLabels.getResourceName((IResource) obj);
//
// } else if (obj instanceof ClassPathContainer) {
// ClassPathContainer container= (ClassPathContainer) obj;
// IPath containerPath= container.getClasspathEntry().getPath();
// try {
// return getContainerEntryLabel(containerPath, container.getJavaProject());
// } catch (JavaModelException e) {
// return BasicElementLabels.getPathLabel(containerPath, false);
// }
//
// } else if (obj instanceof IStorage) {
// return BasicElementLabels.getResourceName(((IStorage) obj).getName());
//
// } else if (obj instanceof IAdaptable) {
// IWorkbenchAdapter wbadapter= (IWorkbenchAdapter) ((IAdaptable)obj).getAdapter(IWorkbenchAdapter.class);
// if (wbadapter != null) {
// return Strings.markLTR(wbadapter.getLabel(obj));
// }
// }
// return ""; //$NON-NLS-1$
// }
//
// /**
// * Returns the styled label of the given object. The object must be of type {@link IJavaElement} or adapt to {@link
// IWorkbenchAdapter}.
// * If the element type is not known, the empty string is returned.
// * The returned label is BiDi-processed with {@link TextProcessor#process(String, String)}.
// *
// * @param obj object to get the label for
// * @param flags the rendering flags
// * @return the label or the empty string if the object type is not supported
// *
// * @since 3.4
// */
// public static StyledString getStyledTextLabel(Object obj, long flags) {
// if (obj instanceof IJavaElement) {
// return getStyledElementLabel((IJavaElement) obj, flags);
//
// } else if (obj instanceof IResource) {
// return getStyledResourceLabel((IResource) obj);
//
// } else if (obj instanceof ClassPathContainer) {
// ClassPathContainer container= (ClassPathContainer) obj;
// return getStyledContainerEntryLabel(container.getClasspathEntry().getPath(), container.getJavaProject());
//
// } else if (obj instanceof IStorage) {
// return getStyledStorageLabel((IStorage) obj);
//
// } else if (obj instanceof IAdaptable) {
// IWorkbenchAdapter wbadapter= (IWorkbenchAdapter) ((IAdaptable)obj).getAdapter(IWorkbenchAdapter.class);
// if (wbadapter != null) {
// return Strings.markLTR(new StyledString(wbadapter.getLabel(obj)));
// }
// }
// return new StyledString();
// }
//
// /**
// * Returns the styled string for the given resource.
// * The returned label is BiDi-processed with {@link TextProcessor#process(String, String)}.
// *
// * @param resource the resource
// * @return the styled string
// * @since 3.4
// */
// private static StyledString getStyledResourceLabel(IResource resource) {
// StyledString result= new StyledString(resource.getName());
// return Strings.markLTR(result);
// }
//
// /**
// * Returns the styled string for the given storage.
// * The returned label is BiDi-processed with {@link TextProcessor#process(String, String)}.
// *
// * @param storage the storage
// * @return the styled string
// * @since 3.4
// */
// private static StyledString getStyledStorageLabel(IStorage storage) {
// StyledString result= new StyledString(storage.getName());
// return Strings.markLTR(result);
// }
//
//
// /**
// * Returns the label for a Java element with the flags as defined by this class.
// *
// * @param element the element to render
// * @param flags the rendering flags
// * @return the label of the Java element
// */
// public static String getElementLabel(IJavaElement element, long flags) {
// StringBuffer result= new StringBuffer();
// getElementLabel(element, flags, result);
// return Strings.markJavaElementLabelLTR(result.toString());
// }
//
// /**
// * Returns the styled label for a Java element with the flags as defined by this class.
// *
// * @param element the element to render
// * @param flags the rendering flags
// * @return the label of the Java element
// *
// * @since 3.4
// */
// public static StyledString getStyledElementLabel(IJavaElement element, long flags) {
// StyledString result= new StyledString();
// getElementLabel(element, flags, result);
// return Strings.markJavaElementLabelLTR(result);
// }
//
// /**
// * Returns the label for a Java element with the flags as defined by this class.
// *
// * @param element the element to render
// * @param flags the rendering flags
// * @param buf the buffer to append the resulting label to
// */
// public static void getElementLabel(IJavaElement element, long flags, StringBuffer buf) {
// new JavaElementLabelComposer(buf).appendElementLabel(element, flags);
// }
//
// /**
// * Returns the styled label for a Java element with the flags as defined by this class.
// *
// * @param element the element to render
// * @param flags the rendering flags
// * @param result the buffer to append the resulting label to
// *
// * @since 3.4
// */
// public static void getElementLabel(IJavaElement element, long flags, StyledString result) {
// new JavaElementLabelComposer(result).appendElementLabel(element, flags);
// }
//
//
//
// /**
// * Appends the label for a method to a {@link StringBuffer}. Considers the M_* flags.
// *
// * @param method the element to render
// * @param flags the rendering flags. Flags with names starting with 'M_' are considered.
// * @param buf the buffer to append the resulting label to
// */
// public static void getMethodLabel(IMethod method, long flags, StringBuffer buf) {
// new JavaElementLabelComposer(buf).appendMethodLabel(method, flags);
// }
//
// /**
// * Appends the label for a method to a {@link StyledString}. Considers the M_* flags.
// *
// * @param method the element to render
// * @param flags the rendering flags. Flags with names starting with 'M_' are considered.
// * @param result the buffer to append the resulting label to
// *
// * @since 3.4
// */
// public static void getMethodLabel(IMethod method, long flags, StyledString result) {
// new JavaElementLabelComposer(result).appendMethodLabel(method, flags);
// }
//
// /**
// * Appends the label for a field to a {@link StringBuffer}. Considers the F_* flags.
// *
// * @param field the element to render
// * @param flags the rendering flags. Flags with names starting with 'F_' are considered.
// * @param buf the buffer to append the resulting label to
// */
// public static void getFieldLabel(IField field, long flags, StringBuffer buf) {
// new JavaElementLabelComposer(buf).appendFieldLabel(field, flags);
// }
//
// /**
// * Appends the style label for a field to a {@link StyledString}. Considers the F_* flags.
// *
// * @param field the element to render
// * @param flags the rendering flags. Flags with names starting with 'F_' are considered.
// * @param result the buffer to append the resulting label to
// *
// * @since 3.4
// */
// public static void getFieldLabel(IField field, long flags, StyledString result) {
// new JavaElementLabelComposer(result).appendFieldLabel(field, flags);
// }
//
// /**
// * Appends the label for a local variable to a {@link StringBuffer}.
// *
// * @param localVariable the element to render
// * @param flags the rendering flags. Flags with names starting with 'F_' are considered.
// * @param buf the buffer to append the resulting label to
// */
// public static void getLocalVariableLabel(ILocalVariable localVariable, long flags, StringBuffer buf) {
// new JavaElementLabelComposer(buf).appendLocalVariableLabel(localVariable, flags);
// }
//
// /**
// * Appends the styled label for a local variable to a {@link StyledString}.
// *
// * @param localVariable the element to render
// * @param flags the rendering flags. Flags with names starting with 'F_' are considered.
// * @param result the buffer to append the resulting label to
// *
// * @since 3.4
// */
// public static void getLocalVariableLabel(ILocalVariable localVariable, long flags, StyledString result) {
// new JavaElementLabelComposer(result).appendLocalVariableLabel(localVariable, flags);
// }
//
//
// /**
// * Appends the label for a initializer to a {@link StringBuffer}. Considers the I_* flags.
// *
// * @param initializer the element to render
// * @param flags the rendering flags. Flags with names starting with 'I_' are considered.
// * @param buf the buffer to append the resulting label to
// */
// public static void getInitializerLabel(IInitializer initializer, long flags, StringBuffer buf) {
// new JavaElementLabelComposer(buf).appendInitializerLabel(initializer, flags);
// }
//
// /**
// * Appends the label for a initializer to a {@link StyledString}. Considers the I_* flags.
// *
// * @param initializer the element to render
// * @param flags the rendering flags. Flags with names starting with 'I_' are considered.
// * @param result the buffer to append the resulting label to
// *
// * @since 3.4
// */
// public static void getInitializerLabel(IInitializer initializer, long flags, StyledString result) {
// new JavaElementLabelComposer(result).appendInitializerLabel(initializer, flags);
// }
//
// /**
// * Appends the label for a type to a {@link StringBuffer}. Considers the T_* flags.
// *
// * @param type the element to render
// * @param flags the rendering flags. Flags with names starting with 'T_' are considered.
// * @param buf the buffer to append the resulting label to
// */
// public static void getTypeLabel(IType type, long flags, StringBuffer buf) {
// new JavaElementLabelComposer(buf).appendTypeLabel(type, flags);
// }
//
// /**
// * Appends the label for a type to a {@link StyledString}. Considers the T_* flags.
// *
// * @param type the element to render
// * @param flags the rendering flags. Flags with names starting with 'T_' are considered.
// * @param result the buffer to append the resulting label to
// *
// * @since 3.4
// */
// public static void getTypeLabel(IType type, long flags, StyledString result) {
// new JavaElementLabelComposer(result).appendTypeLabel(type, flags);
// }
//
//
// /**
// * Appends the label for a type parameter to a {@link StringBuffer}. Considers the TP_* flags.
// *
// * @param typeParameter the element to render
// * @param flags the rendering flags. Flags with names starting with 'TP_' are considered.
// * @param buf the buffer to append the resulting label to
// *
// * @since 3.5
// */
// public static void getTypeParameterLabel(ITypeParameter typeParameter, long flags, StringBuffer buf) {
// new JavaElementLabelComposer(buf).appendTypeParameterLabel(typeParameter, flags);
// }
//
// /**
// * Appends the label for a type parameter to a {@link StyledString}. Considers the TP_* flags.
// *
// * @param typeParameter the element to render
// * @param flags the rendering flags. Flags with names starting with 'TP_' are considered.
// * @param result the buffer to append the resulting label to
// *
// * @since 3.5
// */
// public static void getTypeParameterLabel(ITypeParameter typeParameter, long flags, StyledString result) {
// new JavaElementLabelComposer(result).appendTypeParameterLabel(typeParameter, flags);
// }
//
//
// /**
// * Appends the label for a import container, import or package declaration to a {@link StringBuffer}. Considers the D_* flags.
// *
// * @param declaration the element to render
// * @param flags the rendering flags. Flags with names starting with 'D_' are considered.
// * @param buf the buffer to append the resulting label to
// */
// public static void getDeclarationLabel(IJavaElement declaration, long flags, StringBuffer buf) {
// new JavaElementLabelComposer(buf).appendDeclarationLabel(declaration, flags);
// }
//
// /**
// * Appends the label for a import container, import or package declaration to a {@link StyledString}. Considers the D_* flags.
// *
// * @param declaration the element to render
// * @param flags the rendering flags. Flags with names starting with 'D_' are considered.
// * @param result the buffer to append the resulting label to
// *
// * @since 3.4
// */
// public static void getDeclarationLabel(IJavaElement declaration, long flags, StyledString result) {
// new JavaElementLabelComposer(result).appendDeclarationLabel(declaration, flags);
// }
//
// /**
// * Appends the label for a class file to a {@link StringBuffer}. Considers the CF_* flags.
// *
// * @param classFile the element to render
// * @param flags the rendering flags. Flags with names starting with 'CF_' are considered.
// * @param buf the buffer to append the resulting label to
// */
// public static void getClassFileLabel(IClassFile classFile, long flags, StringBuffer buf) {
// new JavaElementLabelComposer(buf).appendClassFileLabel(classFile, flags);
// }
//
// /**
// * Appends the label for a class file to a {@link StyledString}. Considers the CF_* flags.
// *
// * @param classFile the element to render
// * @param flags the rendering flags. Flags with names starting with 'CF_' are considered.
// * @param result the buffer to append the resulting label to
// *
// * @since 3.4
// */
// public static void getClassFileLabel(IClassFile classFile, long flags, StyledString result) {
// new JavaElementLabelComposer(result).appendClassFileLabel(classFile, flags);
// }
//
// /**
// * Appends the label for a compilation unit to a {@link StringBuffer}. Considers the CU_* flags.
// *
// * @param cu the element to render
// * @param flags the rendering flags. Flags with names starting with 'CU_' are considered.
// * @param buf the buffer to append the resulting label to
// */
// public static void getCompilationUnitLabel(ICompilationUnit cu, long flags, StringBuffer buf) {
// new JavaElementLabelComposer(buf).appendCompilationUnitLabel(cu, flags);
// }
//
// /**
// * Appends the label for a compilation unit to a {@link StyledString}. Considers the CU_* flags.
// *
// * @param cu the element to render
// * @param flags the rendering flags. Flags with names starting with 'CU_' are considered.
// * @param result the buffer to append the resulting label to
// *
// * @since 3.4
// */
// public static void getCompilationUnitLabel(ICompilationUnit cu, long flags, StyledString result) {
// new JavaElementLabelComposer(result).appendCompilationUnitLabel(cu, flags);
// }
//
// /**
// * Appends the label for a package fragment to a {@link StringBuffer}. Considers the P_* flags.
// *
// * @param pack the element to render
// * @param flags the rendering flags. Flags with names starting with P_' are considered.
// * @param buf the buffer to append the resulting label to
// */
// public static void getPackageFragmentLabel(IPackageFragment pack, long flags, StringBuffer buf) {
// new JavaElementLabelComposer(buf).appendPackageFragmentLabel(pack, flags);
// }
//
// /**
// * Appends the label for a package fragment to a {@link StyledString}. Considers the P_* flags.
// *
// * @param pack the element to render
// * @param flags the rendering flags. Flags with names starting with P_' are considered.
// * @param result the buffer to append the resulting label to
// *
// * @since 3.4
// */
// public static void getPackageFragmentLabel(IPackageFragment pack, long flags, StyledString result) {
// new JavaElementLabelComposer(result).appendPackageFragmentLabel(pack, flags);
// }
//
// /**
// * Appends the label for a package fragment root to a {@link StringBuffer}. Considers the ROOT_* flags.
// *
// * @param root the element to render
// * @param flags the rendering flags. Flags with names starting with ROOT_' are considered.
// * @param buf the buffer to append the resulting label to
// */
// public static void getPackageFragmentRootLabel(IPackageFragmentRoot root, long flags, StringBuffer buf) {
// new JavaElementLabelComposer(buf).appendPackageFragmentRootLabel(root, flags);
// }
//
// /**
// * Appends the label for a package fragment root to a {@link StyledString}. Considers the ROOT_* flags.
// *
// * @param root the element to render
// * @param flags the rendering flags. Flags with names starting with ROOT_' are considered.
// * @param result the buffer to append the resulting label to
// *
// * @since 3.4
// */
// public static void getPackageFragmentRootLabel(IPackageFragmentRoot root, long flags, StyledString result) {
// new JavaElementLabelComposer(result).appendPackageFragmentRootLabel(root, flags);
// }
//
// /**
// * Returns the label of a classpath container.
// * The returned label is BiDi-processed with {@link TextProcessor#process(String, String)}.
// *
// * @param containerPath the path of the container
// * @param project the project the container is resolved in
// * @return the label of the classpath container
// * @throws JavaModelException when resolving of the container failed
// */
// public static String getContainerEntryLabel(IPath containerPath, IJavaProject project) throws JavaModelException {
// IClasspathContainer container= JavaCore.getClasspathContainer(containerPath, project);
// if (container != null) {
// return Strings.markLTR(container.getDescription());
// }
// ClasspathContainerInitializer initializer= JavaCore.getClasspathContainerInitializer(containerPath.segment(0));
// if (initializer != null) {
// return Strings.markLTR(initializer.getDescription(containerPath, project));
// }
// return BasicElementLabels.getPathLabel(containerPath, false);
// }
//
// /**
// * Returns the styled label of a classpath container.
// * The returned label is BiDi-processed with {@link TextProcessor#process(String, String)}.
// *
// * @param containerPath the path of the container
// * @param project the project the container is resolved in
// * @return the label of the classpath container
// *
// * @since 3.4
// */
// public static StyledString getStyledContainerEntryLabel(IPath containerPath, IJavaProject project) {
// try {
// IClasspathContainer container= JavaCore.getClasspathContainer(containerPath, project);
// String description= null;
// if (container != null) {
// description= container.getDescription();
// }
// if (description == null) {
// ClasspathContainerInitializer initializer= JavaCore.getClasspathContainerInitializer(containerPath.segment(0));
// if (initializer != null) {
// description= initializer.getDescription(containerPath, project);
// }
// }
// if (description != null) {
// StyledString str= new StyledString(description);
// if (containerPath.segmentCount() > 0 && JavaRuntime.JRE_CONTAINER.equals(containerPath.segment(0))) {
// int index= description.indexOf('[');
// if (index != -1) {
// str.setStyle(index, description.length() - index, DECORATIONS_STYLE);
// }
// }
// return Strings.markLTR(str);
// }
// } catch (JavaModelException e) {
// // ignore
// }
// return new StyledString(BasicElementLabels.getPathLabel(containerPath, false));
// }
}