X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAlignFrame.java;h=bfbc969705ac06ca93a534ae3030eb5e63201b04;hb=68ba1a55efa08e12e4381bb0e5bdcb70318e1dd5;hp=e43969613cea03a383f27db88f0d307388b5fcc1;hpb=d953e0e3aa04e00c1d1b8fd94e05c6ba744f8416;p=jalview.git diff --git a/src/jalview/gui/AlignFrame.java b/src/jalview/gui/AlignFrame.java index e439696..bfbc969 100644 --- a/src/jalview/gui/AlignFrame.java +++ b/src/jalview/gui/AlignFrame.java @@ -74,6 +74,7 @@ import jalview.io.JalviewFileView; import jalview.io.JnetAnnotationMaker; import jalview.io.NewickFile; import jalview.io.TCoffeeScoreFile; +import jalview.io.gff.SequenceOntologyI; import jalview.jbgui.GAlignFrame; import jalview.schemes.Blosum62ColourScheme; import jalview.schemes.BuriedColourScheme; @@ -112,7 +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; @@ -131,7 +131,6 @@ import java.awt.print.PageFormat; import java.awt.print.PrinterJob; import java.beans.PropertyChangeEvent; import java.io.File; -import java.lang.reflect.Method; import java.net.URL; import java.util.ArrayList; import java.util.Arrays; @@ -474,7 +473,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, @Override public void focusGained(FocusEvent e) { - Desktop.setCurrentAlignFrame(AlignFrame.this); + Jalview.setCurrentAlignFrame(AlignFrame.this); } }); @@ -922,7 +921,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, .setSelected(av.getGlobalColourScheme() instanceof jalview.schemes.RNAHelicesColour); showProducts.setEnabled(canShowProducts()); - setGroovyEnabled(Desktop.instance.getGroovyConsole() != null); + setGroovyEnabled(Desktop.getGroovyConsole() != null); updateEditMenuBar(); } @@ -1314,7 +1313,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, if (viewport.hasHiddenColumns() && !settings.isExportHiddenColumns()) { - omitHidden = viewport.getViewAsString(false); + omitHidden = viewport.getViewAsString(false, + settings.isExportHiddenSequences()); } int[] alignmentStartEnd = new int[2]; @@ -1325,17 +1325,15 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, else { alignmentToExport = viewport.getAlignment(); - alignmentStartEnd = viewport.getAlignment() - .getVisibleStartAndEndIndex( - viewport - .getColumnSelection().getHiddenColumns()); } + alignmentStartEnd = alignmentToExport + .getVisibleStartAndEndIndex(viewport.getColumnSelection() + .getHiddenColumns()); AlignmentExportData ed = new AlignmentExportData(alignmentToExport, omitHidden, alignmentStartEnd, settings); return ed; } - /** * DOCUMENT ME! * @@ -3641,8 +3639,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, @Override public void mousePressed(MouseEvent evt) { - if (evt.isControlDown() - || SwingUtilities.isRightMouseButton(evt)) + if (evt.isPopupTrigger()) { radioItem.removeActionListener(radioItem.getActionListeners()[0]); @@ -4683,6 +4680,17 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, 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) { @@ -4715,6 +4723,10 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, AlignFrame newFrame = new AlignFrame(al, DEFAULT_WIDTH, DEFAULT_HEIGHT); + if (Cache.getDefault("HIDE_INTRONS", true)) + { + newFrame.hideFeatureColumns(SequenceOntologyI.EXON, false); + } String newtitle = String.format("%s %s %s", MessageManager.getString(dna ? "label.proteins" : "label.nucleotides"), MessageManager @@ -4749,7 +4761,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, 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', @@ -4767,7 +4780,9 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { 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()); @@ -4842,15 +4857,13 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } } 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( @@ -4928,7 +4941,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, .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; @@ -5027,49 +5040,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, public void drop(DropTargetDropEvent evt) { Transferable t = evt.getTransferable(); - java.util.List files = null; + java.util.List files = new ArrayList(), protocols = new ArrayList(); 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(); @@ -5395,7 +5370,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, @Override public void tabbedPane_mousePressed(MouseEvent e) { - if (SwingUtilities.isRightMouseButton(e)) + if (e.isPopupTrigger()) { String msg = MessageManager.getString("label.enter_view_name"); String reply = JOptionPane.showInternalInputDialog(this, msg, msg, @@ -5544,8 +5519,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, AlignFrame.this.setMenusForViewport(); } }); - dbRefFetcher - .fetchDBRefs(false); + dbRefFetcher.fetchDBRefs(false); } }).start(); @@ -6103,9 +6077,12 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, 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()); @@ -6121,20 +6098,13 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, @Override protected void runGroovy_actionPerformed() { - Desktop.setCurrentAlignFrame(this); - Object console = Desktop.instance.getGroovyConsole(); + Jalview.setCurrentAlignFrame(this); + groovy.ui.Console console = Desktop.getGroovyConsole(); if (console != null) { - /* - * use reflection here to avoid compile-time dependency - * on Groovy libraries - */ try { - Class gcClass = getClass().getClassLoader().loadClass( - "groovy.ui.Console"); - Method runScript = gcClass.getMethod("runScript"); - runScript.invoke(console); + console.runScript(); } catch (Exception ex) { System.err.println((ex.toString())); @@ -6151,6 +6121,31 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, System.err.println("Can't run Groovy script as console not found"); } } + + /** + * Hides columns containing (or not containing) a specified feature, provided + * that would not leave all columns hidden + * + * @param featureType + * @param columnsContaining + * @return + */ + public boolean hideFeatureColumns(String featureType, + boolean columnsContaining) + { + boolean notForHiding = avc.markColumnsContainingFeatures( + columnsContaining, false, false, featureType); + if (notForHiding) + { + if (avc.markColumnsContainingFeatures(!columnsContaining, false, + false, featureType)) + { + getViewport().hideSelectedColumns(); + return true; + } + } + return false; + } } class PrintThread extends Thread