Merge branch 'develop' into features/JAL-2110_makeSenseOfCrossRef
authorgmungoc <g.m.carstairs@dundee.ac.uk>
Thu, 2 Jun 2016 14:10:23 +0000 (15:10 +0100)
committergmungoc <g.m.carstairs@dundee.ac.uk>
Thu, 2 Jun 2016 14:10:23 +0000 (15:10 +0100)
1  2 
src/jalview/gui/AlignFrame.java

@@@ -113,7 -113,6 +113,6 @@@ import java.awt.datatransfer.Clipboard
  import java.awt.datatransfer.DataFlavor;
  import java.awt.datatransfer.StringSelection;
  import java.awt.datatransfer.Transferable;
- import java.awt.dnd.DnDConstants;
  import java.awt.dnd.DropTargetDragEvent;
  import java.awt.dnd.DropTargetDropEvent;
  import java.awt.dnd.DropTargetEvent;
@@@ -1314,7 -1313,8 +1313,8 @@@ public class AlignFrame extends GAlignF
  
      if (viewport.hasHiddenColumns() && !settings.isExportHiddenColumns())
      {
-       omitHidden = viewport.getViewAsString(false);
+       omitHidden = viewport.getViewAsString(false,
+               settings.isExportHiddenSequences());
      }
  
      int[] alignmentStartEnd = new int[2];
        alignmentToExport = viewport.getAlignment();
        alignmentStartEnd = viewport.getAlignment()
                .getVisibleStartAndEndIndex(
-                       viewport
-               .getColumnSelection().getHiddenColumns());
+                       viewport.getColumnSelection().getHiddenColumns());
      }
      AlignmentExportData ed = new AlignmentExportData(alignmentToExport,
              omitHidden, alignmentStartEnd, settings);
      return ed;
    }
  
    /**
     * DOCUMENT ME!
     * 
      {
        showProducts.removeAll();
        final boolean dna = viewport.getAlignment().isNucleotide();
 -      String[] ptypes = (selection == null || selection.length == 0) ? null
 -              : CrossRef.findSequenceXrefTypes(dna, selection, dataset);
 +      List<String> ptypes = (selection == null || selection.length == 0) ? null
 +              : CrossRef.findXrefSourcesForSequences(dna, selection, dataset);
  
 -      for (int t = 0; ptypes != null && t < ptypes.length; t++)
 +      for (final String source : ptypes)
        {
          showp = true;
          final AlignFrame af = this;
 -        final String source = ptypes[t];
 -        JMenuItem xtype = new JMenuItem(ptypes[t]);
 +        JMenuItem xtype = new JMenuItem(source);
          xtype.addActionListener(new ActionListener()
          {
 -
            @Override
            public void actionPerformed(ActionEvent e)
            {
              showProductsFor(af.viewport.getSequenceSelection(), dna, source);
            }
 -
          });
          showProducts.add(xtype);
        }
        showProducts.setEnabled(showp);
      } catch (Exception e)
      {
 -      jalview.bin.Cache.log
 +      Cache.log
                .warn("canShowProducts threw an exception - please report to help@jalview.org",
                        e);
        return false;
      return showp;
    }
  
+   /**
+    * Finds and displays cross-references for the selected sequences (protein
+    * products for nucleotide sequences, dna coding sequences for peptides).
+    * 
+    * @param sel
+    *          the sequences to show cross-references for
+    * @param dna
+    *          true if from a nucleotide alignment (so showing proteins)
+    * @param source
+    *          the database to show cross-references for
+    */
    protected void showProductsFor(final SequenceI[] sel, final boolean dna,
            final String source)
    {
                  System.err.println("Failed to make CDS alignment");
                }
                al.getCodonFrames().clear();
