X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fappletgui%2FCutAndPasteTransfer.java;h=cbd3b34ac76e3d4c34e2f8af88b0fb9b7f98c169;hb=c19d2a91ca05e052e3408bf5852d88eb5d0608f1;hp=d33e0cce36a8d0da02c0a1dd402d798585d9e39e;hpb=febd250089c9672b66d2c7a5ed0c06e0763c2233;p=jalview.git diff --git a/src/jalview/appletgui/CutAndPasteTransfer.java b/src/jalview/appletgui/CutAndPasteTransfer.java index d33e0cc..cbd3b34 100644 --- a/src/jalview/appletgui/CutAndPasteTransfer.java +++ b/src/jalview/appletgui/CutAndPasteTransfer.java @@ -1,6 +1,6 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) - * Copyright (C) $$Year-Rel$$ The Jalview Authors + * Jalview - A Sequence Alignment Editor and Viewer (Version 2.9.0b2) + * Copyright (C) 2015 The Jalview Authors * * This file is part of Jalview. * @@ -20,33 +20,37 @@ */ package jalview.appletgui; -import java.awt.BorderLayout; -import java.awt.Button; -import java.awt.Dialog; -import java.awt.Font; -import java.awt.Frame; -import java.awt.Label; -import java.awt.Panel; -import java.awt.TextArea; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.MouseEvent; -import java.awt.event.MouseListener; - import jalview.analysis.AlignmentUtils; +import jalview.api.ComplexAlignFile; import jalview.bin.JalviewLite; -import jalview.datamodel.Alignment; import jalview.datamodel.AlignmentI; +import jalview.datamodel.ColumnSelection; import jalview.datamodel.PDBEntry; import jalview.datamodel.SequenceI; import jalview.io.AnnotationFile; import jalview.io.AppletFormatAdapter; +import jalview.io.FileParse; import jalview.io.IdentifyFile; import jalview.io.NewickFile; import jalview.io.TCoffeeScoreFile; +import jalview.json.binding.biojson.v1.ColourSchemeMapper; +import jalview.schemes.ColourSchemeI; import jalview.schemes.TCoffeeColourScheme; import jalview.util.MessageManager; +import java.awt.BorderLayout; +import java.awt.Button; +import java.awt.Dialog; +import java.awt.Font; +import java.awt.Frame; +import java.awt.Label; +import java.awt.Panel; +import java.awt.TextArea; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; + public class CutAndPasteTransfer extends Panel implements ActionListener, MouseListener { @@ -60,6 +64,8 @@ public class CutAndPasteTransfer extends Panel implements ActionListener, AlignFrame alignFrame; + FileParse source = null; + public CutAndPasteTransfer(boolean forImport, AlignFrame alignFrame) { try @@ -163,7 +169,7 @@ public class CutAndPasteTransfer extends Panel implements ActionListener, } else if (alignFrame != null) { - loadAlignment(text, newWindow); + loadAlignment(text, newWindow, alignFrame.getAlignViewport()); } // TODO: dialog should indicate if data was parsed correctly or not - see @@ -199,8 +205,8 @@ public class CutAndPasteTransfer extends Panel implements ActionListener, // TODO: JAL-1102 - should have a warning message in dialog, not simply // overwrite the broken input data with the exception textarea.setText(MessageManager.formatMessage( - "label.could_not_parse_newick_file", new Object[] - { ex.getMessage() })); + "label.could_not_parse_newick_file", + new Object[] { ex.getMessage() })); return false; } return false; @@ -212,16 +218,18 @@ public class CutAndPasteTransfer extends Panel implements ActionListener, * @param text * @param newWindow */ - protected void loadAlignment(String text, boolean newWindow) + protected void loadAlignment(String text, boolean newWindow, + AlignViewport viewport) { - Alignment al = null; + AlignmentI al = null; String format = new IdentifyFile().Identify(text, AppletFormatAdapter.PASTE); + AppletFormatAdapter afa = new AppletFormatAdapter(alignFrame.alignPanel); try { - al = new AppletFormatAdapter().readFile(text, - AppletFormatAdapter.PASTE, format); + al = afa.readFile(text, AppletFormatAdapter.PASTE, format); + source = afa.getAlignFile(); } catch (java.io.IOException ex) { ex.printStackTrace(); @@ -242,8 +250,35 @@ public class CutAndPasteTransfer extends Panel implements ActionListener, } if (newWindow) { - AlignFrame af = new AlignFrame(al, alignFrame.viewport.applet, - "Cut & Paste input - " + format, false); + AlignFrame af; + + if (source instanceof ComplexAlignFile) + { + ColumnSelection colSel = ((ComplexAlignFile) source) + .getColumnSelection(); + SequenceI[] hiddenSeqs = ((ComplexAlignFile) source) + .getHiddenSequences(); + boolean showSeqFeatures = ((ComplexAlignFile) source) + .isShowSeqFeatures(); + String colourSchemeName = ((ComplexAlignFile) source) + .getGlobalColourScheme(); + af = new AlignFrame(al, hiddenSeqs, colSel, + alignFrame.viewport.applet, "Cut & Paste input - " + + format, false); + af.getAlignViewport().setShowSequenceFeatures(showSeqFeatures); + ColourSchemeI cs = ColourSchemeMapper.getJalviewColourScheme( + colourSchemeName, al); + if (cs != null) + { + af.changeColour(cs); + } + } + else + { + af = new AlignFrame(al, alignFrame.viewport.applet, + "Cut & Paste input - " + format, false); + } + af.statusBar .setText(MessageManager .getString("label.successfully_pasted_annotation_to_alignment")); @@ -265,9 +300,10 @@ public class CutAndPasteTransfer extends Panel implements ActionListener, * @param al * @return */ - protected boolean openSplitFrame(Alignment al, String format) + protected boolean openSplitFrame(AlignmentI al, String format) { - final AlignmentI thisAlignment = this.alignFrame.getAlignViewport().getAlignment(); + final AlignmentI thisAlignment = this.alignFrame.getAlignViewport() + .getAlignment(); if (thisAlignment.isNucleotide() == al.isNucleotide()) { // both nucleotide or both protein @@ -275,7 +311,7 @@ public class CutAndPasteTransfer extends Panel implements ActionListener, } AlignmentI protein = thisAlignment.isNucleotide() ? al : thisAlignment; AlignmentI dna = thisAlignment.isNucleotide() ? thisAlignment : al; - boolean mapped = AlignmentUtils.mapProteinToCdna(protein, dna); + boolean mapped = AlignmentUtils.mapProteinAlignmentToCdna(protein, dna); if (!mapped) { return false; @@ -296,13 +332,18 @@ public class CutAndPasteTransfer extends Panel implements ActionListener, dialog.setMainPanel(question); dialog.setVisible(true); dialog.toFront(); - + if (!dialog.accept) { return false; } /* + * 'align' the added alignment to match the current one + */ + al.alignAs(thisAlignment); + + /* * Open SplitFrame with DNA above and protein below, including the alignment * from textbox and a copy of the original. */ @@ -313,8 +354,7 @@ public class CutAndPasteTransfer extends Panel implements ActionListener, AlignFrame newFrame = new AlignFrame(al, alignFrame.viewport.applet, "Cut & Paste input - " + format, false, false); AlignFrame dnaFrame = al.isNucleotide() ? newFrame : copyFrame; - AlignFrame proteinFrame = al.isNucleotide() ? copyFrame - : newFrame; + AlignFrame proteinFrame = al.isNucleotide() ? copyFrame : newFrame; SplitFrame sf = new SplitFrame(dnaFrame, proteinFrame); sf.addToDisplay(false, applet); return true; @@ -333,8 +373,7 @@ public class CutAndPasteTransfer extends Panel implements ActionListener, jalview.io.AppletFormatAdapter.PASTE); if (tcf.isValid()) { - if (tcf.annotateAlignment(alignFrame.viewport.getAlignment(), - true)) + if (tcf.annotateAlignment(alignFrame.viewport.getAlignment(), true)) { alignFrame.tcoffeeColour.setEnabled(true); alignFrame.alignPanel.fontChanged(); @@ -349,8 +388,7 @@ public class CutAndPasteTransfer extends Panel implements ActionListener, // file valid but didn't get added to alignment for some reason alignFrame.statusBar.setText(MessageManager.formatMessage( "label.failed_add_tcoffee_scores", - new Object[] - { (tcf.getWarningMessage() != null ? tcf + new Object[] { (tcf.getWarningMessage() != null ? tcf .getWarningMessage() : "") })); } } @@ -365,8 +403,7 @@ public class CutAndPasteTransfer extends Panel implements ActionListener, if (tcf == null) { if (new AnnotationFile().annotateAlignmentView(alignFrame.viewport, - textarea.getText(), - jalview.io.AppletFormatAdapter.PASTE)) + textarea.getText(), jalview.io.AppletFormatAdapter.PASTE)) { alignFrame.alignPanel.fontChanged(); alignFrame.alignPanel.setScrollValues(0, 0); @@ -401,13 +438,13 @@ public class CutAndPasteTransfer extends Panel implements ActionListener, if (alignFrame.alignPanel.av.applet.jmolAvailable) { - new jalview.appletgui.AppletJmol(pdb, new SequenceI[] - { seq }, null, alignFrame.alignPanel, AppletFormatAdapter.PASTE); + new jalview.appletgui.AppletJmol(pdb, new SequenceI[] { seq }, null, + alignFrame.alignPanel, AppletFormatAdapter.PASTE); } else { - new MCview.AppletPDBViewer(pdb, new SequenceI[] - { seq }, null, alignFrame.alignPanel, AppletFormatAdapter.PASTE); + new MCview.AppletPDBViewer(pdb, new SequenceI[] { seq }, null, + alignFrame.alignPanel, AppletFormatAdapter.PASTE); } }