1 package sourceforge.org.qmc2.options.editor; 2 3 import java.util.HashMap; 4 import java.util.Map; 5 6 import org.eclipse.jface.action.IAction; 7 import org.eclipse.jface.action.IContributionItem; 8 import org.eclipse.jface.action.IMenuListener; 9 import org.eclipse.jface.action.IMenuManager; 10 import org.eclipse.jface.action.MenuManager; 11 import org.eclipse.jface.window.ApplicationWindow; 12 import org.eclipse.swt.layout.FillLayout; 13 import org.eclipse.swt.widgets.Composite; 14 import org.eclipse.swt.widgets.Control; 15 import org.eclipse.swt.widgets.Display; 16 import org.eclipse.swt.widgets.Shell; 17 18 import sourceforge.org.qmc2.options.editor.ui.QMC2Editor; 19 import sourceforge.org.qmc2.options.editor.ui.actions.AddLanguageAction; 20 import sourceforge.org.qmc2.options.editor.ui.actions.AddOptionAction; 21 import sourceforge.org.qmc2.options.editor.ui.actions.AddSectionAction; 22 import sourceforge.org.qmc2.options.editor.ui.actions.RedoAction; 23 import sourceforge.org.qmc2.options.editor.ui.actions.RemoveSelectedItemsAction; 24 import sourceforge.org.qmc2.options.editor.ui.actions.SaveAction; 25 import sourceforge.org.qmc2.options.editor.ui.actions.UndoAction; 26 27 public class QMC2EditorApplication extends ApplicationWindow { 28 29 private final Map<String, IMenuManager> menuMap = new HashMap<String, IMenuManager>(); 30 31 public static final String MENU_FILE_ID = "file"; 32 33 public static final String MENU_EDIT_ID = "edit"; 34 QMC2EditorApplication(Shell parentShell)35 public QMC2EditorApplication(Shell parentShell) { 36 super(parentShell); 37 addMenuBar(); 38 create(); 39 getMenuBarManager().updateAll(true); 40 41 } 42 getMenuManager(String id)43 public IMenuManager getMenuManager(String id) { 44 IMenuManager manager = null; 45 for (IContributionItem item : getMenuBarManager().getItems()) { 46 if (item instanceof IMenuManager) { 47 if (item.getId().equals(id)) { 48 manager = (IMenuManager) item; 49 break; 50 } 51 } 52 } 53 return manager; 54 } 55 56 @Override createMenuManager()57 protected MenuManager createMenuManager() { 58 MenuManager manager = super.createMenuManager(); 59 return manager; 60 } 61 62 @Override createContents(Composite parent)63 protected Control createContents(Composite parent) { 64 65 QMC2Editor editor = new QMC2Editor(parent, this); 66 67 createActions(editor); 68 69 return editor; 70 } 71 createActions(QMC2Editor editor)72 private void createActions(QMC2Editor editor) { 73 74 IMenuManager fileMenuManager = new MenuManager("&File", MENU_FILE_ID); 75 fileMenuManager.addMenuListener(new IMenuListener() { 76 @Override 77 public void menuAboutToShow(IMenuManager manager) { 78 manager.update(IAction.ENABLED); 79 } 80 }); 81 IMenuManager editMenuManager = new MenuManager("&Edit", MENU_EDIT_ID); 82 editMenuManager.addMenuListener(new IMenuListener() { 83 @Override 84 public void menuAboutToShow(IMenuManager manager) { 85 manager.update(IAction.ENABLED); 86 } 87 }); 88 89 fileMenuManager.add(new SaveAction(editor)); 90 editMenuManager.add(new UndoAction(editor)); 91 editMenuManager.add(new RedoAction(editor)); 92 editMenuManager.add(new AddLanguageAction(editor)); 93 editMenuManager.add(new AddSectionAction(editor)); 94 editMenuManager.add(new AddOptionAction(editor)); 95 editMenuManager.add(new RemoveSelectedItemsAction(editor)); 96 97 menuMap.put(MENU_FILE_ID, fileMenuManager); 98 menuMap.put(MENU_EDIT_ID, editMenuManager); 99 getMenuBarManager().add(fileMenuManager); 100 getMenuBarManager().add(editMenuManager); 101 } 102 103 /** 104 * @param args 105 */ main(String[] args)106 public static void main(String[] args) { 107 Display display = new Display(); 108 Shell shell = new Shell(display); 109 shell.setLayout(new FillLayout()); 110 ApplicationWindow window = new QMC2EditorApplication(shell); 111 window.setBlockOnOpen(true); 112 window.getShell().setSize(800, 600); 113 window.getShell().setText("QMC2 Options Editor"); 114 window.open(); 115 } 116 117 } 118