001: /*******************************************************************************
002: * Copyright (c) 2000, 2007 IBM Corporation and others.
003: * All rights reserved. This program and the accompanying materials
004: * are made available under the terms of the Eclipse Public License v1.0
005: * which accompanies this distribution, and is available at
006: * http://www.eclipse.org/legal/epl-v10.html
007: *
008: * Contributors:
009: * IBM Corporation - initial API and implementation
010: *******************************************************************************/package org.eclipse.jdt.internal.ui.preferences;
011:
012: import org.eclipse.core.runtime.IStatus;
013:
014: import org.eclipse.swt.SWT;
015: import org.eclipse.swt.layout.GridData;
016: import org.eclipse.swt.layout.GridLayout;
017: import org.eclipse.swt.widgets.Composite;
018: import org.eclipse.swt.widgets.Control;
019:
020: import org.eclipse.jface.dialogs.Dialog;
021: import org.eclipse.jface.dialogs.IDialogConstants;
022: import org.eclipse.jface.preference.IPreferenceStore;
023: import org.eclipse.jface.preference.PreferencePage;
024: import org.eclipse.jface.resource.JFaceResources;
025:
026: import org.eclipse.ui.IWorkbench;
027: import org.eclipse.ui.IWorkbenchPreferencePage;
028: import org.eclipse.ui.PlatformUI;
029:
030: import org.eclipse.jdt.ui.PreferenceConstants;
031:
032: import org.eclipse.jdt.internal.ui.IJavaHelpContextIds;
033: import org.eclipse.jdt.internal.ui.JavaPlugin;
034: import org.eclipse.jdt.internal.ui.dialogs.StatusInfo;
035: import org.eclipse.jdt.internal.ui.dialogs.StatusUtil;
036: import org.eclipse.jdt.internal.ui.viewsupport.ColoredViewersManager;
037: import org.eclipse.jdt.internal.ui.wizards.dialogfields.DialogField;
038: import org.eclipse.jdt.internal.ui.wizards.dialogfields.IDialogFieldListener;
039: import org.eclipse.jdt.internal.ui.wizards.dialogfields.LayoutUtil;
040: import org.eclipse.jdt.internal.ui.wizards.dialogfields.SelectionButtonDialogField;
041: import org.eclipse.jdt.internal.ui.wizards.dialogfields.Separator;
042: import org.eclipse.jdt.internal.ui.wizards.dialogfields.StringDialogField;
043:
044: public class AppearancePreferencePage extends PreferencePage implements
045: IWorkbenchPreferencePage {
046:
047: private static final String SHOW_CU_CHILDREN = PreferenceConstants.SHOW_CU_CHILDREN;
048: private static final String PREF_METHOD_RETURNTYPE = PreferenceConstants.APPEARANCE_METHOD_RETURNTYPE;
049: private static final String PREF_METHOD_TYPEPARAMETERS = PreferenceConstants.APPEARANCE_METHOD_TYPEPARAMETERS;
050: private static final String PREF_COMPRESS_PACKAGE_NAMES = PreferenceConstants.APPEARANCE_COMPRESS_PACKAGE_NAMES;
051: private static final String PREF_PKG_NAME_PATTERN_FOR_PKG_VIEW = PreferenceConstants.APPEARANCE_PKG_NAME_PATTERN_FOR_PKG_VIEW;
052: private static final String STACK_BROWSING_VIEWS_VERTICALLY = PreferenceConstants.BROWSING_STACK_VERTICALLY;
053: private static final String PREF_FOLD_PACKAGES_IN_PACKAGE_EXPLORER = PreferenceConstants.APPEARANCE_FOLD_PACKAGES_IN_PACKAGE_EXPLORER;
054: private static final String PREF_CATEGORY = PreferenceConstants.APPEARANCE_CATEGORY;
055: private static final String PREF_COLORED_LABELS = ColoredViewersManager.PREF_COLORED_LABELS;
056:
057: private SelectionButtonDialogField fShowMethodReturnType;
058: private SelectionButtonDialogField fShowCategory;
059: private SelectionButtonDialogField fCompressPackageNames;
060: private SelectionButtonDialogField fStackBrowsingViewsVertically;
061: private SelectionButtonDialogField fShowMembersInPackageView;
062: private StringDialogField fPackageNamePattern;
063: private SelectionButtonDialogField fFoldPackagesInPackageExplorer;
064: private SelectionButtonDialogField fShowMethodTypeParameters;
065: private SelectionButtonDialogField fShowColoredLabels;
066:
067: public AppearancePreferencePage() {
068: setPreferenceStore(JavaPlugin.getDefault().getPreferenceStore());
069: setDescription(PreferencesMessages.AppearancePreferencePage_description);
070:
071: IDialogFieldListener listener = new IDialogFieldListener() {
072: public void dialogFieldChanged(DialogField field) {
073: doDialogFieldChanged(field);
074: }
075: };
076:
077: fShowMethodReturnType = new SelectionButtonDialogField(
078: SWT.CHECK);
079: fShowMethodReturnType.setDialogFieldListener(listener);
080: fShowMethodReturnType
081: .setLabelText(PreferencesMessages.AppearancePreferencePage_methodreturntype_label);
082:
083: fShowMethodTypeParameters = new SelectionButtonDialogField(
084: SWT.CHECK);
085: fShowMethodTypeParameters.setDialogFieldListener(listener);
086: fShowMethodTypeParameters
087: .setLabelText(PreferencesMessages.AppearancePreferencePage_methodtypeparams_label);
088:
089: fShowCategory = new SelectionButtonDialogField(SWT.CHECK);
090: fShowCategory.setDialogFieldListener(listener);
091: fShowCategory
092: .setLabelText(PreferencesMessages.AppearancePreferencePage_showCategory_label);
093:
094: fShowMembersInPackageView = new SelectionButtonDialogField(
095: SWT.CHECK);
096: fShowMembersInPackageView.setDialogFieldListener(listener);
097: fShowMembersInPackageView
098: .setLabelText(PreferencesMessages.AppearancePreferencePage_showMembersInPackagesView);
099:
100: fStackBrowsingViewsVertically = new SelectionButtonDialogField(
101: SWT.CHECK);
102: fStackBrowsingViewsVertically.setDialogFieldListener(listener);
103: fStackBrowsingViewsVertically
104: .setLabelText(PreferencesMessages.AppearancePreferencePage_stackViewsVerticallyInTheJavaBrowsingPerspective);
105:
106: fFoldPackagesInPackageExplorer = new SelectionButtonDialogField(
107: SWT.CHECK);
108: fFoldPackagesInPackageExplorer.setDialogFieldListener(listener);
109: fFoldPackagesInPackageExplorer
110: .setLabelText(PreferencesMessages.AppearancePreferencePage_foldEmptyPackages);
111:
112: fCompressPackageNames = new SelectionButtonDialogField(
113: SWT.CHECK);
114: fCompressPackageNames.setDialogFieldListener(listener);
115: fCompressPackageNames
116: .setLabelText(PreferencesMessages.AppearancePreferencePage_pkgNamePatternEnable_label);
117:
118: fPackageNamePattern = new StringDialogField();
119: fPackageNamePattern.setDialogFieldListener(listener);
120: fPackageNamePattern
121: .setLabelText(PreferencesMessages.AppearancePreferencePage_pkgNamePattern_label);
122:
123: fShowColoredLabels = new SelectionButtonDialogField(SWT.CHECK);
124: fShowColoredLabels.setDialogFieldListener(listener);
125: fShowColoredLabels
126: .setLabelText(PreferencesMessages.AppearancePreferencePage_coloredlabels_label);
127: }
128:
129: private void initFields() {
130: IPreferenceStore prefs = getPreferenceStore();
131: fShowMethodReturnType.setSelection(prefs
132: .getBoolean(PREF_METHOD_RETURNTYPE));
133: fShowMethodTypeParameters.setSelection(prefs
134: .getBoolean(PREF_METHOD_TYPEPARAMETERS));
135: fShowMembersInPackageView.setSelection(prefs
136: .getBoolean(SHOW_CU_CHILDREN));
137: fShowCategory.setSelection(prefs.getBoolean(PREF_CATEGORY));
138: fStackBrowsingViewsVertically.setSelection(prefs
139: .getBoolean(STACK_BROWSING_VIEWS_VERTICALLY));
140: fPackageNamePattern.setText(prefs
141: .getString(PREF_PKG_NAME_PATTERN_FOR_PKG_VIEW));
142: fCompressPackageNames.setSelection(prefs
143: .getBoolean(PREF_COMPRESS_PACKAGE_NAMES));
144: fPackageNamePattern.setEnabled(fCompressPackageNames
145: .isSelected());
146: fFoldPackagesInPackageExplorer.setSelection(prefs
147: .getBoolean(PREF_FOLD_PACKAGES_IN_PACKAGE_EXPLORER));
148:
149: fShowColoredLabels.setSelection(prefs
150: .getBoolean(PREF_COLORED_LABELS));
151: }
152:
153: /*
154: * @see PreferencePage#createControl(Composite)
155: */
156: public void createControl(Composite parent) {
157: super .createControl(parent);
158: PlatformUI.getWorkbench().getHelpSystem().setHelp(getControl(),
159: IJavaHelpContextIds.APPEARANCE_PREFERENCE_PAGE);
160: }
161:
162: /*
163: * @see PreferencePage#createContents(Composite)
164: */
165: protected Control createContents(Composite parent) {
166: initializeDialogUnits(parent);
167: int nColumns = 1;
168:
169: Composite result = new Composite(parent, SWT.NONE);
170: result.setFont(parent.getFont());
171:
172: GridLayout layout = new GridLayout();
173: layout.marginHeight = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_MARGIN);
174: layout.marginWidth = 0;
175: layout.numColumns = nColumns;
176: result.setLayout(layout);
177:
178: fShowMethodReturnType.doFillIntoGrid(result, nColumns);
179: fShowMethodTypeParameters.doFillIntoGrid(result, nColumns);
180: fShowCategory.doFillIntoGrid(result, nColumns);
181: fShowMembersInPackageView.doFillIntoGrid(result, nColumns);
182: fShowColoredLabels.doFillIntoGrid(result, nColumns);
183: fFoldPackagesInPackageExplorer.doFillIntoGrid(result, nColumns);
184:
185: new Separator().doFillIntoGrid(result, nColumns);
186:
187: fCompressPackageNames.doFillIntoGrid(result, nColumns);
188: fPackageNamePattern.doFillIntoGrid(result, 2);
189: LayoutUtil.setHorizontalGrabbing(fPackageNamePattern
190: .getTextControl(null));
191: LayoutUtil
192: .setWidthHint(
193: fPackageNamePattern.getLabelControl(null),
194: convertWidthInCharsToPixels(65));
195:
196: new Separator().doFillIntoGrid(result, nColumns);
197: fStackBrowsingViewsVertically.doFillIntoGrid(result, nColumns);
198:
199: String noteTitle = PreferencesMessages.AppearancePreferencePage_note;
200: String noteMessage = PreferencesMessages.AppearancePreferencePage_preferenceOnlyEffectiveForNewPerspectives;
201: Composite noteControl = createNoteComposite(JFaceResources
202: .getDialogFont(), result, noteTitle, noteMessage);
203: GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
204: gd.horizontalSpan = 2;
205: noteControl.setLayoutData(gd);
206:
207: initFields();
208:
209: Dialog.applyDialogFont(result);
210: return result;
211: }
212:
213: private void doDialogFieldChanged(DialogField field) {
214: if (field == fCompressPackageNames)
215: fPackageNamePattern.setEnabled(fCompressPackageNames
216: .isSelected());
217:
218: updateStatus(getValidationStatus());
219: }
220:
221: private IStatus getValidationStatus() {
222: if (fCompressPackageNames.isSelected()
223: && fPackageNamePattern.getText().equals("")) //$NON-NLS-1$
224: return new StatusInfo(
225: IStatus.ERROR,
226: PreferencesMessages.AppearancePreferencePage_packageNameCompressionPattern_error_isEmpty);
227: else
228: return new StatusInfo();
229: }
230:
231: private void updateStatus(IStatus status) {
232: setValid(!status.matches(IStatus.ERROR));
233: StatusUtil.applyToStatusLine(this , status);
234: }
235:
236: /*
237: * @see IWorkbenchPreferencePage#init(IWorkbench)
238: */
239: public void init(IWorkbench workbench) {
240: }
241:
242: /*
243: * @see IPreferencePage#performOk()
244: */
245: public boolean performOk() {
246: IPreferenceStore prefs = getPreferenceStore();
247: prefs.setValue(PREF_METHOD_RETURNTYPE, fShowMethodReturnType
248: .isSelected());
249: prefs.setValue(PREF_METHOD_TYPEPARAMETERS,
250: fShowMethodTypeParameters.isSelected());
251: prefs.setValue(PREF_CATEGORY, fShowCategory.isSelected());
252: prefs.setValue(SHOW_CU_CHILDREN, fShowMembersInPackageView
253: .isSelected());
254: prefs.setValue(STACK_BROWSING_VIEWS_VERTICALLY,
255: fStackBrowsingViewsVertically.isSelected());
256: prefs.setValue(PREF_PKG_NAME_PATTERN_FOR_PKG_VIEW,
257: fPackageNamePattern.getText());
258: prefs.setValue(PREF_COMPRESS_PACKAGE_NAMES,
259: fCompressPackageNames.isSelected());
260: prefs.setValue(PREF_FOLD_PACKAGES_IN_PACKAGE_EXPLORER,
261: fFoldPackagesInPackageExplorer.isSelected());
262: prefs.setValue(PREF_COLORED_LABELS, fShowColoredLabels
263: .isSelected());
264: JavaPlugin.getDefault().savePluginPreferences();
265: return super .performOk();
266: }
267:
268: /*
269: * @see PreferencePage#performDefaults()
270: */
271: protected void performDefaults() {
272: IPreferenceStore prefs = getPreferenceStore();
273: fShowMethodReturnType.setSelection(prefs
274: .getDefaultBoolean(PREF_METHOD_RETURNTYPE));
275: fShowMethodTypeParameters.setSelection(prefs
276: .getDefaultBoolean(PREF_METHOD_TYPEPARAMETERS));
277: fShowCategory.setSelection(prefs
278: .getDefaultBoolean(PREF_CATEGORY));
279: fShowMembersInPackageView.setSelection(prefs
280: .getDefaultBoolean(SHOW_CU_CHILDREN));
281: fStackBrowsingViewsVertically.setSelection(prefs
282: .getDefaultBoolean(STACK_BROWSING_VIEWS_VERTICALLY));
283: fPackageNamePattern.setText(prefs
284: .getDefaultString(PREF_PKG_NAME_PATTERN_FOR_PKG_VIEW));
285: fCompressPackageNames.setSelection(prefs
286: .getDefaultBoolean(PREF_COMPRESS_PACKAGE_NAMES));
287: fFoldPackagesInPackageExplorer
288: .setSelection(prefs
289: .getDefaultBoolean(PREF_FOLD_PACKAGES_IN_PACKAGE_EXPLORER));
290: fShowColoredLabels.setSelection(prefs
291: .getDefaultBoolean(PREF_COLORED_LABELS));
292: super.performDefaults();
293: }
294: }
|