Dont repaint if component has been removed
[jalview.git] / src / jalview / appletgui / PaintRefresher.java
1 /*\r
2  * Jalview - A Sequence Alignment Editor and Viewer\r
3  * Copyright (C) 2005 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
4  *\r
5  * This program is free software; you can redistribute it and/or\r
6  * modify it under the terms of the GNU General Public License\r
7  * as published by the Free Software Foundation; either version 2\r
8  * of the License, or (at your option) any later version.\r
9  *\r
10  * This program is distributed in the hope that it will be useful,\r
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
13  * GNU General Public License for more details.\r
14  *\r
15  * You should have received a copy of the GNU General Public License\r
16  * along with this program; if not, write to the Free Software\r
17  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA\r
18  */\r
19 \r
20 \r
21 \r
22 package jalview.appletgui;\r
23 \r
24 import java.awt.*;\r
25 import java.util.*;\r
26 import jalview.datamodel.*;\r
27 \r
28 public class PaintRefresher\r
29 {\r
30   static Hashtable components = new Hashtable();\r
31 \r
32   public static void Register(Component comp, AlignmentI al)\r
33   {\r
34     if(components.containsKey(al))\r
35     {\r
36       Vector comps = (Vector)components.get(al);\r
37       comps.addElement(comp);\r
38     }\r
39     else\r
40     {\r
41       Vector vcoms = new Vector();\r
42       vcoms.addElement(comp);\r
43       components.put(al, vcoms);\r
44     }\r
45   }\r
46 \r
47   public static void Refresh(AlignmentI al)\r
48   {\r
49     Refresh(null, al);\r
50   }\r
51 \r
52   public static void Refresh(Component c, AlignmentI al)\r
53   {\r
54     Component temp;\r
55     Vector coms = (Vector)components.get(al);\r
56     Enumeration e = coms.elements();\r
57     while( e.hasMoreElements() )\r
58     {\r
59       temp = (Component)e.nextElement();\r
60 \r
61       if(!temp.isValid())\r
62         coms.removeElement( temp );\r
63       else if( temp == c )\r
64         continue;\r
65       else\r
66         temp.repaint();\r
67     }\r
68 \r
69   }\r
70 \r
71 }\r
72 \r