- added handler to exported packages
[taxeditor.git] / eu.etaxonomy.taxeditor.editor / src / main / java / eu / etaxonomy / taxeditor / editor / handler / ShowPherogramHandler.java
index 149e5ceb8b82885fda4a912f642bc7e2332f2167..bfd21414dbbe7bbe419e5779db1f5db7ab1f9d2f 100644 (file)
@@ -1,6 +1,8 @@
 package eu.etaxonomy.taxeditor.editor.handler;\r
 \r
 \r
+import info.bioinfweb.libralign.pherogram.model.PherogramComponentModel;\r
+\r
 import java.net.URI;\r
 \r
 import org.eclipse.core.commands.AbstractHandler;\r
@@ -8,11 +10,13 @@ import org.eclipse.core.commands.ExecutionEvent;
 import org.eclipse.core.commands.ExecutionException;\r
 import org.eclipse.jface.viewers.ISelection;\r
 import org.eclipse.jface.viewers.TreeNode;\r
+import org.eclipse.ui.PartInitException;\r
 import org.eclipse.ui.handlers.HandlerUtil;\r
 \r
 import eu.etaxonomy.cdm.model.media.MediaUtils;\r
 import eu.etaxonomy.cdm.model.molecular.SingleRead;\r
 import eu.etaxonomy.taxeditor.editor.EditorUtil;\r
+import eu.etaxonomy.taxeditor.editor.molecular.AlignmentEditor;\r
 import eu.etaxonomy.taxeditor.editor.molecular.PherogramViewPart;\r
 import eu.etaxonomy.taxeditor.model.MessagingUtils;\r
 \r
@@ -20,29 +24,41 @@ import eu.etaxonomy.taxeditor.model.MessagingUtils;
 \r
 /**\r
  * Displays an undistorted pherogram with {@link PherogramViewPart}.\r
- * \r
+ *\r
  * @author Ben Stöver\r
  *\r
  */\r
 public class ShowPherogramHandler extends AbstractHandler {\r
-       public static void showPherogram(URI uri) {\r
-               try {\r
-                       PherogramViewPart.createView(uri);\r
-               }\r
-               catch (Exception e) {\r
-                       MessagingUtils.errorDialog("Error", null, e.getLocalizedMessage(), "eu.etaxonomy.taxeditor.editor",  //TODO Is null a valid value here? \r
-                                       e, false);  //TODO set pluginID\r
-               }                       \r
+       public static void showPherogram(PherogramComponentModel model) throws PartInitException {\r
+               PherogramViewPart.createView(model);\r
        }\r
-       \r
-       \r
+\r
+\r
        @Override\r
        public Object execute(ExecutionEvent event) throws ExecutionException {\r
                ISelection currentSelection = HandlerUtil.getCurrentSelection(event);\r
                TreeNode treeNodeOfSelection = EditorUtil.getTreeNodeOfSelection(currentSelection);\r
                if (treeNodeOfSelection != null && treeNodeOfSelection.getValue() instanceof SingleRead) {\r
-                       showPherogram(MediaUtils.getFirstMediaRepresentationPart(\r
-                                       ((SingleRead)treeNodeOfSelection.getValue()).getPherogram()).getUri());\r
+                   //TODO Can the parent node (containing the cut positions) be extracted from SingleRead?\r
+                       try {\r
+                           SingleRead singleRead = (SingleRead)treeNodeOfSelection.getValue();\r
+                           URI uri = null;\r
+                           if (singleRead.getPherogram() != null) {  // Pherogram objects without URI are possible.\r
+                               uri = MediaUtils.getFirstMediaRepresentationPart(singleRead.getPherogram()).getUri();\r
+                           }\r
+\r
+                           if (uri == null) {\r
+                       MessagingUtils.messageDialog("No pherogram available", this,\r
+                               "The selected read does not have an associated pherogram.");\r
+                           }\r
+                           else {\r
+                     showPherogram(new PherogramComponentModel(AlignmentEditor.readPherogram(uri)));\r
+                           }\r
+                       }\r
+               catch (Exception e) {\r
+                   MessagingUtils.errorDialog("Error", null, e.getLocalizedMessage(), "eu.etaxonomy.taxeditor.editor",\r
+                           e, false);\r
+               }\r
         }\r
         return null;\r
     }\r