patch from http://www.cowbarn.org/phpeclipse/
[phpeclipse.git] / archive / net.sourceforge.phpeclipse.quantum.sql / src / com / quantum / ImageStore.java
1 package com.quantum;
2
3 import java.net.MalformedURLException;
4 import java.net.URL;
5 import java.util.Collections;
6 import java.util.HashMap;
7
8 import java.util.Map;
9
10 import com.quantum.util.versioning.VersioningHelper;
11
12 import org.eclipse.jface.resource.ImageDescriptor;
13 import org.eclipse.jface.resource.ImageRegistry;
14 import org.eclipse.swt.graphics.Image;
15 import org.eclipse.ui.plugin.AbstractUIPlugin;
16
17
18
19 /**
20  * @author BC
21  */
22 public class ImageStore {
23         
24         private static final Map imageDescriptorMap = Collections.synchronizedMap(new HashMap());
25         
26         private static final String VERSION_2 = "_2x";
27         private static final String GIF_FILE_EXTENSION = ".gif";
28         
29         public static final String ADD = "add";
30         public static final String ADD_SCHEMA = "add_schema";
31         public static final String APPEND = "append";
32         public static final String AUTOCOMMIT = "autocommit";
33         public static final String BOOKMARK = "bookmarks";
34         public static final String BOOKMARKFILE = "bookmarkfile";
35         public static final String CLASS = "class";
36         public static final String CLEAR = "clear";
37         public static final String CLOSE = "close";
38         public static final String COLUMN = "column";
39         public static final String CONNECT = "connect";
40         public static final String CONNECTED = "connected";
41         public static final String COPY = "copy";
42         public static final String CUT = "cut";
43         public static final String DELETE = "delete";
44         public static final String DISCONNECT = "disconnect";
45         public static final String DRIVER = "driver";
46         public static final String EDIT = "edit";
47         public static final String ENTITYGROUP = "entitygroup";
48         public static final String EXPORT = "export";
49         public static final String FILTER = "filter";
50         public static final String FOREIGNKEY = "foreignkey";
51         public static final String FULLDATA = "fulldata";
52         public static final String GRID = "grid";
53         public static final String GROUP = "group";
54         public static final String IMPORT = "import";
55         public static final String KEY = "key";
56         public static final String KEYCOLUMN = "keycolumn";
57         public static final String LOG = "log";
58         public static final String MISSINGSCHEMA = "missingschema";
59         public static final String MISSINGTABLE = "table";
60         public static final String NEXT = "next";
61         public static final String OPEN_TABLE = "table";
62         public static final String PASTE = "paste";
63         public static final String PLAY = "play";
64         public static final String PREVIOUS = "previous";
65         public static final String QMODEL = "qmodel";
66         public static final String QUANTUM = "quantum";
67         public static final String REFRESH = "refresh";
68         public static final String ROLLBACK = "rollback";
69         public static final String SAMPLE = "sample";
70         public static final String SCHEMA = "schema";
71         public static final String SCRIPT = "script";
72         public static final String SEQUENCE = "sequence";
73         public static final String STATEMENT = "statement";
74         public static final String STOP = "stop";
75         public static final String SUBSET = "subset";
76         public static final String SUCCESS = "success";
77         public static final String TABLE = "bigtable";
78         public static final String TEMPLATE = "template";
79         public static final String TORQUE = "torque";
80         public static final String TRIGGER = "trigger";
81         public static final String USER = "user";
82         public static final String VIEW = "view";
83         public static final String WARNING = "warning";
84         public static final String XML = "xml";
85         
86         public static ImageDescriptor getImageDescriptor(String imageName) {
87                 return getImageDescriptor(imageName, QuantumPlugin.getDefault());
88         }
89
90         public static Image getImage(String imageName) {
91                 return getImage(imageName, QuantumPlugin.getDefault());
92         }
93
94         /**
95          * @param imageName
96          * @param default1
97          * @return
98          */
99         private static Image getImage(String imageName, AbstractUIPlugin plugin) {
100                 ImageRegistry registry = plugin.getImageRegistry();
101                 String key = stripSuffix(imageName);
102                 Image image = registry.get(getVersionAppropriateImage(key));
103                 return image;
104         }
105
106         public static ImageDescriptor getImageDescriptor(String imageName, AbstractUIPlugin plugin) {
107                 ImageRegistry registry = plugin.getImageRegistry();
108                 String key = stripSuffix(imageName);
109                 key = getVersionAppropriateImage(key);
110
111                 if (VersioningHelper.isEclipse21OrHigher()) {
112                         return VersioningHelper.getDescriptor(registry, key);
113                 } else {
114                         return (ImageDescriptor) imageDescriptorMap.get(key);
115                 }
116         }
117
118         /**
119          * @param imageName
120          * @return
121          */
122         private static String stripSuffix(String imageName) {
123                 return imageName.endsWith(GIF_FILE_EXTENSION) 
124                         ? imageName.substring(0, imageName.length() - 4)
125                         : imageName;
126         }
127
128         /**
129          * @param imageName
130          * @return
131          */
132         private static String getVersionAppropriateImage(String imageName) {
133                 String version2Key = imageName + VERSION_2;
134                 return !VersioningHelper.isEclipse30() && imageDescriptorMap.containsKey(version2Key) 
135                         ? version2Key : imageName;
136         }
137
138         /**
139          * @param registry
140          * @param url
141          */
142         static void initialize(ImageRegistry registry, URL url) {
143                 
144                 addImage(registry, url, ADD);
145                 addImage(registry, url, BOOKMARK);
146                 addImage(registry, url, DISCONNECT);
147                 addImage(registry, url, ADD);
148                 addImage(registry, url, ADD_SCHEMA);
149                 addImage(registry, url, APPEND);
150                 addImage(registry, url, AUTOCOMMIT);
151                 addImage(registry, url, BOOKMARK);
152                 addImage(registry, url, BOOKMARKFILE);
153                 addImage(registry, url, CLASS);
154                 addImage(registry, url, CLEAR);
155                 addImage(registry, url, CLOSE);
156                 addImage(registry, url, COLUMN);
157                 addImage(registry, url, CONNECT);
158                 addImage(registry, url, CONNECTED);
159                 addImage(registry, url, COPY);
160                 addImage(registry, url, CUT);
161                 addImage(registry, url, DELETE);
162                 addImage(registry, url, DISCONNECT);
163                 addImage(registry, url, DRIVER);
164                 addImage(registry, url, EDIT);
165                 addImage(registry, url, ENTITYGROUP);
166                 addImage(registry, url, EXPORT);
167                 addImage(registry, url, FILTER);
168                 addImage(registry, url, FOREIGNKEY);
169                 addImage(registry, url, FULLDATA);
170                 addImage(registry, url, GRID);
171                 addImage(registry, url, GROUP);
172                 addImage(registry, url, IMPORT);
173                 addImage(registry, url, KEY);
174                 addImage(registry, url, KEYCOLUMN);
175                 addImage(registry, url, LOG);
176                 addImage(registry, url, MISSINGSCHEMA);
177                 addImage(registry, url, MISSINGTABLE);
178                 addImage(registry, url, NEXT);
179                 addImage(registry, url, PASTE);
180                 addImage(registry, url, PLAY);
181                 addImage(registry, url, PREVIOUS);
182                 addImage(registry, url, QMODEL);
183                 addImage(registry, url, QUANTUM);
184                 addImage(registry, url, REFRESH);
185                 addImage(registry, url, ROLLBACK);
186                 addImage(registry, url, SAMPLE);
187                 addImage(registry, url, SCHEMA);
188                 addImage(registry, url, SCRIPT);
189                 addImage(registry, url, SEQUENCE);
190                 addImage(registry, url, STATEMENT);
191                 addImage(registry, url, STOP);
192                 addImage(registry, url, SUBSET);
193                 addImage(registry, url, SUCCESS);
194                 addImage(registry, url, TABLE);
195                 addImage(registry, url, TEMPLATE);
196                 addImage(registry, url, TORQUE);
197                 addImage(registry, url, TRIGGER);
198                 addImage(registry, url, USER);
199                 addImage(registry, url, VIEW);
200                 addImage(registry, url, WARNING);
201                 addImage(registry, url, XML);
202                 
203                 if (!VersioningHelper.isEclipse30()) {
204                         addImage(registry, url, CLOSE + VERSION_2);
205                         addImage(registry, url, COPY + VERSION_2);
206                         addImage(registry, url, DELETE + VERSION_2);
207                         addImage(registry, url, EXPORT + VERSION_2);
208                         addImage(registry, url, IMPORT + VERSION_2);
209                         addImage(registry, url, PASTE + VERSION_2);
210                         addImage(registry, url, REFRESH + VERSION_2);
211                 }
212         }
213
214         /**
215          * @param registry
216          * @param url
217          */
218         private static void addImage(ImageRegistry registry, URL url, String key) {
219                 try {
220                         ImageDescriptor descriptor = ImageDescriptor.createFromURL(
221                                         new URL(url, key + GIF_FILE_EXTENSION));
222                         ImageStore.imageDescriptorMap.put(key, descriptor);
223                         registry.put(key, descriptor);
224                 } catch (MalformedURLException e) {
225                         // skip, but try to go on to the next one...
226                 }
227         }
228 }