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
9 * IBM Corporation - initial API and implementation
10 * Sebastian Davids, sdavids@gmx.de - 187316 [preferences] Mark Occurences Pref Page; Link to
11 *******************************************************************************/
12 package org.eclipse.jdt.internal.ui.preferences;
14 import java.util.ArrayList;
15 import java.util.HashMap;
16 import java.util.Iterator;
19 import org.eclipse.swt.SWT;
20 import org.eclipse.swt.events.SelectionAdapter;
21 import org.eclipse.swt.events.SelectionEvent;
22 import org.eclipse.swt.events.SelectionListener;
23 import org.eclipse.swt.layout.GridData;
24 import org.eclipse.swt.layout.GridLayout;
25 import org.eclipse.swt.widgets.Button;
26 import org.eclipse.swt.widgets.Composite;
27 import org.eclipse.swt.widgets.Control;
28 import org.eclipse.swt.widgets.Label;
29 import org.eclipse.swt.widgets.Link;
31 import org.eclipse.core.runtime.IStatus;
33 import org.eclipse.jface.layout.PixelConverter;
35 import org.eclipse.ui.dialogs.PreferencesUtil;
37 import org.eclipse.ui.texteditor.AnnotationPreference;
39 import org.eclipse.ui.editors.text.EditorsUI;
41 import org.eclipse.jdt.ui.PreferenceConstants;
43 import org.eclipse.jdt.internal.ui.dialogs.StatusInfo;
44 import org.eclipse.jdt.internal.ui.preferences.OverlayPreferenceStore.OverlayKey;
48 * Configures Java Editor hover preferences.
52 class MarkOccurrencesConfigurationBlock implements IPreferenceConfigurationBlock {
54 OverlayPreferenceStore fStore;
57 private Map<Button, String> fCheckBoxes= new HashMap<Button, String>();
58 private SelectionListener fCheckBoxListener= new SelectionListener() {
59 public void widgetDefaultSelected(SelectionEvent e) {
61 public void widgetSelected(SelectionEvent e) {
62 Button button= (Button) e.widget;
63 fStore.setValue(fCheckBoxes.get(button), button.getSelection());
68 * List of master/slave listeners when there's a dependency.
70 * @see #createDependency(Button, String, Control)
73 private ArrayList<SelectionListener> fMasterSlaveListeners= new ArrayList<SelectionListener>();
75 private StatusInfo fStatus;
77 public MarkOccurrencesConfigurationBlock(OverlayPreferenceStore store) {
78 store.generated_9167413225028357301(this);
81 OverlayPreferenceStore.OverlayKey[] createOverlayStoreKeys() {
83 ArrayList<OverlayKey> overlayKeys= new ArrayList<OverlayKey>();
85 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, PreferenceConstants.EDITOR_MARK_OCCURRENCES));
86 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, PreferenceConstants.EDITOR_MARK_TYPE_OCCURRENCES));
87 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, PreferenceConstants.EDITOR_MARK_METHOD_OCCURRENCES));
88 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, PreferenceConstants.EDITOR_MARK_CONSTANT_OCCURRENCES));
89 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, PreferenceConstants.EDITOR_MARK_FIELD_OCCURRENCES));
90 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, PreferenceConstants.EDITOR_MARK_LOCAL_VARIABLE_OCCURRENCES));
91 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, PreferenceConstants.EDITOR_MARK_EXCEPTION_OCCURRENCES));
92 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, PreferenceConstants.EDITOR_MARK_METHOD_EXIT_POINTS));
93 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, PreferenceConstants.EDITOR_MARK_IMPLEMENTORS));
94 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, PreferenceConstants.EDITOR_MARK_BREAK_CONTINUE_TARGETS));
95 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, PreferenceConstants.EDITOR_STICKY_OCCURRENCES));
97 OverlayPreferenceStore.OverlayKey[] keys= new OverlayPreferenceStore.OverlayKey[overlayKeys.size()];
98 overlayKeys.toArray(keys);
103 * Creates page for mark occurrences preferences.
105 * @param parent the parent composite
106 * @return the control for the preference page
108 public Control createControl(final Composite parent) {
110 Composite composite= new Composite(parent, SWT.NONE);
111 GridLayout layout= new GridLayout();
112 layout.numColumns= 1;
113 layout.marginHeight= 0;
114 layout.marginWidth= 0;
115 composite.setLayout(layout);
117 Link link= new Link(composite, SWT.NONE);
118 link.setText(PreferencesMessages.MarkOccurrencesConfigurationBlock_link);
119 link.addSelectionListener(new SelectionAdapter() {
121 public void widgetSelected(SelectionEvent e) {
123 AnnotationPreference preference= EditorsUI.getAnnotationPreferenceLookup().getAnnotationPreference("org.eclipse.jdt.ui.occurrences"); //$NON-NLS-1$
124 if (preference != null)
125 data= preference.getPreferenceLabel();
126 PreferencesUtil.createPreferenceDialogOn(parent.getShell(), e.text, null, data);
130 addFiller(composite);
134 label= PreferencesMessages.MarkOccurrencesConfigurationBlock_markOccurrences;
135 Button master= addCheckBox(composite, label, PreferenceConstants.EDITOR_MARK_OCCURRENCES, 0);
137 addFiller(composite);
139 label= PreferencesMessages.MarkOccurrencesConfigurationBlock_markTypeOccurrences;
140 Button slave= addCheckBox(composite, label, PreferenceConstants.EDITOR_MARK_TYPE_OCCURRENCES, 0);
141 createDependency(master, PreferenceConstants.EDITOR_STICKY_OCCURRENCES, slave);
143 label= PreferencesMessages.MarkOccurrencesConfigurationBlock_markMethodOccurrences;
144 slave= addCheckBox(composite, label, PreferenceConstants.EDITOR_MARK_METHOD_OCCURRENCES, 0);
145 createDependency(master, PreferenceConstants.EDITOR_MARK_METHOD_OCCURRENCES, slave);
147 label= PreferencesMessages.MarkOccurrencesConfigurationBlock_markConstantOccurrences;
148 slave= addCheckBox(composite, label, PreferenceConstants.EDITOR_MARK_CONSTANT_OCCURRENCES, 0);
149 createDependency(master, PreferenceConstants.EDITOR_MARK_CONSTANT_OCCURRENCES, slave);
151 label= PreferencesMessages.MarkOccurrencesConfigurationBlock_markFieldOccurrences;
152 slave= addCheckBox(composite, label, PreferenceConstants.EDITOR_MARK_FIELD_OCCURRENCES, 0);
153 createDependency(master, PreferenceConstants.EDITOR_MARK_FIELD_OCCURRENCES, slave);
155 label= PreferencesMessages.MarkOccurrencesConfigurationBlock_markLocalVariableOccurrences;
156 slave= addCheckBox(composite, label, PreferenceConstants.EDITOR_MARK_LOCAL_VARIABLE_OCCURRENCES, 0);
157 createDependency(master, PreferenceConstants.EDITOR_MARK_LOCAL_VARIABLE_OCCURRENCES, slave);
159 label= PreferencesMessages.MarkOccurrencesConfigurationBlock_markExceptionOccurrences;
160 slave= addCheckBox(composite, label, PreferenceConstants.EDITOR_MARK_EXCEPTION_OCCURRENCES, 0);
161 createDependency(master, PreferenceConstants.EDITOR_MARK_EXCEPTION_OCCURRENCES, slave);
163 label= PreferencesMessages.MarkOccurrencesConfigurationBlock_markMethodExitPoints;
164 slave= addCheckBox(composite, label, PreferenceConstants.EDITOR_MARK_METHOD_EXIT_POINTS, 0);
165 createDependency(master, PreferenceConstants.EDITOR_MARK_METHOD_EXIT_POINTS, slave);
167 label= PreferencesMessages.MarkOccurrencesConfigurationBlock_markImplementors;
168 slave= addCheckBox(composite, label, PreferenceConstants.EDITOR_MARK_IMPLEMENTORS, 0);
169 createDependency(master, PreferenceConstants.EDITOR_MARK_IMPLEMENTORS, slave);
171 label= PreferencesMessages.MarkOccurrencesConfigurationBlock_markBreakContinueTargets;
172 slave= addCheckBox(composite, label, PreferenceConstants.EDITOR_MARK_BREAK_CONTINUE_TARGETS, 0);
173 createDependency(master, PreferenceConstants.EDITOR_MARK_BREAK_CONTINUE_TARGETS, slave);
175 addFiller(composite);
177 label= PreferencesMessages.MarkOccurrencesConfigurationBlock_stickyOccurrences;
178 slave= addCheckBox(composite, label, PreferenceConstants.EDITOR_STICKY_OCCURRENCES, 0);
179 createDependency(master, PreferenceConstants.EDITOR_STICKY_OCCURRENCES, slave);
184 private void addFiller(Composite composite) {
185 PixelConverter pixelConverter= new PixelConverter(composite);
187 Label filler= new Label(composite, SWT.LEFT );
188 GridData gd= new GridData(GridData.HORIZONTAL_ALIGN_FILL);
189 gd.horizontalSpan= 2;
190 gd.heightHint= pixelConverter.convertHeightInCharsToPixels(1) / 2;
191 filler.setLayoutData(gd);
194 private Button addCheckBox(Composite parent, String label, String key, int indentation) {
195 Button checkBox= new Button(parent, SWT.CHECK);
196 checkBox.setText(label);
198 GridData gd= new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
199 gd.horizontalIndent= indentation;
200 gd.horizontalSpan= 2;
201 checkBox.setLayoutData(gd);
202 checkBox.addSelectionListener(fCheckBoxListener);
204 fCheckBoxes.put(checkBox, key);
209 private void createDependency(final Button master, String masterKey, final Control slave) {
211 boolean masterState= fStore.getBoolean(masterKey);
212 slave.setEnabled(masterState);
213 SelectionListener listener= new SelectionListener() {
214 public void widgetSelected(SelectionEvent e) {
215 slave.setEnabled(master.getSelection());
218 public void widgetDefaultSelected(SelectionEvent e) {}
220 master.addSelectionListener(listener);
221 fMasterSlaveListeners.add(listener);
224 private static void indent(Control control) {
225 GridData gridData= new GridData();
226 gridData.horizontalIndent= 10;
227 control.setLayoutData(gridData);
230 public void initialize() {
234 void initializeFields() {
236 Iterator<Button> iter= fCheckBoxes.keySet().iterator();
237 while (iter.hasNext()) {
238 Button b= iter.next();
239 String key= fCheckBoxes.get(b);
240 b.setSelection(fStore.getBoolean(key));
244 Iterator<SelectionListener> iter2= fMasterSlaveListeners.iterator();
245 while (iter2.hasNext()) {
246 SelectionListener listener= iter2.next();
247 listener.widgetSelected(null);
252 public void performOk() {
255 public void performDefaults() {
256 restoreFromPreferences();
260 private void restoreFromPreferences() {
264 IStatus getStatus() {
266 fStatus= new StatusInfo();
271 * @see org.eclipse.jdt.internal.ui.preferences.IPreferenceConfigurationBlock#dispose()
274 public void dispose() {