+ else
+ {
+ // left justify
+ if (ends[i * 2] > 0)
+ {
+ current.deleteChars(0, ends[i * 2]);
+ modified = true;
+ ends[i * 2 + 1] -= ends[i * 2];
+ extent -= ends[i * 2];
+ }
+ if (extent > maxLength)
+ {
+ current.deleteChars(maxLength + 1, extent);
+ modified = true;
+ }
+ else
+ {
+ if (extent < maxLength)
+ {
+ current.insertCharAt(extent, maxLength - extent, gapCharacter);
+ modified = true;
+ }
+ }
+ }
+ }
+ return modified;
+ }
+
+ @Override
+ public HiddenSequences getHiddenSequences()
+ {
+ return hiddenSequences;
+ }
+
+ @Override
+ public CigarArray getCompactAlignment()
+ {
+ synchronized (sequences)
+ {
+ SeqCigar alseqs[] = new SeqCigar[sequences.size()];
+ int i = 0;
+ for (SequenceI seq : sequences)
+ {
+ alseqs[i++] = new SeqCigar(seq);
+ }
+ CigarArray cal = new CigarArray(alseqs);
+ cal.addOperation(CigarArray.M, getWidth());
+ return cal;
+ }
+ }
+
+ @Override
+ public void setProperty(Object key, Object value)
+ {
+ if (alignmentProperties == null)
+ {
+ alignmentProperties = new Hashtable();
+ }
+
+ alignmentProperties.put(key, value);
+ }
+
+ @Override
+ public Object getProperty(Object key)
+ {
+ if (alignmentProperties != null)
+ {
+ return alignmentProperties.get(key);
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ @Override
+ public Hashtable getProperties()
+ {
+ return alignmentProperties;
+ }
+
+ AlignedCodonFrame[] codonFrameList = null;
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * jalview.datamodel.AlignmentI#addCodonFrame(jalview.datamodel.AlignedCodonFrame
+ * )
+ */
+ @Override
+ public void addCodonFrame(AlignedCodonFrame codons)
+ {
+ if (codons == null)
+ {
+ return;
+ }
+ if (codonFrameList == null)
+ {
+ codonFrameList = new AlignedCodonFrame[]
+ { codons };
+ return;
+ }
+ AlignedCodonFrame[] t = new AlignedCodonFrame[codonFrameList.length + 1];
+ System.arraycopy(codonFrameList, 0, t, 0, codonFrameList.length);
+ t[codonFrameList.length] = codons;
+ codonFrameList = t;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see jalview.datamodel.AlignmentI#getCodonFrame(int)
+ */
+ @Override
+ public AlignedCodonFrame getCodonFrame(int index)
+ {
+ return codonFrameList[index];
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * jalview.datamodel.AlignmentI#getCodonFrame(jalview.datamodel.SequenceI)
+ */
+ @Override
+ public AlignedCodonFrame[] getCodonFrame(SequenceI seq)
+ {
+ if (seq == null || codonFrameList == null)
+ {
+ return null;
+ }
+ Vector cframes = new Vector();
+ for (int f = 0; f < codonFrameList.length; f++)
+ {
+ if (codonFrameList[f].involvesSequence(seq))
+ {
+ cframes.addElement(codonFrameList[f]);
+ }
+ }
+ if (cframes.size() == 0)
+ {
+ return null;
+ }
+ AlignedCodonFrame[] cfr = new AlignedCodonFrame[cframes.size()];
+ cframes.copyInto(cfr);
+ return cfr;
+ }