1
2 /**
3 * Copyright 2004 Juan Heyns. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without modification, are
6 * permitted provided that the following conditions are met:
7 *
8 * 1. Redistributions of source code must retain the above copyright notice, this list of
9 * conditions and the following disclaimer.
10 *
11 * 2. Redistributions in binary form must reproduce the above copyright notice, this list
12 * of conditions and the following disclaimer in the documentation and/or other materials
13 * provided with the distribution.
14 *
15 * THIS SOFTWARE IS PROVIDED BY JUAN HEYNS ``AS IS'' AND ANY EXPRESS OR IMPLIED
16 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
17 * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JUAN HEYNS OR
18 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
19 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
20 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
21 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
22 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
23 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24 *
25 * The views and conclusions contained in the software and documentation are those of the
26 * authors and should not be interpreted as representing official policies, either expressed
27 * or implied, of Juan Heyns.
28 */
29 package fr.ifremer.quadrige3.ui.swing.component.date;
30
31 /*
32 * #%L
33 * Reef DB :: UI
34 * $Id:$
35 * $HeadURL:$
36 * %%
37 * Copyright (C) 2014 - 2015 Ifremer
38 * %%
39 * This program is free software: you can redistribute it and/or modify
40 * it under the terms of the GNU Affero General Public License as published by
41 * the Free Software Foundation, either version 3 of the License, or
42 * (at your option) any later version.
43 *
44 * This program is distributed in the hope that it will be useful,
45 * but WITHOUT ANY WARRANTY; without even the implied warranty of
46 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
47 * GNU General Public License for more details.
48 *
49 * You should have received a copy of the GNU Affero General Public License
50 * along with this program. If not, see <http://www.gnu.org/licenses/>.
51 * #L%
52 */
53
54 import fr.ifremer.quadrige3.ui.swing.component.date.graphics.JNextIcon;
55 import fr.ifremer.quadrige3.ui.swing.component.date.graphics.JPreviousIcon;
56
57 import javax.imageio.ImageIO;
58 import javax.swing.*;
59 import java.awt.image.BufferedImage;
60 import java.io.IOException;
61 import java.io.InputStream;
62 public final class ComponentIconDefaults {
63
64 private static ComponentIconDefaults instance;
65
66 /**
67 * <p>Getter for the field <code>instance</code>.</p>
68 *
69 * @return a {@link ComponentIconDefaults} object.
70 */
71 public static ComponentIconDefaults getInstance() {
72 if (instance == null) {
73 instance = new ComponentIconDefaults();
74 }
75 return instance;
76 }
77
78 public enum Key {
79 // TODO
80 }
81
82 private Icon clearIcon;
83 private Icon nextMonthIconEnabled;
84 private Icon nextYearIconEnabled;
85 private Icon previousMonthIconEnabled;
86 private Icon previousYearIconEnabled;
87 private Icon nextMonthIconDisabled;
88 private Icon nextYearIconDisabled;
89 private Icon previousMonthIconDisabled;
90 private Icon previousYearIconDisabled;
91 private Icon popupButtonIcon;
92
93 private ComponentIconDefaults() {
94 // TODO consider making all the icons vector images which will scale
95 try {
96 clearIcon = loadIcon("/org/jdatepicker/icons/clear.png");
97 popupButtonIcon = loadIcon("/org/jdatepicker/icons/arrow.png");
98 nextMonthIconEnabled = new JNextIcon(4, 7, false, true);
99 nextYearIconEnabled = new JNextIcon(8, 7, true, true);
100 previousMonthIconEnabled = new JPreviousIcon(4, 7, false, true);
101 previousYearIconEnabled = new JPreviousIcon(8, 7, true, true);
102 nextMonthIconDisabled = new JNextIcon(4, 7, false, false);
103 nextYearIconDisabled = new JNextIcon(8, 7, true, false);
104 previousMonthIconDisabled = new JPreviousIcon(4, 7, false, false);
105 previousYearIconDisabled = new JPreviousIcon(8, 7, true, false);
106 } catch (IOException e) {
107 e.printStackTrace();
108 }
109 }
110
111 private static Icon loadIcon(String path) throws IOException {
112 try (InputStream stream = ComponentIconDefaults.class.getResourceAsStream(path)) {
113 BufferedImage image = ImageIO.read(stream);
114 return new ImageIcon(image);
115 }
116 }
117
118 /**
119 * <p>Getter for the field <code>clearIcon</code>.</p>
120 *
121 * @return a {@link javax.swing.Icon} object.
122 */
123 public Icon getClearIcon() {
124 return clearIcon;
125 }
126
127 /**
128 * <p>Setter for the field <code>clearIcon</code>.</p>
129 *
130 * @param clearIcon a {@link javax.swing.Icon} object.
131 */
132 public void setClearIcon(Icon clearIcon) {
133 this.clearIcon = clearIcon;
134 }
135
136 /**
137 * <p>Getter for the field <code>nextMonthIconEnabled</code>.</p>
138 *
139 * @return a {@link javax.swing.Icon} object.
140 */
141 public Icon getNextMonthIconEnabled() {
142 return nextMonthIconEnabled;
143 }
144
145 /**
146 * <p>Setter for the field <code>nextMonthIconEnabled</code>.</p>
147 *
148 * @param nextMonthIconEnabled a {@link javax.swing.Icon} object.
149 */
150 public void setNextMonthIconEnabled(Icon nextMonthIconEnabled) {
151 this.nextMonthIconEnabled = nextMonthIconEnabled;
152 }
153
154 /**
155 * <p>Getter for the field <code>nextMonthIconDisabled</code>.</p>
156 *
157 * @return a {@link javax.swing.Icon} object.
158 */
159 public Icon getNextMonthIconDisabled() {
160 return nextMonthIconDisabled;
161 }
162
163 /**
164 * <p>Setter for the field <code>nextMonthIconDisabled</code>.</p>
165 *
166 * @param nextMonthIconDisabled a {@link javax.swing.Icon} object.
167 */
168 public void setNextMonthIconDisabled(Icon nextMonthIconDisabled) {
169 this.nextMonthIconDisabled = nextMonthIconDisabled;
170 }
171
172 /**
173 * <p>Getter for the field <code>nextYearIconEnabled</code>.</p>
174 *
175 * @return a {@link javax.swing.Icon} object.
176 */
177 public Icon getNextYearIconEnabled() {
178 return nextYearIconEnabled;
179 }
180
181 /**
182 * <p>Setter for the field <code>nextYearIconEnabled</code>.</p>
183 *
184 * @param nextYearIconEnabled a {@link javax.swing.Icon} object.
185 */
186 public void setNextYearIconEnabled(Icon nextYearIconEnabled) {
187 this.nextYearIconEnabled = nextYearIconEnabled;
188 }
189
190 /**
191 * <p>Getter for the field <code>nextYearIconDisabled</code>.</p>
192 *
193 * @return a {@link javax.swing.Icon} object.
194 */
195 public Icon getNextYearIconDisabled() {
196 return nextYearIconDisabled;
197 }
198
199 /**
200 * <p>Setter for the field <code>nextYearIconDisabled</code>.</p>
201 *
202 * @param nextYearIconDisabled a {@link javax.swing.Icon} object.
203 */
204 public void setNextYearIconDisabled(Icon nextYearIconDisabled) {
205 this.nextYearIconDisabled = nextYearIconDisabled;
206 }
207
208 /**
209 * <p>Getter for the field <code>previousMonthIconEnabled</code>.</p>
210 *
211 * @return a {@link javax.swing.Icon} object.
212 */
213 public Icon getPreviousMonthIconEnabled() {
214 return previousMonthIconEnabled;
215 }
216
217 /**
218 * <p>Setter for the field <code>previousMonthIconEnabled</code>.</p>
219 *
220 * @param previousMonthIconEnabled a {@link javax.swing.Icon} object.
221 */
222 public void setPreviousMonthIconEnabled(Icon previousMonthIconEnabled) {
223 this.previousMonthIconEnabled = previousMonthIconEnabled;
224 }
225
226 /**
227 * <p>Getter for the field <code>previousMonthIconDisabled</code>.</p>
228 *
229 * @return a {@link javax.swing.Icon} object.
230 */
231 public Icon getPreviousMonthIconDisabled() {
232 return previousMonthIconDisabled;
233 }
234
235 /**
236 * <p>Setter for the field <code>previousMonthIconDisabled</code>.</p>
237 *
238 * @param previousMonthIconDisabled a {@link javax.swing.Icon} object.
239 */
240 public void setPreviousMonthIconDisabled(Icon previousMonthIconDisabled) {
241 this.previousMonthIconDisabled = previousMonthIconDisabled;
242 }
243
244 /**
245 * <p>Getter for the field <code>previousYearIconEnabled</code>.</p>
246 *
247 * @return a {@link javax.swing.Icon} object.
248 */
249 public Icon getPreviousYearIconEnabled() {
250 return previousYearIconEnabled;
251 }
252
253 /**
254 * <p>Setter for the field <code>previousYearIconEnabled</code>.</p>
255 *
256 * @param previousYearIconEnabled a {@link javax.swing.Icon} object.
257 */
258 public void setPreviousYearIconEnabled(Icon previousYearIconEnabled) {
259 this.previousYearIconEnabled = previousYearIconEnabled;
260 }
261
262 /**
263 * <p>Getter for the field <code>previousYearIconDisabled</code>.</p>
264 *
265 * @return a {@link javax.swing.Icon} object.
266 */
267 public Icon getPreviousYearIconDisabled() {
268 return previousYearIconDisabled;
269 }
270
271 /**
272 * <p>Setter for the field <code>previousYearIconDisabled</code>.</p>
273 *
274 * @param previousYearIconDisabled a {@link javax.swing.Icon} object.
275 */
276 public void setPreviousYearIconDisabled(Icon previousYearIconDisabled) {
277 this.previousYearIconDisabled = previousYearIconDisabled;
278 }
279
280 /**
281 * <p>Getter for the field <code>popupButtonIcon</code>.</p>
282 *
283 * @return a {@link javax.swing.Icon} object.
284 */
285 public Icon getPopupButtonIcon() {
286 return popupButtonIcon;
287 }
288
289 /**
290 * <p>Setter for the field <code>popupButtonIcon</code>.</p>
291 *
292 * @param popupButtonIcon a {@link javax.swing.Icon} object.
293 */
294 public void setPopupButtonIcon(Icon popupButtonIcon) {
295 this.popupButtonIcon = popupButtonIcon;
296 }
297
298 }