/*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2)
- * Copyright (C) 2014 The Jalview Authors
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
*
* This file is part of Jalview.
*
package jalview.api;
import jalview.analysis.Conservation;
+import jalview.analysis.TreeModel;
import jalview.datamodel.AlignmentAnnotation;
import jalview.datamodel.AlignmentI;
import jalview.datamodel.AlignmentView;
-import jalview.datamodel.CigarArray;
import jalview.datamodel.ColumnSelection;
+import jalview.datamodel.ProfilesI;
+import jalview.datamodel.SearchResultsI;
import jalview.datamodel.SequenceCollectionI;
import jalview.datamodel.SequenceGroup;
import jalview.datamodel.SequenceI;
+import jalview.renderer.ResidueShaderI;
import jalview.schemes.ColourSchemeI;
+import jalview.viewmodel.ViewportRanges;
import java.awt.Color;
+import java.awt.Font;
import java.util.Hashtable;
import java.util.List;
import java.util.Map;
* @author jimp
*
*/
-public interface AlignViewportI
+public interface AlignViewportI extends ViewStyleI
{
- int getCharWidth();
-
- int getEndRes();
-
- int getCharHeight();
+ /**
+ * Get the ranges object containing details of the start and end sequences and
+ * residues
+ *
+ * @return
+ */
+ public ViewportRanges getRanges();
/**
* calculate the height for visible annotation, revalidating bounds where
*/
public int calcPanelHeight();
+ /**
+ * Answers true if the viewport has at least one column selected
+ *
+ * @return
+ */
+ boolean hasSelectedColumns();
+
+ /**
+ * Answers true if the viewport has at least one hidden column
+ *
+ * @return
+ */
boolean hasHiddenColumns();
boolean isValidCharWidth();
ColourSchemeI getGlobalColourScheme();
+ /**
+ * Returns an object that describes colouring (including any thresholding or
+ * fading) of the alignment
+ *
+ * @return
+ */
+ ResidueShaderI getResidueShading();
+
AlignmentI getAlignment();
ColumnSelection getColumnSelection();
- Hashtable[] getSequenceConsensusHash();
+ ProfilesI getSequenceConsensusHash();
- Hashtable[] getRnaStructureConsensusHash();
+ /**
+ * Get consensus data table for the cDNA complement of this alignment (if any)
+ *
+ * @return
+ */
+ Hashtable[] getComplementConsensusHash();
- boolean getIgnoreGapsConsensus();
+ Hashtable[] getRnaStructureConsensusHash();
- boolean getCentreColumnLabels();
+ boolean isIgnoreGapsConsensus();
boolean isCalculationInProgress(AlignmentAnnotation alignmentAnnotation);
AlignmentAnnotation getAlignmentConsensusAnnotation();
/**
+ * get the container for alignment gap annotation
+ *
+ * @return
+ */
+ AlignmentAnnotation getAlignmentGapAnnotation();
+
+ /**
+ * get the container for cDNA complement consensus annotation
+ *
+ * @return
+ */
+ AlignmentAnnotation getComplementConsensusAnnotation();
+
+ /**
* Test to see if viewport is still open and active
*
* @return true indicates that all references to viewport should be dropped
boolean isClosed();
/**
+ * Dispose of all references or resources held by the viewport
+ */
+ void dispose();
+
+ /**
* get the associated calculation thread manager for the view
*
* @return
*
* @param hconsensus
*/
- void setSequenceConsensusHash(Hashtable[] hconsensus);
+ void setSequenceConsensusHash(ProfilesI hconsensus);
+
+ /**
+ * Set the cDNA complement consensus for the viewport
+ *
+ * @param hconsensus
+ */
+ void setComplementConsensusHash(Hashtable[] hconsensus);
/**
*
- * @return the alignment annotatino row for the structure consensus
+ * @return the alignment annotation row for the structure consensus
* calculation
*/
AlignmentAnnotation getAlignmentStrucConsensusAnnotation();
void setRnaStructureConsensusHash(Hashtable[] hStrucConsensus);
/**
- * set global colourscheme
+ * Sets the colour scheme for the background alignment (as distinct from
+ * sub-groups, which may have their own colour schemes). A null value is used
+ * for no residue colour (white).
*
- * @param rhc
+ * @param cs
*/
- void setGlobalColourScheme(ColourSchemeI rhc);
+ void setGlobalColourScheme(ColourSchemeI cs);
Map<SequenceI, SequenceCollectionI> getHiddenRepSequences();
*/
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);
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
*
* 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. This method doesn't exclude hidden sequences from the output.
+ *
+ * @param selectedRegionOnly
+ * - determines if only the selected region or entire alignment is
+ * exported
+ * @return String[]
+ */
+ String[] getViewAsString(boolean selectedRegionOnly);
+
+ /**
+ * 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.
*
+ * @param selectedRegionOnly
+ * - determines if only the selected region or entire alignment is
+ * exported
+ * @param isExportHiddenSeqs
+ * - determines if hidden sequences would be exported or not.
+ *
* @return String[]
*/
- String[] getViewAsString(boolean selectedRegionOnly);
+ String[] getViewAsString(boolean selectedRegionOnly,
+ boolean isExportHiddenSeqs);
void setSelectionGroup(SequenceGroup sg);
/**
* 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
+ *
+ * @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<AlignmentAnnotation> getVisibleAlignmentAnnotation(
boolean selectedOnly);
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);
* 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
+ * @return int[][] range of {start,end} visible positions
*/
- int[][] getVisibleRegionBoundaries(int min, int max);
+ List<int[]> getVisibleRegionBoundaries(int min, int max);
/**
* This method returns an array of new SequenceI objects derived from the
*/
int adjustForHiddenSeqs(int alignmentIndex);
+ boolean hasHiddenRows();
+
+ /**
+ *
+ * @return a copy of this view's current display settings
+ */
+ public ViewStyleI getViewStyle();
+
+ /**
+ * update the view's display settings with the given style set
+ *
+ * @param settingsForView
+ */
+ public void setViewStyle(ViewStyleI settingsForView);
+
+ /**
+ * Returns a viewport which holds the cDna for this (protein), or vice versa,
+ * or null if none is set.
+ *
+ * @return
+ */
+ AlignViewportI getCodingComplement();
+
+ /**
+ * Sets the viewport which holds the cDna for this (protein), or vice versa.
+ * Implementation should guarantee that the reciprocal relationship is always
+ * set, i.e. each viewport is the complement of the other.
+ */
+ void setCodingComplement(AlignViewportI sl);
+
+ /**
+ * Answers true if viewport hosts DNA/RNA, else false.
+ *
+ * @return
+ */
+ boolean isNucleotide();
+
+ /**
+ * Returns an id guaranteed to be unique for this viewport.
+ *
+ * @return
+ */
+ String getViewId();
+
+ /**
+ * Return true if view should scroll to show the highlighted region of a
+ * sequence
+ *
+ * @return
+ */
+ boolean isFollowHighlight();
+
+ /**
+ * Set whether view should scroll to show the highlighted region of a sequence
+ */
+ void setFollowHighlight(boolean b);
+
+ public void applyFeaturesStyle(FeatureSettingsModelI featureSettings);
+
+ /**
+ * check if current selection group is defined on the view, or is simply a
+ * temporary group.
+ *
+ * @return true if group is defined on the alignment
+ */
+ boolean isSelectionDefinedGroup();
+
+ /**
+ *
+ * @return true if there are search results on the view
+ */
+ boolean hasSearchResults();
+
+ /**
+ * set the search results for the view
+ *
+ * @param results
+ * - or null to clear current results
+ */
+ void setSearchResults(SearchResultsI results);
+
+ /**
+ * get search results for this view (if any)
+ *
+ * @return search results or null
+ */
+ SearchResultsI getSearchResults();
+
+ /**
+ * Updates view settings with the given font. You may need to call
+ * AlignmentPanel.fontChanged to update the layout geometry.
+ *
+ * @param setGrid
+ * when true, charWidth/height is set according to font metrics
+ */
+ void setFont(Font newFont, boolean b);
+
+ /**
+ * Answers true if split screen protein and cDNA use the same font
+ *
+ * @return
+ */
+ @Override
+ boolean isProteinFontAsCdna();
+
+ /**
+ * Set the flag for whether split screen protein and cDNA use the same font
+ *
+ * @return
+ */
+ @Override
+ void setProteinFontAsCdna(boolean b);
+
+ public abstract TreeModel getCurrentTree();
+
+ public abstract void setCurrentTree(TreeModel tree);
}