DynamicFeatureMenu now truly dynamic, i.e. re-generated every time it is called.
authorp.ciardelli <p.ciardelli@localhost>
Tue, 15 Sep 2009 15:35:49 +0000 (15:35 +0000)
committerp.ciardelli <p.ciardelli@localhost>
Tue, 15 Sep 2009 15:35:49 +0000 (15:35 +0000)
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/descriptiontree/DynamicFeatureMenu.java

index d44a827ac2f7e6b1bb7e94c8efc9e3d147f5222a..51927170a042696eb9bea0036af045bccb1777ca 100644 (file)
@@ -12,15 +12,17 @@ package eu.etaxonomy.taxeditor.editor.descriptiontree;
 
 import org.apache.log4j.Logger;
 import org.eclipse.jface.action.ContributionItem;
+import org.eclipse.jface.action.IContributionItem;
 import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.events.SelectionListener;
 import org.eclipse.swt.widgets.Event;
 import org.eclipse.swt.widgets.Menu;
 import org.eclipse.swt.widgets.MenuItem;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.actions.CompoundContributionItem;
 import org.eclipse.ui.handlers.IHandlerService;
 
 import eu.etaxonomy.cdm.model.description.Feature;
-import eu.etaxonomy.taxeditor.editor.internal.TaxeditorEditorPlugin;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 
 /**
@@ -28,39 +30,42 @@ import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
  * @created 17.04.2009
  * @version 1.0
  */
-public class DynamicFeatureMenu extends ContributionItem {
+public class DynamicFeatureMenu extends CompoundContributionItem {
        private static final Logger logger = Logger
                        .getLogger(DynamicFeatureMenu.class);
-
-       /*
-        * (non-Javadoc)
-        * @see org.eclipse.jface.action.ContributionItem#fill(org.eclipse.swt.widgets.Menu, int)
+       
+       /* (non-Javadoc)
+        * @see org.eclipse.ui.actions.CompoundContributionItem#getContributionItems()
         */
        @Override
-       public void fill(Menu menu, int index){
-               final IHandlerService handlerService = (IHandlerService) TaxeditorEditorPlugin.getDefault().getWorkbench().getService(IHandlerService.class);
-
-
-               for(final Feature feature : PreferencesUtil.getPreferredFeatures()){
-                       MenuItem menuItem = new MenuItem(menu, -1);
-                       menuItem.setText(feature.getLabel());
-                       // TODO no use for menuItem.data?
-                       menuItem.setData(feature);
-                       menuItem.addSelectionListener(new SelectionListener(){
-
-                               public void widgetDefaultSelected(SelectionEvent e) {}
-
-                               public void widgetSelected(SelectionEvent ev) {
-                                       Event event = new Event();
-                                       event.data = feature;
-                                       try {
-                                               handlerService.executeCommand("eu.etaxonomy.taxeditor.editor.description.createDescriptionElement", event);
-                                       } catch (Exception e) {
-                                               logger.error("Error executing command", e);
-                                       }
-                               }                               
-                       });
-               }
+       protected IContributionItem[] getContributionItems() {
                
-       }
-}
+               return new IContributionItem[] {
+                               new ContributionItem() {
+                                       public void fill(Menu menu, int index){
+                                               final IHandlerService handlerService = 
+                                                                               (IHandlerService) PlatformUI.getWorkbench().getService(IHandlerService.class);
+                                               
+                                               for(final Feature feature : PreferencesUtil.getPreferredFeatures()){
+                                                       MenuItem menuItem = new MenuItem(menu, -1);
+                                                       menuItem.setText(feature.getLabel());
+                                                       menuItem.addSelectionListener(new SelectionListener(){
+                               
+                                                               public void widgetDefaultSelected(SelectionEvent e) {}
+                               
+                                                               public void widgetSelected(SelectionEvent ev) {
+                                                                       Event event = new Event();
+                                                                       event.data = feature;
+                                                                       try {
+                                                                               handlerService.executeCommand("eu.etaxonomy.taxeditor.editor.description.createDescriptionElement", event);
+                                                                       } catch (Exception e) {
+                                                                               logger.error("Error executing command", e);
+                                                                       }
+                                                               }                               
+                                                       });
+                                               }                       
+                                       }
+                               }
+               };
+       }       
+}
\ No newline at end of file