});\r
}\r
\r
+ int startWrapBlock=-1;\r
+ int wrappedBlock=-1;\r
int findRes(MouseEvent evt)\r
{\r
int res = 0;\r
\r
int chunkHeight = (av.getAlignment().getHeight() + 2) * av.charHeight;\r
int cwidth = seqCanvas.getWrappedCanvasWidth(this.getWidth());\r
- int block = y/chunkHeight;\r
- block += av.getStartRes()/cwidth;\r
+ wrappedBlock = y/chunkHeight;\r
+ wrappedBlock += av.getStartRes()/cwidth;\r
\r
- res = block*cwidth + x / av.getCharWidth();\r
+ res = wrappedBlock*cwidth + x / av.getCharWidth();\r
}\r
else\r
{\r
int seq = findSeq(evt);\r
int res = findRes(evt);\r
\r
+ if(seq<0 || res<0)\r
+ return;\r
+\r
if ((seq < av.getAlignment().getHeight()) &&\r
(res < av.getAlignment().getSequenceAt(seq).getLength()))\r
{\r
ap.alignFrame.updateEditMenuBar();\r
}\r
\r
- av.updateConservation();\r
- av.updateConsensus();\r
-\r
- //Does the edit affect any groups?\r
- //////////////////////////////\r
- Vector groupsToUpdate = new Vector();\r
- SequenceGroup sg = av.getSelectionGroup();\r
-\r
- int s, g, gSize = av.alignment.getGroups().size();\r
- if (sg != null)\r
- {\r
- groupsToUpdate.addElement(av.getSelectionGroup());\r
- int sSize = sg.getSize();\r
- for (s = 0; s < sSize; s++)\r
- {\r
- SequenceI seq = sg.getSequenceAt(s);\r
+ av.firePropertyChange("alignment", null,av.getAlignment().getSequences());\r
\r
- for (g = 0; g < gSize; g++)\r
- {\r
- SequenceGroup sg2 = (SequenceGroup) av.alignment.getGroups().\r
- elementAt(\r
- g);\r
- if (sg2.sequences.contains(seq))\r
- {\r
- if (!groupsToUpdate.contains(sg2))\r
- groupsToUpdate.addElement(sg2);\r
- continue;\r
- }\r
- }\r
- }\r
- }\r
- else\r
- {\r
- SequenceI seq = av.alignment.getSequenceAt(startseq);\r
- for (g = 0; g < gSize; g++)\r
- {\r
- SequenceGroup sg2 = (SequenceGroup) av.alignment.getGroups().elementAt(\r
- g);\r
- if (sg2.sequences.contains(seq))\r
- {\r
- if (!groupsToUpdate.contains(sg2))\r
- groupsToUpdate.addElement(sg2);\r
- continue;\r
- }\r
- }\r
- }\r
-\r
- gSize = groupsToUpdate.size();\r
- for (g = 0; g < gSize; g++)\r
- {\r
- ( (SequenceGroup) groupsToUpdate.elementAt(g)).recalcConservation();\r
- }\r
- ////End of updating groups\r
- //////////////////////////////////////////\r
-\r
- // Y O Y CLUSTALX\r
- ColourSchemeI cs = av.getGlobalColourScheme();\r
- if(cs!=null)\r
- {\r
- if (cs.conservationApplied())\r
- {\r
- Conservation c = new Conservation("All",\r
- ResidueProperties.propHash, 3,\r
- av.alignment.getSequences(),\r
- 0, av.alignment.getWidth() - 1);\r
- c.calculate();\r
- c.verdict(false, av.ConsPercGaps);\r
-\r
- if (cs instanceof ClustalxColourScheme)\r
- {\r
- ((ClustalxColourScheme)cs).\r
- resetClustalX(av.alignment.getSequences(),\r
- av.alignment.getWidth());\r
-\r
- cs.setConservation(c);\r
- av.setGlobalColourScheme(cs);\r
- }\r
- else\r
- {\r
- cs.setConservation(c);\r
- av.setGlobalColourScheme(cs);\r
- }\r
-\r
- }\r
-\r
- if (cs instanceof ClustalxColourScheme)\r
- {\r
- ( (ClustalxColourScheme) cs).resetClustalX(av.alignment.getSequences(),\r
- av.alignment.getWidth());\r
- av.setGlobalColourScheme(cs);\r
- }\r
- }\r
}\r
\r
/**\r
int seq = findSeq(evt);\r
oldSeq = seq;\r
\r
+ startWrapBlock=wrappedBlock;\r
+\r
+ if(seq<0 || res<0)\r
+ return;\r
+\r
SequenceI sequence = (Sequence) av.getAlignment().getSequenceAt(seq);\r
\r
if ((sequence == null) || (res > sequence.getLength()))\r
int res = findRes(evt);\r
int y = findSeq(evt);\r
\r
+ if(wrappedBlock!=startWrapBlock)\r
+ return;\r
+\r
if (stretchGroup == null)\r
{\r
return;\r