Das folgende Beispiel zeigt, wie man sich eine eigenen Icon Bibliothek mit Hilfe einer Image Provider Enum erstellen kann:
1 import java.net.URL;
2 import org.jowidgets.common.image.IImageUrlProvider;
3
4 public enum SilkIcons implements IImageUrlProvider {
5
6 ACCEPT(getIconsPath() + "accept.png"),
7 ADD(getIconsPath() + "add.png"),
8 ANCHOR(getIconsPath() + "anchor.png"),
9 APPLICATION(getIconsPath() + "application.png"),
10 APPLICATION_ADD(getIconsPath() + "application_add.png"),
11
12 //...removed most of the icon constants in this code example
13
14 XHTML_GO(getIconsPath() + "xhtml_go.png"),
15 XHTML_VALID(getIconsPath() + "xhtml_valid.png"),
16 ZOOM(getIconsPath() + "zoom.png"),
17 ZOOM_IN(getIconsPath() + "zoom_in.png"),
18 ZOOM_OUT(getIconsPath() + "zoom_out.png");
19
20 private static final String ICONS_PATH
21 = "org/jowidgets/addons/icons/silkicons/icons/silkicons/";
22
23 private final URL url;
24
25 private SilkIcons(final String defaultPath) {
26 this.url = getClass().getClassLoader().getResource(defaultPath);
27 }
28
29 private static String getIconsPath() {
30 return ICONS_PATH;
31 }
32
33 @Override
34 public URL getImageUrl() {
35 return url;
36 }
37
38 }
Die Enum implementiert die Schnittstelle
IImageUrlProvider
, wodurch die Konstanten vor
deren Verwendung nicht explizit registriert werden müssen.
Die zugehörigen Icon Dateien sind in diesem Beispiel im
resources
Ordner des Moduls unter dem Pfad:
org/jowidgets/addons/icons/silkicons/icons/silkicons/
abgelegt, wie es die folgende Abbildung verdeutlicht:
Das folgende Beispiel zeigt, wie die oben definierten Icons verwendet werden können:
1 final IButton zoomInButton = container.add(BPF.button().setIcon(SilkIcons.ZOOM_IN)); 2 final IButton zoomOutButton = container.add(BPF.button().setIcon(SilkIcons.ZOOM_OUT));
Dieser Ansatz eignet sich sowohl für die Erstellung logischer- als auch für die Erstellung konkreter Icon Bibliotheken.
Anmerkung: Beinhaltet eine konkreten Icon Bibliothek alle Icons einer unter Umständen größeren Icon Sammlung, kann es hilfreich sein, die Enum Klasse mit Hilfe eines Skriptes zu generieren. Für die Silk Icons Bibliothek wurde das so gemacht.