X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAlignFrame.java;h=8672dec0e38b7837f7f75d886a25175512f2ad05;hb=49bb27409f71165b4d2daa6c38142a6466bb3946;hp=ba112b85781dbd6ac2791d92bb9869226131f36f;hpb=f149a335b5467a4802eded5da0ca2fc732d7caf7;p=jalview.git diff --git a/src/jalview/gui/AlignFrame.java b/src/jalview/gui/AlignFrame.java index ba112b8..8672dec 100755 --- a/src/jalview/gui/AlignFrame.java +++ b/src/jalview/gui/AlignFrame.java @@ -1,18 +1,18 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer (Version 2.6) - * Copyright (C) 2010 J Procter, AM Waterhouse, G Barton, M Clamp, S Searle - * + * Jalview - A Sequence Alignment Editor and Viewer (Version 2.7) + * Copyright (C) 2011 J Procter, AM Waterhouse, J Engelhardt, LM Lui, G Barton, M Clamp, S Searle + * * This file is part of Jalview. - * + * * Jalview is free software: you can redistribute it and/or - * modify it under the terms of the GNU General Public License + * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - * - * Jalview is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * + * Jalview is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. - * + * * You should have received a copy of the GNU General Public License along with Jalview. If not, see . */ package jalview.gui; @@ -55,6 +55,7 @@ import jalview.io.JalviewFileChooser; import jalview.io.JalviewFileView; import jalview.io.JnetAnnotationMaker; import jalview.io.NewickFile; +import jalview.io.TCoffeeScoreFile; import jalview.jbgui.GAlignFrame; import jalview.schemes.Blosum62ColourScheme; import jalview.schemes.BuriedColourScheme; @@ -65,15 +66,18 @@ import jalview.schemes.HelixColourScheme; import jalview.schemes.HydrophobicColourScheme; import jalview.schemes.NucleotideColourScheme; import jalview.schemes.PIDColourScheme; +import jalview.schemes.PurinePyrimidineColourScheme; +import jalview.schemes.RNAHelicesColourChooser; import jalview.schemes.ResidueProperties; import jalview.schemes.StrandColourScheme; +import jalview.schemes.TCoffeeColourScheme; import jalview.schemes.TaylorColourScheme; import jalview.schemes.TurnColourScheme; import jalview.schemes.UserColourScheme; import jalview.schemes.ZappoColourScheme; -import jalview.ws.WSMenuEntryProviderI; import jalview.ws.jws1.Discoverer; import jalview.ws.jws2.Jws2Discoverer; +import jalview.ws.seqfetcher.DbSourceProxy; import java.awt.BorderLayout; import java.awt.Color; @@ -104,6 +108,7 @@ import java.net.URL; import java.util.ArrayList; import java.util.Enumeration; import java.util.Hashtable; +import java.util.List; import java.util.Vector; import javax.swing.JButton; @@ -122,7 +127,7 @@ import javax.swing.SwingUtilities; /** * DOCUMENT ME! - * + * * @author $author$ * @version $Revision$ */ @@ -154,7 +159,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * Creates a new AlignFrame object with specific width and height. - * + * * @param al * @param width * @param height @@ -167,7 +172,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * Creates a new AlignFrame object with specific width, height and * sequenceSetId - * + * * @param al * @param width * @param height @@ -182,7 +187,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * Creates a new AlignFrame object with specific width, height and * sequenceSetId - * + * * @param al * @param width * @param height @@ -197,7 +202,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * new alignment window with hidden columns - * + * * @param al * AlignmentI * @param hiddenColumns @@ -216,7 +221,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * Create alignment frame for al with hiddenColumns, a specific width and * height, and specific sequenceId - * + * * @param al * @param hiddenColumns * @param width @@ -233,7 +238,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * Create alignment frame for al with hiddenColumns, a specific width and * height, and specific sequenceId - * + * * @param al * @param hiddenColumns * @param width @@ -262,7 +267,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * Make a new AlignFrame from exisiting alignmentPanels - * + * * @param ap * AlignmentPanel * @param av @@ -282,7 +287,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, */ void init() { - if (viewport.conservation == null) + if (viewport.getAlignmentConservationAnnotation() == null) { BLOSUM62Colour.setEnabled(false); conservationMenuItem.setEnabled(false); @@ -308,7 +313,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { this.setDropTarget(new java.awt.dnd.DropTarget(this, this)); addServiceListeners(); - setGUINucleotide(viewport.alignment.isNucleotide()); + setGUINucleotide(viewport.getAlignment().isNucleotide()); } setMenusFromViewport(viewport); @@ -330,7 +335,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * Change the filename and format for the alignment, and enable the 'reload' * button functionality. - * + * * @param file * valid filename * @param format @@ -347,6 +352,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { addKeyListener(new KeyAdapter() { + @Override public void keyPressed(KeyEvent evt) { if (viewport.cursorMode @@ -402,6 +408,17 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } break; + // case KeyEvent.VK_A: + // if (viewport.cursorMode) + // { + // alignPanel.seqPanel.insertNucAtCursor(false,"A"); + // //System.out.println("A"); + // } + // break; + /* + * case KeyEvent.VK_CLOSE_BRACKET: if (viewport.cursorMode) { + * System.out.println("closing bracket"); } break; + */ case KeyEvent.VK_DELETE: case KeyEvent.VK_BACK_SPACE: if (!viewport.cursorMode) @@ -516,6 +533,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } } + @Override public void keyReleased(KeyEvent evt) { switch (evt.getKeyCode()) @@ -568,12 +586,13 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, if (newPanel) { - if (ap.av.padGaps) + if (ap.av.isPadGaps()) { - ap.av.alignment.padGaps(); + ap.av.getAlignment().padGaps(); } ap.av.updateConservation(ap); ap.av.updateConsensus(ap); + ap.av.updateStrucConsensus(ap); } } @@ -599,6 +618,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, Desktop.instance.addJalviewPropertyChangeListener("services", thisListener = new java.beans.PropertyChangeListener() { + @Override public void propertyChange(PropertyChangeEvent evt) { // // System.out.println("Discoverer property change."); @@ -607,6 +627,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, SwingUtilities.invokeLater(new Runnable() { + @Override public void run() { System.err @@ -620,6 +641,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, }); addInternalFrameListener(new javax.swing.event.InternalFrameAdapter() { + @Override public void internalFrameClosed( javax.swing.event.InternalFrameEvent evt) { @@ -632,6 +654,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, // Finally, build the menu once to get current service state new Thread(new Runnable() { + @Override public void run() { BuildWebServiceMenu(); @@ -645,11 +668,14 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, conservationMenuItem.setEnabled(!nucleotide); modifyConservation.setEnabled(!nucleotide); showGroupConservation.setEnabled(!nucleotide); + rnahelicesColour.setEnabled(nucleotide); + purinePyrimidineColour.setEnabled(nucleotide); // Remember AlignFrame always starts as protein - if (!nucleotide) - { - calculateMenu.remove(calculateMenu.getItemCount() - 2); - } + // if (!nucleotide) + // { + // showTr + // calculateMenu.remove(calculateMenu.getItemCount() - 2); + // } } /** @@ -665,13 +691,13 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * Need to call this method when tabs are selected for multiple views, or when * loading from Jalview2XML.java - * + * * @param av * AlignViewport */ void setMenusFromViewport(AlignViewport av) { - padGapsMenuitem.setSelected(av.padGaps); + padGapsMenuitem.setSelected(av.isPadGaps()); colourTextMenuItem.setSelected(av.showColourText); abovePIDThreshold.setSelected(av.getAbovePIDThreshold()); conservationMenuItem.setSelected(av.getConservationSelected()); @@ -686,32 +712,41 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, annotationPanelMenuItem.setState(av.showAnnotation); viewBoxesMenuItem.setSelected(av.showBoxes); viewTextMenuItem.setSelected(av.showText); - showNonconservedMenuItem.setSelected(av.showUnconserved); - showGroupConsensus.setSelected(av.showGroupConsensus); - showGroupConservation.setSelected(av.showGroupConservation); - showConsensusHistogram.setSelected(av.showConsensusHistogram); - showSequenceLogo.setSelected(av.showSequenceLogo); + showNonconservedMenuItem.setSelected(av.getShowUnconserved()); + showGroupConsensus.setSelected(av.isShowGroupConsensus()); + showGroupConservation.setSelected(av.isShowGroupConservation()); + showConsensusHistogram.setSelected(av.isShowConsensusHistogram()); + showSequenceLogo.setSelected(av.isShowSequenceLogo()); + normaliseSequenceLogo.setSelected(av.isNormaliseSequenceLogo()); + setColourSelected(ColourSchemeProperty.getColourName(av .getGlobalColourScheme())); showSeqFeatures.setSelected(av.showSequenceFeatures); hiddenMarkers.setState(av.showHiddenMarkers); - applyToAllGroups.setState(av.colourAppliesToAllGroups); + applyToAllGroups.setState(av.getColourAppliesToAllGroups()); showNpFeatsMenuitem.setSelected(av.isShowNpFeats()); showDbRefsMenuitem.setSelected(av.isShowDbRefs()); - + autoCalculate.setSelected(av.autoCalculateConsensus); + sortByTree.setSelected(av.sortByTree); + listenToViewSelections.setSelected(av.followSelection); + rnahelicesColour.setEnabled(av.getAlignment().hasRNAStructure()); + rnahelicesColour + .setSelected(av.getGlobalColourScheme() instanceof jalview.schemes.RNAHelicesColour); setShowProductsEnabled(); updateEditMenuBar(); } - + // methods for implementing IProgressIndicator + // need to refactor to a reusable stub class Hashtable progressBars, progressBarHandlers; /* * (non-Javadoc) - * + * * @see jalview.gui.IProgressIndicator#setProgressBar(java.lang.String, long) */ + @Override public void setProgressBar(String message, long id) { if (progressBars == null) @@ -759,6 +794,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, validate(); } + @Override public void registerHandler(final long id, final IProgressIndicatorHandler handler) { @@ -776,6 +812,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, cancel.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { handler.cancelActivity(id); @@ -790,9 +827,10 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } /** - * + * * @return true if any progress bars are still active */ + @Override public boolean operationInProgress() { if (progressBars != null && progressBars.size() > 0) @@ -815,20 +853,25 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, return alignPanel.seqPanel.seqCanvas.getFeatureRenderer(); } + @Override public void fetchSequence_actionPerformed(ActionEvent e) { new SequenceFetcher(this); } + @Override public void addFromFile_actionPerformed(ActionEvent e) { Desktop.instance.inputLocalFileMenuItem_actionPerformed(viewport); } + @Override public void reload_actionPerformed(ActionEvent e) { if (fileName != null) { + // TODO: JAL-1108 - ensure all associated frames are closed regardless of + // originating file's format // TODO: work out how to recover feature settings for correct view(s) when // file is reloaded. if (currentFileFormat.equals("Jalview")) @@ -874,6 +917,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, final FeatureSettings nfs = newframe.featureSettings; SwingUtilities.invokeLater(new Runnable() { + @Override public void run() { nfs.frame.setBounds(fspos); @@ -887,16 +931,19 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } } + @Override public void addFromText_actionPerformed(ActionEvent e) { Desktop.instance.inputTextboxMenuItem_actionPerformed(viewport); } + @Override public void addFromURL_actionPerformed(ActionEvent e) { Desktop.instance.inputURLMenuItem_actionPerformed(viewport); } + @Override public void save_actionPerformed(ActionEvent e) { if (fileName == null @@ -914,10 +961,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * DOCUMENT ME! - * + * * @param e * DOCUMENT ME! */ + @Override public void saveAs_actionPerformed(ActionEvent e) { JalviewFileChooser chooser = new JalviewFileChooser( @@ -992,7 +1040,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, String[] omitHidden = null; - if (viewport.hasHiddenColumns) + if (viewport.hasHiddenColumns()) { int reply = JOptionPane .showInternalConfirmDialog( @@ -1009,10 +1057,12 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } } FormatAdapter f = new FormatAdapter(); - String output = f.formatSequences(format, - (Alignment) viewport.alignment, // class cast exceptions will + String output = f.formatSequences( + format, + viewport.getAlignment(), // class cast exceptions will // occur in the distant future - omitHidden, f.getCacheSuffixDefault(format), viewport.colSel); + omitHidden, f.getCacheSuffixDefault(format), + viewport.getColumnSelection()); if (output == null) { @@ -1064,15 +1114,16 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * DOCUMENT ME! - * + * * @param e * DOCUMENT ME! */ + @Override protected void outputText_actionPerformed(ActionEvent e) { String[] omitHidden = null; - if (viewport.hasHiddenColumns) + if (viewport.hasHiddenColumns()) { int reply = JOptionPane .showInternalConfirmDialog( @@ -1095,7 +1146,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, try { cap.setText(new FormatAdapter().formatSequences(e.getActionCommand(), - viewport.alignment, omitHidden, viewport.colSel)); + viewport.getAlignment(), omitHidden, + viewport.getColumnSelection())); Desktop.addInternalFrame(cap, "Alignment output - " + e.getActionCommand(), 600, 500); } catch (OutOfMemoryError oom) @@ -1108,10 +1160,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * DOCUMENT ME! - * + * * @param e * DOCUMENT ME! */ + @Override protected void htmlMenuItem_actionPerformed(ActionEvent e) { new HTMLOutput(alignPanel, @@ -1126,10 +1179,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * DOCUMENT ME! - * + * * @param e * DOCUMENT ME! */ + @Override public void createPNG(File f) { alignPanel.makePNG(f); @@ -1137,15 +1191,17 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * DOCUMENT ME! - * + * * @param e * DOCUMENT ME! */ + @Override public void createEPS(File f) { alignPanel.makeEPS(f); } + @Override public void pageSetup_actionPerformed(ActionEvent e) { PrinterJob printJob = PrinterJob.getPrinterJob(); @@ -1154,10 +1210,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * DOCUMENT ME! - * + * * @param e * DOCUMENT ME! */ + @Override public void printMenuItem_actionPerformed(ActionEvent e) { // Putting in a thread avoids Swing painting problems @@ -1165,21 +1222,23 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, thread.start(); } + @Override public void exportFeatures_actionPerformed(ActionEvent e) { new AnnotationExporter().exportFeatures(alignPanel); } + @Override public void exportAnnotations_actionPerformed(ActionEvent e) { - new AnnotationExporter().exportAnnotations( - alignPanel, - viewport.showAnnotation ? viewport.alignment - .getAlignmentAnnotation() : null, viewport.alignment - .getGroups(), - ((Alignment) viewport.alignment).alignmentProperties); + new AnnotationExporter().exportAnnotations(alignPanel, + viewport.showAnnotation ? viewport.getAlignment() + .getAlignmentAnnotation() : null, viewport + .getAlignment().getGroups(), ((Alignment) viewport + .getAlignment()).alignmentProperties); } + @Override public void associatedData_actionPerformed(ActionEvent e) { // Pick the tree file @@ -1203,9 +1262,10 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * Close the current view or all views in the alignment frame. If the frame * only contains one view then the alignment will be removed from memory. - * + * * @param closeAllTabs */ + @Override public void closeMenuItem_actionPerformed(boolean closeAllTabs) { if (alignPanels != null && alignPanels.size() < 2) @@ -1248,7 +1308,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * close alignPanel2 and shuffle tabs appropriately. - * + * * @param alignPanel2 */ public void closeView(AlignmentPanel alignPanel2) @@ -1315,14 +1375,16 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, viewport.historyList.push(command); viewport.redoList.clear(); updateEditMenuBar(); - viewport.hasHiddenColumns = (viewport.colSel != null - && viewport.colSel.getHiddenColumns() != null && viewport.colSel - .getHiddenColumns().size() > 0); + viewport.updateHiddenColumns(); + // viewport.hasHiddenColumns = (viewport.getColumnSelection() != null + // && viewport.getColumnSelection().getHiddenColumns() != null && + // viewport.getColumnSelection() + // .getHiddenColumns().size() > 0); } } /** - * + * * @return alignment objects for all views */ AlignmentI[] getViewAlignments() @@ -1340,17 +1402,18 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, if (viewport != null) { return new AlignmentI[] - { viewport.alignment }; + { viewport.getAlignment() }; } return null; } /** * DOCUMENT ME! - * + * * @param e * DOCUMENT ME! */ + @Override protected void undoMenuItem_actionPerformed(ActionEvent e) { if (viewport.historyList.empty()) @@ -1364,20 +1427,29 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, if (originalSource != null) { - originalSource.hasHiddenColumns = (viewport.colSel != null - && viewport.colSel.getHiddenColumns() != null && viewport.colSel - .getHiddenColumns().size() > 0); - originalSource.firePropertyChange("alignment", null, - originalSource.alignment.getSequences()); + if (originalSource != viewport) + { + Cache.log + .warn("Implementation worry: mismatch of viewport origin for undo"); + } + originalSource.updateHiddenColumns(); + // originalSource.hasHiddenColumns = (viewport.getColumnSelection() != + // null + // && viewport.getColumnSelection().getHiddenColumns() != null && + // viewport.getColumnSelection() + // .getHiddenColumns().size() > 0); + originalSource.firePropertyChange("alignment", null, originalSource + .getAlignment().getSequences()); } } /** * DOCUMENT ME! - * + * * @param e * DOCUMENT ME! */ + @Override protected void redoMenuItem_actionPerformed(ActionEvent e) { if (viewport.redoList.size() < 1) @@ -1394,11 +1466,20 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, if (originalSource != null) { - originalSource.hasHiddenColumns = (viewport.colSel != null - && viewport.colSel.getHiddenColumns() != null && viewport.colSel - .getHiddenColumns().size() > 0); - originalSource.firePropertyChange("alignment", null, - originalSource.alignment.getSequences()); + + if (originalSource != viewport) + { + Cache.log + .warn("Implementation worry: mismatch of viewport origin for redo"); + } + originalSource.updateHiddenColumns(); + // originalSource.hasHiddenColumns = (viewport.getColumnSelection() != + // null + // && viewport.getColumnSelection().getHiddenColumns() != null && + // viewport.getColumnSelection() + // .getHiddenColumns().size() > 0); + originalSource.firePropertyChange("alignment", null, originalSource + .getAlignment().getSequences()); } } @@ -1420,7 +1501,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { if (comps.elementAt(i) instanceof AlignmentPanel) { - if (al == ((AlignmentPanel) comps.elementAt(i)).av.alignment) + if (al == ((AlignmentPanel) comps.elementAt(i)).av.getAlignment()) { originalSource = ((AlignmentPanel) comps.elementAt(i)).av; break; @@ -1435,7 +1516,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, // the current view against the closed view first if (al != null) { - PaintRefresher.validateSequences(al, viewport.alignment); + PaintRefresher.validateSequences(al, viewport.getAlignment()); } originalSource = viewport; @@ -1446,7 +1527,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * DOCUMENT ME! - * + * * @param up * DOCUMENT ME! */ @@ -1458,69 +1539,24 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { return; } - - if (up) - { - for (int i = 1; i < viewport.alignment.getHeight(); i++) - { - SequenceI seq = viewport.alignment.getSequenceAt(i); - - if (!sg.getSequences(null).contains(seq)) - { - continue; - } - - SequenceI temp = viewport.alignment.getSequenceAt(i - 1); - - if (sg.getSequences(null).contains(temp)) - { - continue; - } - - viewport.alignment.getSequences().setElementAt(temp, i); - viewport.alignment.getSequences().setElementAt(seq, i - 1); - } - } - else - { - for (int i = viewport.alignment.getHeight() - 2; i > -1; i--) - { - SequenceI seq = viewport.alignment.getSequenceAt(i); - - if (!sg.getSequences(null).contains(seq)) - { - continue; - } - - SequenceI temp = viewport.alignment.getSequenceAt(i + 1); - - if (sg.getSequences(null).contains(temp)) - { - continue; - } - - viewport.alignment.getSequences().setElementAt(temp, i); - viewport.alignment.getSequences().setElementAt(seq, i + 1); - } - } - + viewport.getAlignment().moveSelectedSequencesByOne(sg, viewport.getHiddenRepSequences(), up); alignPanel.paintAlignment(true); } synchronized void slideSequences(boolean right, int size) { - Vector sg = new Vector(); + List sg = new Vector(); if (viewport.cursorMode) { - sg.addElement(viewport.alignment - .getSequenceAt(alignPanel.seqPanel.seqCanvas.cursorY)); + sg.add(viewport.getAlignment().getSequenceAt( + alignPanel.seqPanel.seqCanvas.cursorY)); } else if (viewport.getSelectionGroup() != null - && viewport.getSelectionGroup().getSize() != viewport.alignment - .getHeight()) + && viewport.getSelectionGroup().getSize() != viewport + .getAlignment().getHeight()) { sg = viewport.getSelectionGroup().getSequences( - viewport.hiddenRepSequences); + viewport.getHiddenRepSequences()); } if (sg.size() < 1) @@ -1530,15 +1566,13 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, Vector invertGroup = new Vector(); - for (int i = 0; i < viewport.alignment.getHeight(); i++) + for (int i = 0; i < viewport.getAlignment().getHeight(); i++) { - if (!sg.contains(viewport.alignment.getSequenceAt(i))) - invertGroup.add(viewport.alignment.getSequenceAt(i)); + if (!sg.contains(viewport.getAlignment().getSequenceAt(i))) + invertGroup.add(viewport.getAlignment().getSequenceAt(i)); } - SequenceI[] seqs1 = new SequenceI[sg.size()]; - for (int i = 0; i < sg.size(); i++) - seqs1[i] = (SequenceI) sg.elementAt(i); + SequenceI[] seqs1 = sg.toArray(new SequenceI[0]); SequenceI[] seqs2 = new SequenceI[invertGroup.size()]; for (int i = 0; i < invertGroup.size(); i++) @@ -1593,10 +1627,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * DOCUMENT ME! - * + * * @param e * DOCUMENT ME! */ + @Override protected void copy_actionPerformed(ActionEvent e) { System.gc(); @@ -1609,7 +1644,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, SequenceI[] seqs = viewport.getSelectionAsNewSequence(); String[] omitHidden = null; - if (viewport.hasHiddenColumns) + if (viewport.hasHiddenColumns()) { omitHidden = viewport.getViewAsString(true); } @@ -1636,7 +1671,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } Vector hiddenColumns = null; - if (viewport.hasHiddenColumns) + if (viewport.hasHiddenColumns()) { hiddenColumns = new Vector(); int hiddenOffset = viewport.getSelectionGroup().getStartRes(), hiddenCutoff = viewport @@ -1655,16 +1690,17 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } Desktop.jalviewClipboard = new Object[] - { seqs, viewport.alignment.getDataset(), hiddenColumns }; + { seqs, viewport.getAlignment().getDataset(), hiddenColumns }; statusBar.setText("Copied " + seqs.length + " sequences to clipboard."); } /** * DOCUMENT ME! - * + * * @param e * DOCUMENT ME! */ + @Override protected void pasteNew_actionPerformed(ActionEvent e) { paste(true); @@ -1672,10 +1708,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * DOCUMENT ME! - * + * * @param e * DOCUMENT ME! */ + @Override protected void pasteThis_actionPerformed(ActionEvent e) { paste(false); @@ -1683,7 +1720,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * Paste contents of Jalview clipboard - * + * * @param newAlignment * true to paste to a new alignment, otherwise add to this. */ @@ -1952,10 +1989,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * DOCUMENT ME! - * + * * @param e * DOCUMENT ME! */ + @Override protected void cut_actionPerformed(ActionEvent e) { copy_actionPerformed(null); @@ -1964,10 +2002,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * DOCUMENT ME! - * + * * @param e * DOCUMENT ME! */ + @Override protected void delete_actionPerformed(ActionEvent evt) { @@ -1986,7 +2025,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } // If the cut affects all sequences, remove highlighted columns - if (sg.getSize() == viewport.alignment.getHeight()) + if (sg.getSize() == viewport.getAlignment().getHeight()) { viewport.getColumnSelection().removeElements(sg.getStartRes(), sg.getEndRes() + 1); @@ -2003,11 +2042,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, */ addHistoryItem(new EditCommand("Cut Sequences", EditCommand.CUT, cut, sg.getStartRes(), sg.getEndRes() - sg.getStartRes() + 1, - viewport.alignment)); + viewport.getAlignment())); viewport.setSelectionGroup(null); viewport.sendSelection(); - viewport.alignment.deleteGroup(sg); + viewport.getAlignment().deleteGroup(sg); viewport.firePropertyChange("alignment", null, viewport.getAlignment() .getSequences()); @@ -2024,13 +2063,14 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * DOCUMENT ME! - * + * * @param e * DOCUMENT ME! */ + @Override protected void deleteGroups_actionPerformed(ActionEvent e) { - viewport.alignment.deleteAllGroups(); + viewport.getAlignment().deleteAllGroups(); viewport.sequenceColours = null; viewport.setSelectionGroup(null); PaintRefresher.Refresh(this, viewport.getSequenceSetId()); @@ -2040,10 +2080,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * DOCUMENT ME! - * + * * @param e * DOCUMENT ME! */ + @Override public void selectAllSequenceMenuItem_actionPerformed(ActionEvent e) { SequenceGroup sg = new SequenceGroup(); @@ -2053,7 +2094,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, sg.addSequence(viewport.getAlignment().getSequenceAt(i), false); } - sg.setEndRes(viewport.alignment.getWidth() - 1); + sg.setEndRes(viewport.getAlignment().getWidth() - 1); viewport.setSelectionGroup(sg); viewport.sendSelection(); alignPanel.paintAlignment(true); @@ -2062,10 +2103,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * DOCUMENT ME! - * + * * @param e * DOCUMENT ME! */ + @Override public void deselectAllSequenceMenuItem_actionPerformed(ActionEvent e) { if (viewport.cursorMode) @@ -2085,10 +2127,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * DOCUMENT ME! - * + * * @param e * DOCUMENT ME! */ + @Override public void invertSequenceMenuItem_actionPerformed(ActionEvent e) { SequenceGroup sg = viewport.getSelectionGroup(); @@ -2110,6 +2153,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, viewport.sendSelection(); } + @Override public void invertColSel_actionPerformed(ActionEvent e) { viewport.invertColumnSelection(); @@ -2119,10 +2163,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * DOCUMENT ME! - * + * * @param e * DOCUMENT ME! */ + @Override public void remove2LeftMenuItem_actionPerformed(ActionEvent e) { trimAlignment(true); @@ -2130,10 +2175,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * DOCUMENT ME! - * + * * @param e * DOCUMENT ME! */ + @Override public void remove2RightMenuItem_actionPerformed(ActionEvent e) { trimAlignment(false); @@ -2159,11 +2205,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, if (viewport.getSelectionGroup() != null) { seqs = viewport.getSelectionGroup().getSequencesAsArray( - viewport.hiddenRepSequences); + viewport.getHiddenRepSequences()); } else { - seqs = viewport.alignment.getSequencesArray(); + seqs = viewport.getAlignment().getSequencesArray(); } TrimRegionCommand trimRegion; @@ -2171,32 +2217,28 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { trimRegion = new TrimRegionCommand("Remove Left", TrimRegionCommand.TRIM_LEFT, seqs, column, - viewport.alignment, viewport.colSel, - viewport.selectionGroup); + viewport.getAlignment(), viewport.getColumnSelection(), + viewport.getSelectionGroup()); viewport.setStartRes(0); } else { trimRegion = new TrimRegionCommand("Remove Right", TrimRegionCommand.TRIM_RIGHT, seqs, column, - viewport.alignment, viewport.colSel, - viewport.selectionGroup); + viewport.getAlignment(), viewport.getColumnSelection(), + viewport.getSelectionGroup()); } statusBar.setText("Removed " + trimRegion.getSize() + " columns."); addHistoryItem(trimRegion); - Vector groups = viewport.alignment.getGroups(); - - for (int i = 0; i < groups.size(); i++) + for (SequenceGroup sg :viewport.getAlignment().getGroups()) { - SequenceGroup sg = (SequenceGroup) groups.get(i); - if ((trimLeft && !sg.adjustForRemoveLeft(column)) || (!trimLeft && !sg.adjustForRemoveRight(column))) { - viewport.alignment.deleteGroup(sg); + viewport.getAlignment().deleteGroup(sg); } } @@ -2207,29 +2249,31 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * DOCUMENT ME! - * + * * @param e * DOCUMENT ME! */ + @Override public void removeGappedColumnMenuItem_actionPerformed(ActionEvent e) { - int start = 0, end = viewport.alignment.getWidth() - 1; + int start = 0, end = viewport.getAlignment().getWidth() - 1; SequenceI[] seqs; if (viewport.getSelectionGroup() != null) { seqs = viewport.getSelectionGroup().getSequencesAsArray( - viewport.hiddenRepSequences); + viewport.getHiddenRepSequences()); start = viewport.getSelectionGroup().getStartRes(); end = viewport.getSelectionGroup().getEndRes(); } else { - seqs = viewport.alignment.getSequencesArray(); + seqs = viewport.getAlignment().getSequencesArray(); } RemoveGapColCommand removeGapCols = new RemoveGapColCommand( - "Remove Gapped Columns", seqs, start, end, viewport.alignment); + "Remove Gapped Columns", seqs, start, end, + viewport.getAlignment()); addHistoryItem(removeGapCols); @@ -2238,7 +2282,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, // This is to maintain viewport position on first residue // of first sequence - SequenceI seq = viewport.alignment.getSequenceAt(0); + SequenceI seq = viewport.getAlignment().getSequenceAt(0); int startRes = seq.findPosition(viewport.startRes); // ShiftList shifts; // viewport.getAlignment().removeGaps(shifts=new ShiftList()); @@ -2253,34 +2297,35 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * DOCUMENT ME! - * + * * @param e * DOCUMENT ME! */ + @Override public void removeAllGapsMenuItem_actionPerformed(ActionEvent e) { - int start = 0, end = viewport.alignment.getWidth() - 1; + int start = 0, end = viewport.getAlignment().getWidth() - 1; SequenceI[] seqs; if (viewport.getSelectionGroup() != null) { seqs = viewport.getSelectionGroup().getSequencesAsArray( - viewport.hiddenRepSequences); + viewport.getHiddenRepSequences()); start = viewport.getSelectionGroup().getStartRes(); end = viewport.getSelectionGroup().getEndRes(); } else { - seqs = viewport.alignment.getSequencesArray(); + seqs = viewport.getAlignment().getSequencesArray(); } // This is to maintain viewport position on first residue // of first sequence - SequenceI seq = viewport.alignment.getSequenceAt(0); + SequenceI seq = viewport.getAlignment().getSequenceAt(0); int startRes = seq.findPosition(viewport.startRes); addHistoryItem(new RemoveGapsCommand("Remove Gaps", seqs, start, end, - viewport.alignment)); + viewport.getAlignment())); viewport.setStartRes(seq.findIndex(startRes) - 1); @@ -2291,13 +2336,14 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * DOCUMENT ME! - * + * * @param e * DOCUMENT ME! */ + @Override public void padGapsMenuitem_actionPerformed(ActionEvent e) { - viewport.padGaps = padGapsMenuitem.isSelected(); + viewport.setPadGaps(padGapsMenuitem.isSelected()); viewport.firePropertyChange("alignment", null, viewport.getAlignment() .getSequences()); } @@ -2314,22 +2360,24 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * DOCUMENT ME! - * + * * @param e * DOCUMENT ME! */ + @Override public void findMenuItem_actionPerformed(ActionEvent e) { new Finder(); } + @Override public void newView_actionPerformed(ActionEvent e) { newView(true); } /** - * + * * @param copyAnnotation * if true then duplicate all annnotation, groups and settings * @return new alignment panel, already displayed. @@ -2340,7 +2388,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } /** - * + * * @param viewTitle * title of newly created view * @return new alignment panel, already displayed. @@ -2351,7 +2399,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } /** - * + * * @param viewTitle * title of newly created view * @param copyAnnotation @@ -2365,13 +2413,13 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, if (!copyAnnotation) { // just remove all the current annotation except for the automatic stuff - newap.av.alignment.deleteAllGroups(); - for (AlignmentAnnotation alan : newap.av.alignment + newap.av.getAlignment().deleteAllGroups(); + for (AlignmentAnnotation alan : newap.av.getAlignment() .getAlignmentAnnotation()) { if (!alan.autoCalculated) { - newap.av.alignment.deleteAnnotation(alan); + newap.av.getAlignment().deleteAnnotation(alan); } ; } @@ -2433,11 +2481,13 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, return newap; } + @Override public void expandViews_actionPerformed(ActionEvent e) { Desktop.instance.explodeViews(this); } + @Override public void gatherViews_actionPerformed(ActionEvent e) { Desktop.instance.gatherViews(this); @@ -2445,10 +2495,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * DOCUMENT ME! - * + * * @param e * DOCUMENT ME! */ + @Override public void font_actionPerformed(ActionEvent e) { new FontChooser(alignPanel); @@ -2456,10 +2507,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * DOCUMENT ME! - * + * * @param e * DOCUMENT ME! */ + @Override protected void seqLimit_actionPerformed(ActionEvent e) { viewport.setShowJVSuffix(seqLimits.isSelected()); @@ -2469,12 +2521,14 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, alignPanel.paintAlignment(true); } + @Override public void idRightAlign_actionPerformed(ActionEvent e) { viewport.rightAlignIds = idRightAlign.isSelected(); alignPanel.paintAlignment(true); } + @Override public void centreColumnLabels_actionPerformed(ActionEvent e) { viewport.centreColumnLabels = centreColumnLabelsMenuItem.getState(); @@ -2483,9 +2537,10 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /* * (non-Javadoc) - * + * * @see jalview.jbgui.GAlignFrame#followHighlight_actionPerformed() */ + @Override protected void followHighlight_actionPerformed() { if (viewport.followHighlight = this.followHighlightMenuItem.getState()) @@ -2497,10 +2552,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * DOCUMENT ME! - * + * * @param e * DOCUMENT ME! */ + @Override protected void colourTextMenuItem_actionPerformed(ActionEvent e) { viewport.setColourText(colourTextMenuItem.isSelected()); @@ -2509,10 +2565,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * DOCUMENT ME! - * + * * @param e * DOCUMENT ME! */ + @Override public void wrapMenuItem_actionPerformed(ActionEvent e) { scaleAbove.setVisible(wrapMenuItem.isSelected()); @@ -2522,17 +2579,20 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, alignPanel.setWrapAlignment(wrapMenuItem.isSelected()); } + @Override public void showAllSeqs_actionPerformed(ActionEvent e) { viewport.showAllHiddenSeqs(); } + @Override public void showAllColumns_actionPerformed(ActionEvent e) { viewport.showAllHiddenColumns(); repaint(); } + @Override public void hideSelSequences_actionPerformed(ActionEvent e) { viewport.hideAllSelectedSeqs(); @@ -2541,7 +2601,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * called by key handler and the hide all/show all menu items - * + * * @param toggleSeqs * @param toggleCols */ @@ -2555,8 +2615,9 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, // Hide everything by the current selection - this is a hack - we do the // invert and then hide // first check that there will be visible columns after the invert. - if ((viewport.colSel != null && viewport.colSel.getSelected() != null && viewport.colSel - .getSelected().size() > 0) + if ((viewport.getColumnSelection() != null + && viewport.getColumnSelection().getSelected() != null && viewport + .getColumnSelection().getSelected().size() > 0) || (sg != null && sg.getSize() > 0 && sg.getStartRes() <= sg .getEndRes())) { @@ -2579,12 +2640,13 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, if (toggleSeqs) { - if (sg != null && sg.getSize() != viewport.alignment.getHeight()) + if (sg != null && sg.getSize() != viewport.getAlignment().getHeight()) { hideSelSequences_actionPerformed(null); hide = true; } - else if (!(toggleCols && viewport.colSel.getSelected().size() > 0)) + else if (!(toggleCols && viewport.getColumnSelection().getSelected() + .size() > 0)) { showAllSeqs_actionPerformed(null); } @@ -2592,12 +2654,12 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, if (toggleCols) { - if (viewport.colSel.getSelected().size() > 0) + if (viewport.getColumnSelection().getSelected().size() > 0) { hideSelColumns_actionPerformed(null); if (!toggleSeqs) { - viewport.selectionGroup = sg; + viewport.setSelectionGroup(sg); } } else if (!hide) @@ -2609,11 +2671,12 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /* * (non-Javadoc) - * + * * @see * jalview.jbgui.GAlignFrame#hideAllButSelection_actionPerformed(java.awt. * event.ActionEvent) */ + @Override public void hideAllButSelection_actionPerformed(ActionEvent e) { toggleHiddenRegions(false, false); @@ -2621,11 +2684,12 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /* * (non-Javadoc) - * + * * @see * jalview.jbgui.GAlignFrame#hideAllSelection_actionPerformed(java.awt.event * .ActionEvent) */ + @Override public void hideAllSelection_actionPerformed(ActionEvent e) { SequenceGroup sg = viewport.getSelectionGroup(); @@ -2637,11 +2701,12 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /* * (non-Javadoc) - * + * * @see * jalview.jbgui.GAlignFrame#showAllhidden_actionPerformed(java.awt.event. * ActionEvent) */ + @Override public void showAllhidden_actionPerformed(ActionEvent e) { viewport.showAllHiddenColumns(); @@ -2649,12 +2714,14 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, alignPanel.paintAlignment(true); } + @Override public void hideSelColumns_actionPerformed(ActionEvent e) { viewport.hideSelectedColumns(); alignPanel.paintAlignment(true); } + @Override public void hiddenMarkers_actionPerformed(ActionEvent e) { viewport.setShowHiddenMarkers(hiddenMarkers.isSelected()); @@ -2663,10 +2730,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * DOCUMENT ME! - * + * * @param e * DOCUMENT ME! */ + @Override protected void scaleAbove_actionPerformed(ActionEvent e) { viewport.setScaleAboveWrapped(scaleAbove.isSelected()); @@ -2675,10 +2743,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * DOCUMENT ME! - * + * * @param e * DOCUMENT ME! */ + @Override protected void scaleLeft_actionPerformed(ActionEvent e) { viewport.setScaleLeftWrapped(scaleLeft.isSelected()); @@ -2687,10 +2756,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * DOCUMENT ME! - * + * * @param e * DOCUMENT ME! */ + @Override protected void scaleRight_actionPerformed(ActionEvent e) { viewport.setScaleRightWrapped(scaleRight.isSelected()); @@ -2699,10 +2769,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * DOCUMENT ME! - * + * * @param e * DOCUMENT ME! */ + @Override public void viewBoxesMenuItem_actionPerformed(ActionEvent e) { viewport.setShowBoxes(viewBoxesMenuItem.isSelected()); @@ -2711,10 +2782,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * DOCUMENT ME! - * + * * @param e * DOCUMENT ME! */ + @Override public void viewTextMenuItem_actionPerformed(ActionEvent e) { viewport.setShowText(viewTextMenuItem.isSelected()); @@ -2723,10 +2795,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * DOCUMENT ME! - * + * * @param e * DOCUMENT ME! */ + @Override protected void renderGapsMenuItem_actionPerformed(ActionEvent e) { viewport.setRenderGaps(renderGapsMenuItem.isSelected()); @@ -2735,6 +2808,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, public FeatureSettings featureSettings; + @Override public void featureSettings_actionPerformed(ActionEvent e) { if (featureSettings != null) @@ -2753,10 +2827,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * Set or clear 'Show Sequence Features' - * + * * @param evt * DOCUMENT ME! */ + @Override public void showSeqFeatures_actionPerformed(ActionEvent evt) { viewport.setShowSequenceFeatures(showSeqFeatures.isSelected()); @@ -2769,10 +2844,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * Set or clear 'Show Sequence Features' - * + * * @param evt * DOCUMENT ME! */ + @Override public void showSeqFeaturesHeight_actionPerformed(ActionEvent evt) { viewport.setShowSequenceFeaturesHeight(showSeqFeaturesHeight @@ -2792,21 +2868,23 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * DOCUMENT ME! - * + * * @param e * DOCUMENT ME! */ + @Override public void annotationPanelMenuItem_actionPerformed(ActionEvent e) { viewport.setShowAnnotation(annotationPanelMenuItem.isSelected()); alignPanel.setAnnotationVisible(annotationPanelMenuItem.isSelected()); } + @Override public void alignmentProperties() { JEditorPane editPane = new JEditorPane("text/html", ""); editPane.setEditable(false); - StringBuffer contents = new AlignmentProperties(viewport.alignment) + StringBuffer contents = new AlignmentProperties(viewport.getAlignment()) .formatAsHtml(); editPane.setText("" + contents.toString() + ""); JInternalFrame frame = new JInternalFrame(); @@ -2818,10 +2896,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * DOCUMENT ME! - * + * * @param e * DOCUMENT ME! */ + @Override public void overviewMenuItem_actionPerformed(ActionEvent e) { if (alignPanel.overviewPanel != null) @@ -2838,6 +2917,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, frame.setLayer(JLayeredPane.PALETTE_LAYER); frame.addInternalFrameListener(new javax.swing.event.InternalFrameAdapter() { + @Override public void internalFrameClosed( javax.swing.event.InternalFrameEvent evt) { @@ -2848,6 +2928,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, alignPanel.setOverviewPanel(overview); } + @Override public void textColour_actionPerformed(ActionEvent e) { new TextColourChooser().chooseColour(alignPanel, null); @@ -2855,10 +2936,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * DOCUMENT ME! - * + * * @param e * DOCUMENT ME! */ + @Override protected void noColourmenuItem_actionPerformed(ActionEvent e) { changeColour(null); @@ -2866,23 +2948,23 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * DOCUMENT ME! - * + * * @param e * DOCUMENT ME! */ + @Override public void clustalColour_actionPerformed(ActionEvent e) { - changeColour(new ClustalxColourScheme( - viewport.alignment.getSequences(), - viewport.alignment.getWidth())); + changeColour(new ClustalxColourScheme(viewport.getAlignment(), viewport.getHiddenRepSequences())); } /** * DOCUMENT ME! - * + * * @param e * DOCUMENT ME! */ + @Override public void zappoColour_actionPerformed(ActionEvent e) { changeColour(new ZappoColourScheme()); @@ -2890,10 +2972,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * DOCUMENT ME! - * + * * @param e * DOCUMENT ME! */ + @Override public void taylorColour_actionPerformed(ActionEvent e) { changeColour(new TaylorColourScheme()); @@ -2901,10 +2984,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * DOCUMENT ME! - * + * * @param e * DOCUMENT ME! */ + @Override public void hydrophobicityColour_actionPerformed(ActionEvent e) { changeColour(new HydrophobicColourScheme()); @@ -2912,10 +2996,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * DOCUMENT ME! - * + * * @param e * DOCUMENT ME! */ + @Override public void helixColour_actionPerformed(ActionEvent e) { changeColour(new HelixColourScheme()); @@ -2923,10 +3008,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * DOCUMENT ME! - * + * * @param e * DOCUMENT ME! */ + @Override public void strandColour_actionPerformed(ActionEvent e) { changeColour(new StrandColourScheme()); @@ -2934,10 +3020,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * DOCUMENT ME! - * + * * @param e * DOCUMENT ME! */ + @Override public void turnColour_actionPerformed(ActionEvent e) { changeColour(new TurnColourScheme()); @@ -2945,10 +3032,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * DOCUMENT ME! - * + * * @param e * DOCUMENT ME! */ + @Override public void buriedColour_actionPerformed(ActionEvent e) { changeColour(new BuriedColourScheme()); @@ -2956,26 +3044,47 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * DOCUMENT ME! - * + * * @param e * DOCUMENT ME! */ + @Override public void nucleotideColour_actionPerformed(ActionEvent e) { changeColour(new NucleotideColourScheme()); } + @Override + public void purinePyrimidineColour_actionPerformed(ActionEvent e) + { + changeColour(new PurinePyrimidineColourScheme()); + } + + /* + * public void covariationColour_actionPerformed(ActionEvent e) { + * changeColour(new + * CovariationColourScheme(viewport.getAlignment().getAlignmentAnnotation + * ()[0])); } + */ + @Override public void annotationColour_actionPerformed(ActionEvent e) { new AnnotationColourChooser(viewport, alignPanel); } + @Override + public void rnahelicesColour_actionPerformed(ActionEvent e) + { + new RNAHelicesColourChooser(viewport, alignPanel); + } + /** * DOCUMENT ME! - * + * * @param e * DOCUMENT ME! */ + @Override protected void applyToAllGroups_actionPerformed(ActionEvent e) { viewport.setColourAppliesToAllGroups(applyToAllGroups.isSelected()); @@ -2983,12 +3092,13 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * DOCUMENT ME! - * + * * @param cs * DOCUMENT ME! */ public void changeColour(ColourSchemeI cs) { + // TODO: compare with applet and pull up to model method int threshold = 0; if (cs != null) @@ -3010,13 +3120,13 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, if (viewport.getConservationSelected()) { - Alignment al = (Alignment) viewport.alignment; + Alignment al = (Alignment) viewport.getAlignment(); Conservation c = new Conservation("All", ResidueProperties.propHash, 3, al.getSequences(), 0, al.getWidth() - 1); c.calculate(); - c.verdict(false, viewport.ConsPercGaps); + c.verdict(false, viewport.getConsPercGaps()); cs.setConservation(c); @@ -3028,19 +3138,17 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, cs.setConservation(null); } - cs.setConsensus(viewport.hconsensus); + cs.setConsensus(viewport.getSequenceConsensusHash()); } viewport.setGlobalColourScheme(cs); if (viewport.getColourAppliesToAllGroups()) { - Vector groups = viewport.alignment.getGroups(); - for (int i = 0; i < groups.size(); i++) - { - SequenceGroup sg = (SequenceGroup) groups.elementAt(i); + for (SequenceGroup sg:viewport.getAlignment().getGroups()) + { if (cs == null) { sg.cs = null; @@ -3049,9 +3157,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, if (cs instanceof ClustalxColourScheme) { - sg.cs = new ClustalxColourScheme( - sg.getSequences(viewport.hiddenRepSequences), - sg.getWidth()); + sg.cs = new ClustalxColourScheme(sg, viewport + .getHiddenRepSequences()); } else if (cs instanceof UserColourScheme) { @@ -3061,7 +3168,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { try { - sg.cs = (ColourSchemeI) cs.getClass().newInstance(); + sg.cs = cs.getClass().newInstance(); } catch (Exception ex) { } @@ -3074,7 +3181,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, sg.cs.setThreshold(threshold, viewport.getIgnoreGapsConsensus()); sg.cs.setConsensus(AAFrequency.calculate( - sg.getSequences(viewport.hiddenRepSequences), + sg.getSequences(viewport.getHiddenRepSequences()), sg.getStartRes(), sg.getEndRes() + 1)); } else @@ -3085,11 +3192,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, if (viewport.getConservationSelected()) { Conservation c = new Conservation("Group", - ResidueProperties.propHash, 3, - sg.getSequences(viewport.hiddenRepSequences), - sg.getStartRes(), sg.getEndRes() + 1); + ResidueProperties.propHash, 3, sg.getSequences(viewport + .getHiddenRepSequences()), sg.getStartRes(), + sg.getEndRes() + 1); c.calculate(); - c.verdict(false, viewport.ConsPercGaps); + c.verdict(false, viewport.getConsPercGaps()); sg.cs.setConservation(c); } else @@ -3109,14 +3216,15 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * DOCUMENT ME! - * + * * @param e * DOCUMENT ME! */ + @Override protected void modifyPID_actionPerformed(ActionEvent e) { if (viewport.getAbovePIDThreshold() - && viewport.globalColourScheme != null) + && viewport.getGlobalColourScheme() != null) { SliderPanel.setPIDSliderSource(alignPanel, viewport.getGlobalColourScheme(), "Background"); @@ -3126,27 +3234,29 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * DOCUMENT ME! - * + * * @param e * DOCUMENT ME! */ + @Override protected void modifyConservation_actionPerformed(ActionEvent e) { if (viewport.getConservationSelected() - && viewport.globalColourScheme != null) + && viewport.getGlobalColourScheme() != null) { SliderPanel.setConservationSlider(alignPanel, - viewport.globalColourScheme, "Background"); + viewport.getGlobalColourScheme(), "Background"); SliderPanel.showConservationSlider(); } } /** * DOCUMENT ME! - * + * * @param e * DOCUMENT ME! */ + @Override protected void conservationMenuItem_actionPerformed(ActionEvent e) { viewport.setConservationSelected(conservationMenuItem.isSelected()); @@ -3161,10 +3271,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * DOCUMENT ME! - * + * * @param e * DOCUMENT ME! */ + @Override public void abovePIDThreshold_actionPerformed(ActionEvent e) { viewport.setAbovePIDThreshold(abovePIDThreshold.isSelected()); @@ -3179,10 +3290,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * DOCUMENT ME! - * + * * @param e * DOCUMENT ME! */ + @Override public void userDefinedColour_actionPerformed(ActionEvent e) { if (e.getActionCommand().equals("User Defined...")) @@ -3224,6 +3336,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, radioItem.setName("USER_DEFINED"); radioItem.addMouseListener(new MouseAdapter() { + @Override public void mousePressed(MouseEvent evt) { if (evt.isControlDown() @@ -3246,6 +3359,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { radioItem.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent evt) { userDefinedColour_actionPerformed(evt); @@ -3257,6 +3371,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, }); radioItem.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent evt) { userDefinedColour_actionPerformed(evt); @@ -3271,10 +3386,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * DOCUMENT ME! - * + * * @param e * DOCUMENT ME! */ + @Override public void PIDColour_actionPerformed(ActionEvent e) { changeColour(new PIDColourScheme()); @@ -3282,10 +3398,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * DOCUMENT ME! - * + * * @param e * DOCUMENT ME! */ + @Override public void BLOSUM62Colour_actionPerformed(ActionEvent e) { changeColour(new Blosum62ColourScheme()); @@ -3293,71 +3410,77 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * DOCUMENT ME! - * + * * @param e * DOCUMENT ME! */ + @Override public void sortPairwiseMenuItem_actionPerformed(ActionEvent e) { SequenceI[] oldOrder = viewport.getAlignment().getSequencesArray(); AlignmentSorter.sortByPID(viewport.getAlignment(), viewport .getAlignment().getSequenceAt(0), null); addHistoryItem(new OrderCommand("Pairwise Sort", oldOrder, - viewport.alignment)); + viewport.getAlignment())); alignPanel.paintAlignment(true); } /** * DOCUMENT ME! - * + * * @param e * DOCUMENT ME! */ + @Override public void sortIDMenuItem_actionPerformed(ActionEvent e) { SequenceI[] oldOrder = viewport.getAlignment().getSequencesArray(); AlignmentSorter.sortByID(viewport.getAlignment()); - addHistoryItem(new OrderCommand("ID Sort", oldOrder, viewport.alignment)); + addHistoryItem(new OrderCommand("ID Sort", oldOrder, + viewport.getAlignment())); alignPanel.paintAlignment(true); } /** * DOCUMENT ME! - * + * * @param e * DOCUMENT ME! */ + @Override public void sortLengthMenuItem_actionPerformed(ActionEvent e) { SequenceI[] oldOrder = viewport.getAlignment().getSequencesArray(); AlignmentSorter.sortByLength(viewport.getAlignment()); addHistoryItem(new OrderCommand("Length Sort", oldOrder, - viewport.alignment)); + viewport.getAlignment())); alignPanel.paintAlignment(true); } /** * DOCUMENT ME! - * + * * @param e * DOCUMENT ME! */ + @Override public void sortGroupMenuItem_actionPerformed(ActionEvent e) { SequenceI[] oldOrder = viewport.getAlignment().getSequencesArray(); AlignmentSorter.sortByGroup(viewport.getAlignment()); addHistoryItem(new OrderCommand("Group Sort", oldOrder, - viewport.alignment)); + viewport.getAlignment())); alignPanel.paintAlignment(true); } /** * DOCUMENT ME! - * + * * @param e * DOCUMENT ME! */ + @Override public void removeRedundancyMenuItem_actionPerformed(ActionEvent e) { new RedundancyPanel(alignPanel, this); @@ -3365,10 +3488,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * DOCUMENT ME! - * + * * @param e * DOCUMENT ME! */ + @Override public void pairwiseAlignmentMenuItem_actionPerformed(ActionEvent e) { if ((viewport.getSelectionGroup() == null) @@ -3388,10 +3512,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * DOCUMENT ME! - * + * * @param e * DOCUMENT ME! */ + @Override public void PCAMenuItem_actionPerformed(ActionEvent e) { if (((viewport.getSelectionGroup() != null) @@ -3411,6 +3536,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, new PCAPanel(alignPanel); } + @Override public void autoCalculate_actionPerformed(ActionEvent e) { viewport.autoCalculateConsensus = autoCalculate.isSelected(); @@ -3421,12 +3547,25 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } } + @Override + public void sortByTreeOption_actionPerformed(ActionEvent e) + { + viewport.sortByTree = sortByTree.isSelected(); + } + + @Override + protected void listenToViewSelections_actionPerformed(ActionEvent e) + { + viewport.followSelection = listenToViewSelections.isSelected(); + } + /** * DOCUMENT ME! - * + * * @param e * DOCUMENT ME! */ + @Override public void averageDistanceTreeMenuItem_actionPerformed(ActionEvent e) { NewTreePanel("AV", "PID", "Average distance tree using PID"); @@ -3434,10 +3573,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * DOCUMENT ME! - * + * * @param e * DOCUMENT ME! */ + @Override public void neighbourTreeMenuItem_actionPerformed(ActionEvent e) { NewTreePanel("NJ", "PID", "Neighbour joining tree using PID"); @@ -3445,10 +3585,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * DOCUMENT ME! - * + * * @param e * DOCUMENT ME! */ + @Override protected void njTreeBlosumMenuItem_actionPerformed(ActionEvent e) { NewTreePanel("NJ", "BL", "Neighbour joining tree using BLOSUM62"); @@ -3456,10 +3597,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * DOCUMENT ME! - * + * * @param e * DOCUMENT ME! */ + @Override protected void avTreeBlosumMenuItem_actionPerformed(ActionEvent e) { NewTreePanel("AV", "BL", "Average distance tree using BLOSUM62"); @@ -3467,7 +3609,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * DOCUMENT ME! - * + * * @param type * DOCUMENT ME! * @param pwType @@ -3491,13 +3633,12 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, return; } - int s = 0; SequenceGroup sg = viewport.getSelectionGroup(); /* Decide if the selection is a column region */ - while (s < sg.getSize()) + for (SequenceI _s:sg.getSequences()) { - if (((SequenceI) sg.getSequences(null).elementAt(s++)).getLength() < sg + if (_s.getLength() < sg .getEndRes()) { JOptionPane @@ -3519,7 +3660,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, else { // are the visible sequences aligned? - if (!viewport.alignment.isAligned(false)) + if (!viewport.getAlignment().isAligned(false)) { JOptionPane .showMessageDialog( @@ -3533,7 +3674,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, return; } - if (viewport.alignment.getHeight() < 2) + if (viewport.getAlignment().getHeight() < 2) { return; } @@ -3555,7 +3696,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * DOCUMENT ME! - * + * * @param title * DOCUMENT ME! * @param order @@ -3568,6 +3709,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, sort.add(item); item.addActionListener(new java.awt.event.ActionListener() { + @Override public void actionPerformed(ActionEvent e) { SequenceI[] oldOrder = viewport.getAlignment().getSequencesArray(); @@ -3576,8 +3718,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, // pointers AlignmentSorter.sortBy(viewport.getAlignment(), order); - addHistoryItem(new OrderCommand(order.getName(), oldOrder, - viewport.alignment)); + addHistoryItem(new OrderCommand(order.getName(), oldOrder, viewport + .getAlignment())); alignPanel.paintAlignment(true); } @@ -3586,7 +3728,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * Add a new sort by annotation score menu item - * + * * @param sort * the menu to add the option to * @param scoreLabel @@ -3600,13 +3742,14 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, sort.add(item); item.addActionListener(new java.awt.event.ActionListener() { + @Override public void actionPerformed(ActionEvent e) { SequenceI[] oldOrder = viewport.getAlignment().getSequencesArray(); AlignmentSorter.sortByAnnotationScore(scoreLabel, viewport.getAlignment());// ,viewport.getSelectionGroup()); addHistoryItem(new OrderCommand("Sort by " + scoreLabel, oldOrder, - viewport.alignment)); + viewport.getAlignment())); alignPanel.paintAlignment(true); } }); @@ -3622,25 +3765,25 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * search the alignment and rebuild the sort by annotation score submenu the * last alignment annotation vector hash is stored to minimize cost of * rebuilding in subsequence calls. - * + * */ + @Override public void buildSortByAnnotationScoresMenu() { - if (viewport.alignment.getAlignmentAnnotation() == null) + if (viewport.getAlignment().getAlignmentAnnotation() == null) { return; } - if (viewport.alignment.getAlignmentAnnotation().hashCode() != _annotationScoreVectorHash) + if (viewport.getAlignment().getAlignmentAnnotation().hashCode() != _annotationScoreVectorHash) { sortByAnnotScore.removeAll(); // almost certainly a quicker way to do this - but we keep it simple Hashtable scoreSorts = new Hashtable(); AlignmentAnnotation aann[]; - Enumeration sq = viewport.alignment.getSequences().elements(); - while (sq.hasMoreElements()) + for (SequenceI sqa:viewport.getAlignment().getSequences()) { - aann = ((SequenceI) sq.nextElement()).getAnnotation(); + aann = sqa.getAnnotation(); for (int i = 0; aann != null && i < aann.length; i++) { if (aann[i].hasScore() && aann[i].sequenceRef != null) @@ -3658,7 +3801,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, sortByAnnotScore.setVisible(scoreSorts.size() > 0); scoreSorts.clear(); - _annotationScoreVectorHash = viewport.alignment + _annotationScoreVectorHash = viewport.getAlignment() .getAlignmentAnnotation().hashCode(); } } @@ -3669,12 +3812,13 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * call. Listeners are added to remove the menu item when the treePanel is * closed, and adjust the tree leaf to sequence mapping when the alignment is * modified. - * + * * @param treePanel * Displayed tree window. * @param title * SortBy menu item title. */ + @Override public void buildTreeMenu() { sortByTreeMenu.removeAll(); @@ -3703,21 +3847,17 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, for (i = 0; i < treePanels.size(); i++) { - TreePanel tp = (TreePanel) treePanels.elementAt(i); + final TreePanel tp = (TreePanel) treePanels.elementAt(i); final JMenuItem item = new JMenuItem(tp.getTitle()); final NJTree tree = ((TreePanel) treePanels.elementAt(i)).getTree(); item.addActionListener(new java.awt.event.ActionListener() { + @Override public void actionPerformed(ActionEvent e) { - SequenceI[] oldOrder = viewport.getAlignment() - .getSequencesArray(); - AlignmentSorter.sortByTree(viewport.getAlignment(), tree); - - addHistoryItem(new OrderCommand("Tree Sort", oldOrder, - viewport.alignment)); + tp.sortByTree_actionPerformed(null); + addHistoryItem(tp.sortAlignmentIn(alignPanel)); - alignPanel.paintAlignment(true); } }); @@ -3732,7 +3872,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, if (undoname != null) { addHistoryItem(new OrderCommand(undoname, oldOrder, - viewport.alignment)); + viewport.getAlignment())); } alignPanel.paintAlignment(true); return true; @@ -3741,7 +3881,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * Work out whether the whole set of sequences or just the selected set will * be submitted for multiple alignment. - * + * */ public jalview.datamodel.AlignmentView gatherSequencesForAlignment() { @@ -3756,7 +3896,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /* * SequenceGroup seqs = viewport.getSelectionGroup(); int sz; msa = new * SequenceI[sz = seqs.getSize(false)]; - * + * * for (int i = 0; i < sz; i++) { msa[i] = (SequenceI) * seqs.getSequenceAt(i); } */ @@ -3766,9 +3906,9 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { /* * Vector seqs = viewport.getAlignment().getSequences(); - * + * * if (seqs.size() > 1) { msa = new SequenceI[seqs.size()]; - * + * * for (int i = 0; i < seqs.size(); i++) { msa[i] = (SequenceI) * seqs.elementAt(i); } } */ @@ -3799,9 +3939,9 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } // limit sequences - JBPNote in future - could spawn multiple prediction // jobs - // TODO: viewport.alignment.isAligned is a global state - the local + // TODO: viewport.getAlignment().isAligned is a global state - the local // selection may well be aligned - we preserve 2.0.8 behaviour for moment. - if (!viewport.alignment.isAligned(false)) + if (!viewport.getAlignment().isAligned(false)) { seqs.setSequences(new SeqCigar[] { seqs.getSequences()[0] }); @@ -3814,10 +3954,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * DOCUMENT ME! - * + * * @param e * DOCUMENT ME! */ + @Override protected void LoadtreeMenuItem_actionPerformed(ActionEvent e) { // Pick the tree file @@ -3853,6 +3994,12 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } } + @Override + protected void tcoffeeColorScheme_actionPerformed(ActionEvent e) + { + changeColour(new TCoffeeColourScheme(alignPanel.getAlignment())); + } + public TreePanel ShowNewickTree(NewickFile nf, String title) { return ShowNewickTree(nf, title, 600, 500, 4, 5); @@ -3873,7 +4020,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * Add a treeviewer for the tree extracted from a newick file object to the * current alignment view - * + * * @param nf * the tree * @param title @@ -3924,7 +4071,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * Generates menu items and listener event actions for web service clients - * + * */ public void BuildWebServiceMenu() { @@ -3943,6 +4090,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, buildingMenu = true; new Thread(new Runnable() { + @Override public void run() { try @@ -3959,27 +4107,28 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, // TODO: group services by location as well as function and/or // introduce // object broker mechanism. - final Vector wsmenu = new Vector(); + final Vector wsmenu = new Vector(); final IProgressIndicator af = me; final JMenu msawsmenu = new JMenu("Alignment"); final JMenu secstrmenu = new JMenu( "Secondary Structure Prediction"); - final JMenu seqsrchmenu = new JMenu( - "Sequence Database Search"); - final JMenu analymenu = new JMenu( - "Analyse Alignment"); - - if (Cache.getDefault("SHOW_JWS1_SERVICES", true) - && Discoverer.services != null - && (Discoverer.services.size() > 0)) + final JMenu seqsrchmenu = new JMenu("Sequence Database Search"); + final JMenu analymenu = new JMenu("Analysis"); + final JMenu dismenu = new JMenu("Disorder"); + // JAL-940 - only show secondary structure prediction services from + // the legacy server + if (// Cache.getDefault("SHOW_JWS1_SERVICES", true) + // && + Discoverer.services != null && (Discoverer.services.size() > 0)) { // TODO: refactor to allow list of AbstractName/Handler bindings to // be // stored or retrieved from elsewhere - Vector msaws = (Vector) Discoverer.services.get("MsaWS"); + Vector msaws = null; // (Vector) Discoverer.services.get("MsaWS"); Vector secstrpr = (Vector) Discoverer.services .get("SecStrPred"); - Vector seqsrch = (Vector) Discoverer.services.get("SeqSearch"); + Vector seqsrch = null; // (Vector) + // Discoverer.services.get("SeqSearch"); // TODO: move GUI generation code onto service implementation - so a // client instance attaches itself to the GUI with method call like // jalview.ws.MsaWSClient.bind(servicehandle, Desktop.instance, @@ -4023,51 +4172,73 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } } - // TODO: move into separate menu builder class. - if (Cache.getDefault("SHOW_JWS2_SERVICES", true)) - { - Jws2Discoverer jws2servs = Jws2Discoverer.getDiscoverer(); - if (jws2servs != null) - { - if (jws2servs.hasServices()) - { - JMenu jws2men = new JMenu("Jaba Web Services"); - jws2servs.attachWSMenuEntry(msawsmenu, me); -// for (int i = 0, iSize = jws2men.getMenuComponentCount(); i < iSize; i++) -// { -// msawsmenu.add(jws2men.getMenuComponent(i)); -// } - } - } - } - if (msawsmenu.getMenuComponentCount()>0) - wsmenu.add(msawsmenu); - if (secstrmenu.getMenuComponentCount()>0) - wsmenu.add(secstrmenu); - if (analymenu.getMenuComponentCount()>0) - wsmenu.add(analymenu); - if (seqsrchmenu.getMenuComponentCount()>0) - wsmenu.add(seqsrchmenu); + // Add all submenus in the order they should appear on the web + // services menu + wsmenu.add(msawsmenu); + wsmenu.add(secstrmenu); + wsmenu.add(dismenu); + wsmenu.add(analymenu); + // final ArrayList submens=new ArrayList(); + // submens.add(msawsmenu); + // submens.add(secstrmenu); + // submens.add(dismenu); + // submens.add(analymenu); + + // No search services yet + // wsmenu.add(seqsrchmenu); javax.swing.SwingUtilities.invokeLater(new Runnable() { + @Override public void run() { try { - - resetWebServiceMenu(); - // finally, add the whole shebang onto the webservices menu + webService.removeAll(); + // first, add discovered services onto the webservices menu if (wsmenu.size() > 0) { for (int i = 0, j = wsmenu.size(); i < j; i++) { - webService.add((JMenu) wsmenu.get(i)); + webService.add(wsmenu.get(i)); } } else { - me.webService.add(me.webServiceNoServices); + webService.add(me.webServiceNoServices); + } + // TODO: move into separate menu builder class. + if (Cache.getDefault("SHOW_JWS2_SERVICES", true)) + { + Jws2Discoverer jws2servs = Jws2Discoverer.getDiscoverer(); + if (jws2servs != null) + { + if (jws2servs.hasServices()) + { + jws2servs.attachWSMenuEntry(webService, me); + } + if (jws2servs.isRunning()) + { + JMenuItem tm = new JMenuItem( + "Still discovering JABA Services"); + tm.setEnabled(false); + webService.add(tm); + } + } + } + + build_urlServiceMenu(me.webService); + build_fetchdbmenu(webService); + for (JMenu item : wsmenu) + { + if (item.getItemCount() == 0) + { + item.setEnabled(false); + } + else + { + item.setEnabled(true); + } } } catch (Exception e) { @@ -4087,61 +4258,55 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } /** - * empty the web service menu and add any ad-hoc functions not dynamically - * discovered. - * - */ - private void resetWebServiceMenu() - { - webService.removeAll(); - build_fetchdbmenu(webService); - build_urlServiceMenu(webService); - } - - /** * construct any groupURL type service menu entries. - * + * * @param webService */ private void build_urlServiceMenu(JMenu webService) { - if (Cache.getDefault("SHOW_ENFIN_SERVICES", true)) - { - jalview.ws.EnfinEnvision2OneWay.getInstance().attachWSMenuEntry( - webService, this); - } // TODO: remove this code when 2.7 is released // DEBUG - alignmentView /* * JMenuItem testAlView = new JMenuItem("Test AlignmentView"); final * AlignFrame af = this; testAlView.addActionListener(new ActionListener() { - * + * * @Override public void actionPerformed(ActionEvent e) { - * jalview.datamodel.AlignmentView.testSelectionViews(af.viewport.alignment, - * af.viewport.colSel, af.viewport.selectionGroup); } - * + * jalview.datamodel.AlignmentView + * .testSelectionViews(af.viewport.getAlignment(), + * af.viewport.getColumnSelection(), af.viewport.selectionGroup); } + * * }); webService.add(testAlView); */ // TODO: refactor to RestClient discoverer and merge menu entries for // rest-style services with other types of analysis/calculation service // SHmmr test client - still being implemented. - - for (jalview.ws.rest.RestClient client: jalview.ws.rest.RestClient.getRestClients()) { - client.attachWSMenuEntry(JvSwingUtils.findOrCreateMenu(webService, client.getAction()), this); - } // DEBUG - alignmentView + + for (jalview.ws.rest.RestClient client : jalview.ws.rest.RestClient + .getRestClients()) + { + client.attachWSMenuEntry( + JvSwingUtils.findOrCreateMenu(webService, client.getAction()), + this); + } + + if (Cache.getDefault("SHOW_ENFIN_SERVICES", true)) + { + jalview.ws.EnfinEnvision2OneWay.getInstance().attachWSMenuEntry( + webService, this); + } } /* * public void vamsasStore_actionPerformed(ActionEvent e) { JalviewFileChooser * chooser = new JalviewFileChooser(jalview.bin.Cache. * getProperty("LAST_DIRECTORY")); - * + * * chooser.setFileView(new JalviewFileView()); chooser.setDialogTitle("Export * to Vamsas file"); chooser.setToolTipText("Export"); - * + * * int value = chooser.showSaveDialog(this); - * + * * if (value == JalviewFileChooser.APPROVE_OPTION) { * jalview.io.VamsasDatastore vs = new jalview.io.VamsasDatastore(viewport); * //vs.store(chooser.getSelectedFile().getAbsolutePath() ); vs.storeJalview( @@ -4149,7 +4314,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, */ /** * prototype of an automatically enabled/disabled analysis function - * + * */ protected void setShowProductsEnabled() { @@ -4169,7 +4334,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * search selection for sequence xRef products and build the show products * menu. - * + * * @param selection * @param dataset * @return true if showProducts menu should be enabled. @@ -4199,6 +4364,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, xtype.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { // TODO: new thread for this call with vis-delay @@ -4232,13 +4398,14 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, Runnable foo = new Runnable() { + @Override public void run() { final long sttime = System.currentTimeMillis(); ths.setProgressBar("Searching for sequences from " + fsrc, sttime); try { - Alignment ds = ths.getViewport().alignment.getDataset(); // update + Alignment ds = ths.getViewport().getAlignment().getDataset(); // update // our local // dataset // reference @@ -4315,6 +4482,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } } + @Override public void showProducts_actionPerformed(ActionEvent e) { // ///////////////////////////// @@ -4348,6 +4516,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } } + @Override public void showTranslation_actionPerformed(ActionEvent e) { // ///////////////////////////// @@ -4360,8 +4529,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { al = jalview.analysis.Dna.CdnaTranslate(selection, seqstring, viewport.getViewAsVisibleContigs(true), viewport - .getGapCharacter(), viewport.alignment - .getAlignmentAnnotation(), viewport.alignment + .getGapCharacter(), viewport.getAlignment() + .getAlignmentAnnotation(), viewport.getAlignment() .getWidth(), viewport.getAlignment().getDataset()); } catch (Exception ex) { @@ -4386,7 +4555,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * Try to load a features file onto the alignment. - * + * * @param file * contents or path to retrieve file * @param type @@ -4398,11 +4567,10 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, boolean featuresFile = false; try { - featuresFile = new FeaturesFile(file, type) - .parse(viewport.alignment.getDataset(), - alignPanel.seqPanel.seqCanvas.getFeatureRenderer().featureColours, - false, jalview.bin.Cache.getDefault( - "RELAXEDSEQIDMATCHING", false)); + featuresFile = new FeaturesFile(file, type).parse(viewport + .getAlignment().getDataset(), alignPanel.seqPanel.seqCanvas + .getFeatureRenderer().featureColours, false, + jalview.bin.Cache.getDefault("RELAXEDSEQIDMATCHING", false)); } catch (Exception ex) { ex.printStackTrace(); @@ -4427,22 +4595,27 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, return featuresFile; } + @Override public void dragEnter(DropTargetDragEvent evt) { } + @Override public void dragExit(DropTargetEvent evt) { } + @Override public void dragOver(DropTargetDragEvent evt) { } + @Override public void dropActionChanged(DropTargetDragEvent evt) { } + @Override public void drop(DropTargetDropEvent evt) { Transferable t = evt.getTransferable(); @@ -4528,7 +4701,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, int l = 0, c = pdbfn.indexOf("."); while (mtch == null && c != -1) { - do + do { l = c; } while ((c = pdbfn.indexOf(".", l)) > l); @@ -4581,18 +4754,18 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, // try and associate // TODO: may want to set a standard ID naming formalism for // associating PDB files which have no IDs. - for (SequenceI toassoc: (SequenceI[])fm[2]) { - PDBEntry pe = new AssociatePdbFileWithSeq() - .associatePdbWithSeq((String) fm[0], (String) fm[1], - toassoc, false); - if (pe != null) + for (SequenceI toassoc : (SequenceI[]) fm[2]) { - System.err - .println("Associated file : " + ((String) fm[0]) - + " with " - + toassoc.getDisplayId(true)); - assocfiles++; - } + PDBEntry pe = new AssociatePdbFileWithSeq() + .associatePdbWithSeq((String) fm[0], + (String) fm[1], toassoc, false); + if (pe != null) + { + System.err.println("Associated file : " + + ((String) fm[0]) + " with " + + toassoc.getDisplayId(true)); + assocfiles++; + } } alignPanel.paintAlignment(true); } @@ -4631,7 +4804,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * it's and Annotation file, then a JNet file, and finally a features file. If * all are false then the user may have dropped an alignment file onto this * AlignFrame. - * + * * @param file * either a filename or a URL string. */ @@ -4649,59 +4822,97 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, // try to parse as annotation. boolean isAnnotation = (format == null || format .equalsIgnoreCase("PFAM")) ? new AnnotationFile() - .readAnnotationFile(viewport.alignment, file, protocol) + .readAnnotationFile(viewport.getAlignment(), file, protocol) : false; if (!isAnnotation) { - // try to see if its a JNet 'concise' style annotation file *before* we - // try to parse it as a features file - if (format == null) + // first see if its a T-COFFEE score file + TCoffeeScoreFile tcf = null; + try { - format = new IdentifyFile().Identify(file, protocol); - } - if (format.equalsIgnoreCase("JnetFile")) + tcf = new TCoffeeScoreFile(file, protocol); + if (tcf.isValid()) + { + if (tcf.annotateAlignment(viewport.getAlignment(), true)) + { + tcoffeeColour.setEnabled(true); + tcoffeeColour.setSelected(true); + changeColour(new TCoffeeColourScheme(viewport.getAlignment())); + isAnnotation = true; + statusBar + .setText("Successfully pasted T-Coffee scores to alignment."); + } + else + { + // some problem - if no warning its probable that the ID matching process didn't work + JOptionPane.showMessageDialog(Desktop.desktop, + tcf.getWarningMessage()==null ? "Check that the file matches sequence IDs in the alignment." : tcf.getWarningMessage(), + "Problem reading T-COFFEE score file", + JOptionPane.WARNING_MESSAGE); + } + } + else + { + tcf = null; + } + } catch (Exception x) { - jalview.io.JPredFile predictions = new jalview.io.JPredFile(file, - protocol); - new JnetAnnotationMaker().add_annotation(predictions, - viewport.getAlignment(), 0, false); - isAnnotation = true; + Cache.log.debug("Exception when processing data source as T-COFFEE score file",x); + tcf = null; } - else + if (tcf == null) { - /* - * if (format.equalsIgnoreCase("PDB")) { - * - * String pdbfn = ""; // try to match up filename with sequence id try - * { if (protocol == jalview.io.FormatAdapter.FILE) { File fl = new - * File(file); pdbfn = fl.getName(); } else if (protocol == - * jalview.io.FormatAdapter.URL) { URL url = new URL(file); pdbfn = - * url.getFile(); } } catch (Exception e) { } ; if (assocSeq == null) - * { SequenceIdMatcher idm = new SequenceIdMatcher(viewport - * .getAlignment().getSequencesArray()); if (pdbfn.length() > 0) { // - * attempt to find a match in the alignment SequenceI mtch = - * idm.findIdMatch(pdbfn); int l = 0, c = pdbfn.indexOf("."); while - * (mtch == null && c != -1) { while ((c = pdbfn.indexOf(".", l)) > l) - * { l = c; } if (l > -1) { pdbfn = pdbfn.substring(0, l); } mtch = - * idm.findIdMatch(pdbfn); } if (mtch != null) { // try and associate - * // prompt ? PDBEntry pe = new AssociatePdbFileWithSeq() - * .associatePdbWithSeq(file, protocol, mtch, true); if (pe != null) { - * System.err.println("Associated file : " + file + " with " + - * mtch.getDisplayId(true)); alignPanel.paintAlignment(true); } } // - * TODO: maybe need to load as normal otherwise return; } } - */ + // try to see if its a JNet 'concise' style annotation file *before* + // we // try to parse it as a features file - boolean isGroupsFile = parseFeaturesFile(file, protocol); - // if it wasn't a features file then we just treat it as a general - // alignment file to load into the current view. - if (!isGroupsFile) + if (format == null) + { + format = new IdentifyFile().Identify(file, protocol); + } + if (format.equalsIgnoreCase("JnetFile")) { - new FileLoader().LoadFile(viewport, file, protocol, format); + jalview.io.JPredFile predictions = new jalview.io.JPredFile( + file, protocol); + new JnetAnnotationMaker().add_annotation(predictions, + viewport.getAlignment(), 0, false); + isAnnotation = true; } else { - alignPanel.paintAlignment(true); + /* + * if (format.equalsIgnoreCase("PDB")) { + * + * String pdbfn = ""; // try to match up filename with sequence id + * try { if (protocol == jalview.io.FormatAdapter.FILE) { File fl = + * new File(file); pdbfn = fl.getName(); } else if (protocol == + * jalview.io.FormatAdapter.URL) { URL url = new URL(file); pdbfn = + * url.getFile(); } } catch (Exception e) { } ; if (assocSeq == + * null) { SequenceIdMatcher idm = new SequenceIdMatcher(viewport + * .getAlignment().getSequencesArray()); if (pdbfn.length() > 0) { + * // attempt to find a match in the alignment SequenceI mtch = + * idm.findIdMatch(pdbfn); int l = 0, c = pdbfn.indexOf("."); while + * (mtch == null && c != -1) { while ((c = pdbfn.indexOf(".", l)) > + * l) { l = c; } if (l > -1) { pdbfn = pdbfn.substring(0, l); } mtch + * = idm.findIdMatch(pdbfn); } if (mtch != null) { // try and + * associate // prompt ? PDBEntry pe = new AssociatePdbFileWithSeq() + * .associatePdbWithSeq(file, protocol, mtch, true); if (pe != null) + * { System.err.println("Associated file : " + file + " with " + + * mtch.getDisplayId(true)); alignPanel.paintAlignment(true); } } // + * TODO: maybe need to load as normal otherwise return; } } + */ + // try to parse it as a features file + boolean isGroupsFile = parseFeaturesFile(file, protocol); + // if it wasn't a features file then we just treat it as a general + // alignment file to load into the current view. + if (!isGroupsFile) + { + new FileLoader().LoadFile(viewport, file, protocol, format); + } + else + { + alignPanel.paintAlignment(true); + } } } } @@ -4719,6 +4930,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } } + @Override public void tabSelectionChanged(int index) { if (index > -1) @@ -4729,6 +4941,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } } + @Override public void tabbedPane_mousePressed(MouseEvent e) { if (SwingUtilities.isRightMouseButton(e)) @@ -4753,10 +4966,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * Open the dialog for regex description parsing. */ + @Override protected void extractScores_actionPerformed(ActionEvent e) { ParseProperties pp = new jalview.analysis.ParseProperties( - viewport.alignment); + viewport.getAlignment()); // TODO: verify regex and introduce GUI dialog for version 2.5 // if (pp.getScoresFromDescription("col", "score column ", // "\\W*([-+]?\\d*\\.?\\d*e?-?\\d*)\\W+([-+]?\\d*\\.?\\d*e?-?\\d*)", @@ -4770,11 +4984,12 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /* * (non-Javadoc) - * + * * @see * jalview.jbgui.GAlignFrame#showDbRefs_actionPerformed(java.awt.event.ActionEvent * ) */ + @Override protected void showDbRefs_actionPerformed(ActionEvent e) { viewport.setShowDbRefs(showDbRefsMenuitem.isSelected()); @@ -4782,10 +4997,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /* * (non-Javadoc) - * + * * @seejalview.jbgui.GAlignFrame#showNpFeats_actionPerformed(java.awt.event. * ActionEvent) */ + @Override protected void showNpFeats_actionPerformed(ActionEvent e) { viewport.setShowNpFeats(showNpFeatsMenuitem.isSelected()); @@ -4794,7 +5010,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * find the viewport amongst the tabs in this alignment frame and close that * tab - * + * * @param av */ public boolean closeView(AlignViewport av) @@ -4835,11 +5051,13 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, fetchr.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { new Thread(new Runnable() { + @Override public void run() { new jalview.ws.DBRefFetcher(alignPanel.av @@ -4855,43 +5073,61 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, final AlignFrame me = this; new Thread(new Runnable() { + @Override public void run() { final jalview.ws.SequenceFetcher sf = SequenceFetcher .getSequenceFetcherSingleton(me); - final String[] otherdb = sf.getOrderedSupportedSources(); - // sf.getDbInstances(jalview.ws.dbsources.DasSequenceSource.class); - // jalview.util.QuickSort.sort(otherdb, otherdb); javax.swing.SwingUtilities.invokeLater(new Runnable() { + @Override public void run() { - + String[] dbclasses = sf.getOrderedSupportedSources(); + // sf.getDbInstances(jalview.ws.dbsources.DasSequenceSource.class); + // jalview.util.QuickSort.sort(otherdb, otherdb); + List otherdb; JMenu dfetch = new JMenu(); - JMenuItem fetchr; - rfetch.add(dfetch); - int comp = 0, mcomp = 15; + JMenu ifetch = new JMenu(); + JMenuItem fetchr = null; + int comp = 0, icomp = 0, mcomp = 15; String mname = null; - if (otherdb != null && otherdb.length > 0) + int dbi = 0; + for (String dbclass : dbclasses) { - for (int i = 0; i < otherdb.length; i++) + otherdb = sf.getSourceProxy(dbclass); + // add a single entry for this class, or submenu allowing 'fetch + // all' or pick one + if (otherdb == null || otherdb.size() < 1) { - String dbname = sf.getSourceProxy(otherdb[i]).getDbName(); - if (mname == null) - { - mname = "from '" + dbname + "'"; - } - fetchr = new JMenuItem(otherdb[i]); - final String[] dassource = new String[] - { otherdb[i] }; + continue; + } + // List dbs=otherdb; + // otherdb=new ArrayList(); + // for (DbSourceProxy db:dbs) + // { + // if (!db.isA(DBRefSource.ALIGNMENTDB) + // } + if (mname == null) + { + mname = "From " + dbclass; + } + if (otherdb.size() == 1) + { + final DbSourceProxy[] dassource = otherdb + .toArray(new DbSourceProxy[0]); + DbSourceProxy src = otherdb.get(0); + fetchr = new JMenuItem(src.getDbSource()); fetchr.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { new Thread(new Runnable() { + @Override public void run() { new jalview.ws.DBRefFetcher(alignPanel.av @@ -4903,17 +5139,112 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } }); - fetchr.setToolTipText("Retrieve from " + dbname); + fetchr.setToolTipText("" + + JvSwingUtils.wrapTooltip("Retrieve from " + + src.getDbName()) + ""); dfetch.add(fetchr); - if (comp++ == mcomp || i == (otherdb.length - 1)) + comp++; + } + else + { + final DbSourceProxy[] dassource = otherdb + .toArray(new DbSourceProxy[0]); + // fetch all entry + DbSourceProxy src = otherdb.get(0); + fetchr = new JMenuItem("Fetch All '" + src.getDbSource() + + "'"); + fetchr.addActionListener(new ActionListener() { - dfetch.setText(mname + " to '" + dbname + "'"); - rfetch.add(dfetch); - dfetch = new JMenu(); - mname = null; - comp = 0; + @Override + public void actionPerformed(ActionEvent e) + { + new Thread(new Runnable() + { + + @Override + public void run() + { + new jalview.ws.DBRefFetcher(alignPanel.av + .getSequenceSelection(), + alignPanel.alignFrame, dassource) + .fetchDBRefs(false); + } + }).start(); + } + }); + + fetchr.setToolTipText("" + + JvSwingUtils.wrapTooltip("Retrieve from all " + + otherdb.size() + " sources in " + + src.getDbSource() + "
First is :" + + src.getDbName()) + ""); + dfetch.add(fetchr); + comp++; + // and then build the rest of the individual menus + ifetch = new JMenu("Sources from " + src.getDbSource()); + icomp = 0; + String imname = null; + int i = 0; + for (DbSourceProxy sproxy : otherdb) + { + String dbname = sproxy.getDbName(); + String sname = dbname.length() > 5 ? dbname.substring(0, + 5) + "..." : dbname; + String msname = dbname.length() > 10 ? dbname.substring( + 0, 10) + "..." : dbname; + if (imname == null) + { + imname = "from '" + sname + "'"; + } + fetchr = new JMenuItem(msname); + final DbSourceProxy[] dassrc = + { sproxy }; + fetchr.addActionListener(new ActionListener() + { + + @Override + public void actionPerformed(ActionEvent e) + { + new Thread(new Runnable() + { + + @Override + public void run() + { + new jalview.ws.DBRefFetcher(alignPanel.av + .getSequenceSelection(), + alignPanel.alignFrame, dassrc) + .fetchDBRefs(false); + } + }).start(); + } + + }); + fetchr.setToolTipText("" + + JvSwingUtils.wrapTooltip("Retrieve from " + + dbname) + ""); + ifetch.add(fetchr); + ++i; + if (++icomp >= mcomp || i == (otherdb.size())) + { + ifetch.setText(imname + " to '" + sname + "'"); + dfetch.add(ifetch); + ifetch = new JMenu(); + imname = null; + icomp = 0; + comp++; + } } } + ++dbi; + if (comp >= mcomp || dbi >= (dbclasses.length)) + { + dfetch.setText(mname + " to '" + dbclass + "'"); + rfetch.add(dfetch); + dfetch = new JMenu(); + mname = null; + comp = 0; + } } } }); @@ -4925,6 +5256,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * Left justify the whole alignment. */ + @Override protected void justifyLeftMenuItem_actionPerformed(ActionEvent e) { AlignmentI al = viewport.getAlignment(); @@ -4935,6 +5267,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * Right justify the whole alignment. */ + @Override protected void justifyRightMenuItem_actionPerformed(ActionEvent e) { AlignmentI al = viewport.getAlignment(); @@ -4950,11 +5283,12 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /* * (non-Javadoc) - * + * * @see * jalview.jbgui.GAlignFrame#showUnconservedMenuItem_actionPerformed(java. * awt.event.ActionEvent) */ + @Override protected void showUnconservedMenuItem_actionPerformed(ActionEvent e) { viewport.setShowUnconserved(showNonconservedMenuItem.getState()); @@ -4963,11 +5297,12 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /* * (non-Javadoc) - * + * * @see * jalview.jbgui.GAlignFrame#showGroupConsensus_actionPerformed(java.awt.event * .ActionEvent) */ + @Override protected void showGroupConsensus_actionPerformed(ActionEvent e) { viewport.setShowGroupConsensus(showGroupConsensus.getState()); @@ -4977,11 +5312,12 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /* * (non-Javadoc) - * + * * @see * jalview.jbgui.GAlignFrame#showGroupConservation_actionPerformed(java.awt * .event.ActionEvent) */ + @Override protected void showGroupConservation_actionPerformed(ActionEvent e) { viewport.setShowGroupConservation(showGroupConservation.getState()); @@ -4990,11 +5326,12 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /* * (non-Javadoc) - * + * * @see * jalview.jbgui.GAlignFrame#showConsensusHistogram_actionPerformed(java.awt * .event.ActionEvent) */ + @Override protected void showConsensusHistogram_actionPerformed(ActionEvent e) { viewport.setShowConsensusHistogram(showConsensusHistogram.getState()); @@ -5003,17 +5340,26 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /* * (non-Javadoc) - * + * * @see * jalview.jbgui.GAlignFrame#showConsensusProfile_actionPerformed(java.awt * .event.ActionEvent) */ + @Override protected void showSequenceLogo_actionPerformed(ActionEvent e) { viewport.setShowSequenceLogo(showSequenceLogo.getState()); alignPanel.updateAnnotation(applyAutoAnnotationSettings.getState()); } + @Override + protected void normaliseSequenceLogo_actionPerformed(ActionEvent e) + { + viewport.setNormaliseSequenceLogo(normaliseSequenceLogo.getState()); + alignPanel.updateAnnotation(applyAutoAnnotationSettings.getState()); + } + + @Override protected void applyAutoAnnotationSettings_actionPerformed(ActionEvent e) { alignPanel.updateAnnotation(applyAutoAnnotationSettings.getState()); @@ -5021,11 +5367,12 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /* * (non-Javadoc) - * + * * @see * jalview.jbgui.GAlignFrame#makeGrpsFromSelection_actionPerformed(java.awt * .event.ActionEvent) */ + @Override protected void makeGrpsFromSelection_actionPerformed(ActionEvent e) { if (viewport.getSelectionGroup() != null) @@ -5033,9 +5380,9 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, SequenceGroup[] gps = jalview.analysis.Grouping.makeGroupsFrom( viewport.getSequenceSelection(), viewport.getAlignmentView(true).getSequenceStrings( - viewport.getGapCharacter()), - viewport.alignment.getGroups()); - viewport.alignment.deleteAllGroups(); + viewport.getGapCharacter()), viewport.getAlignment() + .getGroups()); + viewport.getAlignment().deleteAllGroups(); viewport.sequenceColours = null; viewport.setSelectionGroup(null); // set view properties for each group @@ -5043,13 +5390,13 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { gps[g].setShowNonconserved(viewport.getShowUnconserved()); gps[g].setshowSequenceLogo(viewport.isShowSequenceLogo()); - viewport.alignment.addGroup(gps[g]); + viewport.getAlignment().addGroup(gps[g]); Color col = new Color((int) (Math.random() * 255), (int) (Math.random() * 255), (int) (Math.random() * 255)); col = col.brighter(); - for (Enumeration sq = gps[g].getSequences(null).elements(); sq - .hasMoreElements(); viewport.setSequenceColour( - (SequenceI) sq.nextElement(), col)) + for (SequenceI s:gps[g].getSequences()) + viewport.setSequenceColour( + s, col) ; } PaintRefresher.Refresh(this, viewport.getSequenceSetId()); @@ -5060,7 +5407,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * make the given alignmentPanel the currently selected tab - * + * * @param alignmentPanel */ public void setDisplayedView(AlignmentPanel alignmentPanel) @@ -5072,7 +5419,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, "Implementation error: cannot show a view from another alignment in an AlignFrame."); } if (tabbedPane != null - & alignPanels.indexOf(alignmentPanel) != tabbedPane.getSelectedIndex()) + & alignPanels.indexOf(alignmentPanel) != tabbedPane + .getSelectedIndex()) { tabbedPane.setSelectedIndex(alignPanels.indexOf(alignmentPanel)); } @@ -5090,6 +5438,7 @@ class PrintThread extends Thread static PageFormat pf; + @Override public void run() { PrinterJob printJob = PrinterJob.getPrinterJob();