1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.vectomatic.common.model.style;
19
20 import java.util.ArrayList;
21 import java.util.List;
22
23 import org.vectomatic.common.events.IPaletteListener;
24
25 import com.google.gwt.user.client.rpc.IsSerializable;
26
27
28
29
30 public class Palette implements IsSerializable {
31
32
33
34 private String _name;
35
36
37
38 private List<Color> _colors;
39 private transient List<IPaletteListener> _paletteListeners;
40 public static Palette getEGA() {
41 return new Palette("EGA", new Color[] {
42 Color.fromRGB(0,0,0),
43 Color.fromRGB(168,0,168),
44 Color.fromRGB(252,84,84),
45 Color.fromRGB(252,84,168),
46 Color.fromRGB(252,84,252),
47 Color.fromRGB(252,168,252),
48 Color.fromRGB(252,252,0),
49 Color.fromRGB(252,252,168),
50 Color.fromRGB(252,252,252),
51 Color.fromRGB(168,252,252),
52 Color.fromRGB(0,252,252),
53 Color.fromRGB(84,168,252),
54 Color.fromRGB(0,0,252),
55 Color.fromRGB(0,84,168),
56 Color.fromRGB(0,0,84),
57 Color.fromRGB(84,84,84),
58 Color.fromRGB(0,0,0),
59 Color.fromRGB(168,0,168),
60 Color.fromRGB(252,84,84),
61 Color.fromRGB(252,84,168),
62 Color.fromRGB(252,84,252),
63 Color.fromRGB(252,168,252),
64 Color.fromRGB(252,252,0),
65 Color.fromRGB(252,252,168),
66 Color.fromRGB(252,252,252),
67 Color.fromRGB(168,252,252),
68 Color.fromRGB(0,252,252),
69 Color.fromRGB(84,168,252),
70 Color.fromRGB(0,0,252),
71 Color.fromRGB(0,84,168),
72 Color.fromRGB(0,0,84),
73 Color.fromRGB(84,84,84),
74 Color.fromRGB(0,0,0),
75 Color.fromRGB(168,0,168),
76 Color.fromRGB(252,84,84),
77 Color.fromRGB(252,84,168),
78 Color.fromRGB(252,84,252),
79 Color.fromRGB(252,168,252),
80 Color.fromRGB(252,252,0),
81 Color.fromRGB(252,252,168),
82 Color.fromRGB(252,252,252),
83 Color.fromRGB(168,252,252),
84 Color.fromRGB(0,252,252),
85 Color.fromRGB(84,168,252),
86 Color.fromRGB(0,0,252),
87 Color.fromRGB(0,84,168),
88 Color.fromRGB(0,0,84),
89 Color.fromRGB(84,84,84),
90 Color.fromRGB(0,0,0),
91 Color.fromRGB(168,0,168),
92 Color.fromRGB(252,84,84),
93 Color.fromRGB(252,84,168),
94 Color.fromRGB(252,84,252),
95 Color.fromRGB(252,168,252),
96 Color.fromRGB(252,252,0),
97 Color.fromRGB(252,252,168),
98 Color.fromRGB(252,252,252),
99 Color.fromRGB(168,252,252),
100 Color.fromRGB(0,252,252),
101 Color.fromRGB(84,168,252),
102 Color.fromRGB(0,0,252),
103 Color.fromRGB(0,84,168),
104 Color.fromRGB(0,0,84),
105 Color.fromRGB(84,84,84)
106 });
107 }
108
109 public static Palette getGOLD() {
110 return new Palette("Gold", new Color[] {
111 Color.fromRGB(252,252,128),
112 Color.fromRGB(252,252,128),
113 Color.fromRGB(252,248,124),
114 Color.fromRGB(252,248,124),
115 Color.fromRGB(252,244,120),
116 Color.fromRGB(248,244,120),
117 Color.fromRGB(248,240,116),
118 Color.fromRGB(248,240,112),
119 Color.fromRGB(248,236,112),
120 Color.fromRGB(244,236,108),
121 Color.fromRGB(244,232,108),
122 Color.fromRGB(244,232,104),
123 Color.fromRGB(244,228,104),
124 Color.fromRGB(240,228,100),
125 Color.fromRGB(240,224, 96),
126 Color.fromRGB(240,224, 96),
127 Color.fromRGB(240,220, 92),
128 Color.fromRGB(236,220, 92),
129 Color.fromRGB(236,216, 88),
130 Color.fromRGB(236,216, 84),
131 Color.fromRGB(236,212, 84),
132 Color.fromRGB(236,212, 80),
133 Color.fromRGB(232,208, 80),
134 Color.fromRGB(232,208, 76),
135 Color.fromRGB(232,204, 76),
136 Color.fromRGB(232,204, 72),
137 Color.fromRGB(228,200, 68),
138 Color.fromRGB(228,200, 68),
139 Color.fromRGB(228,196, 64),
140 Color.fromRGB(228,196, 64),
141 Color.fromRGB(224,192, 60),
142 Color.fromRGB(224,192, 56),
143 Color.fromRGB(224,188, 56),
144 Color.fromRGB(224,188, 52),
145 Color.fromRGB(220,184, 52),
146 Color.fromRGB(220,184, 48),
147 Color.fromRGB(220,180, 48),
148 Color.fromRGB(220,180, 44),
149 Color.fromRGB(220,176, 40),
150 Color.fromRGB(216,176, 40),
151 Color.fromRGB(216,172, 36),
152 Color.fromRGB(216,172, 36),
153 Color.fromRGB(216,168, 32),
154 Color.fromRGB(212,168, 28),
155 Color.fromRGB(212,164, 28),
156 Color.fromRGB(212,164, 24),
157 Color.fromRGB(212,160, 24),
158 Color.fromRGB(208,160, 20),
159 Color.fromRGB(208,156, 20),
160 Color.fromRGB(208,156, 16),
161 Color.fromRGB(208,152, 12),
162 Color.fromRGB(204,152, 12),
163 Color.fromRGB(204,148, 8),
164 Color.fromRGB(204,148, 8),
165 Color.fromRGB(204,144, 4),
166 Color.fromRGB(200,140, 0),
167 Color.fromRGB(196,136, 0),
168 Color.fromRGB(196,136, 0),
169 Color.fromRGB(196,136, 0),
170 Color.fromRGB(196,136, 0),
171 Color.fromRGB(192,132, 0),
172 Color.fromRGB(192,132, 0),
173 Color.fromRGB(192,132, 0),
174 Color.fromRGB(192,132, 0),
175 });
176 }
177
178 public Palette() {
179 _name = "";
180 _colors = new ArrayList<Color>();
181 }
182
183 public Palette(String name, Color[] colors) {
184 this();
185 _name = name;
186 for (int i = 0; i < colors.length; i++) {
187 addColor(colors[i]);
188 }
189 }
190
191 public Palette(Palette palette) {
192 this();
193 _name = palette.getName();
194 for (int i = 0, size = palette.getSize(); i < size; i++) {
195 addColor(palette.getColor(i));
196 }
197 }
198
199 @Override
200 public boolean equals(Object obj) {
201 if (obj instanceof Palette) {
202 Palette palette = (Palette)obj;
203 return _name.equals(palette._name) && _colors.equals(palette._colors);
204 }
205 return false;
206 }
207
208 @Override
209 public int hashCode() {
210 return _name.hashCode() + 37 * _colors.hashCode();
211 }
212
213 public String getName() {
214 return _name;
215 }
216
217 public void setName(String name) {
218 if (name == null) {
219 throw new NullPointerException();
220 }
221 _name = name;
222 }
223
224 public Color getColor(int index) {
225 return _colors.get(index);
226 }
227
228 public void setColor(int index, Color color) {
229 color.copyTo(getColor(index));
230 firePaletteHasChanged();
231 }
232
233 public void addColor(Color color) {
234 _colors.add(new Color(color));
235 firePaletteHasChanged();
236 }
237
238 public void removeColor(int index) {
239 _colors.remove(index);
240 firePaletteHasChanged();
241 }
242
243 public int getSize() {
244 return _colors.size();
245 }
246
247 public void addPaletteListener(IPaletteListener listener) {
248 if (_paletteListeners == null) {
249 _paletteListeners = new ArrayList<IPaletteListener>();
250 }
251 _paletteListeners.add(listener);
252 }
253
254 public void removePaletteListener(IPaletteListener listener) {
255 if (_paletteListeners != null) {
256 _paletteListeners.remove(listener);
257 }
258 }
259
260 public void firePaletteHasChanged() {
261 if (_paletteListeners != null) {
262 for (int i = 0, size = _paletteListeners.size(); i < size; i++) {
263 IPaletteListener listener = _paletteListeners.get(i);
264 listener.paletteHasChanged(this);
265 }
266 }
267 }
268
269 @Override
270 public String toString() {
271 StringBuffer buffer = new StringBuffer();
272 buffer.append("Palette(name=\"");
273 buffer.append(_name);
274 buffer.append("\"");
275 for (int i = 0, size = _colors.size(); i < size; i++) {
276 buffer.append(" ");
277 buffer.append(_colors.get(i).toString());
278 }
279 buffer.append(")");
280 return buffer.toString();
281 }
282 }