1 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 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 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
|