2 * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2)
3 * Copyright (C) 2014 The Jalview Authors
5 * This file is part of Jalview.
7 * Jalview is free software: you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation, either version 3
10 * of the License, or (at your option) any later version.
12 * Jalview is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty
14 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15 * PURPOSE. See the GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
19 * The Jalview Authors are detailed in the 'AUTHORS' file.
23 import jalview.analysis.Conservation;
24 import jalview.datamodel.AlignmentAnnotation;
25 import jalview.datamodel.AlignmentI;
26 import jalview.datamodel.AlignmentView;
27 import jalview.datamodel.CigarArray;
28 import jalview.datamodel.ColumnSelection;
29 import jalview.datamodel.SequenceCollectionI;
30 import jalview.datamodel.SequenceGroup;
31 import jalview.datamodel.SequenceI;
32 import jalview.schemes.ColourSchemeI;
34 import java.awt.Color;
35 import java.util.Hashtable;
36 import java.util.List;
43 public interface AlignViewportI extends ViewStyleI
53 * calculate the height for visible annotation, revalidating bounds where
54 * necessary ABSTRACT GUI METHOD
56 * @return total height of annotation
58 public int calcPanelHeight();
60 boolean hasHiddenColumns();
62 boolean isValidCharWidth();
64 boolean isShowConsensusHistogram();
66 boolean isShowSequenceLogo();
68 boolean isNormaliseSequenceLogo();
70 ColourSchemeI getGlobalColourScheme();
72 AlignmentI getAlignment();
74 ColumnSelection getColumnSelection();
76 Hashtable[] getSequenceConsensusHash();
79 * Get consensus data table for the cDNA complement of this alignment (if any)
83 Hashtable[] getComplementConsensusHash();
85 Hashtable[] getRnaStructureConsensusHash();
87 boolean isIgnoreGapsConsensus();
89 boolean isCalculationInProgress(AlignmentAnnotation alignmentAnnotation);
91 AlignmentAnnotation getAlignmentQualityAnnot();
93 AlignmentAnnotation getAlignmentConservationAnnotation();
96 * get the container for alignment consensus annotation
100 AlignmentAnnotation getAlignmentConsensusAnnotation();
103 * get the container for cDNA complement consensus annotation
107 AlignmentAnnotation getComplementConsensusAnnotation();
110 * Test to see if viewport is still open and active
112 * @return true indicates that all references to viewport should be dropped
117 * get the associated calculation thread manager for the view
121 AlignCalcManagerI getCalcManager();
124 * get the percentage gaps allowed in a conservation calculation
127 public int getConsPercGaps();
130 * set the consensus result object for the viewport
134 void setSequenceConsensusHash(Hashtable[] hconsensus);
137 * Set the cDNA complement consensus for the viewport
141 void setComplementConsensusHash(Hashtable[] hconsensus);
145 * @return the alignment annotatino row for the structure consensus
148 AlignmentAnnotation getAlignmentStrucConsensusAnnotation();
151 * set the Rna structure consensus result object for the viewport
153 * @param hStrucConsensus
155 void setRnaStructureConsensusHash(Hashtable[] hStrucConsensus);
158 * set global colourscheme
162 void setGlobalColourScheme(ColourSchemeI rhc);
164 Map<SequenceI, SequenceCollectionI> getHiddenRepSequences();
166 void setHiddenRepSequences(
167 Map<SequenceI, SequenceCollectionI> hiddenRepSequences);
170 * hides or shows dynamic annotation rows based on groups and group and
171 * alignment associated auto-annotation state flags apply the current
172 * group/autoannotation settings to the alignment view. Usually you should
173 * call the AlignmentViewPanel.adjustAnnotationHeight() method afterwards to
174 * ensure the annotation panel bounds are set correctly.
176 * @param applyGlobalSettings
177 * - apply to all autoannotation rows or just the ones associated
178 * with the current visible region
179 * @param preserveNewGroupSettings
180 * - don't apply global settings to groups which don't already have
181 * group associated annotation
183 void updateGroupAnnotationSettings(boolean applyGlobalSettings,
184 boolean preserveNewGroupSettings);
187 * @return true if a reference sequence is set and should be displayed
189 public boolean isDisplayReferenceSeq();
192 * @return set the flag for displaying reference sequences when they are
195 public void setDisplayReferenceSeq(boolean displayReferenceSeq);
198 * @return true if colourschemes should render according to reference sequence
199 * rather than consensus if available
201 public boolean isColourByReferenceSeq();
204 * @return true set flag for deciding if colourschemes should render according
205 * to reference sequence rather than consensus if available
207 public void setColourByReferenceSeq(boolean colourByReferenceSeq);
209 void setSequenceColour(SequenceI seq, Color col);
211 Color getSequenceColour(SequenceI seq);
213 void updateSequenceIdColours();
215 SequenceGroup getSelectionGroup();
218 * get the currently selected sequence objects or all the sequences in the
219 * alignment. TODO: change to List<>
221 * @return array of references to sequence objects
223 SequenceI[] getSequenceSelection();
225 void clearSequenceColours();
228 * This method returns the visible alignment as text, as seen on the GUI, ie
229 * if columns are hidden they will not be returned in the result. Use this for
230 * calculating trees, PCA, redundancy etc on views which contain hidden
235 CigarArray getViewAsCigars(boolean selectedRegionOnly);
238 * return a compact representation of the current alignment selection to pass
239 * to an analysis function
241 * @param selectedOnly
242 * boolean true to just return the selected view
243 * @return AlignmentView
245 AlignmentView getAlignmentView(boolean selectedOnly);
248 * return a compact representation of the current alignment selection to pass
249 * to an analysis function
251 * @param selectedOnly
252 * boolean true to just return the selected view
254 * boolean true to annotate the alignment view with groups on the
255 * alignment (and intersecting with selected region if selectedOnly
257 * @return AlignmentView
259 AlignmentView getAlignmentView(boolean selectedOnly, boolean markGroups);
262 * This method returns the visible alignment as text, as seen on the GUI, ie
263 * if columns are hidden they will not be returned in the result. Use this for
264 * calculating trees, PCA, redundancy etc on views which contain hidden
269 String[] getViewAsString(boolean selectedRegionOnly);
271 void setSelectionGroup(SequenceGroup sg);
273 char getGapCharacter();
275 void setColumnSelection(ColumnSelection cs);
277 void setConservation(Conservation cons);
280 * get a copy of the currently visible alignment annotation
281 * @param selectedOnly if true - trim to selected regions on the alignment
282 * @return an empty list or new alignment annotation objects shown only visible columns trimmed to selected region only
284 List<AlignmentAnnotation> getVisibleAlignmentAnnotation(
285 boolean selectedOnly);
287 FeaturesDisplayedI getFeaturesDisplayed();
289 String getSequenceSetId();
291 boolean isShowSequenceFeatures();
293 void setShowSequenceFeatures(boolean b);
298 * indicating if annotation panel shown below alignment
301 void setShowAnnotation(boolean b);
304 * flag indicating if annotation panel shown below alignment
308 boolean isShowAnnotation();
310 boolean isRightAlignIds();
312 void setRightAlignIds(boolean rightAlignIds);
314 boolean areFeaturesDisplayed();
316 void setShowSequenceFeaturesHeight(boolean selected);
318 boolean isShowSequenceFeaturesHeight();
320 void setFeaturesDisplayed(FeaturesDisplayedI featuresDisplayedI);
322 void alignmentChanged(AlignmentViewPanel ap);
325 * @return the padGaps
333 void setPadGaps(boolean padGaps);
336 * return visible region boundaries within given column range
339 * first column (inclusive, from 0)
341 * last column (exclusive)
342 * @return int[][] range of {start,end} visible positions
344 List<int[]> getVisibleRegionBoundaries(int min, int max);
347 * This method returns an array of new SequenceI objects derived from the
348 * whole alignment or just the current selection with start and end points
351 * @note if you need references to the actual SequenceI objects in the
352 * alignment or currently selected then use getSequenceSelection()
353 * @return selection as new sequenceI objects
355 SequenceI[] getSelectionAsNewSequence();
357 void invertColumnSelection();
360 * broadcast selection to any interested parties
362 void sendSelection();
365 * calculate the row position for alignmentIndex if all hidden sequences were
368 * @param alignmentIndex
369 * @return adjusted row position
371 int adjustForHiddenSeqs(int alignmentIndex);
373 boolean hasHiddenRows();
377 * @return a copy of this view's current display settings
379 public ViewStyleI getViewStyle();
382 * update the view's display settings with the given style set
384 * @param settingsForView
386 public void setViewStyle(ViewStyleI settingsForView);
389 * Returns a viewport which holds the cDna for this (protein), or vice versa,
390 * or null if none is set.
394 AlignViewportI getCodingComplement();
397 * Sets the viewport which holds the cDna for this (protein), or vice versa.
398 * Implementation should guarantee that the reciprocal relationship is always
399 * set, i.e. each viewport is the complement of the other.
401 void setCodingComplement(AlignViewportI sl);
404 * Answers true if viewport hosts DNA/RNA, else false.
408 boolean isNucleotide();
411 * Returns an id guaranteed to be unique for this viewport.