+ /**
+ * 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<AlignmentAnnotation> 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);
+