-               al.getCodonFrames().addAll(copyAlignment.getCodonFrames());
+               al.addCodonFrames(copyAlignment.getCodonFrames());
+               al.addCodonFrames(cf);
  
                /*
                 * pending getting Embl transcripts to 'align', 
              {
                copyAlignment = AlignmentUtils.makeCopyAlignment(
                        sequenceSelection, xrefs.getSequencesArray());
-               copyAlignment.getCodonFrames().addAll(cf);
+               copyAlignment.addCodonFrames(cf);
+               al.addCodonFrames(copyAlignment.getCodonFrames());
+               al.addCodonFrames(cf);
              }
              copyAlignment.setGapCharacter(AlignFrame.this.viewport
                      .getGapCharacter());
            }
          } catch (Exception e)
          {
-           Cache.log.error(
-                   "Exception when finding crossreferences", e);
+           Cache.log.error("Exception when finding crossreferences", e);
          } catch (OutOfMemoryError e)
          {
            new OOMWarning("whilst fetching crossreferences", e);
          } catch (Throwable e)
          {
-           Cache.log.error("Error when finding crossreferences",
-                   e);
+           Cache.log.error("Error when finding crossreferences", e);
          } finally
          {
            AlignFrame.this.setProgressBar(MessageManager.formatMessage(
                .getString("label.error_when_translating_sequences_submit_bug_report");
        final String errorTitle = MessageManager
                .getString("label.implementation_error")
-               + MessageManager.getString("translation_failed");
+               + MessageManager.getString("label.translation_failed");
        JOptionPane.showMessageDialog(Desktop.desktop, msg, errorTitle,
                JOptionPane.ERROR_MESSAGE);
        return;
    public void drop(DropTargetDropEvent evt)
    {
      Transferable t = evt.getTransferable();
-     java.util.List files = null;
+     java.util.List<String> files = new ArrayList<String>(), protocols = new ArrayList<String>();
  
      try
      {
-       DataFlavor uriListFlavor = new DataFlavor(
-               "text/uri-list;class=java.lang.String");
-       if (t.isDataFlavorSupported(DataFlavor.javaFileListFlavor))
-       {
-         // Works on Windows and MacOSX
-         evt.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE);
-         files = (java.util.List) t
-                 .getTransferData(DataFlavor.javaFileListFlavor);
-       }
-       else if (t.isDataFlavorSupported(uriListFlavor))
-       {
-         // This is used by Unix drag system
-         evt.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE);
-         String data = (String) t.getTransferData(uriListFlavor);
-         files = new java.util.ArrayList(1);
-         for (java.util.StringTokenizer st = new java.util.StringTokenizer(
-                 data, "\r\n"); st.hasMoreTokens();)
-         {
-           String s = st.nextToken();
-           if (s.startsWith("#"))
-           {
-             // the line is a comment (as per the RFC 2483)
-             continue;
-           }
-           java.net.URI uri = new java.net.URI(s);
-           // check to see if we can handle this kind of URI
-           if (uri.getScheme().toLowerCase().startsWith("http"))
-           {
-             files.add(uri.toString());
-           }
-           else
-           {
-             // otherwise preserve old behaviour: catch all for file objects
-             java.io.File file = new java.io.File(uri);
-             files.add(file.toString());
-           }
-         }
-       }
+       Desktop.transferFromDropTarget(files, protocols, evt, t);
      } catch (Exception e)
      {
        e.printStackTrace();
                  AlignFrame.this.setMenusForViewport();
                }
              });
-             dbRefFetcher
-                     .fetchDBRefs(false);
+             dbRefFetcher.fetchDBRefs(false);
            }
          }).start();
  
      try
      {
        Dna dna = new Dna(viewport, viewport.getViewAsVisibleContigs(true));
        al = dna.reverseCdna(complement);
        viewport.addAlignment(al, "");
+       addHistoryItem(new EditCommand(
+               MessageManager.getString("label.add_sequences"),
+               Action.PASTE, al.getSequencesArray(), 0, al.getWidth(),
+               viewport.getAlignment()));
      } catch (Exception ex)
      {
        System.err.println(ex.getMessage());