Bug 11314 Replace package name fragments should always be smaller
Build 20020214 If you enter "2~." in the 'Replace package name fragments with:' field in the preferences (Java->Work in progress), com.ibm.foobar is replaced with co~.ib~.foobar. I believe that package name compression should only replace a fragment if the compressed name is actually smaller. Thus com. would not be replaced in this example, since co~. is the same length, and contains less info.
org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/viewsupport/JavaElementLabels.java
*/
	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;
	private final static String CONCAT_STRING= JavaUIMessages.getString("JavaElementLabels.concat_string"); 
	private final static String COMMA_STRING= JavaUIMessages.getString("JavaElementLabels.comma_string"); 
	private final static String DECL_STRING= JavaUIMessages.getString("JavaElementLabels.declseparator_string"); 
	/*
	 * Package name compression
	 */
	private static String fgPkgNamePattern= ""; 
	private static String fgPkgNamePrefix;
	private static String fgPkgNamePostfix;
	private static int fgPkgNameChars;
	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 "";
	}