X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fapi%2FAlignViewportI.java;h=8b0734035cef58585f485ec3870fe0fb2d868f34;hb=84724ad7b25f65eb6009f70d9b4cb89fc6796622;hp=760f52d514e81fc748ffd1c8cc5fc6eb1d351c35;hpb=8d6b113f475c6b5916f7685cfd289e054d95a9ee;p=jalview.git diff --git a/src/jalview/api/AlignViewportI.java b/src/jalview/api/AlignViewportI.java index 760f52d..8b07340 100644 --- a/src/jalview/api/AlignViewportI.java +++ b/src/jalview/api/AlignViewportI.java @@ -1,6 +1,6 @@ /* - * 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. * @@ -20,34 +20,40 @@ */ package jalview.api; -import java.awt.Color; -import java.util.Hashtable; -import java.util.List; -import java.util.Map; - 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.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.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 @@ -57,6 +63,18 @@ public interface AlignViewportI */ 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,17 +87,30 @@ public interface AlignViewportI 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); @@ -95,6 +126,20 @@ public interface AlignViewportI 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 @@ -102,6 +147,11 @@ public interface AlignViewportI boolean isClosed(); /** + * Dispose of all references or resources held by the viewport + */ + void dispose(); + + /** * get the associated calculation thread manager for the view * * @return @@ -119,11 +169,18 @@ public interface AlignViewportI * * @param hconsensus */ - void setSequenceConsensusHash(Hashtable[] hconsensus); + void setSequenceConsensusHash(ProfilesI hconsensus); /** + * Set the cDNA complement consensus for the viewport * - * @return the alignment annotatino row for the structure consensus + * @param hconsensus + */ + void setComplementConsensusHash(Hashtable[] hconsensus); + + /** + * + * @return the alignment annotation row for the structure consensus * calculation */ AlignmentAnnotation getAlignmentStrucConsensusAnnotation(); @@ -136,11 +193,13 @@ public interface AlignViewportI 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(); @@ -163,29 +222,6 @@ public interface AlignViewportI */ 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); @@ -195,18 +231,80 @@ public interface AlignViewportI 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. 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, + boolean isExportHiddenSeqs); + void setSelectionGroup(SequenceGroup sg); char getGapCharacter(); @@ -217,8 +315,11 @@ public interface AlignViewportI /** * 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); @@ -227,22 +328,146 @@ public interface AlignViewportI String getSequenceSetId(); - boolean isShowSequenceFeatures(); + boolean areFeaturesDisplayed(); + + 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 + */ + List 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(); - void setShowSequenceFeatures(boolean b); + /** + * broadcast selection to any interested parties + */ + void sendSelection(); /** + * calculate the row position for alignmentIndex if all hidden sequences were + * shown * - * @param flag - * indicating if annotation panel shown below alignment + * @param alignmentIndex + * @return adjusted row position + */ + int adjustForHiddenSeqs(int alignmentIndex); + + boolean hasHiddenRows(); + + /** * + * @return a copy of this view's current display settings */ - void setShowAnnotation(boolean b); + public ViewStyleI getViewStyle(); /** - * flag indicating if annotation panel shown below alignment + * 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 */ - boolean isShowAnnotation(); + 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(); }