+ if (hiddenSequences == null)\r
+ {\r
+ return 0;\r
+ }\r
+ int count = 0;\r
+ for (int i = 0; i < hiddenSequences.length; i++)\r
+ {\r
+ if (hiddenSequences[i] != null)\r
+ {\r
+ count++;\r
+ }\r
+ }\r
+\r
+ return count;\r
+ }\r
+\r
+ public int getWidth()\r
+ {\r
+ int width = 0;\r
+ for (int i = 0; i < hiddenSequences.length; i++)\r
+ {\r
+ if (hiddenSequences[i] != null && hiddenSequences[i].getLength() > width)\r
+ {\r
+ width = hiddenSequences[i].getLength();\r
+ }\r
+ }\r
+\r
+ return width;\r
+ }\r
+\r
+ /**\r
+ * Call this method if sequences are removed from the\r
+ * main alignment\r
+ */\r
+ public void adjustHeightSequenceDeleted(int seqIndex)\r
+ {\r
+ if (hiddenSequences == null)\r
+ {\r
+ return;\r
+ }\r
+\r
+ int alHeight = alignment.getHeight();\r
+\r
+ SequenceI[] tmp = new SequenceI[alHeight + getSize()];\r
+ int deletionIndex = adjustForHiddenSeqs(seqIndex);\r
+\r
+ for (int i = 0; i < hiddenSequences.length; i++)\r
+ {\r
+ if (hiddenSequences[i] == null)\r
+ {\r
+ continue;\r
+ }\r
+\r
+ if (i > deletionIndex)\r
+ {\r
+ tmp[i - 1] = hiddenSequences[i];\r
+ }\r
+ else\r
+ {\r
+ tmp[i] = hiddenSequences[i];\r
+ }\r
+ }\r
+\r
+ hiddenSequences = tmp;\r
+\r
+ }\r
+\r
+ /**\r
+ * Call this method if sequences are added to or removed from the\r
+ * main alignment\r
+ */\r
+ public void adjustHeightSequenceAdded()\r
+ {\r
+ if (hiddenSequences == null)\r
+ {\r
+ return;\r
+ }\r
+\r
+ int alHeight = alignment.getHeight();\r
+\r
+ SequenceI[] tmp = new SequenceI[alHeight + getSize()];\r
+ System.arraycopy(hiddenSequences, 0, tmp, 0, hiddenSequences.length);\r
+ hiddenSequences = tmp;\r