KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > terracotta > dso > views > LockLevelAction


1 /*
2  * All content copyright (c) 2003-2006 Terracotta, Inc., except as may otherwise be noted in a separate copyright
3  * notice. All rights reserved.
4  */

5 package org.terracotta.dso.views;
6
7 import org.eclipse.jdt.internal.ui.util.SelectionUtil;
8 import org.eclipse.jface.action.Action;
9 import org.eclipse.jface.action.ActionContributionItem;
10 import org.eclipse.jface.action.IMenuCreator;
11 import org.eclipse.jface.viewers.ISelection;
12 import org.eclipse.jface.viewers.ISelectionProvider;
13 import org.eclipse.swt.widgets.Control;
14 import org.eclipse.swt.widgets.Menu;
15 import org.eclipse.ui.actions.ActionContext;
16
17 import com.terracottatech.config.LockLevel;
18
19 public class LockLevelAction extends Action implements IMenuCreator {
20   ConfigViewPart fPart;
21   Action fRead;
22   Action fWrite;
23   Action fConcurrent;
24   
25   LockLevelAction(ConfigViewPart part) {
26     super("Lock level", AS_DROP_DOWN_MENU);
27     setMenuCreator(this);
28     fPart = part;
29     
30     fRead = new Action("Read", AS_RADIO_BUTTON) {
31       public void run() {
32         if(isChecked()) {
33           LockLevelAction.this.run();
34         }
35       }
36     };
37     fWrite = new Action("Write", AS_RADIO_BUTTON) {
38       public void run() {
39         if(isChecked()) {
40           LockLevelAction.this.run();
41         }
42       }
43     };
44     fConcurrent = new Action("Concurrent", AS_RADIO_BUTTON) {
45       public void run() {
46         if(isChecked()) {
47           LockLevelAction.this.run();
48         }
49       }
50     };
51   }
52   
53   public void run() {
54     fPart.setLockLevel(this);
55   }
56
57   LockLevel.Enum getLevel() {
58     if(fRead.isChecked()) {
59       return LockLevel.READ;
60     } else if(fWrite.isChecked()) {
61       return LockLevel.WRITE;
62     } else {
63       return LockLevel.CONCURRENT;
64     }
65   }
66   
67   public void setContext(ActionContext context) {
68     Object JavaDoc element = SelectionUtil.getSingleElement(getSelection());
69
70     if(element instanceof LockWrapper) {
71       LockWrapper wrapper = (LockWrapper)element;
72       LockLevel level = wrapper.getLevel();
73       
74       fRead.setChecked(level.enumValue() == LockLevel.READ);
75       fWrite.setChecked(level.enumValue() == LockLevel.WRITE);
76       fConcurrent.setChecked(level.enumValue() == LockLevel.CONCURRENT);
77     }
78   }
79
80   public boolean canActionBeAdded() {
81     Object JavaDoc element = SelectionUtil.getSingleElement(getSelection());
82     return element instanceof LockWrapper;
83   }
84   
85   private ISelection getSelection() {
86     ISelectionProvider provider = fPart.getSite().getSelectionProvider();
87
88     if(provider != null) {
89       return provider.getSelection();
90     }
91
92     return null;
93   }
94
95   public void dispose() {
96     /**/
97   }
98
99   private void fillMenu(Menu menu) {
100     ActionContributionItem item;
101     
102     item = new ActionContributionItem(fRead);
103     item.fill(menu, -1);
104
105     item = new ActionContributionItem(fWrite);
106     item.fill(menu, -1);
107
108     item = new ActionContributionItem(fConcurrent);
109     item.fill(menu, -1);
110   }
111   
112   public Menu getMenu(Control parent) {
113     Menu menu = new Menu(parent);
114     fillMenu(menu);
115     return menu;
116   }
117
118   public Menu getMenu(Menu parent) {
119     Menu menu = new Menu(parent);
120     fillMenu(menu);
121     return menu;
122   }
123 }
124
Popular Tags