+ av.updateConservation();\r
+ av.updateConsensus();\r
+\r
+ // Y O Y CLUSTALX\r
+ ColourSchemeI cs = av.getGlobalColourScheme();\r
+ if(cs instanceof ConservationColourScheme)\r
+ {\r
+ ConservationColourScheme ccs = (ConservationColourScheme) cs;\r
+ if(ccs.cs instanceof ClustalxColourScheme)\r
+ {\r
+ Conservation c = new Conservation("All",\r
+ ResidueProperties.propHash, 3,\r
+ av.alignment.getSequences(), 0,\r
+ av.alignment.getWidth() - 1);\r
+ c.calculate();\r
+ c.verdict(false, av.ConsPercGaps);\r
+\r
+ ClustalxColourScheme cxs = (ClustalxColourScheme)ccs.cs;\r
+ cxs.resetClustalX(av.alignment.getSequences(), av.alignment.getWidth());\r
+ ccs = new ConservationColourScheme(c, cxs);\r
+ av.setGlobalColourScheme(ccs);\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
+/////Everything below this is for defining the boundary of the rubberband\r
+//////////////////////////////////////////\r
+ int oldSeq = -1;\r
+ public void doMousePressedDefineMode(MouseEvent evt)\r
+ {\r
+ int res = evt.getX()/av.getCharWidth() + av.getStartRes();\r
+ int seq = evt.getY()/av.getCharHeight() + av.getStartSeq();\r
+ oldSeq = seq;\r
+\r
+ SequenceI sequence = (Sequence) av.getAlignment().getSequenceAt(seq);\r
+\r
+ if(sequence==null || res>sequence.getLength())\r
+ return;\r
+\r
+ stretchGroup = av.getSelectionGroup();\r
+\r
+ if(stretchGroup == null)\r
+ {\r
+ stretchGroup = av.alignment.findGroup( sequence );\r
+ if(stretchGroup!=null && res>stretchGroup.getStartRes() && res<stretchGroup.getEndRes())\r
+ av.setSelectionGroup(stretchGroup);\r
+ else\r
+ stretchGroup = null;\r
+ }\r
+\r
+ else if(!stretchGroup.sequences.contains(sequence)\r
+ || stretchGroup.getStartRes()>res\r
+ || stretchGroup.getEndRes()<res)\r
+ {\r
+ stretchGroup = null;\r
+\r
+ SequenceGroup[] allGroups = av.alignment.findAllGroups( sequence );\r
+\r
+ if (allGroups != null)\r
+ for (int i = 0; i < allGroups.length; i++)\r
+ if (allGroups[i].getStartRes() <= res &&\r
+ allGroups[i].getEndRes() >= res)\r
+ {\r
+ stretchGroup = allGroups[i];\r
+ av.setSelectionGroup(stretchGroup);\r
+ break;\r
+ }\r
+ }\r
+\r
+ if(stretchGroup==null)\r
+ {\r
+ // define a new group here\r
+ SequenceGroup sg = new SequenceGroup();\r
+ sg.setStartRes(res);\r
+ sg.setEndRes(res);\r
+ sg.addSequence( sequence );\r
+ av.setSelectionGroup( sg );\r
+ stretchGroup = sg;\r
+\r
+ if(av.getConservationSelected())\r
+ SliderPanel.setConservationSlider(ap, av.getGlobalColourScheme(), "Background");\r
+ if(av.getAbovePIDThreshold())\r
+ SliderPanel.setPIDSliderSource(ap, av.getGlobalColourScheme(), "Background");\r
+\r
+ }\r
+ else if( javax.swing.SwingUtilities.isRightMouseButton(evt))\r
+ {\r
+ jalview.gui.PopupMenu pop = new jalview.gui.PopupMenu( ap , null);\r
+ pop.show(this, evt.getX(), evt.getY());\r
+\r
+ // edit the properties of existing group\r
+ }\r
+\r
+ if(stretchGroup!=null && stretchGroup.getEndRes()==res)\r
+ // Edit end res position of selected group\r
+ changeEndRes = true;\r
+\r
+ else if(stretchGroup!=null && stretchGroup.getStartRes()==res)\r
+ // Edit end res position of selected group\r
+ changeStartRes = true;\r
+\r
+ stretchGroup.getWidth();\r
+\r