Merge branch 'develop' into features/r2_11_2_alphafold/JAL-629
authorBen Soares <b.soares@dundee.ac.uk>
Fri, 24 Mar 2023 00:20:30 +0000 (00:20 +0000)
committerBen Soares <b.soares@dundee.ac.uk>
Fri, 24 Mar 2023 00:20:30 +0000 (00:20 +0000)
1  2 
src/jalview/gui/Desktop.java

@@@ -105,6 -105,10 +105,10 @@@ import jalview.api.AlignmentViewPanel
  import jalview.api.structures.JalviewStructureDisplayI;
  import jalview.bin.Cache;
  import jalview.bin.Jalview;
+ import jalview.datamodel.Alignment;
+ import jalview.datamodel.HiddenColumns;
+ import jalview.datamodel.Sequence;
+ import jalview.datamodel.SequenceI;
  import jalview.gui.ImageExporter.ImageWriterI;
  import jalview.gui.QuitHandler.QResponse;
  import jalview.io.BackupFiles;
@@@ -799,6 -803,41 +803,41 @@@ public class Desktop extends jalview.jb
  
    public void paste()
    {
+     // quick patch for JAL-4150 - needs some more work and test coverage
+     // TODO - unify below and AlignFrame.paste()
+     // TODO - write tests and fix AlignFrame.paste() which doesn't track if
+     // clipboard has come from a different alignment window than the one where
+     // paste has been called! JAL-4151
+     
+     if (Desktop.jalviewClipboard != null)
+     {
+       // The clipboard was filled from within Jalview, we must use the
+       // sequences
+       // And dataset from the copied alignment
+       SequenceI[] newseq = (SequenceI[]) Desktop.jalviewClipboard[0];
+       // be doubly sure that we create *new* sequence objects.
+       SequenceI[] sequences = new SequenceI[newseq.length];
+       for (int i = 0; i < newseq.length; i++)
+       {
+         sequences[i] = new Sequence(newseq[i]);
+       }
+       Alignment alignment = new Alignment(sequences);
+       // dataset is inherited
+       alignment.setDataset((Alignment) Desktop.jalviewClipboard[1]);
+       AlignFrame af = new AlignFrame(alignment, AlignFrame.DEFAULT_WIDTH,
+               AlignFrame.DEFAULT_HEIGHT);
+       String newtitle = new String("Copied sequences");
+       if (Desktop.jalviewClipboard[2] != null)
+       {
+         HiddenColumns hc = (HiddenColumns) Desktop.jalviewClipboard[2];
+         af.viewport.setHiddenColumns(hc);
+       }
+       Desktop.addInternalFrame(af, newtitle, AlignFrame.DEFAULT_WIDTH,
+             AlignFrame.DEFAULT_HEIGHT);
+     } else {
      try
      {
        Clipboard c = Toolkit.getDefaultToolkit().getSystemClipboard();
        System.out.println(
                "Unable to paste alignment from system clipboard:\n" + ex);
      }
+     }
    }
  
    /**
      // this will run the shutdownHook but QuitHandler.getQuitResponse() should
      // not run a second time if gotQuitResponse flag has been set (i.e. user
      // confirmed quit of some kind).
 -    System.exit(0);
 +    Jalview.exit("Desktop exiting.", 0);
    }
  
    private void storeLastKnownDimensions(String string, Rectangle jc)