]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.structural.ui/src/org/simantics/structural/ui/menuContributions/PreferenceCheckBoxAction.java
Fixed all line endings of the repository
[simantics/platform.git] / bundles / org.simantics.structural.ui / src / org / simantics / structural / ui / menuContributions / PreferenceCheckBoxAction.java
1 package org.simantics.structural.ui.menuContributions;
2
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;
8
9 /**
10  * Clients may extend, but must remember to invoke
11  * @author Tuukka Lehtonen
12  */
13 public class PreferenceCheckBoxAction extends Action implements IPropertyChangeListener {
14
15     protected String preferenceKey;
16     protected IPreferenceStore preferenceStore;
17
18     /**
19      * Constructs an action to toggle console auto activation preferences
20      * @param preferenceKey 
21      */
22     public PreferenceCheckBoxAction(String name, String preferenceKey, IPreferenceStore preferenceStore) {
23         super(name, IAction.AS_CHECK_BOX);
24         this.preferenceKey = preferenceKey;
25         this.preferenceStore = preferenceStore;
26         setToolTipText(name);
27         getPreferenceStore().addPropertyChangeListener(this);
28         update();
29     }
30
31     /* (non-Javadoc)
32      * @see org.eclipse.jface.util.IPropertyChangeListener#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
33      */
34     @Override
35     public void propertyChange(PropertyChangeEvent event) {
36         String property = event.getProperty();
37         if (property.equals(getKey())) {
38             update();
39         }
40     }
41
42     protected String getKey() {
43         return preferenceKey;
44     }
45
46     private void update() {
47         IPreferenceStore store = getPreferenceStore();
48         if (store.getBoolean(getKey())) {
49             // on
50             setChecked(true);
51         } else {
52             // off
53             setChecked(false);
54         }
55     }
56
57     /**
58      * @return
59      */
60     protected IPreferenceStore getPreferenceStore() {
61         return preferenceStore;
62     }
63
64     /* (non-Javadoc)
65      * @see org.eclipse.jface.action.Action#run()
66      */
67     @Override
68     public void run() {
69         IPreferenceStore store = getPreferenceStore();
70         boolean show = isChecked();
71         store.removePropertyChangeListener(this);
72         store.setValue(getKey(), show);
73         store.addPropertyChangeListener(this);
74     }
75
76     /**
77      * Must be called to dispose this action.
78      */
79     public void dispose() {
80         getPreferenceStore().removePropertyChangeListener(this);
81     }
82
83 }