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