X-Git-Url: http://git.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/viewsupport/JavaElementLabels.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/viewsupport/JavaElementLabels.java index 325d623..801580e 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/viewsupport/JavaElementLabels.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/viewsupport/JavaElementLabels.java @@ -32,734 +32,780 @@ import org.eclipse.ui.model.IWorkbenchAdapter; public class JavaElementLabels { - /** - * Method names contain parameter types. - * e.g. foo(int) - */ - public final static int M_PARAMETER_TYPES = 1 << 0; - - /** - * Method names contain parameter names. - * e.g. foo(index) - */ - public final static int M_PARAMETER_NAMES = 1 << 1; - - /** - * Method names contain thrown exceptions. - * e.g. foo throws IOException - */ - public final static int M_EXCEPTIONS = 1 << 2; - - /** - * Method names contain return type (appended) - * e.g. foo : int - */ - public final static int M_APP_RETURNTYPE = 1 << 3; - - /** - * Method names contain return type (appended) - * e.g. int foo - */ - public final static int M_PRE_RETURNTYPE = 1 << 4; - - /** - * Method names are fully qualified. - * e.g. java.util.Vector.size - */ - public final static int M_FULLY_QUALIFIED = 1 << 5; - - /** - * Method names are post qualified. - * e.g. size - java.util.Vector - */ - public final static int M_POST_QUALIFIED = 1 << 6; - - /** - * Initializer names are fully qualified. - * e.g. java.util.Vector.{ ... } - */ - public final static int I_FULLY_QUALIFIED = 1 << 7; - - /** - * Type names are post qualified. - * e.g. { ... } - java.util.Map - */ - public final static int I_POST_QUALIFIED = 1 << 8; - - /** - * Field names contain the declared type (appended) - * e.g. int fHello - */ - public final static int F_APP_TYPE_SIGNATURE = 1 << 9; - - /** - * Field names contain the declared type (prepended) - * e.g. fHello : int - */ - public final static int F_PRE_TYPE_SIGNATURE = 1 << 10; - - /** - * Fields names are fully qualified. - * e.g. java.lang.System.out - */ - public final static int F_FULLY_QUALIFIED = 1 << 11; - - /** - * Fields names are post qualified. - * e.g. out - java.lang.System - */ - public final static int F_POST_QUALIFIED = 1 << 12; - - /** - * Type names are fully qualified. - * e.g. java.util.Map.MapEntry - */ - public final static int T_FULLY_QUALIFIED = 1 << 13; - - /** - * Type names are type container qualified. - * e.g. Map.MapEntry - */ - public final static int T_CONTAINER_QUALIFIED = 1 << 14; - - /** - * Type names are post qualified. - * e.g. MapEntry - java.util.Map - */ - public final static int T_POST_QUALIFIED = 1 << 15; - - /** - * Declarations (import container / declarartion, package declarartion) are qualified. - * e.g. java.util.Vector.class/import container - */ - public final static int D_QUALIFIED = 1 << 16; - - /** - * Declarations (import container / declarartion, package declarartion) are post qualified. - * e.g. import container - java.util.Vector.class - */ - public final static int D_POST_QUALIFIED = 1 << 17; - - /** - * Class file names are fully qualified. - * e.g. java.util.Vector.class - */ - public final static int CF_QUALIFIED = 1 << 18; - - /** - * Class file names are post qualified. - * e.g. Vector.class - java.util - */ - public final static int CF_POST_QUALIFIED = 1 << 19; - - /** - * Compilation unit names are fully qualified. - * e.g. java.util.Vector.java - */ - public final static int CU_QUALIFIED = 1 << 20; - - /** - * Compilation unit names are post qualified. - * e.g. Vector.java - java.util - */ - public final static int CU_POST_QUALIFIED = 1 << 21; - - /** - * Package names are qualified. - * e.g. MyProject/src/java.util - */ - public final static int P_QUALIFIED = 1 << 22; - - /** - * Package names are post qualified. - * e.g. java.util - MyProject/src - */ - public final static int P_POST_QUALIFIED = 1 << 23; - - /** - * Package Fragment Roots contain variable name if from a variable. - * e.g. JRE_LIB - c:\java\lib\rt.jar - */ - public final static int ROOT_VARIABLE = 1 << 24; - - /** - * Package Fragment Roots contain the project name if not an archive (prepended). - * e.g. MyProject/src - */ - public final static int ROOT_QUALIFIED = 1 << 25; - - /** - * Package Fragment Roots contain the project name if not an archive (appended). - * e.g. src - MyProject - */ - public final static int ROOT_POST_QUALIFIED = 1 << 26; - - /** - * Add root path to all elements except Package Fragment Roots and Java projects. - * e.g. java.lang.Vector - c:\java\lib\rt.jar - * Option only applies to getElementLabel - */ - public final static int APPEND_ROOT_PATH = 1 << 27; - - /** - * Add root path to all elements except Package Fragment Roots and Java projects. - * e.g. java.lang.Vector - c:\java\lib\rt.jar - * Option only applies to getElementLabel - */ - public final static int PREPEND_ROOT_PATH = 1 << 28; - - /** - * Package names are compressed. - * e.g. o*.e*.search - */ - public final static int P_COMPRESSED = 1 << 29; - - /** - * Post qualify referenced package fragement roots. For example - * jdt.jar - net.sourceforge.phpdt.ui if the jar is referenced - * from another project. - */ - public final static int REFERENCED_ROOT_POST_QUALIFIED = 1 << 30; - - /** - * Qualify all elements - */ - public final static int ALL_FULLY_QUALIFIED = - F_FULLY_QUALIFIED - | M_FULLY_QUALIFIED - | I_FULLY_QUALIFIED - | T_FULLY_QUALIFIED - | D_QUALIFIED - | CF_QUALIFIED - | CU_QUALIFIED - | P_QUALIFIED - | ROOT_QUALIFIED; - - /** - * Post qualify all elements - */ - public final static int ALL_POST_QUALIFIED = - F_POST_QUALIFIED - | M_POST_QUALIFIED - | I_POST_QUALIFIED - | T_POST_QUALIFIED - | D_POST_QUALIFIED - | CF_POST_QUALIFIED - | CU_POST_QUALIFIED - | P_POST_QUALIFIED - | ROOT_POST_QUALIFIED; - - /** - * Default options (M_PARAMETER_TYPES enabled) - */ - public final static int ALL_DEFAULT = M_PARAMETER_TYPES; - - /** - * Default qualify options (All except Root and Package) - */ - public final static int DEFAULT_QUALIFIED = - F_FULLY_QUALIFIED | M_FULLY_QUALIFIED | I_FULLY_QUALIFIED | T_FULLY_QUALIFIED | D_QUALIFIED | CF_QUALIFIED | CU_QUALIFIED; - - /** - * Default post qualify options (All except Root and Package) - */ - public final static int DEFAULT_POST_QUALIFIED = - F_POST_QUALIFIED - | M_POST_QUALIFIED - | I_POST_QUALIFIED - | T_POST_QUALIFIED - | D_POST_QUALIFIED - | CF_POST_QUALIFIED - | CU_POST_QUALIFIED; - - public final static String CONCAT_STRING = PHPUIMessages.getString("JavaElementLabels.concat_string"); // " - "; //$NON-NLS-1$ - public final static String COMMA_STRING = PHPUIMessages.getString("JavaElementLabels.comma_string"); // ", "; //$NON-NLS-1$ - public final static String DECL_STRING = PHPUIMessages.getString("JavaElementLabels.declseparator_string"); // " "; // use for return type //$NON-NLS-1$ - - /* - * Package name compression - */ - private static String fgPkgNamePattern = ""; //$NON-NLS-1$ - private static String fgPkgNamePrefix; - private static String fgPkgNamePostfix; - private static int fgPkgNameChars; - private static int fgPkgNameLength = -1; - - private JavaElementLabels() { - } - - private static boolean getFlag(int flags, int flag) { - return (flags & flag) != 0; - } - - public static String getTextLabel(Object obj, int flags) { - if (obj instanceof IJavaElement) { - return getElementLabel((IJavaElement) obj, flags); - } else if (obj instanceof IAdaptable) { - IWorkbenchAdapter wbadapter = (IWorkbenchAdapter) ((IAdaptable) obj).getAdapter(IWorkbenchAdapter.class); - if (wbadapter != null) { - return wbadapter.getLabel(obj); - } - } - return ""; //$NON-NLS-1$ - } - - /** - * Returns the label for a Java element. Flags as defined above. - */ - public static String getElementLabel(IJavaElement element, int flags) { - StringBuffer buf = new StringBuffer(60); - getElementLabel(element, flags, buf); - return buf.toString(); - } - - /** - * Returns the label for a Java element. Flags as defined above. - */ - public static void getElementLabel(IJavaElement element, int flags, StringBuffer buf) { - int type = element.getElementType(); - IPackageFragmentRoot root = null; - - if (type != IJavaElement.JAVA_MODEL && type != IJavaElement.JAVA_PROJECT && type != IJavaElement.PACKAGE_FRAGMENT_ROOT) - root = JavaModelUtil.getPackageFragmentRoot(element); - if (root != null && getFlag(flags, PREPEND_ROOT_PATH)) { - getPackageFragmentRootLabel(root, ROOT_QUALIFIED, buf); - buf.append(CONCAT_STRING); - } - - switch (type) { - case IJavaElement.METHOD : - getMethodLabel((IMethod) element, flags, buf); - break; - case IJavaElement.FIELD : - getFieldLabel((IField) element, flags, buf); - break; - // case IJavaElement.INITIALIZER: - // getInitializerLabel((IInitializer) element, flags, buf); - // break; - case IJavaElement.TYPE : - getTypeLabel((IType) element, flags, buf); - break; - // case IJavaElement.CLASS_FILE: - // getClassFileLabel((IClassFile) element, flags, buf); - // break; - case IJavaElement.COMPILATION_UNIT : - getCompilationUnitLabel((ICompilationUnit) element, flags, buf); - break; - case IJavaElement.PACKAGE_FRAGMENT : - getPackageFragmentLabel((IPackageFragment) element, flags, buf); - break; - case IJavaElement.PACKAGE_FRAGMENT_ROOT : - getPackageFragmentRootLabel((IPackageFragmentRoot) element, flags, buf); - break; - case IJavaElement.IMPORT_CONTAINER : - case IJavaElement.IMPORT_DECLARATION : - case IJavaElement.PACKAGE_DECLARATION : - getDeclararionLabel(element, flags, buf); - break; - case IJavaElement.JAVA_PROJECT : - case IJavaElement.JAVA_MODEL : - buf.append(element.getElementName()); - break; - default : - buf.append(element.getElementName()); - } - - if (root != null && getFlag(flags, APPEND_ROOT_PATH)) { - buf.append(CONCAT_STRING); - getPackageFragmentRootLabel(root, ROOT_QUALIFIED, buf); - } - } - - /** - * Appends the label for a method to a StringBuffer. Considers the M_* flags. - */ - public static void getMethodLabel(IMethod method, int flags, StringBuffer buf) { - try { - // return type - if (getFlag(flags, M_PRE_RETURNTYPE) && method.exists() && !method.isConstructor()) { - buf.append(Signature.getSimpleName(Signature.toString(method.getReturnType()))); - buf.append(' '); - } - - // qualification - if (getFlag(flags, M_FULLY_QUALIFIED)) { - getTypeLabel(method.getDeclaringType(), T_FULLY_QUALIFIED | (flags & P_COMPRESSED), buf); - buf.append('.'); - } - - buf.append(method.getElementName()); - - // parameters - if (getFlag(flags, M_PARAMETER_TYPES | M_PARAMETER_NAMES)) { - buf.append('('); - - String[] types = getFlag(flags, M_PARAMETER_TYPES) ? method.getParameterTypes() : null; - String[] names = (getFlag(flags, M_PARAMETER_NAMES) && method.exists()) ? method.getParameterNames() : null; - int nParams = types != null ? types.length : names.length; - - for (int i = 0; i < nParams; i++) { - if (i > 0) { - buf.append(COMMA_STRING); //$NON-NLS-1$ - } - if (types != null) { - buf.append(Signature.getSimpleName(Signature.toString(types[i]))); - } - if (names != null) { - if (types != null) { - buf.append(' '); - } - buf.append(names[i]); - } - } - buf.append(')'); - } - - if (getFlag(flags, M_EXCEPTIONS) && method.exists()) { - String[] types = method.getExceptionTypes(); - if (types.length > 0) { - buf.append(" throws "); //$NON-NLS-1$ - for (int i = 0; i < types.length; i++) { - if (i > 0) { - buf.append(COMMA_STRING); - } - buf.append(Signature.getSimpleName(Signature.toString(types[i]))); - } - } - } - - if (getFlag(flags, M_APP_RETURNTYPE) && method.exists() && !method.isConstructor()) { - buf.append(DECL_STRING); - buf.append(Signature.getSimpleName(Signature.toString(method.getReturnType()))); - } - - // post qualification - if (getFlag(flags, M_POST_QUALIFIED)) { - buf.append(CONCAT_STRING); - getTypeLabel(method.getDeclaringType(), T_FULLY_QUALIFIED | (flags & P_COMPRESSED), buf); - } - - } catch (JavaModelException e) { - PHPeclipsePlugin.log(e); // NotExistsException will not reach this point - } - } - - /** - * Appends the label for a field to a StringBuffer. Considers the F_* flags. - */ - public static void getFieldLabel(IField field, int flags, StringBuffer buf) { - try { - if (getFlag(flags, F_PRE_TYPE_SIGNATURE) && field.exists()) { - buf.append(Signature.toString(field.getTypeSignature())); - buf.append(' '); - } - - // qualification - if (getFlag(flags, F_FULLY_QUALIFIED)) { - getTypeLabel(field.getDeclaringType(), T_FULLY_QUALIFIED | (flags & P_COMPRESSED), buf); - buf.append('.'); - } - buf.append(field.getElementName()); - - if (getFlag(flags, F_APP_TYPE_SIGNATURE) && field.exists()) { - buf.append(DECL_STRING); - buf.append(Signature.toString(field.getTypeSignature())); - } - - // post qualification - if (getFlag(flags, F_POST_QUALIFIED)) { - buf.append(CONCAT_STRING); - getTypeLabel(field.getDeclaringType(), T_FULLY_QUALIFIED | (flags & P_COMPRESSED), buf); - } - - } catch (JavaModelException e) { - PHPeclipsePlugin.log(e); // NotExistsException will not reach this point - } - } - - /** - * Appends the label for a initializer to a StringBuffer. Considers the I_* flags. - */ - // public static void getInitializerLabel(IInitializer initializer, int flags, StringBuffer buf) { - // // qualification - // if (getFlag(flags, I_FULLY_QUALIFIED)) { - // getTypeLabel(initializer.getDeclaringType(), T_FULLY_QUALIFIED | (flags & P_COMPRESSED), buf); - // buf.append('.'); - // } - // buf.append(JavaUIMessages.getString("JavaElementLabels.initializer")); //$NON-NLS-1$ - // - // // post qualification - // if (getFlag(flags, I_POST_QUALIFIED)) { - // buf.append(CONCAT_STRING); - // getTypeLabel(initializer.getDeclaringType(), T_FULLY_QUALIFIED | (flags & P_COMPRESSED), buf); - // } - // } - - /** - * Appends the label for a type to a StringBuffer. Considers the T_* flags. - */ - public static void getTypeLabel(IType type, int flags, StringBuffer buf) { - if (getFlag(flags, T_FULLY_QUALIFIED)) { - if (type != null) { // jsurfer INSERT - IPackageFragment pack = type.getPackageFragment(); - if (!pack.isDefaultPackage()) { - getPackageFragmentLabel(pack, (flags & P_COMPRESSED), buf); - buf.append('.'); - } - buf.append(JavaModelUtil.getTypeQualifiedName(type)); - } // jsurfer INSERT - } else if (getFlag(flags, T_CONTAINER_QUALIFIED)) { - buf.append(JavaModelUtil.getTypeQualifiedName(type)); - } else { - buf.append(type.getElementName()); - } - // post qualification - if (getFlag(flags, T_POST_QUALIFIED)) { - buf.append(CONCAT_STRING); - IType declaringType = type.getDeclaringType(); - if (declaringType != null) { - getTypeLabel(declaringType, T_FULLY_QUALIFIED | (flags & P_COMPRESSED), buf); - } else { - getPackageFragmentLabel(type.getPackageFragment(), (flags & P_COMPRESSED), buf); - } - } - } - - /** - * Appends the label for a declaration to a StringBuffer. Considers the D_* flags. - */ - public static void getDeclararionLabel(IJavaElement declaration, int flags, StringBuffer buf) { - if (getFlag(flags, D_QUALIFIED)) { - IJavaElement openable = (IJavaElement) declaration.getOpenable(); - if (openable != null) { - buf.append(getElementLabel(openable, CF_QUALIFIED | CU_QUALIFIED)); - buf.append('/'); - } - } - if (declaration.getElementType() == IJavaElement.IMPORT_CONTAINER) { - buf.append(PHPUIMessages.getString("JavaElementLabels.import_container")); //$NON-NLS-1$ - } else { - buf.append(declaration.getElementName()); - } - // post qualification - if (getFlag(flags, D_POST_QUALIFIED)) { - IJavaElement openable = (IJavaElement) declaration.getOpenable(); - if (openable != null) { - buf.append(CONCAT_STRING); - buf.append(getElementLabel(openable, CF_QUALIFIED | CU_QUALIFIED)); - } - } - } - - /** - * Appends the label for a class file to a StringBuffer. Considers the CF_* flags. - */ - // public static void getClassFileLabel(IClassFile classFile, int flags, StringBuffer buf) { - // if (getFlag(flags, CF_QUALIFIED)) { - // IPackageFragment pack= (IPackageFragment) classFile.getParent(); - // if (!pack.isDefaultPackage()) { - // buf.append(pack.getElementName()); - // buf.append('.'); - // } - // } - // buf.append(classFile.getElementName()); - // - // if (getFlag(flags, CF_POST_QUALIFIED)) { - // buf.append(CONCAT_STRING); - // getPackageFragmentLabel((IPackageFragment) classFile.getParent(), 0, buf); - // } - // } - - /** - * Appends the label for a compilation unit to a StringBuffer. Considers the CU_* flags. - */ - public static void getCompilationUnitLabel(ICompilationUnit cu, int flags, StringBuffer buf) { - if (getFlag(flags, CU_QUALIFIED)) { - IPackageFragment pack = (IPackageFragment) cu.getParent(); - if (!pack.isDefaultPackage()) { - buf.append(pack.getElementName()); - buf.append('.'); - } - } - buf.append(cu.getElementName()); - - if (getFlag(flags, CU_POST_QUALIFIED)) { - buf.append(CONCAT_STRING); - getPackageFragmentLabel((IPackageFragment) cu.getParent(), 0, buf); - } - } - - /** - * Appends the label for a package fragment to a StringBuffer. Considers the P_* flags. - */ - public static void getPackageFragmentLabel(IPackageFragment pack, int flags, StringBuffer buf) { - if (getFlag(flags, P_QUALIFIED)) { - getPackageFragmentRootLabel((IPackageFragmentRoot) pack.getParent(), ROOT_QUALIFIED, buf); - buf.append('/'); - } - refreshPackageNamePattern(); - if (pack.isDefaultPackage()) { - buf.append(PHPUIMessages.getString("JavaElementLabels.default_package")); //$NON-NLS-1$ - } else if (getFlag(flags, P_COMPRESSED) && fgPkgNameLength >= 0) { - String name = pack.getElementName(); - int start = 0; - int dot = name.indexOf('.', start); - while (dot > 0) { - if (dot - start > fgPkgNameLength - 1) { - buf.append(fgPkgNamePrefix); - if (fgPkgNameChars > 0) - buf.append(name.substring(start, Math.min(start + fgPkgNameChars, dot))); - buf.append(fgPkgNamePostfix); - } else - buf.append(name.substring(start, dot + 1)); - start = dot + 1; - dot = name.indexOf('.', start); - } - buf.append(name.substring(start)); - } else { - buf.append(pack.getElementName()); - } - if (getFlag(flags, P_POST_QUALIFIED)) { - buf.append(CONCAT_STRING); - getPackageFragmentRootLabel((IPackageFragmentRoot) pack.getParent(), ROOT_QUALIFIED, buf); - } - } - - /** - * Appends the label for a package fragment root to a StringBuffer. Considers the ROOT_* flags. - */ - public static void getPackageFragmentRootLabel(IPackageFragmentRoot root, int flags, StringBuffer buf) { - if (root.isArchive()) - getArchiveLabel(root, flags, buf); - else - getFolderLabel(root, flags, buf); - } - - private static void getArchiveLabel(IPackageFragmentRoot root, int flags, StringBuffer buf) { - // Handle variables different - if (getFlag(flags, ROOT_VARIABLE) && getVariableLabel(root, flags, buf)) - return; - boolean external = root.isExternal(); - if (external) - getExternalArchiveLabel(root, flags, buf); - else - getInternalArchiveLabel(root, flags, buf); - } - - private static boolean getVariableLabel(IPackageFragmentRoot root, int flags, StringBuffer buf) { - // try { - // IClasspathEntry rawEntry= root.getRawClasspathEntry(); - // if (rawEntry != null) { - // if (rawEntry.getEntryKind() == IClasspathEntry.CPE_VARIABLE) { - // buf.append(rawEntry.getPath().makeRelative()); - // buf.append(CONCAT_STRING); - // if (root.isExternal()) - // buf.append(root.getPath().toOSString()); - // else - // buf.append(root.getPath().makeRelative().toString()); - // return true; - // } - // } - // } catch (JavaModelException e) { - // PHPeclipsePlugin.log(e); // problems with class path - // } - return false; - } - - private static void getExternalArchiveLabel(IPackageFragmentRoot root, int flags, StringBuffer buf) { - IPath path = root.getPath(); - if (getFlag(flags, REFERENCED_ROOT_POST_QUALIFIED)) { - int segements = path.segmentCount(); - if (segements > 0) { - buf.append(path.segment(segements - 1)); - if (segements > 1 || path.getDevice() != null) { - buf.append(CONCAT_STRING); - buf.append(path.removeLastSegments(1).toOSString()); - } - } else { - buf.append(path.toOSString()); - } - } else { - buf.append(path.toOSString()); - } - } - - private static void getInternalArchiveLabel(IPackageFragmentRoot root, int flags, StringBuffer buf) { - IResource resource = root.getResource(); - boolean rootQualified = getFlag(flags, ROOT_QUALIFIED); - boolean referencedQualified = - getFlag(flags, REFERENCED_ROOT_POST_QUALIFIED) && JavaModelUtil.isReferenced(root) && resource != null; - if (rootQualified) { - buf.append(root.getPath().makeRelative().toString()); - } else { - buf.append(root.getElementName()); - if (referencedQualified) { - buf.append(CONCAT_STRING); - buf.append(resource.getParent().getFullPath().makeRelative().toString()); - } else if (getFlag(flags, ROOT_POST_QUALIFIED)) { - buf.append(CONCAT_STRING); - buf.append(root.getParent().getPath().makeRelative().toString()); - } - } - } - - private static void getFolderLabel(IPackageFragmentRoot root, int flags, StringBuffer buf) { - IResource resource = root.getResource(); - boolean rootQualified = getFlag(flags, ROOT_QUALIFIED); - boolean referencedQualified = - getFlag(flags, REFERENCED_ROOT_POST_QUALIFIED) && JavaModelUtil.isReferenced(root) && resource != null; - if (rootQualified) { - buf.append(root.getPath().makeRelative().toString()); - } else { - if (resource != null) - buf.append(resource.getProjectRelativePath().toString()); - else - buf.append(root.getElementName()); - if (referencedQualified) { - buf.append(CONCAT_STRING); - buf.append(resource.getProject().getName()); - } else if (getFlag(flags, ROOT_POST_QUALIFIED)) { - buf.append(CONCAT_STRING); - buf.append(root.getParent().getElementName()); - } - } - } - - private static void refreshPackageNamePattern() { - String pattern = getPkgNamePatternForPackagesView(); - if (pattern.equals(fgPkgNamePattern)) - return; - else if (pattern.equals("")) { //$NON-NLS-1$ - fgPkgNamePattern = ""; //$NON-NLS-1$ - fgPkgNameLength = -1; - return; - } - fgPkgNamePattern = pattern; - int i = 0; - fgPkgNameChars = 0; - fgPkgNamePrefix = ""; //$NON-NLS-1$ - fgPkgNamePostfix = ""; //$NON-NLS-1$ - while (i < pattern.length()) { - char ch = pattern.charAt(i); - if (Character.isDigit(ch)) { - fgPkgNameChars = ch - 48; - if (i > 0) - fgPkgNamePrefix = pattern.substring(0, i); - if (i >= 0) - fgPkgNamePostfix = pattern.substring(i + 1); - fgPkgNameLength = fgPkgNamePrefix.length() + fgPkgNameChars + fgPkgNamePostfix.length(); - return; - } - i++; - } - fgPkgNamePrefix = pattern; - fgPkgNameLength = pattern.length(); - } - - private static String getPkgNamePatternForPackagesView() { - IPreferenceStore store = PreferenceConstants.getPreferenceStore(); - if (!store.getBoolean(PreferenceConstants.APPEARANCE_COMPRESS_PACKAGE_NAMES)) - return ""; //$NON-NLS-1$ - return store.getString(PreferenceConstants.APPEARANCE_PKG_NAME_PATTERN_FOR_PKG_VIEW); - } + /** + * Method names contain parameter types. e.g. foo(int) + */ + public final static int M_PARAMETER_TYPES = 1 << 0; + + /** + * Method names contain parameter names. e.g. foo(index) + */ + public final static int M_PARAMETER_NAMES = 1 << 1; + + /** + * Method names contain thrown exceptions. e.g. + * foo throws IOException + */ + public final static int M_EXCEPTIONS = 1 << 2; + + /** + * Method names contain return type (appended) e.g. foo : int + */ + public final static int M_APP_RETURNTYPE = 1 << 3; + + /** + * Method names contain return type (appended) e.g. int foo + */ + public final static int M_PRE_RETURNTYPE = 1 << 4; + + /** + * Method names are fully qualified. e.g. java.util.Vector.size + */ + public final static int M_FULLY_QUALIFIED = 1 << 5; + + /** + * Method names are post qualified. e.g. + * size - java.util.Vector + */ + public final static int M_POST_QUALIFIED = 1 << 6; + + /** + * Initializer names are fully qualified. e.g. + * java.util.Vector.{ ... } + */ + public final static int I_FULLY_QUALIFIED = 1 << 7; + + /** + * Type names are post qualified. e.g. { ... } - java.util.Map + */ + public final static int I_POST_QUALIFIED = 1 << 8; + + /** + * Field names contain the declared type (appended) e.g. + * int fHello + */ + public final static int F_APP_TYPE_SIGNATURE = 1 << 9; + + /** + * Field names contain the declared type (prepended) e.g. + * fHello : int + */ + public final static int F_PRE_TYPE_SIGNATURE = 1 << 10; + + /** + * Fields names are fully qualified. e.g. java.lang.System.out + */ + public final static int F_FULLY_QUALIFIED = 1 << 11; + + /** + * Fields names are post qualified. e.g. out - java.lang.System + */ + public final static int F_POST_QUALIFIED = 1 << 12; + + /** + * Type names are fully qualified. e.g. java.util.Map.MapEntry + */ + public final static int T_FULLY_QUALIFIED = 1 << 13; + + /** + * Type names are type container qualified. e.g. Map.MapEntry + */ + public final static int T_CONTAINER_QUALIFIED = 1 << 14; + + /** + * Type names are post qualified. e.g. MapEntry - java.util.Map + */ + public final static int T_POST_QUALIFIED = 1 << 15; + + /** + * Declarations (import container / declarartion, package declarartion) are + * qualified. e.g. java.util.Vector.class/import container + */ + public final static int D_QUALIFIED = 1 << 16; + + /** + * Declarations (import container / declarartion, package declarartion) are + * post qualified. e.g. + * import container - java.util.Vector.class + */ + public final static int D_POST_QUALIFIED = 1 << 17; + + /** + * Class file names are fully qualified. e.g. + * java.util.Vector.class + */ + public final static int CF_QUALIFIED = 1 << 18; + + /** + * Class file names are post qualified. e.g. + * Vector.class - java.util + */ + public final static int CF_POST_QUALIFIED = 1 << 19; + + /** + * Compilation unit names are fully qualified. e.g. + * java.util.Vector.java + */ + public final static int CU_QUALIFIED = 1 << 20; + + /** + * Compilation unit names are post qualified. e.g. + * Vector.java - java.util + */ + public final static int CU_POST_QUALIFIED = 1 << 21; + + /** + * Package names are qualified. e.g. MyProject/src/java.util + */ + public final static int P_QUALIFIED = 1 << 22; + + /** + * Package names are post qualified. e.g. + * java.util - MyProject/src + */ + public final static int P_POST_QUALIFIED = 1 << 23; + + /** + * Package Fragment Roots contain variable name if from a variable. e.g. + * JRE_LIB - c:\java\lib\rt.jar + */ + public final static int ROOT_VARIABLE = 1 << 24; + + /** + * Package Fragment Roots contain the project name if not an archive + * (prepended). e.g. MyProject/src + */ + public final static int ROOT_QUALIFIED = 1 << 25; + + /** + * Package Fragment Roots contain the project name if not an archive + * (appended). e.g. src - MyProject + */ + public final static int ROOT_POST_QUALIFIED = 1 << 26; + + /** + * Add root path to all elements except Package Fragment Roots and Java + * projects. e.g. java.lang.Vector - c:\java\lib\rt.jar + * Option only applies to getElementLabel + */ + public final static int APPEND_ROOT_PATH = 1 << 27; + + /** + * Add root path to all elements except Package Fragment Roots and Java + * projects. e.g. java.lang.Vector - c:\java\lib\rt.jar + * Option only applies to getElementLabel + */ + public final static int PREPEND_ROOT_PATH = 1 << 28; + + /** + * Package names are compressed. e.g. o*.e*.search + */ + public final static int P_COMPRESSED = 1 << 29; + + /** + * Post qualify referenced package fragement roots. For example + * jdt.jar - net.sourceforge.phpdt.ui if the jar is + * referenced from another project. + */ + public final static int REFERENCED_ROOT_POST_QUALIFIED = 1 << 30; + + /** + * Qualify all elements + */ + public final static int ALL_FULLY_QUALIFIED = F_FULLY_QUALIFIED + | M_FULLY_QUALIFIED | I_FULLY_QUALIFIED | T_FULLY_QUALIFIED + | D_QUALIFIED | CF_QUALIFIED | CU_QUALIFIED | P_QUALIFIED + | ROOT_QUALIFIED; + + /** + * Post qualify all elements + */ + public final static int ALL_POST_QUALIFIED = F_POST_QUALIFIED + | M_POST_QUALIFIED | I_POST_QUALIFIED | T_POST_QUALIFIED + | D_POST_QUALIFIED | CF_POST_QUALIFIED | CU_POST_QUALIFIED + | P_POST_QUALIFIED | ROOT_POST_QUALIFIED; + + /** + * Default options (M_PARAMETER_TYPES enabled) + */ + public final static int ALL_DEFAULT = M_PARAMETER_TYPES; + + /** + * Default qualify options (All except Root and Package) + */ + public final static int DEFAULT_QUALIFIED = F_FULLY_QUALIFIED + | M_FULLY_QUALIFIED | I_FULLY_QUALIFIED | T_FULLY_QUALIFIED + | D_QUALIFIED | CF_QUALIFIED | CU_QUALIFIED; + + /** + * Default post qualify options (All except Root and Package) + */ + public final static int DEFAULT_POST_QUALIFIED = F_POST_QUALIFIED + | M_POST_QUALIFIED | I_POST_QUALIFIED | T_POST_QUALIFIED + | D_POST_QUALIFIED | CF_POST_QUALIFIED | CU_POST_QUALIFIED; + + public final static String CONCAT_STRING = PHPUIMessages + .getString("JavaElementLabels.concat_string"); // " - "; + // //$NON-NLS-1$ + + public final static String COMMA_STRING = PHPUIMessages + .getString("JavaElementLabels.comma_string"); // ", "; + // //$NON-NLS-1$ + + public final static String DECL_STRING = PHPUIMessages + .getString("JavaElementLabels.declseparator_string"); // " "; // + // use for + // return + // type + // //$NON-NLS-1$ + + /* + * Package name compression + */ + private static String fgPkgNamePattern = ""; //$NON-NLS-1$ + + private static String fgPkgNamePrefix; + + private static String fgPkgNamePostfix; + + private static int fgPkgNameChars; + + private static int fgPkgNameLength = -1; + + private JavaElementLabels() { + } + + private static boolean getFlag(int flags, int flag) { + return (flags & flag) != 0; + } + + public static String getTextLabel(Object obj, int flags) { + if (obj instanceof IJavaElement) { + return getElementLabel((IJavaElement) obj, flags); + } else if (obj instanceof IAdaptable) { + IWorkbenchAdapter wbadapter = (IWorkbenchAdapter) ((IAdaptable) obj) + .getAdapter(IWorkbenchAdapter.class); + if (wbadapter != null) { + return wbadapter.getLabel(obj); + } + } + return ""; //$NON-NLS-1$ + } + + /** + * Returns the label for a Java element. Flags as defined above. + */ + public static String getElementLabel(IJavaElement element, int flags) { + StringBuffer buf = new StringBuffer(60); + getElementLabel(element, flags, buf); + return buf.toString(); + } + + /** + * Returns the label for a Java element. Flags as defined above. + */ + public static void getElementLabel(IJavaElement element, int flags, + StringBuffer buf) { + int type = element.getElementType(); + IPackageFragmentRoot root = null; + + if (type != IJavaElement.JAVA_MODEL + && type != IJavaElement.JAVA_PROJECT + && type != IJavaElement.PACKAGE_FRAGMENT_ROOT) + root = JavaModelUtil.getPackageFragmentRoot(element); + if (root != null && getFlag(flags, PREPEND_ROOT_PATH)) { + getPackageFragmentRootLabel(root, ROOT_QUALIFIED, buf); + buf.append(CONCAT_STRING); + } + + switch (type) { + case IJavaElement.METHOD: + getMethodLabel((IMethod) element, flags, buf); + break; + case IJavaElement.FIELD: + getFieldLabel((IField) element, flags, buf); + break; + // case IJavaElement.INITIALIZER: + // getInitializerLabel((IInitializer) element, flags, buf); + // break; + case IJavaElement.TYPE: + getTypeLabel((IType) element, flags, buf); + break; + // case IJavaElement.CLASS_FILE: + // getClassFileLabel((IClassFile) element, flags, buf); + // break; + case IJavaElement.COMPILATION_UNIT: + getCompilationUnitLabel((ICompilationUnit) element, flags, buf); + break; + case IJavaElement.PACKAGE_FRAGMENT: + getPackageFragmentLabel((IPackageFragment) element, flags, buf); + break; + case IJavaElement.PACKAGE_FRAGMENT_ROOT: + getPackageFragmentRootLabel((IPackageFragmentRoot) element, flags, + buf); + break; + case IJavaElement.IMPORT_CONTAINER: + case IJavaElement.IMPORT_DECLARATION: + case IJavaElement.PACKAGE_DECLARATION: + getDeclararionLabel(element, flags, buf); + break; + case IJavaElement.JAVA_PROJECT: + case IJavaElement.JAVA_MODEL: + buf.append(element.getElementName()); + break; + default: + buf.append(element.getElementName()); + } + + if (root != null && getFlag(flags, APPEND_ROOT_PATH)) { + buf.append(CONCAT_STRING); + getPackageFragmentRootLabel(root, ROOT_QUALIFIED, buf); + } + } + + /** + * Appends the label for a method to a StringBuffer. Considers the M_* + * flags. + */ + public static void getMethodLabel(IMethod method, int flags, + StringBuffer buf) { + try { + // return type + if (getFlag(flags, M_PRE_RETURNTYPE) && method.exists() + && !method.isConstructor()) { + buf.append(Signature.getSimpleName(Signature.toString(method + .getReturnType()))); + buf.append(' '); + } + + // qualification + if (getFlag(flags, M_FULLY_QUALIFIED)) { + getTypeLabel(method.getDeclaringType(), T_FULLY_QUALIFIED + | (flags & P_COMPRESSED), buf); + buf.append('.'); + } + + buf.append(method.getElementName()); + + // parameters + if (getFlag(flags, M_PARAMETER_TYPES | M_PARAMETER_NAMES)) { + buf.append('('); + + String[] types = getFlag(flags, M_PARAMETER_TYPES) ? method + .getParameterTypes() : null; + String[] names = (getFlag(flags, M_PARAMETER_NAMES) && method + .exists()) ? method.getParameterNames() : null; + int nParams = types != null ? types.length : names.length; + + for (int i = 0; i < nParams; i++) { + if (i > 0) { + buf.append(COMMA_STRING); //$NON-NLS-1$ + } + if (types != null) { + buf.append(Signature.getSimpleName(Signature + .toString(types[i]))); + } + if (names != null) { + if (types != null) { + buf.append(' '); + } + buf.append(names[i]); + } + } + buf.append(')'); + } + + if (getFlag(flags, M_EXCEPTIONS) && method.exists()) { + String[] types = method.getExceptionTypes(); + if (types.length > 0) { + buf.append(" throws "); //$NON-NLS-1$ + for (int i = 0; i < types.length; i++) { + if (i > 0) { + buf.append(COMMA_STRING); + } + buf.append(Signature.getSimpleName(Signature + .toString(types[i]))); + } + } + } + + if (getFlag(flags, M_APP_RETURNTYPE) && method.exists() + && !method.isConstructor()) { + buf.append(DECL_STRING); + buf.append(Signature.getSimpleName(Signature.toString(method + .getReturnType()))); + } + + // post qualification + if (getFlag(flags, M_POST_QUALIFIED)) { + buf.append(CONCAT_STRING); + getTypeLabel(method.getDeclaringType(), T_FULLY_QUALIFIED + | (flags & P_COMPRESSED), buf); + } + + } catch (JavaModelException e) { + PHPeclipsePlugin.log(e); // NotExistsException will not reach + // this point + } + } + + /** + * Appends the label for a field to a StringBuffer. Considers the F_* flags. + */ + public static void getFieldLabel(IField field, int flags, StringBuffer buf) { + try { + if (getFlag(flags, F_PRE_TYPE_SIGNATURE) && field.exists()) { + buf.append(Signature.toString(field.getTypeSignature())); + buf.append(' '); + } + + // qualification + if (getFlag(flags, F_FULLY_QUALIFIED)) { + getTypeLabel(field.getDeclaringType(), T_FULLY_QUALIFIED + | (flags & P_COMPRESSED), buf); + buf.append('.'); + } + buf.append(field.getElementName()); + + if (getFlag(flags, F_APP_TYPE_SIGNATURE) && field.exists()) { + buf.append(DECL_STRING); + buf.append(Signature.toString(field.getTypeSignature())); + } + + // post qualification + if (getFlag(flags, F_POST_QUALIFIED)) { + buf.append(CONCAT_STRING); + getTypeLabel(field.getDeclaringType(), T_FULLY_QUALIFIED + | (flags & P_COMPRESSED), buf); + } + + } catch (JavaModelException e) { + PHPeclipsePlugin.log(e); // NotExistsException will not reach + // this point + } + } + + /** + * Appends the label for a initializer to a StringBuffer. Considers the I_* + * flags. + */ + // public static void getInitializerLabel(IInitializer initializer, int + // flags, StringBuffer buf) { + // // qualification + // if (getFlag(flags, I_FULLY_QUALIFIED)) { + // getTypeLabel(initializer.getDeclaringType(), T_FULLY_QUALIFIED | (flags & + // P_COMPRESSED), buf); + // buf.append('.'); + // } + // buf.append(JavaUIMessages.getString("JavaElementLabels.initializer")); + // //$NON-NLS-1$ + // + // // post qualification + // if (getFlag(flags, I_POST_QUALIFIED)) { + // buf.append(CONCAT_STRING); + // getTypeLabel(initializer.getDeclaringType(), T_FULLY_QUALIFIED | (flags & + // P_COMPRESSED), buf); + // } + // } + /** + * Appends the label for a type to a StringBuffer. Considers the T_* flags. + */ + public static void getTypeLabel(IType type, int flags, StringBuffer buf) { + if (getFlag(flags, T_FULLY_QUALIFIED)) { + if (type != null) { // jsurfer INSERT + IPackageFragment pack = type.getPackageFragment(); + if (!pack.isDefaultPackage()) { + getPackageFragmentLabel(pack, (flags & P_COMPRESSED), buf); + buf.append('.'); + } + buf.append(JavaModelUtil.getTypeQualifiedName(type)); + } // jsurfer INSERT + } else if (getFlag(flags, T_CONTAINER_QUALIFIED)) { + buf.append(JavaModelUtil.getTypeQualifiedName(type)); + } else { + buf.append(type.getElementName()); + } + // post qualification + if (getFlag(flags, T_POST_QUALIFIED)) { + buf.append(CONCAT_STRING); + IType declaringType = type.getDeclaringType(); + if (declaringType != null) { + getTypeLabel(declaringType, T_FULLY_QUALIFIED + | (flags & P_COMPRESSED), buf); + } else { + getPackageFragmentLabel(type.getPackageFragment(), + (flags & P_COMPRESSED), buf); + } + } + } + + /** + * Appends the label for a declaration to a StringBuffer. Considers the D_* + * flags. + */ + public static void getDeclararionLabel(IJavaElement declaration, int flags, + StringBuffer buf) { + if (getFlag(flags, D_QUALIFIED)) { + IJavaElement openable = (IJavaElement) declaration.getOpenable(); + if (openable != null) { + buf.append(getElementLabel(openable, CF_QUALIFIED + | CU_QUALIFIED)); + buf.append('/'); + } + } + if (declaration.getElementType() == IJavaElement.IMPORT_CONTAINER) { + buf.append(PHPUIMessages + .getString("JavaElementLabels.import_container")); //$NON-NLS-1$ + } else { + buf.append(declaration.getElementName()); + } + // post qualification + if (getFlag(flags, D_POST_QUALIFIED)) { + IJavaElement openable = (IJavaElement) declaration.getOpenable(); + if (openable != null) { + buf.append(CONCAT_STRING); + buf.append(getElementLabel(openable, CF_QUALIFIED + | CU_QUALIFIED)); + } + } + } + + /** + * Appends the label for a class file to a StringBuffer. Considers the CF_* + * flags. + */ + // public static void getClassFileLabel(IClassFile classFile, int flags, + // StringBuffer buf) { + // if (getFlag(flags, CF_QUALIFIED)) { + // IPackageFragment pack= (IPackageFragment) classFile.getParent(); + // if (!pack.isDefaultPackage()) { + // buf.append(pack.getElementName()); + // buf.append('.'); + // } + // } + // buf.append(classFile.getElementName()); + // + // if (getFlag(flags, CF_POST_QUALIFIED)) { + // buf.append(CONCAT_STRING); + // getPackageFragmentLabel((IPackageFragment) classFile.getParent(), 0, + // buf); + // } + // } + /** + * Appends the label for a compilation unit to a StringBuffer. Considers the + * CU_* flags. + */ + public static void getCompilationUnitLabel(ICompilationUnit cu, int flags, + StringBuffer buf) { + if (getFlag(flags, CU_QUALIFIED)) { + IPackageFragment pack = (IPackageFragment) cu.getParent(); + if (!pack.isDefaultPackage()) { + buf.append(pack.getElementName()); + buf.append('.'); + } + } + buf.append(cu.getElementName()); + + if (getFlag(flags, CU_POST_QUALIFIED)) { + buf.append(CONCAT_STRING); + getPackageFragmentLabel((IPackageFragment) cu.getParent(), 0, buf); + } + } + + /** + * Appends the label for a package fragment to a StringBuffer. Considers the + * P_* flags. + */ + public static void getPackageFragmentLabel(IPackageFragment pack, + int flags, StringBuffer buf) { + if (getFlag(flags, P_QUALIFIED)) { + getPackageFragmentRootLabel( + (IPackageFragmentRoot) pack.getParent(), ROOT_QUALIFIED, + buf); + buf.append('/'); + } + refreshPackageNamePattern(); + if (pack.isDefaultPackage()) { + buf.append(PHPUIMessages + .getString("JavaElementLabels.default_package")); //$NON-NLS-1$ + } else if (getFlag(flags, P_COMPRESSED) && fgPkgNameLength >= 0) { + String name = pack.getElementName(); + int start = 0; + int dot = name.indexOf('.', start); + while (dot > 0) { + if (dot - start > fgPkgNameLength - 1) { + buf.append(fgPkgNamePrefix); + if (fgPkgNameChars > 0) + buf.append(name.substring(start, Math.min(start + + fgPkgNameChars, dot))); + buf.append(fgPkgNamePostfix); + } else + buf.append(name.substring(start, dot + 1)); + start = dot + 1; + dot = name.indexOf('.', start); + } + buf.append(name.substring(start)); + } else { + buf.append(pack.getElementName()); + } + if (getFlag(flags, P_POST_QUALIFIED)) { + buf.append(CONCAT_STRING); + getPackageFragmentRootLabel( + (IPackageFragmentRoot) pack.getParent(), ROOT_QUALIFIED, + buf); + } + } + + /** + * Appends the label for a package fragment root to a StringBuffer. + * Considers the ROOT_* flags. + */ + public static void getPackageFragmentRootLabel(IPackageFragmentRoot root, + int flags, StringBuffer buf) { + if (root.isArchive()) + getArchiveLabel(root, flags, buf); + else + getFolderLabel(root, flags, buf); + } + + private static void getArchiveLabel(IPackageFragmentRoot root, int flags, + StringBuffer buf) { + // Handle variables different + if (getFlag(flags, ROOT_VARIABLE) && getVariableLabel(root, flags, buf)) + return; + boolean external = root.isExternal(); + if (external) + getExternalArchiveLabel(root, flags, buf); + else + getInternalArchiveLabel(root, flags, buf); + } + + private static boolean getVariableLabel(IPackageFragmentRoot root, + int flags, StringBuffer buf) { + // try { + // IClasspathEntry rawEntry= root.getRawClasspathEntry(); + // if (rawEntry != null) { + // if (rawEntry.getEntryKind() == IClasspathEntry.CPE_VARIABLE) { + // buf.append(rawEntry.getPath().makeRelative()); + // buf.append(CONCAT_STRING); + // if (root.isExternal()) + // buf.append(root.getPath().toOSString()); + // else + // buf.append(root.getPath().makeRelative().toString()); + // return true; + // } + // } + // } catch (JavaModelException e) { + // PHPeclipsePlugin.log(e); // problems with class path + // } + return false; + } + + private static void getExternalArchiveLabel(IPackageFragmentRoot root, + int flags, StringBuffer buf) { + IPath path = root.getPath(); + if (getFlag(flags, REFERENCED_ROOT_POST_QUALIFIED)) { + int segements = path.segmentCount(); + if (segements > 0) { + buf.append(path.segment(segements - 1)); + if (segements > 1 || path.getDevice() != null) { + buf.append(CONCAT_STRING); + buf.append(path.removeLastSegments(1).toOSString()); + } + } else { + buf.append(path.toOSString()); + } + } else { + buf.append(path.toOSString()); + } + } + + private static void getInternalArchiveLabel(IPackageFragmentRoot root, + int flags, StringBuffer buf) { + IResource resource = root.getResource(); + boolean rootQualified = getFlag(flags, ROOT_QUALIFIED); + boolean referencedQualified = getFlag(flags, + REFERENCED_ROOT_POST_QUALIFIED) + && JavaModelUtil.isReferenced(root) && resource != null; + if (rootQualified) { + buf.append(root.getPath().makeRelative().toString()); + } else { + buf.append(root.getElementName()); + if (referencedQualified) { + buf.append(CONCAT_STRING); + buf.append(resource.getParent().getFullPath().makeRelative() + .toString()); + } else if (getFlag(flags, ROOT_POST_QUALIFIED)) { + buf.append(CONCAT_STRING); + buf + .append(root.getParent().getPath().makeRelative() + .toString()); + } + } + } + + private static void getFolderLabel(IPackageFragmentRoot root, int flags, + StringBuffer buf) { + IResource resource = root.getResource(); + boolean rootQualified = getFlag(flags, ROOT_QUALIFIED); + boolean referencedQualified = getFlag(flags, + REFERENCED_ROOT_POST_QUALIFIED) + && JavaModelUtil.isReferenced(root) && resource != null; + if (rootQualified) { + buf.append(root.getPath().makeRelative().toString()); + } else { + if (resource != null) + buf.append(resource.getProjectRelativePath().toString()); + else + buf.append(root.getElementName()); + if (referencedQualified) { + buf.append(CONCAT_STRING); + buf.append(resource.getProject().getName()); + } else if (getFlag(flags, ROOT_POST_QUALIFIED)) { + buf.append(CONCAT_STRING); + buf.append(root.getParent().getElementName()); + } + } + } + + private static void refreshPackageNamePattern() { + String pattern = getPkgNamePatternForPackagesView(); + if (pattern.equals(fgPkgNamePattern)) + return; + else if (pattern.equals("")) { //$NON-NLS-1$ + fgPkgNamePattern = ""; //$NON-NLS-1$ + fgPkgNameLength = -1; + return; + } + fgPkgNamePattern = pattern; + int i = 0; + fgPkgNameChars = 0; + fgPkgNamePrefix = ""; //$NON-NLS-1$ + fgPkgNamePostfix = ""; //$NON-NLS-1$ + while (i < pattern.length()) { + char ch = pattern.charAt(i); + if (Character.isDigit(ch)) { + fgPkgNameChars = ch - 48; + if (i > 0) + fgPkgNamePrefix = pattern.substring(0, i); + if (i >= 0) + fgPkgNamePostfix = pattern.substring(i + 1); + fgPkgNameLength = fgPkgNamePrefix.length() + fgPkgNameChars + + fgPkgNamePostfix.length(); + return; + } + i++; + } + fgPkgNamePrefix = pattern; + fgPkgNameLength = pattern.length(); + } + + private static String getPkgNamePatternForPackagesView() { + IPreferenceStore store = PreferenceConstants.getPreferenceStore(); + if (!store + .getBoolean(PreferenceConstants.APPEARANCE_COMPRESS_PACKAGE_NAMES)) + return ""; //$NON-NLS-1$ + return store + .getString(PreferenceConstants.APPEARANCE_PKG_NAME_PATTERN_FOR_PKG_VIEW); + } }