001: /*
002: * Created on 29/02/2004
003: *
004: * ============================================================================
005: * GNU Lesser General Public License
006: * ============================================================================
007: *
008: * Swing Components - visit http://sf.net/projects/gfd
009: *
010: * Copyright (C) 2004 Igor Regis da Silva Simões
011: *
012: * This library is free software; you can redistribute it and/or
013: * modify it under the terms of the GNU Lesser General Public
014: * License as published by the Free Software Foundation; either
015: * version 2.1 of the License, or (at your option) any later version.
016: *
017: * This library is distributed in the hope that it will be useful,
018: * but WITHOUT ANY WARRANTY; without even the implied warranty of
019: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
020: * Lesser General Public License for more details.
021: *
022: * You should have received a copy of the GNU Lesser General Public
023: * License along with this library; if not, write to the Free Software
024: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
025: */
026:
027: package br.com.gfpshare.beans.aplicativos;
028:
029: import java.awt.Image;
030: import java.lang.ref.WeakReference;
031: import java.util.Hashtable;
032:
033: import javax.swing.ImageIcon;
034:
035: /**
036: * @author Igor Regis da Silva Simões
037: */
038: public class IconeFactory {
039: private static final IconeFactory iconeFactory = new IconeFactory();
040:
041: /**
042: * Comment for <code>APLICACAO_PEQUENA</code>
043: */
044: public static final String APLICACAO_PEQUENA = "Aplicacao Pequena";
045:
046: /**
047: * Comment for <code>APLICACAO_MEDIA</code>
048: */
049: public static final String APLICACAO_MEDIA = "Aplicacao Media";
050:
051: /**
052: * Comment for <code>CONTA_CORRENTE_PEQUENA</code>
053: */
054: public static final String CONTA_CORRENTE_PEQUENA = "Conta Corrente Pequena";
055:
056: /**
057: * Comment for <code>CONTA_CORRENTE_MEDIA</code>
058: */
059: public static final String CONTA_CORRENTE_MEDIA = "Conta Corrente Media";
060:
061: /**
062: * Comment for <code>BANCO_PEQUENA</code>
063: */
064: public static final String BANCO_PEQUENA = "Banco Pequena";
065:
066: /**
067: * Comment for <code>BANCO_MEDIA</code>
068: */
069: public static final String BANCO_MEDIA = "Banco Media";
070:
071: /**
072: * Comment for <code>CONFIGURA_APLICACAO_PEQUENA</code>
073: */
074: public static final String CONFIGURA_APLICACAO_PEQUENA = "Configura Aplicacao Pequena";
075:
076: /**
077: * Comment for <code>LANCAMENTOS_PEQUENA</code>
078: */
079: public static final String LANCAMENTOS_PEQUENA = "Lancamentos Pequena";
080:
081: /**
082: * Comment for <code>LANCAMENTOS_MEDIA</code>
083: */
084: public static final String LANCAMENTOS_MEDIA = "Lancamentos Media";
085:
086: /**
087: * Comment for <code>TIPO_LANCAMENTO_PEQUENA</code>
088: */
089: public static final String TIPO_LANCAMENTO_PEQUENA = "Tipo Lancamento Pequena";
090:
091: /**
092: * Comment for <code>TIPO_LANCAMENTO_MEDIA</code>
093: */
094: public static final String TIPO_LANCAMENTO_MEDIA = "Tipo Lancamento Media";
095:
096: /**
097: * Comment for <code>SALVAR_PEQUENA</code>
098: */
099: public static final String SALVAR_PEQUENA = "Salvar Pequena";
100:
101: /**
102: * Comment for <code>LIMPAR_PEQUENA</code>
103: */
104: public static final String LIMPAR_PEQUENA = "Limpar Pequena";
105:
106: /**
107: * Comment for <code>EXCLUIR_PEQUENA</code>
108: */
109: public static final String EXCLUIR_PEQUENA = "Excluir Pequena";
110:
111: /**
112: * Comment for <code>PESQUISAR_PEQUENA</code>
113: */
114: public static final String PESQUISAR_PEQUENA = "Pesquisar Pequena";
115:
116: /**
117: * Comment for <code>NOVO_PEQUENA</code>
118: */
119: public static final String NOVO_PEQUENA = "Novo Pequena";
120:
121: /**
122: * Comment for <code>NOVO_MEDIA</code>
123: */
124: public static final String NOVO_MEDIA = "Novo Media";
125:
126: /**
127: * Comment for <code>ABRIR_PEQUENA</code>
128: */
129: public static final String ABRIR_PEQUENA = "Abrir Pequena";
130:
131: /**
132: * Comment for <code>ABRIR_MEDIA</code>
133: */
134: public static final String ABRIR_MEDIA = "Abrir Media";
135:
136: /**
137: * Comment for <code>ATUALIZAR_PEQUENA</code>
138: */
139: public static final String ATUALIZAR_PEQUENA = "Atualizar Pequena";
140:
141: /**
142: * Comment for <code>ATUALIZAR_MEDIA</code>
143: */
144: public static final String ATUALIZAR_MEDIA = "Atualizar Media";
145:
146: /**
147: * Comment for <code>FECHAR_PEQUENA</code>
148: */
149: public static final String FECHAR_PEQUENA = "Fechar Pequena";
150:
151: /**
152: * Comment for <code>FECHAR_MEDIA</code>
153: */
154: public static final String FECHAR_MEDIA = "Fechar Media";
155:
156: /**
157: * Comment for <code>RECORTAR_PEQUENA</code>
158: */
159: public static final String RECORTAR_PEQUENA = "Recortar Pequena";
160:
161: /**
162: * Comment for <code>RECORTAR_MEDIA</code>
163: */
164: public static final String RECORTAR_MEDIA = "Recortar Media";
165:
166: /**
167: * Comment for <code>COPIAR_PEQUENA</code>
168: */
169: public static final String COPIAR_PEQUENA = "Copiar Pequena";
170:
171: /**
172: * Comment for <code>COPIAR_MEDIA</code>
173: */
174: public static final String COPIAR_MEDIA = "Copiar Media";
175:
176: /**
177: * Comment for <code>COLAR_PEQUENA</code>
178: */
179: public static final String COLAR_PEQUENA = "Colar Pequena";
180:
181: /**
182: * Comment for <code>COLAR_MEDIA</code>
183: */
184: public static final String COLAR_MEDIA = "Colar Media";
185:
186: /**
187: * Comment for <code>SAIR_PEQUENA</code>
188: */
189: public static final String SAIR_PEQUENA = "Sair Pequena";
190:
191: /**
192: * Comment for <code>SAIR_MEDIA</code>
193: */
194: public static final String SAIR_MEDIA = "Sair Media";
195:
196: /**
197: * Comment for <code>GFD_PEQUENA</code>
198: */
199: public static final String GFD_PEQUENA = "GFD Pequena";
200:
201: /**
202: * Comment for <code>CONFIGURAR_GFD</code>
203: */
204: public static final String CONFIGURAR_GFD = "Configurar GFD";
205:
206: /**
207: * Comment for <code>BENS_PEQUENA</code>
208: */
209: public static final String BENS_MEDIA = "Bens Media";
210:
211: /**
212: * Comment for <code>BENS_PEQUENA</code>
213: */
214: public static final String BENS_PEQUENA = "Bens Pequena";
215:
216: /**
217: * Comment for <code>ENTIDADE_MEDIA</code>
218: */
219: public static final String ENTIDADE_MEDIA = "Entidade Media";
220:
221: /**
222: * Comment for <code>ENTIDADE_PEQUENA</code>
223: */
224: public static final String ENTIDADE_PEQUENA = "Entidade Pequena";
225:
226: /**
227: * Comment for <code>FILTARAR_PEQUENA</code>
228: */
229: public static final String FILTARAR_PEQUENA = "Filtrar Pequena";
230:
231: /**
232: * Comment for <code>FILTARAR_MEDIA</code>
233: */
234: public static final String FILTARAR_MEDIA = "Filtrar Media";
235:
236: /**
237: * Comment for <code>SALVAR_PEQUENA</code>
238: */
239: public static final String SALVAR_DB_PEQUENA = "Salvar DB Pequena";
240:
241: /**
242: * Comment for <code>SALVAR_PEQUENA</code>
243: */
244: public static final String SALVAR_DB_MEDIA = "Salvar DB Media";
245:
246: private final Hashtable<String, Object> icones = new Hashtable<String, Object>(
247: 17);
248:
249: /** Cria uma nova instância de IconeFactory */
250: private IconeFactory() {
251: icones.put(IconeFactory.ABRIR_PEQUENA,
252: getImagemPequena("/icones/32x32/fileopen.png"));
253:
254: icones.put(IconeFactory.ABRIR_MEDIA,
255: getImagemMedia("/icones/32x32/fileopen.png"));
256:
257: icones.put(IconeFactory.APLICACAO_PEQUENA,
258: getImagemPequena("/icones/32x32/aplicacao.gif"));
259:
260: icones.put(IconeFactory.APLICACAO_MEDIA,
261: getImagemMedia("/icones/32x32/aplicacao.gif"));
262:
263: icones.put(IconeFactory.BANCO_PEQUENA,
264: getImagemPequena("/icones/32x32/banco.gif"));
265:
266: icones.put(IconeFactory.BANCO_MEDIA,
267: getImagemMedia("/icones/32x32/banco.gif"));
268:
269: icones.put(IconeFactory.COLAR_PEQUENA,
270: getImagemPequena("/icones/32x32/editpaste.png"));
271:
272: icones.put(IconeFactory.COLAR_MEDIA,
273: getImagemMedia("/icones/32x32/editpaste.png"));
274:
275: icones.put(IconeFactory.CONFIGURA_APLICACAO_PEQUENA,
276: getImagemPequena("/icones/32x32/configure.png"));
277:
278: icones.put(IconeFactory.CONFIGURAR_GFD,
279: getImagemPequena("/icones/48x48/configure.png"));
280:
281: icones.put(IconeFactory.CONTA_CORRENTE_PEQUENA,
282: getImagemPequena("/icones/32x32/contaCorrente.gif"));
283:
284: icones.put(IconeFactory.CONTA_CORRENTE_MEDIA,
285: getImagemMedia("/icones/32x32/contaCorrente.gif"));
286:
287: icones.put(IconeFactory.COPIAR_PEQUENA,
288: getImagemPequena("/icones/32x32/editcopy.png"));
289:
290: icones.put(IconeFactory.COPIAR_MEDIA,
291: getImagemMedia("/icones/32x32/editcopy.png"));
292:
293: icones.put(IconeFactory.EXCLUIR_PEQUENA,
294: getImagemPequena("/icones/32x32/edittrash.png"));
295:
296: icones.put(IconeFactory.FECHAR_PEQUENA,
297: getImagemPequena("/icones/32x32/fileclose.png"));
298:
299: icones.put(IconeFactory.FECHAR_MEDIA,
300: getImagemMedia("/icones/32x32/fileclose.png"));
301:
302: icones.put(IconeFactory.GFD_PEQUENA,
303: getImagemPequena("/icones/48x48/kcalc.png"));
304:
305: icones.put(IconeFactory.LANCAMENTOS_PEQUENA,
306: getImagemPequena("/icones/48x48/kspread.png"));
307:
308: icones.put(IconeFactory.LANCAMENTOS_MEDIA,
309: getImagemMedia("/icones/48x48/kspread.png"));
310:
311: icones.put(IconeFactory.LIMPAR_PEQUENA,
312: getImagemPequena("/icones/22x22/eraser.png"));
313:
314: icones.put(IconeFactory.NOVO_PEQUENA,
315: getImagemPequena("/icones/32x32/filenew.png"));
316:
317: icones.put(IconeFactory.NOVO_MEDIA,
318: getImagemMedia("/icones/32x32/filenew.png"));
319:
320: icones.put(IconeFactory.PESQUISAR_PEQUENA,
321: getImagemPequena("/icones/48x48/kfind.png"));
322:
323: icones.put(IconeFactory.RECORTAR_PEQUENA,
324: getImagemPequena("/icones/32x32/editcut.png"));
325:
326: icones.put(IconeFactory.RECORTAR_MEDIA,
327: getImagemMedia("/icones/32x32/editcut.png"));
328:
329: icones.put(IconeFactory.SAIR_PEQUENA,
330: getImagemPequena("/icones/32x32/exit.png"));
331:
332: icones.put(IconeFactory.SAIR_MEDIA,
333: getImagemMedia("/icones/32x32/exit.png"));
334:
335: icones.put(IconeFactory.SALVAR_PEQUENA,
336: getImagemPequena("/icones/16x16/apply.png"));
337:
338: icones.put(IconeFactory.TIPO_LANCAMENTO_PEQUENA,
339: getImagemPequena("/icones/32x32/edit.png"));
340:
341: icones.put(IconeFactory.TIPO_LANCAMENTO_MEDIA,
342: getImagemMedia("/icones/32x32/edit.png"));
343:
344: icones.put(IconeFactory.BENS_MEDIA,
345: getImagemMedia("/icones/48x48/bens.png"));
346:
347: icones.put(IconeFactory.BENS_PEQUENA,
348: getImagemPequena("/icones/48x48/bens.png"));
349:
350: icones.put(IconeFactory.ENTIDADE_PEQUENA,
351: getImagemPequena("/icones/48x48/entidades.png"));
352:
353: icones.put(IconeFactory.ENTIDADE_MEDIA,
354: getImagemMedia("/icones/48x48/entidades.png"));
355:
356: icones.put(IconeFactory.ATUALIZAR_PEQUENA,
357: getImagemPequena("/icones/32x32/reload.png"));
358:
359: icones.put(IconeFactory.ATUALIZAR_MEDIA,
360: getImagemMedia("/icones/32x32/reload.png"));
361:
362: icones.put(IconeFactory.FILTARAR_PEQUENA,
363: getImagemPequena("/icones/32x32/filter.png"));
364:
365: icones.put(IconeFactory.FILTARAR_MEDIA,
366: getImagemMedia("/icones/32x32/filter.png"));
367:
368: icones.put(IconeFactory.SALVAR_DB_PEQUENA,
369: getImagemPequena("/icones/32x32/filesave.png"));
370:
371: icones.put(IconeFactory.SALVAR_DB_MEDIA,
372: getImagemMedia("/icones/32x32/filesave.png"));
373: }
374:
375: /**
376: * @param url
377: * @return
378: *
379: */
380: private ImageIcon getImagemPequena(String url) {
381: return new ImageIcon(
382: (new ImageIcon(getClass().getResource(url))).getImage()
383: .getScaledInstance(18, 18, Image.SCALE_SMOOTH));
384: }
385:
386: /**
387: * @param url
388: * @return
389: *
390: */
391: private ImageIcon getImagemMedia(String url) {
392: return new ImageIcon(
393: (new ImageIcon(getClass().getResource(url))).getImage()
394: .getScaledInstance(23, 23, Image.SCALE_SMOOTH));
395: }
396:
397: /**
398: * Retorna uma imagem no tamanho desejado
399: * A imagem é guardada em cache volátil (weakreference)
400: * @param url
401: * @param x O temanho da imagem em pixels (os quatro lados serão iguais)
402: * @return
403: */
404: public ImageIcon getScaledImage(String url, int x) {
405: if (icones.get(url + x) != null
406: && icones.get(url + x) instanceof WeakReference
407: && (((WeakReference) icones.get(url + x)).get() != null)) {
408: return (ImageIcon) ((WeakReference) icones.get(url + x))
409: .get();
410: }
411: ImageIcon iconeGerado = null;
412: if (icones.get(url) != null)
413: iconeGerado = new ImageIcon(((ImageIcon) icones.get(url))
414: .getImage().getScaledInstance(x, x,
415: Image.SCALE_SMOOTH));
416: else
417: iconeGerado = new ImageIcon((new ImageIcon(getClass()
418: .getResource(url))).getImage().getScaledInstance(x,
419: x, Image.SCALE_SMOOTH));
420: icones.put(url + x, new WeakReference<ImageIcon>(iconeGerado));
421: return iconeGerado;
422: }
423:
424: /**
425: * @return Instancia unica de IconeFactory
426: */
427: public static IconeFactory getIconeFactory() {
428: return iconeFactory;
429: }
430:
431: /**
432: * Retorna um icone conforme os parametro passados.
433: * O uso deste método permite a realização dos icones como se fossem
434: * singleton, ou seja só haverá um icone de cada tipo caregado na memória
435: * evitando duplicação e desperdício de memória.
436: * @param icone Nome/endereço do Icone no class path<br>
437: * Pode ser composto da seguinte forma:<br>
438: * Uma String indicando um icone previamente cadastrado no GFP<br>
439: * Ex.: "Salvar DB Pequena"<br>
440: * Uma String com o endereço do icone em forma de URL<br>
441: * Ex.: /icone/32x32/icone.png<br>
442: * Uma String com o tamanho do icone solicitado e sua URL<br>
443: * Ex.: tamanho=pequena;/icone/32x32/icone.png<br>
444: * retorna um icone com 18x18 pixels<br>
445: * ou<br>
446: * tamanho=meida;/icone/32x32/icone.png<br>
447: * retorna um icone com 23x23 pixels
448: * Este ultimo é usado com a finalidade de padronizar os tamanho dos
449: * icones dentro do GFP.
450: * @return Imagen referente ao icone solicitado
451: */
452: public ImageIcon getImageIcon(String icone) {
453: if (icones.get(icone) != null) {
454: if (icones.get(icone) instanceof ImageIcon)
455: return (ImageIcon) icones.get(icone);
456: else if (((WeakReference) icones.get(icone)).get() == null) {
457: //TODO Remover
458: System.out.println(icone + " esta null");
459: icones.remove(icone);
460: return getImageIcon(icone);
461: } else {
462: return (ImageIcon) ((WeakReference) icones.get(icone))
463: .get();
464: }
465: } else if (icone.startsWith("tamanho")) {
466: if (icone.substring(icone.indexOf('=') + 1,
467: icone.indexOf(';')).equals("media")) {
468: ImageIcon iconeGerado = getImagemMedia(icone
469: .substring(icone.indexOf(';') + 1));
470: icones.put(icone, new WeakReference<ImageIcon>(
471: iconeGerado));
472: return iconeGerado;
473: } else if (icone.substring(icone.indexOf('=') + 1,
474: icone.indexOf(';')).equals("pequena")) {
475: ImageIcon iconeGerado = getImagemPequena(icone
476: .substring(icone.indexOf(';') + 1));
477: icones.put(icone, new WeakReference<ImageIcon>(
478: iconeGerado));
479: return iconeGerado;
480: }
481: }
482: ImageIcon iconeGerado = new ImageIcon(getClass().getResource(
483: icone));
484: icones.put(icone, new WeakReference<ImageIcon>(iconeGerado));
485: return iconeGerado;
486: }
487: }
|