From: Jan P. <jp...@us...> - 2005-12-23 23:31:32
|
Update of /cvsroot/e-p-i-c/org.epic.perleditor/src/org/epic/perleditor/editors/util In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3790/src/org/epic/perleditor/editors/util Modified Files: PerlColorProvider.java Log Message: Updated to cache Color resources and properly dispose them when the plug-in is disposed. Index: PerlColorProvider.java =================================================================== RCS file: /cvsroot/e-p-i-c/org.epic.perleditor/src/org/epic/perleditor/editors/util/PerlColorProvider.java,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- PerlColorProvider.java 10 May 2003 12:43:34 -0000 1.1.1.1 +++ PerlColorProvider.java 23 Dec 2005 23:31:21 -0000 1.2 @@ -1,18 +1,41 @@ package org.epic.perleditor.editors.util; +import java.util.*; + import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.RGB; import org.eclipse.swt.widgets.Display; -public class PerlColorProvider { +public class PerlColorProvider +{ + private final Map colors; + + public PerlColorProvider() + { + colors = new HashMap(); + } + + public synchronized void dispose() + { + for (Iterator i = colors.keySet().iterator(); i.hasNext();) + { + Object key = i.next(); + ((Color) colors.get(key)).dispose(); + i.remove(); + } + } /** * Return the Color that is stored in the Color table as rgb. */ - public static Color getColor(RGB rgb) { - Color color= new Color(Display.getCurrent(), rgb); - - return color; + public synchronized Color getColor(RGB rgb) + { + Color c = (Color) colors.get(rgb); + if (c == null) + { + c = new Color(Display.getCurrent(), rgb); + colors.put(rgb, c); + } + return c; } - } |