X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAlignFrame.java;h=dcb3f44c8879f05b8a6cf56a4cc198a7db4e61bc;hb=2732a03c243a8d57c559e8e33c0e36bcd5d57624;hp=7fbd14f2d72b38d0ffa4c7c91f264c260783ef0c;hpb=783520af519c958e10a2af29f1d4242e1ab890a3;p=jalview.git diff --git a/src/jalview/gui/AlignFrame.java b/src/jalview/gui/AlignFrame.java index 7fbd14f..dcb3f44 100755 --- a/src/jalview/gui/AlignFrame.java +++ b/src/jalview/gui/AlignFrame.java @@ -42,7 +42,7 @@ import jalview.ws.*; * @version $Revision$ */ public class AlignFrame - extends GAlignFrame + extends GAlignFrame implements ClipboardOwner { /** DOCUMENT ME!! */ public static final int NEW_WINDOW_WIDTH = 700; @@ -61,6 +61,7 @@ public class AlignFrame Stack redoList = new Stack(); private int treeCount = 0; + /** * Creates a new AlignFrame object. * @@ -103,8 +104,7 @@ public class AlignFrame al.setDataset(null); } - AlignViewport ds = new AlignViewport(al.getDataset()); - ds.setDataset(true); + AlignViewport ds = new AlignViewport(al.getDataset(), true); AlignmentPanel dap = new AlignmentPanel(this, ds); tabbedPane.add("Dataset", dap); viewports.add(ds); @@ -162,6 +162,16 @@ public class AlignFrame } + + /* + Added so Castor Mapping file can obtain Jalview Version + */ + public String getVersion() + { + return jalview.bin.Cache.getProperty("VERSION"); + } + + /** * DOCUMENT ME! * @@ -175,7 +185,7 @@ public class AlignFrame BufferedReader in = new BufferedReader(new FileReader(file)); SequenceI seq = null; String line, type, desc, token; - UserColourScheme ucs; + int index, start, end; StringTokenizer st; SequenceFeature sf; @@ -185,17 +195,16 @@ public class AlignFrame { lineNo++; st = new StringTokenizer(line, "\t"); - if (st.countTokens() != 7) + if (st.countTokens() == 2) { - System.out.println("Groups file " + file + - " is invalid. Read help file.\nLine: \n" - +lineNo +": "+line); - break; + type = st.nextToken(); + UserColourScheme ucs = new UserColourScheme(st.nextToken()); + fr.setColour(type, ucs.findColour("A")); + continue; } while (st.hasMoreElements()) { - type = st.nextToken(); desc = st.nextToken(); token = st.nextToken(); if (!token.equals("ID_NOT_SPECIFIED")) @@ -211,18 +220,25 @@ public class AlignFrame start = Integer.parseInt(st.nextToken()); end = Integer.parseInt(st.nextToken()); - ucs = new UserColourScheme(st.nextToken()); seq = viewport.alignment.getSequenceAt(index); start = seq.findIndex(start) - 1; end = seq.findIndex(end) - 1; + type = st.nextToken(); + + if (fr.getColour(type) == null) + { + // Probably the old style groups file + UserColourScheme ucs = new UserColourScheme(type); + fr.setColour(type, ucs.findColour("A")); + } + + sf = new SequenceFeature(type, desc, "", start, end); - fr.setColour(type, ucs.findColour("A")); seq.addSequenceFeature(sf); - System.out.println(sf.getType()+" "+sf.getBegin()); // sg = new SequenceGroup(text, ucs, true, true, false, start, end); // sg.addSequence(seq, false); @@ -597,6 +613,12 @@ public class AlignFrame alignPanel.repaint(); } + public void lostOwnership(Clipboard clipboard, Transferable contents) + { + Desktop.jalviewClipboard = null; + } + + /** * DOCUMENT ME! * @@ -606,7 +628,6 @@ public class AlignFrame { if (viewport.getSelectionGroup() == null) { - System.out.println("null here"); return; } @@ -615,7 +636,7 @@ public class AlignFrame Clipboard c = Toolkit.getDefaultToolkit().getSystemClipboard(); Hashtable orderedSeqs = new Hashtable(); - SequenceI [] seqs = new SequenceI[sg.getSize()]; + SequenceI[] seqs = new SequenceI[sg.getSize()]; for (int i = 0; i < sg.getSize(); i++) { @@ -646,7 +667,6 @@ public class AlignFrame } } - //FIND START RES //Returns residue following index if gap startRes = seq.findPosition(sg.getStartRes()); @@ -670,12 +690,21 @@ public class AlignFrame } seqs[i] = new Sequence(seq.getName(), - seq.getSequence(sg.getStartRes(), sg.getEndRes()+1), + seq.getSequence(sg.getStartRes(), sg.getEndRes() + 1), startRes, endRes); + seqs[i].setDescription(seq.getDescription()); + seqs[i].setDBRef(seq.getDBRef()); + seqs[i].setSequenceFeatures(seq.getSequenceFeatures()); + seqs[i].setDatasetSequence(seq.getDatasetSequence()); + } - c.setContents(new StringSelection(new FastaFile().print(seqs)), null); + FastaFile ff = new FastaFile(); + ff.addDBPrefix( viewport.showDBPrefix ); + ff.addJVSuffix( viewport.showJVSuffix ); + c.setContents(new StringSelection( ff.print(seqs)), this); + Desktop.jalviewClipboard = new Object[]{seqs, viewport.alignment.getDataset()}; } /** @@ -722,13 +751,30 @@ public class AlignFrame return; String format = IdentifyFile.Identify(str, "Paste"); - SequenceI[] sequences = new FormatAdapter().readFile(str, "Paste", format); + SequenceI[] sequences; + if(Desktop.jalviewClipboard!=null) + { + // The clipboard was filled from within Jalview, we must use the sequences + // And dataset from the copied alignment + sequences = (SequenceI[])Desktop.jalviewClipboard[0]; + } + else + { + sequences = new FormatAdapter().readFile(str, "Paste", format); + } if (newAlignment) { + Alignment alignment = new Alignment(sequences); - alignment.setDataset( viewport.alignment.getDataset() ); + + if(Desktop.jalviewClipboard!=null) + alignment.setDataset( (Alignment)Desktop.jalviewClipboard[1] ); + else + alignment.setDataset( null ); + + AlignFrame af = new AlignFrame(alignment); String newtitle = new String("Copied sequences"); @@ -748,8 +794,24 @@ public class AlignFrame { //!newAlignment for (int i = 0; i < sequences.length; i++) + { viewport.alignment.addSequence(sequences[i]); + if(sequences[i].getDatasetSequence()==null) + { + //////////////////////////// + //Datset needs extension; + ///////////////////////////// + Sequence ds = new Sequence(sequences[i].getName(), + AlignSeq.extractGaps("-. ", sequences[i].getSequence()), + sequences[i].getStart(), + sequences[i].getEnd()); + sequences[i].setDatasetSequence(ds); + viewport.alignment.getDataset().addSequence(ds); + + + } + } viewport.setEndSeq(viewport.alignment.getHeight()); viewport.alignment.getWidth(); viewport.firePropertyChange("alignment", null, viewport.getAlignment().getSequences()); @@ -1217,14 +1279,23 @@ public class AlignFrame * * @param e DOCUMENT ME! */ - protected void fullSeqId_actionPerformed(ActionEvent e) + protected void seqLimit_actionPerformed(ActionEvent e) + { + viewport.setShowJVSuffix(seqLimits.isSelected()); + + alignPanel.idPanel.idCanvas.setPreferredSize(alignPanel.calculateIdWidth()); + alignPanel.repaint(); + } + + public void seqDBRef_actionPerformed(ActionEvent e) { - viewport.setShowFullId(fullSeqId.isSelected()); + viewport.setShowDBPrefix(seqDBRef.isSelected()); alignPanel.idPanel.idCanvas.setPreferredSize(alignPanel.calculateIdWidth()); alignPanel.repaint(); } + /** * DOCUMENT ME! * @@ -1327,10 +1398,11 @@ public class AlignFrame viewport.showSequenceFeatures(sequenceFeatures.isSelected()); if (viewport.showSequenceFeatures && - ! ( (Alignment) viewport.alignment).featuresAdded) + ! ( (Alignment) viewport.alignment.getDataset()).featuresAdded) { + System.out.println("new fetcher"); new SequenceFeatureFetcher(viewport. - alignment, + alignment, alignPanel); } @@ -1811,7 +1883,7 @@ public class AlignFrame { addHistoryItem(new HistoryItem("ID Sort", viewport.alignment, HistoryItem.SORT)); - AlignmentSorter.sortByID(viewport.getAlignment()); + AlignmentSorter.sortByID(viewport.getAlignment(), viewport.showDBPrefix); alignPanel.repaint(); } @@ -2311,7 +2383,7 @@ public class AlignFrame { SequenceI[] msa = gatherSequencesForAlignment(); new jalview.ws.MsaWSClient(sh, title, msa, - false, true); + false, true, viewport.getAlignment().getDataset()); } @@ -2328,7 +2400,7 @@ public class AlignFrame { SequenceI[] msa = gatherSequencesForAlignment(); new jalview.ws.MsaWSClient(sh, title, msa, - true, true); + true, true, viewport.getAlignment().getDataset()); } @@ -2403,8 +2475,8 @@ public class AlignFrame if (value == JalviewFileChooser.APPROVE_OPTION) { jalview.io.VamsasDatastore vs = new jalview.io.VamsasDatastore(viewport); - vs.store(chooser.getSelectedFile().getAbsolutePath() - ); + //vs.store(chooser.getSelectedFile().getAbsolutePath() ); + vs.storeJalview( chooser.getSelectedFile().getAbsolutePath(), this); } }