Moving editor sources back into trunk
[taxeditor.git] / taxeditor-store / src / main / java / eu / etaxonomy / taxeditor / store / model / ImageResources.java
1 /**
2 * Copyright (C) 2007 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
5 *
6 * The contents of this file are subject to the Mozilla Public License Version 1.1
7 * See LICENSE.TXT at the top of this package for the full license terms.
8 */
9
10 package eu.etaxonomy.taxeditor.store.model;
11
12 import java.net.MalformedURLException;
13 import java.net.URI;
14 import java.net.URL;
15
16 import org.apache.log4j.Logger;
17 import org.eclipse.core.runtime.FileLocator;
18 import org.eclipse.core.runtime.IPath;
19 import org.eclipse.core.runtime.Path;
20 import org.eclipse.jface.resource.ImageDescriptor;
21 import org.eclipse.jface.resource.ImageRegistry;
22 import org.eclipse.swt.graphics.Image;
23
24 import eu.etaxonomy.taxeditor.store.internal.TaxeditorStorePlugin;
25
26 /**
27 * @author n.hoffmann
28 * @created 24.03.2009
29 * @version 1.0
30 */
31 public class ImageResources {
32 private static final Logger logger = Logger.getLogger(ImageResources.class);
33
34 private static ImageResources instance;
35
36 public static ImageResources getInstance(){
37 if(instance == null){
38 instance = new ImageResources();
39 }
40 return instance;
41 }
42
43
44 /* ***************************************************************************************
45 ICONS
46 ************************************************************************************** */
47 public static final String EDIT_ICON = "edit_icon";
48 public static final String WARNING_ICON = "warning_icon";
49 public static final String BLACK_SQUARE_ICON = "black_square_icon";
50 public static final String HOMOTYPIC_SYN_ICON = "homotypic_syn_icon";
51 public static final String HOMOTYPIC_SYN_ORIGINAL_ICON = "homotypic_syn_original_icon";
52 public static final String HETEROTYPIC_SYN_ICON = "heterotypic_syn_icon";
53 public static final String HETEROTYPIC_SYN_ORIGINAL_ICON = "heterotypic_syn_original_icon";
54 public static final String MISAPPLIED_NAME_ICON = "misapplied_icon";
55 public static final String CONCEPT_ICON = "concept_icon";
56 public static final String AUTONYM_ICON = "autonym_icon";
57 public static final String BASIONYM_ICON = "basionym_icon";
58 public static final String ORTHOGRAPHIC_VARIANT_ICON = "orthographic_variants_icon";
59 public static final String DB_ICON = "db_icon";
60 public static final String MOVE_ICON = "move_icon";
61 public static final String ACTIVE_DELETE_ICON = "active_delete_icon";
62 public static final String SYNONYM_TO_TAXON_ICON = "synoynm_to_taxon_icon";
63 public static final String OPEN_TAXON_ICON = "open_taxon_icon";
64 public static final String ADD_CHILD_TAXON_ICON = "add_taxon_icon";
65 public static final String SWAP_SYNONYM_AND_TAXON_ICON = "swap_syn_and_tax_icon";
66 public static final String QUICK_ADD_ICON = "quick_add_icon";
67 public static final String TAXON_TO_SYNONYM_ICON = "tax_to_syn_icon";
68 public static final String ERROR_ANNOTATION_ICON = "error_annotation_icon";
69 public static final String EDIT_BITMAP_ICON = "edit_bitmap_icon";
70 public static final String IMG_DATASOURCE_CONNECTED = "IMG_DATASOURCE_CONNECTED";
71 public static final String IMG_DATASOURCE_DISCONNECTED = "IMG_DATASOURCE_DISCONNECTED";
72
73
74 /***************************************************************************
75 * IMAGE REGISTRY
76 **************************************************************************/
77 private ImageRegistry imageRegistry;
78
79 public static ImageDescriptor getImageDescriptor(String key) {
80 return getInstance().getImageRegistry().getDescriptor(key);
81 }
82
83 public static Image getImage(String key) {
84 return getInstance().getImageRegistry().get(key);
85 }
86
87 /**
88 * Gets an image for the given URL. Adds the image to the registry as needed.
89 *
90 * @param url
91 * @return
92 */
93 public static Image getImage(URI uri) {
94
95 String key = uri.toString();
96 ImageRegistry registry = getInstance().getImageRegistry();
97
98 Image image = registry.get(key);
99
100 if (image == null) {
101 ImageDescriptor desc;
102 try {
103 desc = ImageDescriptor.createFromURL(new URL(key));
104 registry.put(key, desc);
105 image = registry.get(key);
106 } catch (MalformedURLException e) {
107 // should never happen
108 }catch (Exception e) {
109 // TODO Auto-generated catch block
110 e.printStackTrace();
111 }
112
113 // logger.warn(ImageDescriptor.getMissingImageDescriptor().getClass());
114 // logger.warn(desc.getClass());
115 //
116 // if (ImageDescriptor.getMissingImageDescriptor().equals(desc)) {
117 // logger.warn("img not found");
118 // }
119
120 }
121
122 return image;
123 }
124
125 public ImageRegistry getImageRegistry() {
126 if (imageRegistry == null) {
127 imageRegistry = TaxeditorStorePlugin.getDefault().createImageRegistry();
128 initializeImageRegistry(imageRegistry);
129 }
130 return imageRegistry;
131 }
132
133 protected void initializeImageRegistry(ImageRegistry registry) {
134 registerImage(registry, EDIT_ICON, "edit_16x16.ico");
135 registerImage(registry, WARNING_ICON,
136 "warn_tsk.gif");
137 registerImage(registry, BLACK_SQUARE_ICON,
138 "accepted_small.gif");
139 registerImage(registry, HOMOTYPIC_SYN_ICON,
140 "homosyn_no_bg.gif");
141 registerImage(registry,
142 HOMOTYPIC_SYN_ORIGINAL_ICON,
143 "homosyn_original_no_bg.gif");
144 registerImage(registry, HETEROTYPIC_SYN_ICON,
145 "heterosyn_no_bg.gif");
146 registerImage(registry,
147 HETEROTYPIC_SYN_ORIGINAL_ICON,
148 "heterosyn_original_no_bg.gif");
149 registerImage(registry, MISAPPLIED_NAME_ICON,
150 "misapplied_no_bg.gif");
151 registerImage(registry, CONCEPT_ICON,
152 "concept_no_bg.gif");
153 registerImage(registry, AUTONYM_ICON,
154 "autonym_no_bg.gif");
155 registerImage(registry, BASIONYM_ICON,
156 "basionym_no_bg.gif");
157 registerImage(registry, ORTHOGRAPHIC_VARIANT_ICON,
158 "orthovariant_no_bg.gif");
159 registerImage(registry, DB_ICON, "db.gif");
160 registerImage(registry, MOVE_ICON,
161 "correction_change.gif");
162 registerImage(registry, ACTIVE_DELETE_ICON,
163 "delete_edit.gif");
164 registerImage(registry, SYNONYM_TO_TAXON_ICON,
165 "change.gif");
166 registerImage(registry, OPEN_TAXON_ICON, "open.gif");
167 registerImage(registry, ADD_CHILD_TAXON_ICON,
168 "new_child.gif");
169 registerImage(registry,
170 SWAP_SYNONYM_AND_TAXON_ICON, "swap2.gif");
171 registerImage(registry, QUICK_ADD_ICON,
172 "quick_add.gif");
173 registerImage(registry, TAXON_TO_SYNONYM_ICON,
174 "tax_to_syn.gif");
175 registerImage(registry, ERROR_ANNOTATION_ICON,
176 "error_co.gif");
177 registerImage(registry, EDIT_BITMAP_ICON,
178 "256color_16x16.bmp");
179 registerImage(registry, IMG_DATASOURCE_CONNECTED,
180 "prj_obj.gif");
181 registerImage(registry, IMG_DATASOURCE_DISCONNECTED,
182 "cprj_obj.gif");
183 }
184
185 private void registerImage(ImageRegistry registry, String key,
186 String fileName) {
187 try {
188 IPath path = new Path("icons/" + fileName); //$NON-NLS-1$
189 URL url = FileLocator.find(TaxeditorStorePlugin.getDefault().getBundle(), path, null);
190 if (url != null) {
191 ImageDescriptor desc = ImageDescriptor.createFromURL(url);
192 registry.put(key, desc);
193 }
194 } catch (Exception e) {
195 }
196 }
197 }