1 package sourceforge.org.qmc2.options.editor.ui.actions;
2 
3 import org.eclipse.jface.viewers.ITreeSelection;
4 import org.eclipse.jface.window.Window;
5 
6 import sourceforge.org.qmc2.options.editor.model.Option;
7 import sourceforge.org.qmc2.options.editor.model.Section;
8 import sourceforge.org.qmc2.options.editor.ui.QMC2Editor;
9 import sourceforge.org.qmc2.options.editor.ui.dialogs.AddOptionDialog;
10 import sourceforge.org.qmc2.options.editor.ui.operations.AddOptionOperation;
11 
12 public class AddOptionAction extends BaseAction {
13 
AddOptionAction(QMC2Editor editor)14 	public AddOptionAction(QMC2Editor editor) {
15 		super(editor);
16 		setText("Add Option...");
17 	}
18 
19 	@Override
run()20 	public void run() {
21 		AddOptionDialog addOptionDialog = new AddOptionDialog(
22 				editor.getShell(), null);
23 		if (addOptionDialog.open() == Window.OK) {
24 			Section selectedSection = getCurrentSection();
25 			AddOptionOperation operation = new AddOptionOperation(editor,
26 					selectedSection, addOptionDialog.getOption());
27 			editor.executeOperation(operation);
28 		}
29 		super.run();
30 	}
31 
getCurrentSection()32 	private Section getCurrentSection() {
33 		Section selectedSection = null;
34 		ITreeSelection selection = (ITreeSelection) editor.getViewer()
35 				.getSelection();
36 		Object element = selection.getFirstElement();
37 		if (element != null) {
38 			selectedSection = (element instanceof Section) ? ((Section) element)
39 					: (Section) ((Option) element).getParent();
40 		}
41 		return selectedSection;
42 	}
43 
44 	@Override
isEnabled()45 	public boolean isEnabled() {
46 		return editor.getTemplateFile() != null;
47 	}
48 }
49