SequenceGroup sg = av.selectionGroup;\r
//Find the top and bottom of this group\r
int min = av.alignment.getHeight(), max = 0;\r
- for(int i=0; i<sg.getSize(false); i++)\r
+ for(int i=0; i<sg.getSize(); i++)\r
{\r
int index = av.alignment.findIndex( sg.getSequenceAt(i) );\r
if(index > max)\r
else\r
{\r
// Now add any sequences between min and max\r
- sg.getSequences(false).clear();\r
+ sg.getSequences(null).clear();\r
for (int i = min; i < max; i++)\r
{\r
sg.addSequence(av.alignment.getSequenceAt(i), false);\r
\r
setStatusMessage(sequence, res, seq);\r
\r
+\r
+\r
+ tooltipText.setLength(6); // Cuts the buffer back to <html>\r
+\r
+ SequenceGroup [] groups = av.alignment.findAllGroups(sequence);\r
+ if(groups!=null)\r
+ {\r
+ for(int g=0; g<groups.length; g++)\r
+ {\r
+ if(groups[g].getStartRes()<=res && groups[g].getEndRes()>=res)\r
+ {\r
+ if (!groups[g].getName().startsWith("JTreeGroup") &&\r
+ !groups[g].getName().startsWith("JGroup"))\r
+ tooltipText.append(groups[g].getName() + " ");\r
+\r
+ if(groups[g].getDescription()!=null)\r
+ tooltipText.append(groups[g].getDescription()+"<BR>");\r
+ }\r
+ }\r
+ }\r
+\r
+\r
// use aa to see if the mouse pointer is on a\r
if (av.showSequenceFeatures)\r
{\r
- tooltipText.setLength(6); // Cuts the buffer back to <html>\r
+ SequenceFeature[] features = findFeaturesAtRes(\r
+ sequence.getDatasetSequence(), sequence.findPosition(res));\r
\r
- SequenceFeature[] features = findFeaturesAtRes(\r
- sequence.getDatasetSequence(), sequence.findPosition(res));\r
-\r
- if(features!=null)\r
+ if (features != null)\r
+ {\r
+ for (int i = 0; i < features.length; i++)\r
{\r
- for (int i = 0; i < features.length; i++)\r
+ if (features[i].getType().equals("disulfide bond"))\r
{\r
- if (features[i].getType().equals("disulfide bond"))\r
- {\r
- if (features[i].getBegin() == sequence.findPosition(res)\r
- || features[i].getEnd() == sequence.findPosition(res))\r
- {\r
- if (tooltipText.length() > 6)\r
- tooltipText.append("<br>");\r
- tooltipText.append("disulfide bond " + features[i].getBegin() + ":" +\r
+ if (features[i].getBegin() == sequence.findPosition(res)\r
+ || features[i].getEnd() == sequence.findPosition(res))\r
+ {\r
+ if (tooltipText.length() > 6)\r
+ tooltipText.append("<br>");\r
+ tooltipText.append("disulfide bond " + features[i].getBegin() + ":" +\r
features[i].getEnd());\r
- if (features[i].links != null)\r
- tooltipText.append(" <img src=\"" + linkImageURL + "\">");\r
- }\r
- }\r
- else\r
- {\r
- if (tooltipText.length() > 6)\r
- tooltipText.append("<br>");\r
+ if (features[i].links != null)\r
+ tooltipText.append(" <img src=\"" + linkImageURL + "\">");\r
+ }\r
+ }\r
+ else\r
+ {\r
+ if (tooltipText.length() > 6)\r
+ tooltipText.append("<br>");\r
\r
- tooltipText.append(features[i].getType() + " " +\r
+ tooltipText.append(features[i].getType() + " " +\r
features[i].begin);\r
- if (features[i].begin != features[i].end)\r
- tooltipText.append(" " + features[i].end);\r
+ if (features[i].begin != features[i].end)\r
+ tooltipText.append(" " + features[i].end);\r
\r
- if (features[i].getDescription() != null\r
- && !features[i].description.equals(features[i].getType()))\r
- {\r
- tmpString = features[i].getDescription();\r
- int startTag=tmpString.toUpperCase().indexOf("<HTML>");\r
- if(startTag>-1)\r
- {\r
- tmpString = tmpString.substring(startTag + 6);\r
- }\r
- int endTag=tmpString.toUpperCase().indexOf("</BODY>");\r
- if(endTag>-1)\r
- {\r
- tmpString = tmpString.substring(0, endTag);\r
- }\r
- endTag = tmpString.toUpperCase().indexOf("</HTML>");\r
- if(endTag>-1)\r
- {\r
- tmpString = tmpString.substring(0, endTag);\r
- }\r
-\r
- if(startTag>-1)\r
- {\r
- tooltipText.append("; " + tmpString);\r
- }\r
- else\r
- {\r
- if (tmpString.indexOf("<") > -1 || tmpString.indexOf(">") > -1)\r
- {\r
- //The description does not specify html is to\r
- //be used, so we must remove < > symbols\r
- tmpString = tmpString.replaceAll("<", "<");\r
- tmpString = tmpString.replaceAll(">", ">");\r
-\r
- tooltipText.append("; ");\r
- tooltipText.append(tmpString);\r
-\r
- }\r
- else\r
- tooltipText.append("; "+tmpString);\r
- }\r
- }\r
- if (features[i].getValue("status") != null )\r
+ if (features[i].getDescription() != null\r
+ && !features[i].description.equals(features[i].getType()))\r
+ {\r
+ tmpString = features[i].getDescription();\r
+ int startTag = tmpString.toUpperCase().indexOf("<HTML>");\r
+ if (startTag > -1)\r
+ {\r
+ tmpString = tmpString.substring(startTag + 6);\r
+ }\r
+ int endTag = tmpString.toUpperCase().indexOf("</BODY>");\r
+ if (endTag > -1)\r
+ {\r
+ tmpString = tmpString.substring(0, endTag);\r
+ }\r
+ endTag = tmpString.toUpperCase().indexOf("</HTML>");\r
+ if (endTag > -1)\r
+ {\r
+ tmpString = tmpString.substring(0, endTag);\r
+ }\r
+\r
+ if (startTag > -1)\r
+ {\r
+ tooltipText.append("; " + tmpString);\r
+ }\r
+ else\r
+ {\r
+ if (tmpString.indexOf("<") > -1 || tmpString.indexOf(">") > -1)\r
{\r
- String status = features[i].getValue("status").toString();\r
- if(status.length()>0)\r
- tooltipText.append("; (" + features[i].getValue("status") + ")");\r
- }\r
+ //The description does not specify html is to\r
+ //be used, so we must remove < > symbols\r
+ tmpString = tmpString.replaceAll("<", "<");\r
+ tmpString = tmpString.replaceAll(">", ">");\r
\r
- if (features[i].links != null)\r
- tooltipText.append(" <img src=\"" + linkImageURL + "\">");\r
+ tooltipText.append("; ");\r
+ tooltipText.append(tmpString);\r
\r
+ }\r
+ else\r
+ tooltipText.append("; " + tmpString);\r
}\r
-\r
- // else if(features[i].begin==0 && features[i].end==0)\r
+ }\r
+ if (features[i].getValue("status") != null)\r
{\r
- // seqSpecific.append(features[i].featureGroup+": "\r
- // + features[i].getType()+" "\r
- // +features[i].getDescription()+"<br>");\r
-\r
+ String status = features[i].getValue("status").toString();\r
+ if (status.length() > 0)\r
+ tooltipText.append("; (" + features[i].getValue("status") + ")");\r
}\r
- }\r
\r
- if(tooltipText.length()==6) // <html></html>\r
- {\r
- setToolTipText(null);\r
- }\r
- else\r
- {\r
- tooltipText.append("</html>");\r
- setToolTipText(tooltipText.toString());\r
+ if (features[i].links != null)\r
+ tooltipText.append(" <img src=\"" + linkImageURL + "\">");\r
+\r
}\r
}\r
- else\r
- setToolTipText(null);\r
+ }\r
}\r
+ if (tooltipText.length() == 6) // <html></html>\r
+ {\r
+ setToolTipText(null);\r
+ }\r
+ else\r
+ {\r
+ tooltipText.append("</html>");\r
+ setToolTipText(tooltipText.toString());\r
+ }\r
+ // else\r
+ // setToolTipText(null);\r
}\r
\r
void setStatusMessage(SequenceI sequence, int res, int seq)\r
boolean fixedColumns = false;\r
SequenceGroup sg = av.getSelectionGroup();\r
\r
+ SequenceI seq = av.alignment.getSequenceAt(startseq);\r
\r
+ //No group, but the sequence may represent a group\r
if (!groupEditing && av.hasHiddenRows)\r
{\r
- if (av.alignment.getSequenceAt(startseq).getHiddenSequences() != null)\r
+ if (av.hiddenRepSequences!=null\r
+ && av.hiddenRepSequences.containsKey(seq))\r
{\r
+ sg = (SequenceGroup)av.hiddenRepSequences.get(seq);\r
groupEditing = true;\r
}\r
}\r
\r
- //No group, but the sequence may represent a group\r
- if (groupEditing\r
- && sg == null\r
- && av.alignment.getSequenceAt(startseq).getHiddenSequences() == null)\r
- {\r
- groupEditing = false;\r
- }\r
\r
- SequenceI seq = av.alignment.getSequenceAt(startseq);\r
StringBuffer message = new StringBuffer();\r
if (groupEditing)\r
{\r
\r
//Are we editing within a selection group?\r
if (groupEditing\r
- || (sg != null && sg.getSequences(true).contains(seq)))\r
+ || (sg != null && sg.getSequences(av.hiddenRepSequences).contains(seq)))\r
{\r
fixedColumns = true;\r
\r
//but the sequence represents a group\r
if (sg == null)\r
{\r
- sg = new SequenceGroup(null, null, false, false, false, 0,\r
- av.alignment.getWidth()-1);\r
- sg.addSequence(av.alignment.getSequenceAt(startseq), false);\r
+ sg = (SequenceGroup) av.hiddenRepSequences.get(seq);\r
}\r
\r
fixedLeft = sg.getStartRes();\r
\r
if (groupEditing)\r
{\r
- Vector vseqs = sg.getSequences(true);\r
+ Vector vseqs = sg.getSequences(av.hiddenRepSequences);\r
int g, groupSize = vseqs.size();\r
SequenceI[] groupSeqs = new SequenceI[groupSize];\r
for (g = 0; g < groupSeqs.length; g++)\r
\r
if (!blank)\r
{\r
- if(sg.getSize(false) == av.alignment.getHeight() )\r
+ if(sg.getSize() == av.alignment.getHeight() )\r
{\r
if((av.hasHiddenColumns\r
&& startres<av.getColumnSelection().getHiddenBoundaryRight(startres)))\r
editCommand.appendEdit(EditCommand.INSERT_GAP,\r
groupSeqs,\r
startres, startres-lastres,\r
- av.getGapCharacter(),\r
+ av.alignment,\r
true);\r
}\r
}\r
editCommand.appendEdit(EditCommand.DELETE_GAP,\r
groupSeqs,\r
startres, lastres - startres,\r
- av.getGapCharacter(),\r
+ av.alignment,\r
true);\r
\r
}\r
new SequenceI[]\r
{seq},\r
lastres, startres-lastres,\r
- av.getGapCharacter(),\r
+ av.alignment,\r
true);\r
}\r
}\r
new SequenceI[]\r
{seq},\r
startres, max,\r
- av.getGapCharacter(),\r
+ av.alignment,\r
true);\r
}\r
}\r
\r
editCommand.appendEdit(EditCommand.DELETE_GAP,\r
seq,\r
- blankColumn, 1, av.getGapCharacter(), true);\r
+ blankColumn, 1, av.alignment, true);\r
\r
editCommand.appendEdit(EditCommand.INSERT_GAP,\r
seq,\r
- j, 1, av.getGapCharacter(),\r
+ j, 1, av.alignment,\r
true);\r
\r
}\r
\r
editCommand.appendEdit(EditCommand.DELETE_GAP,\r
seq,\r
- j, 1, av.getGapCharacter(), true);\r
+ j, 1, av.alignment, true);\r
\r
editCommand.appendEdit(EditCommand.INSERT_GAP,\r
seq,\r
- fixedColumn, 1, av.getGapCharacter(), true);\r
+ fixedColumn, 1, av.alignment, true);\r
}\r
\r
/**\r
SequenceI sequence = av.alignment.getSequenceAt( findSeq(evt) );\r
if(evt.getClickCount()>1)\r
{\r
- if (av.getSelectionGroup().getSize(false) == 1\r
+ if (av.getSelectionGroup().getSize() == 1\r
&& av.getSelectionGroup().getEndRes()\r
- av.getSelectionGroup().getStartRes() < 2)\r
av.setSelectionGroup(null);\r
stretchGroup = null;\r
}\r
}\r
- else if (!stretchGroup.getSequences(false).contains(sequence) ||\r
+ else if (!stretchGroup.getSequences(null).contains(sequence) ||\r
(stretchGroup.getStartRes() > res) ||\r
(stretchGroup.getEndRes() < res))\r
{\r
if (stretchGroup.cs instanceof ClustalxColourScheme)\r
{\r
( (ClustalxColourScheme) stretchGroup.cs).resetClustalX(\r
- stretchGroup.getSequences(true),\r
+ stretchGroup.getSequences(av.hiddenRepSequences),\r
stretchGroup.getWidth());\r
}\r
\r
\r
Sequence nextSeq = (Sequence) av.getAlignment().getSequenceAt(oldSeq);\r
\r
- if (stretchGroup.getSequences(false).contains(nextSeq))\r
+ if (stretchGroup.getSequences(null).contains(nextSeq))\r
{\r
stretchGroup.deleteSequence(seq, false);\r
}\r