Project

General

Profile

« Previous | Next » 

Revision dcf7fd09

Added by Patrick Plitzner almost 6 years ago

ref #7010 Adapt molecular handlers for multiple selection

View differences:

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