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
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
\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