X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fapi%2FAlignViewportI.java;h=ba3ed7500ef1fe6eb1746a37de5f8db684e1fcbd;hb=refs%2Fheads%2Fspike%2FJAL-4047%2FJAL-4048_columns_in_sequenceID;hp=c49ee392d7c336add9e9c1d3be9dc3b473e44ffb;hpb=be32c14cd8e48fe0a207cd7030cb9cd46f894678;p=jalview.git diff --git a/src/jalview/api/AlignViewportI.java b/src/jalview/api/AlignViewportI.java index c49ee39..ba3ed75 100644 --- a/src/jalview/api/AlignViewportI.java +++ b/src/jalview/api/AlignViewportI.java @@ -20,21 +20,31 @@ */ package jalview.api; +import java.awt.Color; +import java.awt.Font; +import java.util.Hashtable; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + import jalview.analysis.Conservation; +import jalview.analysis.TreeModel; import jalview.datamodel.AlignmentAnnotation; +import jalview.datamodel.AlignmentExportData; import jalview.datamodel.AlignmentI; import jalview.datamodel.AlignmentView; -import jalview.datamodel.CigarArray; import jalview.datamodel.ColumnSelection; +import jalview.datamodel.ContactListI; +import jalview.datamodel.ContactMatrixI; +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 java.awt.Color; -import java.util.Hashtable; -import java.util.List; -import java.util.Map; +import jalview.viewmodel.ViewportRanges; +import jalview.viewmodel.seqfeatures.IdColumns; /** * @author jimp @@ -43,11 +53,13 @@ import java.util.Map; 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 @@ -57,6 +69,18 @@ public interface AlignViewportI extends ViewStyleI */ 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(); @@ -69,20 +93,28 @@ public interface AlignViewportI extends ViewStyleI 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(); /** * Get consensus data table for the cDNA complement of this alignment (if any) * * @return */ - Hashtable[] getComplementConsensusHash(); + Hashtable[] getComplementConsensusHash(); - Hashtable[] getRnaStructureConsensusHash(); + Hashtable[] getRnaStructureConsensusHash(); boolean isIgnoreGapsConsensus(); @@ -100,6 +132,13 @@ public interface AlignViewportI extends ViewStyleI AlignmentAnnotation getAlignmentConsensusAnnotation(); /** + * get the container for alignment gap annotation + * + * @return + */ + AlignmentAnnotation getAlignmentGapAnnotation(); + + /** * get the container for cDNA complement consensus annotation * * @return @@ -114,6 +153,11 @@ public interface AlignViewportI extends ViewStyleI boolean isClosed(); /** + * Dispose of all references or resources held by the viewport + */ + void dispose(); + + /** * get the associated calculation thread manager for the view * * @return @@ -131,18 +175,18 @@ public interface AlignViewportI extends ViewStyleI * * @param hconsensus */ - void setSequenceConsensusHash(Hashtable[] hconsensus); + void setSequenceConsensusHash(ProfilesI hconsensus); /** * Set the cDNA complement consensus for the viewport * * @param hconsensus */ - void setComplementConsensusHash(Hashtable[] 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(); @@ -152,14 +196,17 @@ public interface AlignViewportI extends ViewStyleI * * @param hStrucConsensus */ - void setRnaStructureConsensusHash(Hashtable[] hStrucConsensus); + 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 getHiddenRepSequences(); @@ -182,29 +229,6 @@ public interface AlignViewportI extends ViewStyleI */ 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); @@ -225,16 +249,6 @@ public interface AlignViewportI extends ViewStyleI 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 * @@ -262,11 +276,31 @@ public interface AlignViewportI extends ViewStyleI * 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); @@ -278,8 +312,11 @@ public interface AlignViewportI extends ViewStyleI /** * 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 getVisibleAlignmentAnnotation( boolean selectedOnly); @@ -288,35 +325,8 @@ public interface AlignViewportI extends ViewStyleI 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); @@ -413,4 +423,151 @@ public interface AlignViewportI extends ViewStyleI * @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); + + /** + * configure the feature renderer with predefined feature settings + * + * @param featureSettings + */ + public void applyFeaturesStyle(FeatureSettingsModelI featureSettings); + + /** + * Apply the given feature settings on top of existing feature settings. + */ + public void mergeFeaturesStyle(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(); + + /** + * Retrieve a ContactListI corresponding to column in an annotation row in an + * alignment. + * + * @param _aa + * - annotation with associated matrix data + * @param column + * - column in alignment where _aa is associated + */ + ContactListI getContactList(AlignmentAnnotation _aa, int column); + + /** + * 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); + + TreeModel getCurrentTree(); + + void setCurrentTree(TreeModel tree); + + /** + * Answers a data bean containing data for export as configured by the + * supplied options + * + * @param options + * @return + */ + AlignmentExportData getAlignExportData(AlignExportSettingsI options); + + /** + * @param update + * - set the flag for updating structures on next repaint + */ + void setUpdateStructures(boolean update); + + /** + * + * @return true if structure views will be updated on next refresh + */ + boolean isUpdateStructures(); + + /** + * check if structure views need to be updated, and clear the flag afterwards. + * + * @return if an update is needed + */ + boolean needToUpdateStructureViews(); + + /** + * Adds sequencegroup to the alignment in the view. Also adds a group to the + * complement view if one is defined. + * + * @param sequenceGroup + * - a group defined on sequences in the alignment held by the view + */ + void addSequenceGroup(SequenceGroup sequenceGroup); + + /** + * Returns an interator over the [start, end] column positions of the visible + * regions of the alignment + * + * @param selectedRegionOnly + * if true, and the view has a selection region, then only the + * intersection of visible columns with the selection region is + * returned + * @return + */ + Iterator getViewAsVisibleContigs(boolean selectedRegionOnly); + + IdColumns getIdColumns(); + + ContactMatrixI getContactMatrix(AlignmentAnnotation alignmentAnnotation); }