Revision dcf7fd09
Added by Patrick Plitzner almost 6 years ago
eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/editor/e4/handler/ExportSequenceToFileHandlerE4.java | ||
---|---|---|
21 | 21 |
import org.eclipse.e4.core.di.annotations.Optional; |
22 | 22 |
import org.eclipse.e4.ui.model.application.ui.menu.MHandledMenuItem; |
23 | 23 |
import org.eclipse.e4.ui.services.IServiceConstants; |
24 |
import org.eclipse.jface.viewers.IStructuredSelection; |
|
24 | 25 |
import org.eclipse.jface.viewers.TreeNode; |
25 | 26 |
import org.eclipse.jface.wizard.WizardDialog; |
26 | 27 |
import org.eclipse.swt.widgets.Shell; |
... | ... | |
55 | 56 |
|
56 | 57 |
|
57 | 58 |
@Execute |
58 |
public Object execute(@Optional@Named(IServiceConstants.ACTIVE_SELECTION)TreeNode treeNodeOfSelection,
|
|
59 |
public void execute(@Optional@Named(IServiceConstants.ACTIVE_SELECTION)IStructuredSelection selection,
|
|
59 | 60 |
@Named(IServiceConstants.ACTIVE_SHELL)Shell shell) { |
60 |
if (treeNodeOfSelection != null && treeNodeOfSelection.getValue() instanceof Sequence) { |
|
61 |
Sequence sequence = (Sequence)treeNodeOfSelection.getValue(); |
|
62 |
|
|
63 |
final ExportSingleReadAlignmentWizard wizard = new ExportSingleReadAlignmentWizard(); |
|
64 |
final WizardDialog dialog = new WizardDialog(shell, wizard); |
|
65 |
if (dialog.open() == IStatus.OK) { |
|
66 |
// Prepare writer parameters: |
|
67 |
ReadWriteParameterMap parameters = new ReadWriteParameterMap(); |
|
68 |
parameters.put(ReadWriteParameterNames.KEY_APPLICATION_NAME, ApplicationUtil.getTitle()); |
|
69 |
//parameters.put(ReadWriteParameterNames.KEY_APPLICATION_VERSION, ApplicationUtil.getVersion()); // Setting the version unnecessary, since its already contained in the title. |
|
70 |
parameters.put(ReadWriteParameterNames.KEY_APPLICATION_URL, "http://cybertaxonomy.eu/taxeditor/"); //TODO Specify URL obtained from a central class? //$NON-NLS-1$ |
|
71 |
parameters.put(ReadWriteParameterNames.KEY_SEQUENCE_EXTENSION_TOKEN, wizard.getModel().getElongationToken()); |
|
72 |
|
|
73 |
// Create and register object translator for writing pherogram alignment shifts: |
|
74 |
ObjectTranslatorFactory translatorFactory = new ObjectTranslatorFactory(); |
|
75 |
translatorFactory.addXSDTranslators(true); |
|
76 |
translatorFactory.addTranslator(new CDMPherogramAlignmentObjectTranslator(), true, SingleReadAlignmentRDFXMLConstants.DATA_TYPE_PHERORAGM_ALIGNMENT); |
|
77 |
parameters.put(ReadWriteParameterNames.KEY_OBJECT_TRANSLATOR_FACTORY, translatorFactory); |
|
78 |
|
|
79 |
// Create writer and document adapters: |
|
80 |
JPhyloIOEventWriter writer = factory.getWriter(wizard.getModel().getFormatInfo().getFormatID()); |
|
81 |
ListBasedDocumentDataAdapter document = new ListBasedDocumentDataAdapter(); |
|
82 |
document.getMatrices().add(new CDMSequenceMatrixAdapter(sequence, wizard.getModel().getConsensusSequenceLabel(), |
|
83 |
wizard.getModel().isExportConsensusSequence(), wizard.getModel().isExportSingleReads())); |
|
84 |
|
|
85 |
// Write document: |
|
86 |
File file = new File(wizard.getModel().getFileName()); |
|
87 |
if (!file.exists() || MessagingUtils.confirmDialog(Messages.exportSequenceToFileHandlerOverwriteTitle, String.format( |
|
88 |
Messages.exportSequenceToFileHandlerOverwriteText, file.getAbsolutePath()))) { |
|
89 |
|
|
90 |
try { |
|
91 |
writer.writeDocument(document, file, parameters); |
|
92 |
} |
|
93 |
catch (IOException e) { |
|
94 |
e.printStackTrace(); |
|
95 |
MessagingUtils.errorDialog(Messages.exportSequenceToFileHandlerIOErrorTitle, this, |
|
96 |
String.format(Messages.exportSequenceToFileHandlerIOErrorMessage, |
|
97 |
file.getAbsolutePath()), TaxeditorMolecularPlugin.PLUGIN_ID, e, false); |
|
98 |
} |
|
61 |
Sequence sequence = (Sequence) ((TreeNode) selection.getFirstElement()).getValue(); |
|
62 |
|
|
63 |
final ExportSingleReadAlignmentWizard wizard = new ExportSingleReadAlignmentWizard(); |
|
64 |
final WizardDialog dialog = new WizardDialog(shell, wizard); |
|
65 |
if (dialog.open() == IStatus.OK) { |
|
66 |
// Prepare writer parameters: |
|
67 |
ReadWriteParameterMap parameters = new ReadWriteParameterMap(); |
|
68 |
parameters.put(ReadWriteParameterNames.KEY_APPLICATION_NAME, ApplicationUtil.getTitle()); |
|
69 |
//parameters.put(ReadWriteParameterNames.KEY_APPLICATION_VERSION, ApplicationUtil.getVersion()); // Setting the version unnecessary, since its already contained in the title. |
|
70 |
parameters.put(ReadWriteParameterNames.KEY_APPLICATION_URL, "http://cybertaxonomy.eu/taxeditor/"); //TODO Specify URL obtained from a central class? //$NON-NLS-1$ |
|
71 |
parameters.put(ReadWriteParameterNames.KEY_SEQUENCE_EXTENSION_TOKEN, wizard.getModel().getElongationToken()); |
|
72 |
|
|
73 |
// Create and register object translator for writing pherogram alignment shifts: |
|
74 |
ObjectTranslatorFactory translatorFactory = new ObjectTranslatorFactory(); |
|
75 |
translatorFactory.addXSDTranslators(true); |
|
76 |
translatorFactory.addTranslator(new CDMPherogramAlignmentObjectTranslator(), true, SingleReadAlignmentRDFXMLConstants.DATA_TYPE_PHERORAGM_ALIGNMENT); |
|
77 |
parameters.put(ReadWriteParameterNames.KEY_OBJECT_TRANSLATOR_FACTORY, translatorFactory); |
|
78 |
|
|
79 |
// Create writer and document adapters: |
|
80 |
JPhyloIOEventWriter writer = factory.getWriter(wizard.getModel().getFormatInfo().getFormatID()); |
|
81 |
ListBasedDocumentDataAdapter document = new ListBasedDocumentDataAdapter(); |
|
82 |
document.getMatrices().add(new CDMSequenceMatrixAdapter(sequence, wizard.getModel().getConsensusSequenceLabel(), |
|
83 |
wizard.getModel().isExportConsensusSequence(), wizard.getModel().isExportSingleReads())); |
|
84 |
|
|
85 |
// Write document: |
|
86 |
File file = new File(wizard.getModel().getFileName()); |
|
87 |
if (!file.exists() || MessagingUtils.confirmDialog(Messages.exportSequenceToFileHandlerOverwriteTitle, String.format( |
|
88 |
Messages.exportSequenceToFileHandlerOverwriteText, file.getAbsolutePath()))) { |
|
89 |
|
|
90 |
try { |
|
91 |
writer.writeDocument(document, file, parameters); |
|
92 |
} |
|
93 |
catch (IOException e) { |
|
94 |
e.printStackTrace(); |
|
95 |
MessagingUtils.errorDialog(Messages.exportSequenceToFileHandlerIOErrorTitle, this, |
|
96 |
String.format(Messages.exportSequenceToFileHandlerIOErrorMessage, |
|
97 |
file.getAbsolutePath()), TaxeditorMolecularPlugin.PLUGIN_ID, e, false); |
|
99 | 98 |
} |
100 |
|
|
101 | 99 |
} |
100 |
|
|
102 | 101 |
} |
103 |
return null; |
|
104 | 102 |
} |
105 | 103 |
|
106 | 104 |
@CanExecute |
107 |
public boolean canExecute(@Optional @Named(IServiceConstants.ACTIVE_SELECTION) TreeNode selectedTreeNode, MHandledMenuItem menuItem) {
|
|
105 |
public boolean canExecute(@Optional @Named(IServiceConstants.ACTIVE_SELECTION) IStructuredSelection selection, MHandledMenuItem menuItem) {
|
|
108 | 106 |
boolean canExecute = false; |
109 |
if(selectedTreeNode!=null){ |
|
110 |
Object value = selectedTreeNode.getValue(); |
|
111 |
canExecute = value instanceof Sequence; |
|
112 |
} |
|
107 |
canExecute = selection.size()==1 |
|
108 |
&& selection.getFirstElement() instanceof TreeNode |
|
109 |
&& ((TreeNode) selection.getFirstElement()).getValue() instanceof Sequence; |
|
113 | 110 |
menuItem.setVisible(canExecute); |
114 | 111 |
return canExecute; |
115 | 112 |
} |
Also available in: Unified diff
ref #7010 Adapt molecular handlers for multiple selection