setAlignment(al);\r
init();\r
}\r
+ /**\r
+ * Create a new AlignViewport with hidden regions\r
+ * @param al AlignmentI\r
+ * @param hiddenColumns ColumnSelection\r
+ */\r
+ public AlignViewport(AlignmentI al, ColumnSelection hiddenColumns) {\r
+ setAlignment(al);\r
+ if (hiddenColumns!=null) {\r
+ this.colSel = hiddenColumns;\r
+ if (hiddenColumns.getHiddenColumns() != null)\r
+ hasHiddenColumns = true;\r
+ }\r
+ init();\r
+ }\r
\r
void init()\r
{\r
return increment;\r
}\r
\r
- /**\r
- * DOCUMENT ME!\r
- *\r
- * @param y DOCUMENT ME!\r
- *\r
- * @return DOCUMENT ME!\r
- */\r
- public int getIndex(int y)\r
- {\r
- int y1 = 0;\r
- int starty = getStartSeq();\r
- int endy = getEndSeq();\r
-\r
- for (int i = starty; i <= endy; i++)\r
- {\r
- if ((i < alignment.getHeight()) &&\r
- (alignment.getSequenceAt(i) != null))\r
- {\r
- int y2 = y1 + getCharHeight();\r
-\r
- if ((y >= y1) && (y <= y2))\r
- {\r
- return i;\r
- }\r
-\r
- y1 = y2;\r
- }\r
- else\r
- {\r
- return -1;\r
- }\r
- }\r
-\r
- return -1;\r
- }\r
\r
/**\r
* DOCUMENT ME!\r
colSel.hideColumns(start);\r
else\r
colSel.hideColumns(start, end);\r
- setSelectionGroup(null);\r
+\r
hasHiddenColumns = true;\r
}\r
\r
+ public void hideAllSelectedSeqs()\r
+ {\r
+ if (selectionGroup == null)\r
+ return;\r
+\r
+ SequenceI[] seqs = selectionGroup.getSequencesInOrder(alignment);\r
+\r
+ for (int i = 0; i < seqs.length; i++)\r
+ {\r
+ alignment.getHiddenSequences().hideSequence(seqs[i]);\r
+ }\r
+ firePropertyChange("alignment", null, alignment.getSequences());\r
+ hasHiddenRows = true;\r
+ setSelectionGroup(null);\r
+ }\r
+\r
public void hideSequence(SequenceI seq)\r
{\r
if(seq!=null)\r
{\r
alignment.getHiddenSequences().hideSequence(seq);\r
hasHiddenRows = true;\r
+ firePropertyChange("alignment", null, alignment.getSequences());\r
}\r
}\r
\r
public void showSequence(int index)\r
{\r
- alignment.getHiddenSequences().showSequence(index);\r
+ Vector tmp = alignment.getHiddenSequences().showSequence(index);\r
+ if(tmp.size()>0)\r
+ {\r
+ if(selectionGroup==null)\r
+ {\r
+ selectionGroup = new SequenceGroup();\r
+ selectionGroup.setEndRes(alignment.getWidth()-1);\r
+ }\r
+\r
+ for (int t = 0; t < tmp.size(); t++)\r
+ {\r
+ selectionGroup.addSequence(\r
+ (SequenceI) tmp.elementAt(t), false\r
+ );\r
+ }\r
+ firePropertyChange("alignment", null, alignment.getSequences());\r
+ }\r
\r
if(alignment.getHiddenSequences().getSize()<1)\r
hasHiddenRows = false;\r
{\r
if(alignment.getHiddenSequences().getSize()>0)\r
{\r
- alignment.getHiddenSequences().showAll();\r
+ if(selectionGroup==null)\r
+ {\r
+ selectionGroup = new SequenceGroup();\r
+ selectionGroup.setEndRes(alignment.getWidth()-1);\r
+ }\r
+ Vector tmp = alignment.getHiddenSequences().showAll();\r
+ for(int t=0; t<tmp.size(); t++)\r
+ {\r
+ selectionGroup.addSequence(\r
+ (SequenceI)tmp.elementAt(t), false\r
+ );\r
+ }\r
+ firePropertyChange("alignment", null, alignment.getSequences());\r
hasHiddenRows = false;\r
}\r
}\r
\r
+ public void invertColumnSelection()\r
+ {\r
+ int column;\r
+ for(int i=0; i<alignment.getWidth(); i++)\r
+ {\r
+ column = i;\r
+\r
+ if(colSel.contains(column))\r
+ colSel.removeElement(column);\r
+ else\r
+ colSel.addElement(column);\r
+\r
+ }\r
+\r
+ }\r
+\r
public int adjustForHiddenSeqs(int alignmentIndex)\r
{\r
return alignment.getHiddenSequences().adjustForHiddenSeqs(alignmentIndex);\r
iSize = selectionGroup.getSize(false);\r
seqs = selectionGroup.getSequencesInOrder(alignment);\r
start = selectionGroup.getStartRes();\r
- end = selectionGroup.getEndRes()+1;\r
+ end = selectionGroup.getEndRes(); // inclusive for start and end in SeqCigar constructor\r
}\r
else\r
{\r
iSize = alignment.getHeight();\r
seqs = alignment.getSequencesArray();\r
- end = alignment.getWidth();\r
+ end = alignment.getWidth()-1;\r
}\r
SeqCigar[] selseqs = new SeqCigar[iSize];\r
for(i=0; i<iSize; i++)\r
selseqs[i] = new SeqCigar(seqs[i], start, end);\r
}\r
selection=new CigarArray(selseqs);\r
-\r
- int[] hiddenregions = null;\r
- char[] hr_ops = null;\r
+ // now construct the CigarArray operations\r
if (hasHiddenColumns) {\r
- Vector _hiddenregions = new Vector();\r
Vector regions = colSel.getHiddenColumns();\r
- int blockStart = start, blockEnd=end;\r
int [] region;\r
int hideStart, hideEnd;\r
int last=start;\r
}\r
return selection;\r
}\r
-\r
+ /**\r
+ * return a compact representation of the current alignment selection to\r
+ * pass to an analysis function\r
+ * @param selectedOnly boolean true to just return the selected view\r
+ * @return AlignmentView\r
+ */\r
+ jalview.datamodel.AlignmentView getAlignmentView(boolean selectedOnly) {\r
+ // JBPNote:\r
+ // this is here because the AlignmentView constructor modifies the CigarArray\r
+ // object. Refactoring of Cigar and alignment view representation should\r
+ // be done to remove redundancy.\r
+ CigarArray aligview = getViewAsCigars(selectedOnly);\r
+ if (aligview!=null)\r
+ return new AlignmentView(aligview);\r
+ return null;\r
+ }\r
/**\r
* This method returns the visible alignment as text, as\r
* seen on the GUI, ie if columns are hidden they will not\r