addMouseMotionListener(this);\r
setLayout(null);\r
\r
- PaintRefresher.Register(this, av.alignment);\r
+ PaintRefresher.Register(this, av.getSequenceSetId());\r
}\r
\r
public void treeSelectionChanged(SequenceI sequence)\r
\r
if (node.element() instanceof SequenceI)\r
{\r
- if ( ( (SequenceI) ( (SequenceNode) node).element()).getColor() ==\r
- Color.white)\r
+ SequenceI seq = (SequenceI) ( (SequenceNode) node).element();\r
+\r
+ if (av.getSequenceColour(seq) == Color.white)\r
{\r
g.setColor(Color.black);\r
}\r
else\r
{\r
- g.setColor( ( (SequenceI) ( (SequenceNode) node).element()).getColor().\r
- darker());\r
+ g.setColor(av.getSequenceColour(seq).darker());\r
}\r
\r
}\r
// Colour selected leaves differently\r
SequenceGroup selected = av.getSelectionGroup();\r
if (selected != null &&\r
- selected.getSequences(false).contains( (SequenceI) node.element()))\r
+ selected.getSequences(null).contains( (SequenceI) node.element()))\r
{\r
g.setColor(Color.gray);\r
\r
\r
if (node.element() instanceof SequenceI)\r
{\r
- ( (SequenceI) node.element()).setColor(c);\r
+ av.setSequenceColour((SequenceI) node.element(), c);\r
}\r
}\r
else\r
paint(g);\r
}\r
\r
- Image offscreen;\r
- public void paint(Graphics g1)\r
+ public void paint(Graphics g)\r
{\r
-\r
if(tree==null)\r
return;\r
\r
repaint();\r
}\r
\r
- FontMetrics fm = g1.getFontMetrics(font);\r
-\r
int width = scrollPane.getSize().width;\r
int height = scrollPane.getSize().height;\r
if(!fitToWindow)\r
- height = fm.getHeight() * nameHash.size();\r
+ {\r
+ height = g.getFontMetrics(font).getHeight() * nameHash.size();\r
+ }\r
\r
+ if(getSize().width>width)\r
+ {\r
+ setSize(new Dimension(width,height));\r
+ scrollPane.validate();\r
+ return;\r
+ }\r
\r
- if(offscreen==null || offscreen.getWidth(this)!=width\r
- || offscreen.getHeight(this)!=height)\r
- offscreen = createImage(width, height);\r
+ setSize(new Dimension(width,height));\r
\r
- Graphics g = offscreen.getGraphics();\r
\r
g.setFont(font);\r
\r
- if (fitToWindow ||\r
- (!fitToWindow &&\r
- scrollPane.getSize().height > fm.getHeight() * nameHash.size() + offy))\r
- {\r
- draw(g, scrollPane.getSize().width, scrollPane.getSize().height);\r
- }\r
- else\r
- {\r
- setSize(new Dimension(scrollPane.getSize().width,\r
- fm.getHeight() * nameHash.size()));\r
- draw(g, scrollPane.getSize().width, fm.getHeight() * nameHash.size());\r
- }\r
+ draw(g, width, height);\r
\r
- g1.drawImage(offscreen, 0, 0, this);\r
- scrollPane.validate();\r
}\r
\r
\r
}\r
}\r
\r
- PaintRefresher.Refresh(this, av.alignment);\r
+ PaintRefresher.Refresh(this, av.getSequenceSetId());\r
repaint();\r
}\r
}\r
if (ob instanceof SequenceI)\r
{\r
treeSelectionChanged( (Sequence) ob);\r
- PaintRefresher.Refresh(this, av.alignment);\r
+ PaintRefresher.Refresh(this, av.getSequenceSetId());\r
repaint();\r
return;\r
}\r
\r
av.setSelectionGroup(null);\r
av.alignment.deleteAllGroups();\r
+ av.sequenceColours=null;\r
\r
colourGroups();\r
\r
}\r
}\r
\r
- PaintRefresher.Refresh(this, av.alignment);\r
+ PaintRefresher.Refresh(this, av.getSequenceSetId());\r
repaint();\r
\r
}\r
av.getIgnoreGapsConsensus());\r
}\r
\r
- SequenceGroup sg = new SequenceGroup(sequences, "TreeGroup",\r
+ SequenceGroup sg = new SequenceGroup(sequences, "",\r
cs, true, true,\r
false, 0, av.alignment.getWidth()-1);\r
\r
+ sg.setName("JTreeGroup:"+sg.hashCode());\r
+\r
\r
if ( av.getGlobalColourScheme()!=null\r
&& av.getGlobalColourScheme().conservationApplied())\r
{\r
Conservation c = new Conservation("Group",\r
ResidueProperties.propHash, 3,\r
- sg.getSequences(false),\r
+ sg.getSequences(null),\r
sg.getStartRes(),\r
sg.getEndRes());\r
\r