/* * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2b1) * Copyright (C) 2014 The Jalview Authors * * 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 * 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 * 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 . * The Jalview Authors are detailed in the 'AUTHORS' file. */ package jalview.api; import jalview.analysis.Conservation; import jalview.datamodel.AlignmentAnnotation; import jalview.datamodel.AlignmentI; import jalview.datamodel.AlignmentView; import jalview.datamodel.CigarArray; import jalview.datamodel.ColumnSelection; import jalview.datamodel.SequenceCollectionI; import jalview.datamodel.SequenceGroup; import jalview.datamodel.SequenceI; import jalview.schemes.ColourSchemeI; import java.awt.Color; import java.util.Hashtable; import java.util.List; import java.util.Map; /** * @author jimp * */ public interface AlignViewportI { int getCharWidth(); int getEndRes(); int getCharHeight(); /** * calculate the height for visible annotation, revalidating bounds where * necessary ABSTRACT GUI METHOD * * @return total height of annotation */ public int calcPanelHeight(); boolean hasHiddenColumns(); boolean isValidCharWidth(); boolean isShowConsensusHistogram(); boolean isShowSequenceLogo(); boolean isNormaliseSequenceLogo(); ColourSchemeI getGlobalColourScheme(); AlignmentI getAlignment(); ColumnSelection getColumnSelection(); Hashtable[] getSequenceConsensusHash(); Hashtable[] getRnaStructureConsensusHash(); boolean getIgnoreGapsConsensus(); boolean getCentreColumnLabels(); boolean isCalculationInProgress(AlignmentAnnotation alignmentAnnotation); AlignmentAnnotation getAlignmentQualityAnnot(); AlignmentAnnotation getAlignmentConservationAnnotation(); /** * get the container for alignment consensus annotation * * @return */ AlignmentAnnotation getAlignmentConsensusAnnotation(); /** * Test to see if viewport is still open and active * * @return true indicates that all references to viewport should be dropped */ boolean isClosed(); /** * get the associated calculation thread manager for the view * * @return */ AlignCalcManagerI getCalcManager(); /** * get the percentage gaps allowed in a conservation calculation * */ public int getConsPercGaps(); /** * set the consensus result object for the viewport * * @param hconsensus */ void setSequenceConsensusHash(Hashtable[] hconsensus); /** * * @return the alignment annotatino row for the structure consensus * calculation */ AlignmentAnnotation getAlignmentStrucConsensusAnnotation(); /** * set the Rna structure consensus result object for the viewport * * @param hStrucConsensus */ void setRnaStructureConsensusHash(Hashtable[] hStrucConsensus); /** * set global colourscheme * * @param rhc */ void setGlobalColourScheme(ColourSchemeI rhc); Map getHiddenRepSequences(); void setHiddenRepSequences( Map hiddenRepSequences); /** * hides or shows dynamic annotation rows based on groups and group and * alignment associated auto-annotation state flags apply the current * group/autoannotation settings to the alignment view. Usually you should * call the AlignmentViewPanel.adjustAnnotationHeight() method afterwards to * ensure the annotation panel bounds are set correctly. * * @param applyGlobalSettings * - apply to all autoannotation rows or just the ones associated * with the current visible region * @param preserveNewGroupSettings * - don't apply global settings to groups which don't already have * group associated annotation */ void updateGroupAnnotationSettings(boolean applyGlobalSettings, boolean preserveNewGroupSettings); /** * @return true if a reference sequence is set and should be displayed */ public boolean isDisplayReferenceSeq(); /** * @return set the flag for displaying reference sequences when they are * available */ public void setDisplayReferenceSeq(boolean displayReferenceSeq); /** * @return true if colourschemes should render according to reference sequence * rather than consensus if available */ public boolean isColourByReferenceSeq(); /** * @return true set flag for deciding if colourschemes should render according * to reference sequence rather than consensus if available */ public void setColourByReferenceSeq(boolean colourByReferenceSeq); void setSequenceColour(SequenceI seq, Color col); Color getSequenceColour(SequenceI seq); void updateSequenceIdColours(); SequenceGroup getSelectionGroup(); /** * get the currently selected sequence objects or all the sequences in the * alignment. TODO: change to List<> * * @return array of references to sequence objects */ SequenceI[] getSequenceSelection(); void clearSequenceColours(); /** * This method returns the visible alignment as text, as seen on the GUI, ie * if columns are hidden they will not be returned in the result. Use this for * calculating trees, PCA, redundancy etc on views which contain hidden * columns. * * @return String[] */ CigarArray getViewAsCigars(boolean selectedRegionOnly); /** * return a compact representation of the current alignment selection to pass * to an analysis function * * @param selectedOnly * boolean true to just return the selected view * @return AlignmentView */ AlignmentView getAlignmentView(boolean selectedOnly); /** * return a compact representation of the current alignment selection to pass * to an analysis function * * @param selectedOnly * boolean true to just return the selected view * @param markGroups * boolean true to annotate the alignment view with groups on the * alignment (and intersecting with selected region if selectedOnly * is true) * @return AlignmentView */ AlignmentView getAlignmentView(boolean selectedOnly, boolean markGroups); /** * This method returns the visible alignment as text, as seen on the GUI, ie * if columns are hidden they will not be returned in the result. Use this for * calculating trees, PCA, redundancy etc on views which contain hidden * columns. * * @return String[] */ String[] getViewAsString(boolean selectedRegionOnly); void setSelectionGroup(SequenceGroup sg); char getGapCharacter(); void setColumnSelection(ColumnSelection cs); void setConservation(Conservation cons); /** * get a copy of the currently visible alignment annotation * @param selectedOnly if true - trim to selected regions on the alignment * @return an empty list or new alignment annotation objects shown only visible columns trimmed to selected region only */ List getVisibleAlignmentAnnotation( boolean selectedOnly); FeaturesDisplayedI getFeaturesDisplayed(); String getSequenceSetId(); boolean isShowSequenceFeatures(); void setShowSequenceFeatures(boolean b); /** * * @param flag * indicating if annotation panel shown below alignment * */ void setShowAnnotation(boolean b); /** * flag indicating if annotation panel shown below alignment * * @return */ boolean isShowAnnotation(); boolean isRightAlignIds(); void setRightAlignIds(boolean rightAlignIds); boolean areFeaturesDisplayed(); void setShowSequenceFeaturesHeight(boolean selected); boolean isShowSequenceFeaturesHeight(); void setFeaturesDisplayed(FeaturesDisplayedI featuresDisplayedI); void alignmentChanged(AlignmentViewPanel ap); /** * @return the padGaps */ boolean isPadGaps(); /** * @param padGaps * the padGaps to set */ void setPadGaps(boolean padGaps); /** * return visible region boundaries within given column range * * @param min * first column (inclusive, from 0) * @param max * last column (exclusive) * @return int[][] range of {start,end} visible positions TODO: change to list * of int ranges */ int[][] getVisibleRegionBoundaries(int min, int max); /** * This method returns an array of new SequenceI objects derived from the * whole alignment or just the current selection with start and end points * adjusted * * @note if you need references to the actual SequenceI objects in the * alignment or currently selected then use getSequenceSelection() * @return selection as new sequenceI objects */ SequenceI[] getSelectionAsNewSequence(); void invertColumnSelection(); /** * broadcast selection to any interested parties */ void sendSelection(); /** * calculate the row position for alignmentIndex if all hidden sequences were * shown * * @param alignmentIndex * @return adjusted row position */ int adjustForHiddenSeqs(int alignmentIndex); boolean hasHiddenRows(); }