X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fappletgui%2FAlignViewport.java;h=edacce80d36dab239b5f6b4c8d1c2649ed9dc07b;hb=b5667f39acdf309cd92881b73edfda591e0acaf4;hp=ef09b976e4b4b6979f50e146be3947770d25fb3a;hpb=838e4f91d4a53dd315640dbc9ff6ef7a815ee576;p=jalview.git diff --git a/src/jalview/appletgui/AlignViewport.java b/src/jalview/appletgui/AlignViewport.java index ef09b97..edacce8 100644 --- a/src/jalview/appletgui/AlignViewport.java +++ b/src/jalview/appletgui/AlignViewport.java @@ -1,6 +1,6 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer (Version 2.9.0b1) - * Copyright (C) 2015 The Jalview Authors + * Copyright (C) $$Year-Rel$$ The Jalview Authors + * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) * * This file is part of Jalview. * @@ -20,28 +20,29 @@ */ package jalview.appletgui; -import jalview.analysis.NJTree; import jalview.api.AlignViewportI; +import jalview.api.FeatureSettingsModelI; import jalview.bin.JalviewLite; import jalview.commands.CommandI; import jalview.datamodel.AlignmentI; import jalview.datamodel.ColumnSelection; +import jalview.datamodel.HiddenColumns; import jalview.datamodel.SearchResults; -import jalview.datamodel.Sequence; +import jalview.datamodel.SearchResultsI; import jalview.datamodel.SequenceGroup; -import jalview.datamodel.SequenceI; +import jalview.renderer.ResidueShader; import jalview.schemes.ColourSchemeProperty; import jalview.schemes.UserColourScheme; -import jalview.structure.CommandListener; import jalview.structure.SelectionSource; import jalview.structure.StructureSelectionManager; import jalview.structure.VamsasSource; import jalview.viewmodel.AlignmentViewport; import java.awt.Font; +import java.awt.FontMetrics; -public class AlignViewport extends AlignmentViewport implements - SelectionSource, VamsasSource, CommandListener +public class AlignViewport extends AlignmentViewport + implements SelectionSource { boolean cursorMode = false; @@ -49,34 +50,27 @@ public class AlignViewport extends AlignmentViewport implements boolean validCharWidth = true; - NJTree currentTree = null; - public jalview.bin.JalviewLite applet; boolean MAC = false; private AnnotationColumnChooser annotationColumnSelectionState; - public void finalize() - { - applet = null; - quality = null; - alignment = null; - colSel = null; - } + java.awt.Frame nullFrame; + + protected FeatureSettings featureSettings = null; + + private float heightScale = 1, widthScale = 1; public AlignViewport(AlignmentI al, JalviewLite applet) { - super(); + super(al); calculator = new jalview.workers.AlignCalcManager(); this.applet = applet; - alignment = al; + // we always pad gaps this.setPadGaps(true); - this.startRes = 0; - this.endRes = al.getWidth() - 1; - this.startSeq = 0; - this.endSeq = al.getHeight() - 1; + if (applet != null) { // get the width and height scaling factors if they were specified @@ -85,21 +79,21 @@ public class AlignViewport extends AlignmentViewport implements { try { - widthScale = new Float(param).floatValue(); + widthScale = Float.valueOf(param).floatValue(); } catch (Exception e) { } if (widthScale <= 1.0) { - System.err - .println("Invalid alignment character width scaling factor (" + System.err.println( + "Invalid alignment character width scaling factor (" + widthScale + "). Ignoring."); widthScale = 1; } if (JalviewLite.debug) { - System.err - .println("Alignment character width scaling factor is now " + System.err.println( + "Alignment character width scaling factor is now " + widthScale); } } @@ -108,33 +102,33 @@ public class AlignViewport extends AlignmentViewport implements { try { - heightScale = new Float(param).floatValue(); + heightScale = Float.valueOf(param).floatValue(); } catch (Exception e) { } if (heightScale <= 1.0) { - System.err - .println("Invalid alignment character height scaling factor (" + System.err.println( + "Invalid alignment character height scaling factor (" + heightScale + "). Ignoring."); heightScale = 1; } if (JalviewLite.debug) { - System.err - .println("Alignment character height scaling factor is now " + System.err.println( + "Alignment character height scaling factor is now " + heightScale); } } } - setFont(font); + setFont(font, true); MAC = new jalview.util.Platform().isAMac(); if (applet != null) { - setShowJVSuffix(applet.getDefaultParameter("showFullId", - getShowJVSuffix())); + setShowJVSuffix( + applet.getDefaultParameter("showFullId", getShowJVSuffix())); setShowAnnotation(applet.getDefaultParameter("showAnnotation", isShowAnnotation())); @@ -147,11 +141,14 @@ public class AlignViewport extends AlignmentViewport implements showConsensus = applet.getDefaultParameter("showConsensus", showConsensus); + showOccupancy = applet.getDefaultParameter("showOccupancy", + showOccupancy); + setShowUnconserved(applet.getDefaultParameter("showUnconserved", getShowUnconserved())); - setScaleProteinAsCdna(applet.getDefaultParameter( - "scaleProteinAsCdna", isScaleProteinAsCdna())); + setScaleProteinAsCdna(applet.getDefaultParameter("scaleProteinAsCdna", + isScaleProteinAsCdna())); String param = applet.getParameter("upperCase"); if (param != null) @@ -187,9 +184,9 @@ public class AlignViewport extends AlignmentViewport implements if (applet != null) { - String colour = al.isNucleotide() ? applet - .getParameter("defaultColourNuc") : applet - .getParameter("defaultColourProt"); + String colour = al.isNucleotide() + ? applet.getParameter("defaultColourNuc") + : applet.getParameter("defaultColourProt"); if (colour == null) { colour = applet.getParameter("defaultColour"); @@ -205,68 +202,29 @@ public class AlignViewport extends AlignmentViewport implements if (colour != null) { - globalColourScheme = ColourSchemeProperty.getColour(alignment, - colour); - if (globalColourScheme != null) + residueShading = new ResidueShader( + ColourSchemeProperty.getColourScheme(this, alignment, + colour)); + if (residueShading != null) { - globalColourScheme.setConsensus(hconsensus); + residueShading.setConsensus(consensusProfiles); } } if (applet.getParameter("userDefinedColour") != null) { - ((UserColourScheme) globalColourScheme).parseAppletParameter(applet - .getParameter("userDefinedColour")); + residueShading = new ResidueShader(new UserColourScheme( + applet.getParameter("userDefinedColour"))); } } initAutoAnnotation(); - } /** - * get the consensus sequence as displayed under the PID consensus annotation - * row. - * - * @return consensus sequence as a new sequence object + * {@inheritDoc} */ - public SequenceI getConsensusSeq() - { - if (consensus == null) - { - updateConsensus(null); - } - if (consensus == null) - { - return null; - } - StringBuilder seqs = new StringBuilder(consensus.annotations.length); - for (int i = 0; i < consensus.annotations.length; i++) - { - if (consensus.annotations[i] != null) - { - if (consensus.annotations[i].description.charAt(0) == '[') - { - seqs.append(consensus.annotations[i].description.charAt(1)); - } - else - { - seqs.append(consensus.annotations[i].displayCharacter); - } - } - } - SequenceI sq = new Sequence("Consensus", seqs.toString()); - sq.setDescription("Percentage Identity Consensus " - + ((ignoreGapsInConsensusCalculation) ? " without gaps" : "")); - return sq; - } - - java.awt.Frame nullFrame; - - protected FeatureSettings featureSettings = null; - - private float heightScale = 1, widthScale = 1; - - public void setFont(Font f) + @Override + public void setFont(Font f, boolean setGrid) { font = f; if (nullFrame == null) @@ -275,15 +233,19 @@ public class AlignViewport extends AlignmentViewport implements nullFrame.addNotify(); } - java.awt.FontMetrics fm = nullFrame.getGraphics().getFontMetrics(font); - setCharHeight((int) (heightScale * fm.getHeight())); - setCharWidth((int) (widthScale * fm.charWidth('M'))); + if (setGrid) + { + FontMetrics fm = nullFrame.getGraphics().getFontMetrics(font); + setCharHeight((int) (heightScale * fm.getHeight())); + setCharWidth((int) (widthScale * fm.charWidth('M'))); + } if (isUpperCasebold()) { Font f2 = new Font(f.getName(), Font.BOLD, f.getSize()); - fm = nullFrame.getGraphics().getFontMetrics(f2); - setCharWidth((int) (widthScale * (fm.stringWidth("MMMMMMMMMMM") / 10))); + FontMetrics fm = nullFrame.getGraphics().getFontMetrics(f2); + setCharWidth( + (int) (widthScale * (fm.stringWidth("MMMMMMMMMMM") / 10))); } } @@ -294,17 +256,7 @@ public class AlignViewport extends AlignmentViewport implements public void resetSeqLimits(int height) { - setEndSeq(height / getCharHeight()); - } - - public void setCurrentTree(NJTree tree) - { - currentTree = tree; - } - - public NJTree getCurrentTree() - { - return currentTree; + ranges.setEndSeq(height / getCharHeight()); } boolean centreColumnLabels; @@ -325,11 +277,13 @@ public class AlignViewport extends AlignmentViewport implements return followSelection; } + @Override public void sendSelection() { getStructureSelectionManager().sendSelection( new SequenceGroup(getSelectionGroup()), - new ColumnSelection(getColumnSelection()), this); + new ColumnSelection(getColumnSelection()), + new HiddenColumns(getAlignment().getHiddenColumns()), this); } /** @@ -346,52 +300,10 @@ public class AlignViewport extends AlignmentViewport implements } /** - * synthesize a column selection if none exists so it covers the given - * selection group. if wholewidth is false, no column selection is made if the - * selection group covers the whole alignment width. - * - * @param sg - * @param wholewidth - */ - public void expandColSelection(SequenceGroup sg, boolean wholewidth) - { - int sgs, sge; - if (sg != null - && (sgs = sg.getStartRes()) >= 0 - && sg.getStartRes() <= (sge = sg.getEndRes()) - && (colSel == null || colSel.getSelected() == null || colSel - .getSelected().size() == 0)) - { - if (!wholewidth && alignment.getWidth() == (1 + sge - sgs)) - { - // do nothing - return; - } - if (colSel == null) - { - colSel = new ColumnSelection(); - } - for (int cspos = sg.getStartRes(); cspos <= sg.getEndRes(); cspos++) - { - colSel.addElement(cspos); - } - } - } - - public boolean isNormaliseSequenceLogo() - { - return normaliseSequenceLogo; - } - - public void setNormaliseSequenceLogo(boolean state) - { - normaliseSequenceLogo = state; - } - - /** * * @return true if alignment characters should be displayed */ + @Override public boolean isValidCharWidth() { return validCharWidth; @@ -461,13 +373,28 @@ 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 seqOffset = findComplementScrollTarget(sr); if (!sr.isEmpty()) { - complementPanel.setFollowingComplementScroll(true); + complementPanel.setToScrollComplementPanel(false); complementPanel.scrollToCentre(sr, seqOffset); + complementPanel.setToScrollComplementPanel(true); } } + /** + * Applies the supplied feature settings descriptor to currently known + * features. This supports an 'initial configuration' of feature colouring + * based on a preset or user favourite. This may then be modified in the usual + * way using the Feature Settings dialogue. + * + * @param featureSettings + */ + @Override + public void applyFeaturesStyle(FeatureSettingsModelI featureSettings) + { + // TODO implement for applet + } + }