// $Id$
/**
* Copyright (C) 2009 EDIT
-* European Distributed Institute of Taxonomy
+* European Distributed Institute of Taxonomy
* http://www.e-taxonomy.eu
-*
+*
* The contents of this file are subject to the Mozilla Public License Version 1.1
* See LICENSE.TXT at the top of this package for the full license terms.
*/
package eu.etaxonomy.taxeditor.editor.definedterm;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.EnumSet;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.action.Separator;
import org.eclipse.swt.SWT;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.actions.CompoundContributionItem;
import org.eclipse.ui.menus.CommandContributionItem;
import org.eclipse.ui.menus.CommandContributionItemParameter;
-import org.eclipse.ui.menus.ExtensionContributionFactory;
-import org.eclipse.ui.menus.IContributionRoot;
-import org.eclipse.ui.services.IServiceLocator;
import eu.etaxonomy.cdm.model.common.TermType;
/**
- * Menu factory used in the store plugin xml to dynamically generate menu (sub-menu) contribution items
+ * Menu used in the store plugin xml to dynamically generate menu (sub-menu) contribution items
* for term types which when clicked open the defined term editor for the chosen term type
- *
- * @author c.mathew
- * @date 18 Jul 2013
+ *
+ * @author pplitzner
+ * @date 21 Jul 2015
*
*/
-public class DefinedTermMenuFactory extends ExtensionContributionFactory {
-
- @Override
- public void createContributionItems(IServiceLocator serviceLocator,
- IContributionRoot additions) {
-
- MenuManager dtMenuManager =
- new MenuManager("Term Editor","eu.etaxonomy.taxeditor.store.definedTermEditorMenu");
-
- dtMenuManager.setVisible(true);
-
- additions.addContributionItem(dtMenuManager, null);
- List<TermType> ttList = new ArrayList<TermType>(EnumSet.allOf(TermType.class));
- Collections.sort(ttList,new SortByTermTypeMessage());
- for (TermType tt : ttList)
- {
- // if term type has a parent, do not add it
- // it will be added in the recursive call
- if(tt.getKindOf() == null) {
- IContributionItem ici = addChildTermsToMenuManager(tt, serviceLocator);
- if(ici != null) {
- dtMenuManager.add(ici);
- }
- }
- }
+public class DefinedTermMenu extends CompoundContributionItem {
+
+
+ @Override
+ protected IContributionItem[] getContributionItems() {
+ Collection<IContributionItem> items = new ArrayList<IContributionItem>();
+ MenuManager dtMenuManager =
+ new MenuManager("Term Editor","eu.etaxonomy.taxeditor.store.definedTermEditorMenu");
+
+ dtMenuManager.setVisible(true);
+
+ items.add(dtMenuManager);
+ List<TermType> ttList = new ArrayList<TermType>(EnumSet.allOf(TermType.class));
+ Collections.sort(ttList,new SortByTermTypeMessage());
+ for (TermType tt : ttList)
+ {
+ // if term type has a parent, do not add it
+ // it will be added in the recursive call
+ if(tt.getKindOf() == null) {
+ IContributionItem ici = addChildTermsToMenuManager(tt);
+ if(ici != null) {
+ dtMenuManager.add(ici);
+ }
+ }
+ }
+ return items.toArray(new IContributionItem[]{});
}
-
- private IContributionItem addChildTermsToMenuManager(TermType termType, IServiceLocator serviceLocator) {
-
+
+ private IContributionItem addChildTermsToMenuManager(TermType termType) {
+
//FIXME : need a better way to find out if a term type can be editable (ticket 3853)
if(termType.getEmptyDefinedTermBase() != null) {
Set<TermType> children = termType.getGeneralizationOf();
// term type has no children, so create menu item
- if(children.isEmpty()) {
- return createMenuItem(termType, serviceLocator);
+ if(children.isEmpty()) {
+ return createMenuItem(termType);
}
- // term type has children, so create sub menu
- MenuManager dtMenuManager =
- new MenuManager(termType.getMessage(),"eu.etaxonomy.taxeditor.store." + termType.getKey() + "Menu");
+ // term type has children, so create sub menu
+ MenuManager dtMenuManager =
+ new MenuManager(termType.getMessage(),"eu.etaxonomy.taxeditor.store." + termType.getKey() + "Menu");
dtMenuManager.setVisible(true);
- dtMenuManager.add(createDefaultMenuItem(termType, serviceLocator));
+ dtMenuManager.add(createDefaultMenuItem(termType));
Separator sep = new Separator();
dtMenuManager.add(sep);
// add child items to the sub menu
- for(TermType tt : children) {
- IContributionItem item = addChildTermsToMenuManager(tt,serviceLocator);
- if(item != null) {
+ for(TermType tt : children) {
+ IContributionItem item = addChildTermsToMenuManager(tt);
+ if(item != null) {
dtMenuManager.add(item);
- }
- }
+ }
+ }
return dtMenuManager;
} else {
return null;
}
-
+
}
-
- private CommandContributionItem createMenuItem(TermType termType, IServiceLocator serviceLocator) {
-
+
+ private CommandContributionItem createMenuItem(TermType termType) {
+
Map<String, String> params = new HashMap<String, String>();
params.put("eu.etaxonomy.taxeditor.store.openDefinedTermEditor.termTypeUuid",
- termType.getUuid().toString());
-
+ termType.getUuid().toString());
+
CommandContributionItemParameter p = new CommandContributionItemParameter(
- serviceLocator,
+ PlatformUI.getWorkbench(),
"",
"eu.etaxonomy.taxeditor.store.openDefinedTermEditor",
params,
null,
termType.getMessage(),
"",
- "",
+ "",
SWT.PUSH,
"",
true);
-
- CommandContributionItem item = new CommandContributionItem(p);
+
+ CommandContributionItem item = new CommandContributionItem(p);
return item;
-
+
}
-
- private CommandContributionItem createDefaultMenuItem(TermType termType, IServiceLocator serviceLocator) {
-
+
+ private CommandContributionItem createDefaultMenuItem(TermType termType) {
+
Map<String, String> params = new HashMap<String, String>();
params.put("eu.etaxonomy.taxeditor.store.openDefinedTermEditor.termTypeUuid",
- termType.getUuid().toString());
-
+ termType.getUuid().toString());
+
CommandContributionItemParameter p = new CommandContributionItemParameter(
- serviceLocator,
+ PlatformUI.getWorkbench(),
"",
"eu.etaxonomy.taxeditor.store.openDefinedTermEditor",
params,
null,
"Other " + termType.getMessage() + "s",
"",
- "",
+ "",
SWT.PUSH,
"",
true);
-
-
-
- CommandContributionItem item = new CommandContributionItem(p);
+
+
+
+ CommandContributionItem item = new CommandContributionItem(p);
return item;
-
+
}
-
+
private class SortByTermTypeMessage implements Comparator<TermType> {
- public int compare(TermType t1, TermType t2) {
+ @Override
+ public int compare(TermType t1, TermType t2) {
return t1.getMessage().compareTo(t2.getMessage());
}
}
-
+
}