X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAlignViewport.java;h=2005b91757de11968e32e4cff50d0280d8f63a5f;hb=refs%2Fheads%2Ffeatures%2Fhmmer_statistics;hp=d4d2054953611af16b01374513ceb7dc378c6dcf;hpb=8b27085fa7fc5f2877e078421284c2636b85b8c6;p=jalview.git diff --git a/src/jalview/gui/AlignViewport.java b/src/jalview/gui/AlignViewport.java index d4d2054..2005b91 100644 --- a/src/jalview/gui/AlignViewport.java +++ b/src/jalview/gui/AlignViewport.java @@ -18,29 +18,11 @@ * along with Jalview. If not, see . * The Jalview Authors are detailed in the 'AUTHORS' file. */ -/* - * Jalview - A Sequence Alignment Editor and Viewer - * Copyright (C) 2007 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program 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 this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - */ package jalview.gui; import jalview.analysis.AlignmentUtils; import jalview.analysis.AnnotationSorter.SequenceAnnotationOrder; -import jalview.analysis.NJTree; +import jalview.analysis.TreeModel; import jalview.api.AlignViewportI; import jalview.api.AlignmentViewPanel; import jalview.api.FeatureColourI; @@ -53,14 +35,18 @@ import jalview.datamodel.AlignedCodonFrame; import jalview.datamodel.Alignment; import jalview.datamodel.AlignmentI; import jalview.datamodel.ColumnSelection; +import jalview.datamodel.HiddenColumns; import jalview.datamodel.PDBEntry; import jalview.datamodel.SearchResults; +import jalview.datamodel.SearchResultsI; import jalview.datamodel.Sequence; import jalview.datamodel.SequenceGroup; import jalview.datamodel.SequenceI; +import jalview.renderer.ResidueShader; +import jalview.schemes.ColourSchemeI; import jalview.schemes.ColourSchemeProperty; +import jalview.schemes.ResidueColourScheme; import jalview.schemes.UserColourScheme; -import jalview.structure.CommandListener; import jalview.structure.SelectionSource; import jalview.structure.StructureSelectionManager; import jalview.structure.VamsasSource; @@ -71,6 +57,7 @@ import jalview.ws.params.AutoCalcSetting; import java.awt.Container; import java.awt.Dimension; import java.awt.Font; +import java.awt.FontMetrics; import java.awt.Rectangle; import java.util.ArrayList; import java.util.Hashtable; @@ -78,7 +65,6 @@ import java.util.List; import java.util.Vector; import javax.swing.JInternalFrame; -import javax.swing.JOptionPane; /** * DOCUMENT ME! @@ -87,11 +73,11 @@ import javax.swing.JOptionPane; * @version $Revision: 1.141 $ */ public class AlignViewport extends AlignmentViewport implements - SelectionSource, CommandListener + SelectionSource { Font font; - NJTree currentTree = null; + TreeModel currentTree = null; boolean cursorMode = false; @@ -120,7 +106,7 @@ public class AlignViewport extends AlignmentViewport implements */ public AlignViewport(AlignmentI al) { - setAlignment(al); + super(al); init(); } @@ -138,6 +124,7 @@ public class AlignViewport extends AlignmentViewport implements public AlignViewport(AlignmentI al, String seqsetid, String viewid) { + super(al); sequenceSetID = seqsetid; viewId = viewid; // TODO remove these once 2.4.VAMSAS release finished @@ -150,8 +137,8 @@ public class AlignViewport extends AlignmentViewport implements { Cache.log.debug("Setting viewport's view id : " + viewId); } - setAlignment(al); init(); + } /** @@ -162,12 +149,12 @@ public class AlignViewport extends AlignmentViewport implements * @param hiddenColumns * ColumnSelection */ - public AlignViewport(AlignmentI al, ColumnSelection hiddenColumns) + public AlignViewport(AlignmentI al, HiddenColumns hiddenColumns) { - setAlignment(al); + super(al); if (hiddenColumns != null) { - colSel = hiddenColumns; + al.setHiddenColumns(hiddenColumns); } init(); } @@ -180,7 +167,7 @@ public class AlignViewport extends AlignmentViewport implements * @param seqsetid * (may be null) */ - public AlignViewport(AlignmentI al, ColumnSelection hiddenColumns, + public AlignViewport(AlignmentI al, HiddenColumns hiddenColumns, String seqsetid) { this(al, hiddenColumns, seqsetid, null); @@ -196,9 +183,10 @@ public class AlignViewport extends AlignmentViewport implements * @param viewid * (may be null) */ - public AlignViewport(AlignmentI al, ColumnSelection hiddenColumns, + public AlignViewport(AlignmentI al, HiddenColumns hiddenColumns, String seqsetid, String viewid) { + super(al); sequenceSetID = seqsetid; viewId = viewid; // TODO remove these once 2.4.VAMSAS release finished @@ -211,10 +199,10 @@ public class AlignViewport extends AlignmentViewport implements { Cache.log.debug("Setting viewport's view id : " + viewId); } - setAlignment(al); + if (hiddenColumns != null) { - colSel = hiddenColumns; + al.setHiddenColumns(hiddenColumns); } init(); } @@ -253,10 +241,6 @@ public class AlignViewport extends AlignmentViewport implements void init() { - this.startRes = 0; - this.endRes = alignment.getWidth() - 1; - this.startSeq = 0; - this.endSeq = alignment.getHeight() - 1; applyViewProperties(); String fontName = Cache.getDefault("FONT_NAME", "SansSerif"); @@ -297,32 +281,33 @@ public class AlignViewport extends AlignmentViewport implements false); showGroupConsensus = Cache.getDefault("SHOW_GROUP_CONSENSUS", false); showConsensus = Cache.getDefault("SHOW_IDENTITY", true); + + showOccupancy = Cache.getDefault(Preferences.SHOW_OCCUPANCY, true); } initAutoAnnotation(); String colourProperty = alignment.isNucleotide() ? Preferences.DEFAULT_COLOUR_NUC : Preferences.DEFAULT_COLOUR_PROT; - String propertyValue = Cache.getProperty(colourProperty); - if (propertyValue == null) + String schemeName = Cache.getProperty(colourProperty); + if (schemeName == null) { - // fall back on this property for backwards compatibility - propertyValue = Cache.getProperty(Preferences.DEFAULT_COLOUR); + // only DEFAULT_COLOUR available in Jalview before 2.9 + schemeName = Cache.getDefault(Preferences.DEFAULT_COLOUR, + ResidueColourScheme.NONE); } - if (propertyValue != null) - { - globalColourScheme = ColourSchemeProperty.getColour(alignment, - propertyValue); + ColourSchemeI colourScheme = ColourSchemeProperty.getColourScheme( + alignment, schemeName); + residueShading = new ResidueShader(colourScheme); - if (globalColourScheme instanceof UserColourScheme) - { - globalColourScheme = UserDefinedColours.loadDefaultColours(); - ((UserColourScheme) globalColourScheme).setThreshold(0, - isIgnoreGapsConsensus()); - } + if (colourScheme instanceof UserColourScheme) + { + residueShading = new ResidueShader( + UserDefinedColours.loadDefaultColours()); + residueShading.setThreshold(0, isIgnoreGapsConsensus()); + } - if (globalColourScheme != null) - { - globalColourScheme.setConsensus(hconsensus); - } + if (residueShading != null) + { + residueShading.setConsensus(hconsensus); } } @@ -367,23 +352,19 @@ public class AlignViewport extends AlignmentViewport implements boolean validCharWidth; /** - * update view settings with the given font. You may need to call - * alignPanel.fontChanged to update the layout geometry - * - * @param setGrid - * when true, charWidth/height is set according to font mentrics + * {@inheritDoc} */ + @Override public void setFont(Font f, boolean setGrid) { font = f; Container c = new Container(); - java.awt.FontMetrics fm = c.getFontMetrics(font); - int w = viewStyle.getCharWidth(), ww = fm.charWidth('M'), h = viewStyle - .getCharHeight(); if (setGrid) { + FontMetrics fm = c.getFontMetrics(font); + int ww = fm.charWidth('M'); setCharHeight(fm.getHeight()); setCharWidth(ww); } @@ -400,7 +381,6 @@ public class AlignViewport extends AlignmentViewport implements super.setViewStyle(settingsForView); setFont(new Font(viewStyle.getFontName(), viewStyle.getFontStyle(), viewStyle.getFontSize()), false); - } /** @@ -419,10 +399,11 @@ public class AlignViewport extends AlignmentViewport implements * @param align * DOCUMENT ME! */ + @Override public void setAlignment(AlignmentI align) { replaceMappings(align); - this.alignment = align; + super.setAlignment(align); } /** @@ -510,7 +491,7 @@ public class AlignViewport extends AlignmentViewport implements * @param tree * DOCUMENT ME! */ - public void setCurrentTree(NJTree tree) + public void setCurrentTree(TreeModel tree) { currentTree = tree; } @@ -520,7 +501,7 @@ public class AlignViewport extends AlignmentViewport implements * * @return DOCUMENT ME! */ - public NJTree getCurrentTree() + public TreeModel getCurrentTree() { return currentTree; } @@ -546,7 +527,7 @@ public class AlignViewport extends AlignmentViewport implements { end = alignment.getWidth(); } - viscontigs = colSel.getVisibleContigs(start, end); + viscontigs = alignment.getHiddenColumns().getVisibleContigs(start, end); return viscontigs; } @@ -616,7 +597,9 @@ public class AlignViewport extends AlignmentViewport implements jalview.structure.StructureSelectionManager .getStructureSelectionManager(Desktop.instance).sendSelection( new SequenceGroup(getSelectionGroup()), - new ColumnSelection(getColumnSelection()), this); + new ColumnSelection(getColumnSelection()), + new HiddenColumns(getAlignment().getHiddenColumns()), + this); } /** @@ -669,13 +652,14 @@ public class AlignViewport extends AlignmentViewport implements */ public SequenceI[][] collateForPDB(PDBEntry[] pdbEntries) { - List seqvectors = new ArrayList(); + List seqvectors = new ArrayList<>(); for (PDBEntry pdb : pdbEntries) { - List choosenSeqs = new ArrayList(); + List choosenSeqs = new ArrayList<>(); for (SequenceI sq : alignment.getSequences()) { - Vector pdbRefEntries = sq.getDatasetSequence().getAllPDBEntries(); + Vector pdbRefEntries = sq.getDatasetSequence() + .getAllPDBEntries(); if (pdbRefEntries == null) { continue; @@ -707,7 +691,8 @@ public class AlignViewport extends AlignmentViewport implements } } } - seqvectors.add(choosenSeqs.toArray(new SequenceI[choosenSeqs.size()])); + seqvectors + .add(choosenSeqs.toArray(new SequenceI[choosenSeqs.size()])); } return seqvectors.toArray(new SequenceI[seqvectors.size()][]); } @@ -723,6 +708,11 @@ public class AlignViewport extends AlignmentViewport implements normaliseSequenceLogo = state; } + public void setNormaliseHMMSequenceLogo(boolean state) + { + normaliseHMMSequenceLogo = state; + } + /** * * @return true if alignment characters should be displayed @@ -733,7 +723,7 @@ public class AlignViewport extends AlignmentViewport implements return validCharWidth; } - private Hashtable calcIdParams = new Hashtable(); + private Hashtable calcIdParams = new Hashtable<>(); public AutoCalcSetting getCalcIdSettingsFor(String calcId) { @@ -869,7 +859,7 @@ public class AlignViewport extends AlignmentViewport implements } } - setEndSeq(getAlignment().getHeight()); + ranges.setEndSeq(getAlignment().getHeight()); firePropertyChange("alignment", null, getAlignment().getSequences()); } @@ -890,9 +880,9 @@ public class AlignViewport extends AlignmentViewport implements MessageManager.getString("label.new_window"), }; final String question = JvSwingUtils.wrapTooltip(true, MessageManager.getString("label.open_split_window?")); - int response = JOptionPane.showOptionDialog(Desktop.desktop, question, + int response = JvOptionPane.showOptionDialog(Desktop.desktop, question, MessageManager.getString("label.open_split_window"), - JOptionPane.DEFAULT_OPTION, JOptionPane.PLAIN_MESSAGE, null, + JvOptionPane.DEFAULT_OPTION, JvOptionPane.PLAIN_MESSAGE, null, options, options[0]); if (response != 1 && response != 2) @@ -1057,15 +1047,16 @@ public class AlignViewport extends AlignmentViewport implements * there is no complement, or it is not following highlights, or no mapping * is found, the result will be empty. */ - SearchResults sr = new SearchResults(); + SearchResultsI sr = new SearchResults(); int verticalOffset = findComplementScrollTarget(sr); if (!sr.isEmpty()) { // TODO would like next line without cast but needs more refactoring... final AlignmentPanel complementPanel = ((AlignViewport) getCodingComplement()) .getAlignPanel(); - complementPanel.setDontScrollComplement(true); + complementPanel.setToScrollComplementPanel(false); complementPanel.scrollToCentre(sr, verticalOffset); + complementPanel.setToScrollComplementPanel(true); } } @@ -1163,4 +1154,11 @@ public class AlignViewport extends AlignmentViewport implements fr.setTransparency(featureSettings.getTransparency()); } + @Override + public boolean isNormaliseHMMSequenceLogo() + { + // TODO Auto-generated method stub + return normaliseHMMSequenceLogo; + } + }