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).removeAllElements();\r
+ sg.getSequences(null).removeAllElements();\r
for (int i = min; i < max; i++)\r
{\r
sg.addSequence(av.alignment.getSequenceAt(i), false);\r
\r
if (seq >= av.getAlignment().getHeight() || seq<0 || res<0)\r
{\r
+ if(tooltip!=null)\r
+ tooltip.setTip("");\r
return;\r
}\r
\r
SequenceI sequence = av.getAlignment().getSequenceAt(seq);\r
if (res > sequence.getLength())\r
{\r
+ if(tooltip!=null)\r
+ tooltip.setTip("");\r
return;\r
}\r
\r
\r
ap.alignFrame.statusBar.setText(text.toString());\r
\r
+ StringBuffer tooltipText = new StringBuffer();\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
+ if(groups[g].getDescription()!=null)\r
+ tooltipText.append(groups[g].getDescription());\r
+ tooltipText.append("\n");\r
+ }\r
+ }\r
+ }\r
\r
// use aa to see if the mouse pointer is on a\r
if (av.showSequenceFeatures\r
&& sequence.getSequenceFeatures()!=null\r
&& av.featuresDisplayed!=null)\r
{\r
- StringBuffer featureText = new StringBuffer();\r
+\r
Vector allFeatures = getAllFeaturesAtRes(sequence, sequence.findPosition(res));\r
\r
int index = 0;\r
{\r
SequenceFeature sf = (SequenceFeature) allFeatures.elementAt(index);\r
\r
- featureText.append(sf.getType()+" "+sf.begin+":"+sf.end);\r
+ tooltipText.append(sf.getType()+" "+sf.begin+":"+sf.end);\r
\r
if (sf.getDescription() != null)\r
- featureText.append(" " + sf.getDescription());\r
+ tooltipText.append(" " + sf.getDescription());\r
\r
if (sf.getValue("status") != null )\r
{\r
String status = sf.getValue("status").toString();\r
if(status.length()>0)\r
- featureText.append(" (" + sf.getValue("status") + ")");\r
+ tooltipText.append(" (" + sf.getValue("status") + ")");\r
}\r
- featureText.append("\n");\r
+ tooltipText.append("\n");\r
\r
index++;\r
}\r
-\r
-\r
- if (tooltip == null)\r
- tooltip = new Tooltip(featureText.toString(), seqCanvas);\r
- else\r
- tooltip.setTip(featureText.toString());\r
-\r
- tooltip.repaint();\r
-\r
}\r
- else if (tooltip != null)\r
- {\r
- tooltip.setTip("");\r
- }\r
+\r
+ if (tooltip == null)\r
+ tooltip = new Tooltip(tooltipText.toString(), seqCanvas);\r
+ else\r
+ tooltip.setTip(tooltipText.toString());\r
}\r
\r
Vector getAllFeaturesAtRes(SequenceI seq, int res)\r
boolean fixedColumns = false;\r
SequenceGroup sg = av.getSelectionGroup();\r
\r
+ SequenceI seq = av.alignment.getSequenceAt(startseq);\r
\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
\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
}\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