+ SequenceI sq = new Sequence("Consensus", seqs.toString());
+ sq.setDescription("Percentage Identity Consensus "
+ + ((ignoreGapsInConsensusCalculation) ? " without gaps" : ""));
+ return sq;
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
+ public int getStartRes()
+ {
+ return startRes;
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
+ public int getEndRes()
+ {
+ return endRes;
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
+ public int getStartSeq()
+ {
+ return startSeq;
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param res
+ * DOCUMENT ME!
+ */
+ public void setStartRes(int res)
+ {
+ this.startRes = res;
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param seq
+ * DOCUMENT ME!
+ */
+ public void setStartSeq(int seq)
+ {
+ this.startSeq = seq;
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param res
+ * DOCUMENT ME!
+ */
+ public void setEndRes(int res)
+ {
+ if (res > (alignment.getWidth() - 1))
+ {
+ // log.System.out.println(" Corrected res from " + res + " to maximum " +
+ // (alignment.getWidth()-1));
+ res = alignment.getWidth() - 1;
+ }
+
+ if (res < 0)
+ {
+ res = 0;
+ }
+
+ this.endRes = res;
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param seq
+ * DOCUMENT ME!
+ */
+ public void setEndSeq(int seq)
+ {
+ if (seq > alignment.getHeight())
+ {
+ seq = alignment.getHeight();
+ }
+
+ if (seq < 0)
+ {
+ seq = 0;
+ }
+
+ this.endSeq = seq;
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
+ public int getEndSeq()
+ {
+ return endSeq;
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param f
+ * DOCUMENT ME!
+ */
+ public void setFont(Font f)
+ {
+ font = f;
+
+ Container c = new Container();
+
+ java.awt.FontMetrics fm = c.getFontMetrics(font);
+ setCharHeight(fm.getHeight());
+ setCharWidth(fm.charWidth('M'));
+ validCharWidth = true;
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
+ public Font getFont()
+ {
+ return font;
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param w
+ * DOCUMENT ME!
+ */
+ public void setCharWidth(int w)
+ {
+ this.charWidth = w;
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
+ public int getCharWidth()
+ {
+ return charWidth;
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param h
+ * DOCUMENT ME!
+ */
+ public void setCharHeight(int h)
+ {
+ this.charHeight = h;
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
+ public int getCharHeight()
+ {
+ return charHeight;
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param w
+ * DOCUMENT ME!
+ */
+ public void setWrappedWidth(int w)
+ {
+ this.wrappedWidth = w;
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
+ public int getWrappedWidth()
+ {
+ return wrappedWidth;
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
+ public AlignmentI getAlignment()
+ {
+ return alignment;
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param align
+ * DOCUMENT ME!
+ */
+ public void setAlignment(AlignmentI align)
+ {
+ if (alignment != null && alignment.getCodonFrames() != null)
+ {
+ StructureSelectionManager.getStructureSelectionManager(
+ Desktop.instance).removeMappings(alignment.getCodonFrames());
+ }
+ this.alignment = align;
+ if (alignment != null && alignment.getCodonFrames() != null)
+ {
+ StructureSelectionManager.getStructureSelectionManager(
+ Desktop.instance).addMappings(alignment.getCodonFrames());
+ }
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param state
+ * DOCUMENT ME!
+ */
+ public void setWrapAlignment(boolean state)
+ {
+ wrapAlignment = state;
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param state
+ * DOCUMENT ME!
+ */
+ public void setShowText(boolean state)
+ {
+ showText = state;
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param state
+ * DOCUMENT ME!
+ */
+ public void setRenderGaps(boolean state)
+ {
+ renderGaps = state;
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
+ public boolean getColourText()
+ {
+ return showColourText;
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param state
+ * DOCUMENT ME!
+ */
+ public void setColourText(boolean state)
+ {
+ showColourText = state;
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param state
+ * DOCUMENT ME!
+ */
+ public void setShowBoxes(boolean state)
+ {
+ showBoxes = state;
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
+ public boolean getWrapAlignment()
+ {
+ return wrapAlignment;
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
+ public boolean getShowText()
+ {
+ return showText;
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
+ public boolean getShowBoxes()
+ {
+ return showBoxes;
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
+ public char getGapCharacter()
+ {
+ return getAlignment().getGapCharacter();
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param gap
+ * DOCUMENT ME!
+ */
+ public void setGapCharacter(char gap)
+ {
+ if (getAlignment() != null)
+ {
+ getAlignment().setGapCharacter(gap);
+ }
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
+ public ColumnSelection getColumnSelection()
+ {
+ return colSel;
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param tree
+ * DOCUMENT ME!
+ */
+ public void setCurrentTree(NJTree tree)
+ {
+ currentTree = tree;
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
+ public NJTree getCurrentTree()
+ {
+ return currentTree;
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
+ public boolean getShowJVSuffix()
+ {
+ return showJVSuffix;
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param b
+ * DOCUMENT ME!
+ */
+ public void setShowJVSuffix(boolean b)
+ {
+ showJVSuffix = b;
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
+ public boolean getShowAnnotation()
+ {
+ return showAnnotation;
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param b
+ * DOCUMENT ME!
+ */
+ public void setShowAnnotation(boolean b)
+ {
+ showAnnotation = b;
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
+ public boolean getScaleAboveWrapped()
+ {
+ return scaleAboveWrapped;
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
+ public boolean getScaleLeftWrapped()
+ {
+ return scaleLeftWrapped;
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
+ public boolean getScaleRightWrapped()
+ {
+ return scaleRightWrapped;
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param b
+ * DOCUMENT ME!
+ */
+ public void setScaleAboveWrapped(boolean b)
+ {
+ scaleAboveWrapped = b;
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param b
+ * DOCUMENT ME!
+ */
+ public void setScaleLeftWrapped(boolean b)
+ {
+ scaleLeftWrapped = b;
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param b
+ * DOCUMENT ME!
+ */
+ public void setScaleRightWrapped(boolean b)
+ {
+ scaleRightWrapped = b;
+ }
+
+ public void setDataset(boolean b)
+ {
+ isDataset = b;
+ }
+
+ public boolean isDataset()
+ {
+ return isDataset;
+ }
+
+ public boolean getShowHiddenMarkers()
+ {
+ return showHiddenMarkers;
+ }
+
+ public void setShowHiddenMarkers(boolean show)
+ {
+ showHiddenMarkers = show;
+ }
+
+ /**
+ * returns the visible column regions of the alignment
+ *
+ * @param selectedRegionOnly
+ * true to just return the contigs intersecting with the selected
+ * area
+ * @return
+ */
+ public int[] getViewAsVisibleContigs(boolean selectedRegionOnly)
+ {
+ int[] viscontigs = null;
+ int start = 0, end = 0;
+ if (selectedRegionOnly && selectionGroup != null)
+ {
+ start = selectionGroup.getStartRes();
+ end = selectionGroup.getEndRes() + 1;
+ }
+ else
+ {
+ end = alignment.getWidth();
+ }
+ viscontigs = colSel.getVisibleContigs(start, end);
+ return viscontigs;
+ }
+
+ /**
+ * get hash of undo and redo list for the alignment
+ *
+ * @return long[] { historyList.hashCode, redoList.hashCode };
+ */
+ public long[] getUndoRedoHash()
+ {
+ // TODO: JAL-1126
+ if (historyList == null || redoList == null)
+ return new long[]
+ { -1, -1 };
+ return new long[]
+ { historyList.hashCode(), this.redoList.hashCode() };
+ }
+
+ /**
+ * test if a particular set of hashcodes are different to the hashcodes for
+ * the undo and redo list.
+ *
+ * @param undoredo
+ * the stored set of hashcodes as returned by getUndoRedoHash
+ * @return true if the hashcodes differ (ie the alignment has been edited) or
+ * the stored hashcode array differs in size
+ */
+ public boolean isUndoRedoHashModified(long[] undoredo)
+ {
+ if (undoredo == null)
+ {
+ return true;
+ }
+ long[] cstate = getUndoRedoHash();
+ if (cstate.length != undoredo.length)
+ {
+ return true;
+ }
+
+ for (int i = 0; i < cstate.length; i++)
+ {
+ if (cstate[i] != undoredo[i])