1 package org.simantics.structural.ui.menuContributions;
\r
3 import org.eclipse.jface.action.Action;
\r
4 import org.eclipse.jface.action.IAction;
\r
5 import org.eclipse.jface.preference.IPreferenceStore;
\r
6 import org.eclipse.jface.util.IPropertyChangeListener;
\r
7 import org.eclipse.jface.util.PropertyChangeEvent;
\r
10 * Clients may extend, but must remember to invoke
\r
11 * @author Tuukka Lehtonen
\r
13 public class PreferenceCheckBoxAction extends Action implements IPropertyChangeListener {
\r
15 protected String preferenceKey;
\r
16 protected IPreferenceStore preferenceStore;
\r
19 * Constructs an action to toggle console auto activation preferences
\r
20 * @param preferenceKey
\r
22 public PreferenceCheckBoxAction(String name, String preferenceKey, IPreferenceStore preferenceStore) {
\r
23 super(name, IAction.AS_CHECK_BOX);
\r
24 this.preferenceKey = preferenceKey;
\r
25 this.preferenceStore = preferenceStore;
\r
26 setToolTipText(name);
\r
27 getPreferenceStore().addPropertyChangeListener(this);
\r
32 * @see org.eclipse.jface.util.IPropertyChangeListener#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
\r
35 public void propertyChange(PropertyChangeEvent event) {
\r
36 String property = event.getProperty();
\r
37 if (property.equals(getKey())) {
\r
42 protected String getKey() {
\r
43 return preferenceKey;
\r
46 private void update() {
\r
47 IPreferenceStore store = getPreferenceStore();
\r
48 if (store.getBoolean(getKey())) {
\r
60 protected IPreferenceStore getPreferenceStore() {
\r
61 return preferenceStore;
\r
65 * @see org.eclipse.jface.action.Action#run()
\r
69 IPreferenceStore store = getPreferenceStore();
\r
70 boolean show = isChecked();
\r
71 store.removePropertyChangeListener(this);
\r
72 store.setValue(getKey(), show);
\r
73 store.addPropertyChangeListener(this);
\r
77 * Must be called to dispose this action.
\r
79 public void dispose() {
\r
80 getPreferenceStore().removePropertyChangeListener(this);
\r