Merge branch 'develop' into remoting-4.0
[taxeditor.git] / eu.etaxonomy.taxeditor.editor / src / main / java / eu / etaxonomy / taxeditor / editor / EditorUtil.java
index e87142c40ea62fbe582d74221d87aa1d5b932a1a..d373467b397643aa5c9a8c6e918fb5061c6b51ed 100644 (file)
@@ -24,14 +24,17 @@ import org.eclipse.swt.widgets.Shell;
 import org.eclipse.ui.IEditorInput;
 import org.eclipse.ui.IEditorPart;
 import org.eclipse.ui.IEditorReference;
+import org.eclipse.ui.IWorkbenchPage;
 import org.eclipse.ui.PartInitException;
 import org.eclipse.ui.handlers.HandlerUtil;
 
 import eu.etaxonomy.cdm.api.service.ITaxonService;
+import eu.etaxonomy.cdm.model.common.ITreeNode;
 import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
 import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
+import eu.etaxonomy.cdm.model.taxon.TaxonNode;
 import eu.etaxonomy.taxeditor.editor.group.authority.CdmAuthorityEditor;
 import eu.etaxonomy.taxeditor.editor.group.authority.CdmAuthorityEditorInput;
 import eu.etaxonomy.taxeditor.editor.internal.TaxeditorEditorPlugin;
@@ -386,6 +389,12 @@ public class EditorUtil extends AbstractUtility {
                open(input);
        }
 
+//     public static void openPolytomousKeyEditor(UUID polytomousKeyUuid, String name)
+//             throws Exception {
+//         PolytomousKeyEditorInput input = new PolytomousKeyEditorInput(polytomousKeyUuid, name);
+//         open(input);
+//     }
+
        public static void openCdmAuthorities(UUID groupUuid)
                        throws Exception {
                CdmAuthorityEditorInput input = CdmAuthorityEditorInput.NewInstance(groupUuid);
@@ -455,4 +464,28 @@ public class EditorUtil extends AbstractUtility {
             openTaxonBase(((TaxonBase<?>) object).getUuid());
         }
     }
+
+    public static boolean closeObsoleteEditor(TaxonNode taxonNode, IWorkbenchPage activePage){
+        boolean result = true;
+        for (IEditorReference ref : activePage.getEditorReferences()) {
+            try {
+                String treeIndex = ((ITreeNode)taxonNode).treeIndex();
+
+
+                IEditorInput input = ref.getEditorInput();
+                if (input instanceof TaxonEditorInput) {
+                    TaxonNode node = ((TaxonEditorInput) input).getTaxonNode();
+                    //if node is a child of taxonNode then close the editor
+                    if( ((ITreeNode) node).treeIndex().startsWith(treeIndex)){
+                    //if (taxonNode.equals(node)) {
+                        result &= activePage.closeEditor(ref.getEditor(false), true);
+
+                    }
+                }
+            } catch (PartInitException e) {
+                continue;
+            }
+        }
+        return result;
+    }
 }