Moving editor sources back into trunk
[taxeditor.git] / taxeditor-editor / src / main / java / eu / etaxonomy / taxeditor / editor / name / handler / AbstractDynamicConceptRelationMenu.java
1 /**
2 *
3 */
4 package eu.etaxonomy.taxeditor.editor.name.handler;
5
6 import org.apache.log4j.Logger;
7 import org.eclipse.jface.action.ContributionItem;
8 import org.eclipse.swt.events.SelectionEvent;
9 import org.eclipse.swt.events.SelectionListener;
10 import org.eclipse.swt.widgets.Event;
11 import org.eclipse.swt.widgets.Menu;
12 import org.eclipse.swt.widgets.MenuItem;
13 import org.eclipse.ui.handlers.IHandlerService;
14
15 import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;
16 import eu.etaxonomy.taxeditor.editor.internal.TaxeditorEditorPlugin;
17 import eu.etaxonomy.taxeditor.store.CdmStore;
18
19 /**
20 *
21 * @author n.hoffmann
22 * @created 17.04.2009
23 * @version 1.0
24 */
25 public abstract class AbstractDynamicConceptRelationMenu extends ContributionItem {
26 public static Logger logger = Logger.getLogger(AbstractDynamicConceptRelationMenu.class);
27
28 /*
29 * (non-Javadoc)
30 * @see org.eclipse.jface.action.ContributionItem#fill(org.eclipse.swt.widgets.Menu, int)
31 */
32 @Override
33 public void fill(Menu menu, int index){
34 final IHandlerService handlerService = (IHandlerService) TaxeditorEditorPlugin.getDefault().getWorkbench().getService(IHandlerService.class);
35
36 for(final TaxonRelationshipType type : CdmStore.getDefault().getConceptRelationshipTypes()){
37 MenuItem menuItem = new MenuItem(menu, -1);
38 menuItem.setText(type.getLabel());
39 menuItem.setData(type);
40 menuItem.addSelectionListener(new SelectionListener(){
41
42 public void widgetDefaultSelected(SelectionEvent e) {}
43
44 public void widgetSelected(SelectionEvent ev) {
45 Event event = new Event();
46 event.data = type;
47 try {
48 handlerService.executeCommand(getCommandName(), event);
49 } catch (Exception e) {
50 logger.error("Error executing command", e);
51 }
52 }
53 });
54 }
55 }
56
57 public abstract String getCommandName();
58 }