From 008510d12595316da6f1f54fdf65811fdf0db2bb Mon Sep 17 00:00:00 2001
From: Patrick Plitzner
Date: Tue, 21 Jul 2015 10:54:16 +0200
Subject: [PATCH 1/1] Disable Termeditor menu if CdmStore is disconnected
---
eu.etaxonomy.taxeditor.store/plugin.xml | 18 +-
.../editor/definedterm/DefinedTermMenu.java | 164 ++++++++++++++++++
2 files changed, 178 insertions(+), 4 deletions(-)
create mode 100644 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/DefinedTermMenu.java
diff --git a/eu.etaxonomy.taxeditor.store/plugin.xml b/eu.etaxonomy.taxeditor.store/plugin.xml
index 85871d6ad..3b026cdf1 100644
--- a/eu.etaxonomy.taxeditor.store/plugin.xml
+++ b/eu.etaxonomy.taxeditor.store/plugin.xml
@@ -393,10 +393,6 @@
-
+
+
+
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/DefinedTermMenu.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/DefinedTermMenu.java
new file mode 100644
index 000000000..4f3e7770f
--- /dev/null
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/DefinedTermMenu.java
@@ -0,0 +1,164 @@
+// $Id$
+/**
+* Copyright (C) 2009 EDIT
+* 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 java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.eclipse.jface.action.IContributionItem;
+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 eu.etaxonomy.cdm.model.common.TermType;
+
+/**
+ * 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 pplitzner
+ * @date 21 Jul 2015
+ *
+ */
+
+public class DefinedTermMenu extends CompoundContributionItem {
+
+
+ @Override
+ protected IContributionItem[] getContributionItems() {
+ Collection items = new ArrayList();
+ MenuManager dtMenuManager =
+ new MenuManager("Term Editor","eu.etaxonomy.taxeditor.store.definedTermEditorMenu");
+
+ dtMenuManager.setVisible(true);
+
+ items.add(dtMenuManager);
+ List ttList = new ArrayList(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) {
+
+ //FIXME : need a better way to find out if a term type can be editable (ticket 3853)
+ if(termType.getEmptyDefinedTermBase() != null) {
+ Set children = termType.getGeneralizationOf();
+ // term type has no children, so create menu item
+ 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");
+ dtMenuManager.setVisible(true);
+ 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);
+ if(item != null) {
+ dtMenuManager.add(item);
+ }
+ }
+ return dtMenuManager;
+ } else {
+ return null;
+ }
+
+ }
+
+ private CommandContributionItem createMenuItem(TermType termType) {
+
+ Map params = new HashMap();
+ params.put("eu.etaxonomy.taxeditor.store.openDefinedTermEditor.termTypeUuid",
+ termType.getUuid().toString());
+
+ CommandContributionItemParameter p = new CommandContributionItemParameter(
+ PlatformUI.getWorkbench(),
+ "",
+ "eu.etaxonomy.taxeditor.store.openDefinedTermEditor",
+ params,
+ null,
+ null,
+ null,
+ termType.getMessage(),
+ "",
+ "",
+ SWT.PUSH,
+ "",
+ true);
+
+ CommandContributionItem item = new CommandContributionItem(p);
+ return item;
+
+ }
+
+ private CommandContributionItem createDefaultMenuItem(TermType termType) {
+
+ Map params = new HashMap();
+ params.put("eu.etaxonomy.taxeditor.store.openDefinedTermEditor.termTypeUuid",
+ termType.getUuid().toString());
+
+ CommandContributionItemParameter p = new CommandContributionItemParameter(
+ PlatformUI.getWorkbench(),
+ "",
+ "eu.etaxonomy.taxeditor.store.openDefinedTermEditor",
+ params,
+ null,
+ null,
+ null,
+ "Other " + termType.getMessage() + "s",
+ "",
+ "",
+ SWT.PUSH,
+ "",
+ true);
+
+
+
+ CommandContributionItem item = new CommandContributionItem(p);
+ return item;
+
+ }
+
+ private class SortByTermTypeMessage implements Comparator {
+ @Override
+ public int compare(TermType t1, TermType t2) {
+ return t1.getMessage().compareTo(t2.getMessage());
+ }
+ }
+
+
+}
--
2.34.1