]>
Commit | Line | Data |
---|---|---|
1b2798f6 EK |
1 | /******************************************************************************* |
2 | * Copyright (c) 2000, 2011 IBM Corporation and others. | |
3 | * All rights reserved. This program and the accompanying materials | |
4 | * are made available under the terms of the Eclipse Public License v1.0 | |
5 | * which accompanies this distribution, and is available at | |
6 | * http://www.eclipse.org/legal/epl-v10.html | |
7 | * | |
8 | * Contributors: | |
9 | * IBM Corporation - initial API and implementation | |
10 | * Guven Demir <guven.internet+eclipse@gmail.com> - [package explorer] Alternative package name shortening: abbreviation - https://bugs.eclipse.org/bugs/show_bug.cgi?id=299514 | |
11 | *******************************************************************************/ | |
12 | package org.eclipse.jdt.internal.ui.viewsupport; | |
13 | ||
14 | import org.eclipse.jface.preference.IPreferenceStore; | |
15 | import org.eclipse.jface.util.IPropertyChangeListener; | |
16 | import org.eclipse.jface.util.PropertyChangeEvent; | |
17 | import org.eclipse.jface.viewers.LabelProviderChangedEvent; | |
18 | import org.eclipse.jface.viewers.ViewerComparator; | |
19 | ||
20 | import org.eclipse.ui.IEditorRegistry; | |
21 | import org.eclipse.ui.IPropertyListener; | |
22 | import org.eclipse.ui.PlatformUI; | |
23 | ||
24 | import org.eclipse.jdt.ui.JavaElementLabels; | |
25 | import org.eclipse.jdt.ui.PreferenceConstants; | |
26 | ||
27 | /** | |
28 | * JavaUILabelProvider that respects settings from the Appearance preference page. | |
29 | * Triggers a viewer update when a preference changes. | |
30 | */ | |
31 | public class AppearanceAwareLabelProvider extends JavaUILabelProvider implements IPropertyChangeListener, IPropertyListener { | |
32 | ||
33 | public final static long DEFAULT_TEXTFLAGS= JavaElementLabels.ROOT_VARIABLE | JavaElementLabels.T_TYPE_PARAMETERS | JavaElementLabels.M_PARAMETER_TYPES | | |
34 | JavaElementLabels.M_APP_TYPE_PARAMETERS | JavaElementLabels.M_APP_RETURNTYPE | JavaElementLabels.REFERENCED_ROOT_POST_QUALIFIED; | |
35 | public final static int DEFAULT_IMAGEFLAGS= JavaElementImageProvider.OVERLAY_ICONS; | |
36 | ||
37 | private long fTextFlagMask; | |
38 | private int fImageFlagMask; | |
39 | ||
40 | /** | |
41 | * Constructor for AppearanceAwareLabelProvider. | |
42 | * @param textFlags Flags defined in <code>JavaElementLabels</code>. | |
43 | * @param imageFlags Flags defined in <code>JavaElementImageProvider</code>. | |
44 | */ | |
45 | public AppearanceAwareLabelProvider(long textFlags, int imageFlags) { | |
46 | super(textFlags, imageFlags); | |
47 | initMasks(); | |
48 | PreferenceConstants.getPreferenceStore().addPropertyChangeListener(this); | |
49 | PlatformUI.getWorkbench().getEditorRegistry().addPropertyListener(this); | |
50 | } | |
51 | ||
52 | /** | |
53 | * Creates a labelProvider with DEFAULT_TEXTFLAGS and DEFAULT_IMAGEFLAGS | |
54 | */ | |
55 | public AppearanceAwareLabelProvider() { | |
56 | this(DEFAULT_TEXTFLAGS, DEFAULT_IMAGEFLAGS); | |
57 | } | |
58 | ||
59 | private void initMasks() { | |
60 | IPreferenceStore store= PreferenceConstants.getPreferenceStore(); | |
61 | fTextFlagMask= -1; | |
62 | if (!store.getBoolean(PreferenceConstants.APPEARANCE_METHOD_RETURNTYPE)) { | |
63 | fTextFlagMask ^= JavaElementLabels.M_APP_RETURNTYPE; | |
64 | } | |
65 | if (!store.getBoolean(PreferenceConstants.APPEARANCE_METHOD_TYPEPARAMETERS)) { | |
66 | fTextFlagMask ^= JavaElementLabels.M_APP_TYPE_PARAMETERS; | |
67 | } | |
68 | if (!(store.getBoolean(PreferenceConstants.APPEARANCE_COMPRESS_PACKAGE_NAMES) | |
69 | || store.getBoolean(PreferenceConstants.APPEARANCE_ABBREVIATE_PACKAGE_NAMES))) { | |
70 | fTextFlagMask ^= JavaElementLabels.P_COMPRESSED; | |
71 | } | |
72 | if (!store.getBoolean(PreferenceConstants.APPEARANCE_CATEGORY)) { | |
73 | fTextFlagMask ^= JavaElementLabels.ALL_CATEGORY; | |
74 | } | |
75 | ||
76 | fImageFlagMask= -1; | |
77 | } | |
78 | ||
79 | /* | |
80 | * @see IPropertyChangeListener#propertyChange(PropertyChangeEvent) | |
81 | */ | |
82 | public void propertyChange(PropertyChangeEvent event) { | |
83 | String property= event.getProperty(); | |
84 | if (property.equals(PreferenceConstants.APPEARANCE_METHOD_RETURNTYPE) | |
85 | || property.equals(PreferenceConstants.APPEARANCE_METHOD_TYPEPARAMETERS) | |
86 | || property.equals(PreferenceConstants.APPEARANCE_CATEGORY) | |
87 | || property.equals(PreferenceConstants.APPEARANCE_PKG_NAME_PATTERN_FOR_PKG_VIEW) | |
88 | || property.equals(PreferenceConstants.APPEARANCE_COMPRESS_PACKAGE_NAMES) | |
89 | || property.equals(PreferenceConstants.APPEARANCE_PKG_NAME_ABBREVIATION_PATTERN_FOR_PKG_VIEW) | |
90 | || property.equals(PreferenceConstants.APPEARANCE_ABBREVIATE_PACKAGE_NAMES)) { | |
91 | initMasks(); | |
92 | LabelProviderChangedEvent lpEvent= new LabelProviderChangedEvent(this, null); // refresh all | |
93 | fireLabelProviderChanged(lpEvent); | |
94 | } | |
95 | } | |
96 | ||
97 | /* (non-Javadoc) | |
98 | * @see org.eclipse.ui.IPropertyListener#propertyChanged(java.lang.Object, int) | |
99 | */ | |
100 | public void propertyChanged(Object source, int propId) { | |
101 | if (propId == IEditorRegistry.PROP_CONTENTS) { | |
102 | fireLabelProviderChanged(new LabelProviderChangedEvent(this, null)); // refresh all | |
103 | } | |
104 | } | |
105 | ||
106 | /* | |
107 | * @see IBaseLabelProvider#dispose() | |
108 | */ | |
109 | @Override | |
110 | public void dispose() { | |
111 | PreferenceConstants.getPreferenceStore().removePropertyChangeListener(this); | |
112 | PlatformUI.getWorkbench().getEditorRegistry().removePropertyListener(this); | |
113 | super.dispose(); | |
114 | } | |
115 | ||
116 | /* | |
117 | * @see JavaUILabelProvider#evaluateImageFlags() | |
118 | */ | |
119 | @Override | |
120 | protected int evaluateImageFlags(Object element) { | |
121 | return getImageFlags() & fImageFlagMask; | |
122 | } | |
123 | ||
124 | /* | |
125 | * @see JavaUILabelProvider#evaluateTextFlags() | |
126 | */ | |
127 | @Override | |
128 | protected long evaluateTextFlags(Object element) { | |
129 | return getTextFlags() & fTextFlagMask; | |
130 | } | |
131 | ||
132 | public int generated_1130250314055243755(ViewerComparator arg, Object e1, Object e2) { | |
133 | String l1= getText(e1); | |
134 | String l2= getText(e2); | |
135 | return arg.fCollator.compare(l1, l2); | |
136 | } | |
137 | ||
138 | } |