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