View Javadoc

1   /**
2    * Copyright 2008 WebPhotos
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *      http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package net.sf.webphotos.gui.component;
17  
18  import javax.swing.Action;
19  import javax.swing.ImageIcon;
20  import javax.swing.JButton;
21  import net.sf.webphotos.action.AcaoToolbar;
22  
23  /**
24   * <PRE>
25   * Base para geração de Botões iconificados
26   * (um símbolo visual no lugar de uma palavra para identificar o botão)
27   *
28   * Atualmente ele é base para quatro botões da tela principal do WebPhotos abaixo do
29   * espaço usado para por legenda e crédito.
30   * </PRE>
31   */
32  public class BotaoIcone extends JButton {
33  
34      private static final Action acaoToolbar = new AcaoToolbar();
35      private String iconPrefix = "webfotos";
36      /**
37       * Constante que define a largura do Botão-Ícone
38       */
39      public static final int TAMANHOX = 24;
40      /**
41       * Constante que define a altura do Botão-Ícone
42       */
43      public static final int TAMANHOY = 24;
44      /**
45       * Parâmetro que define se o botão ira trabalhar com suas bordas de forma
46       * personalizada.
47       */
48      //protected static boolean botaoPersonalizado = Util.getConfig().getBoolean("BotoesPersonalizados");
49      protected static boolean botaoPersonalizado = false;
50  
51      /**
52       * Construtor Padrão do Botão-Ícone.
53       */
54      public BotaoIcone() {
55  
56          this.setActionCommand(iconPrefix);
57          this.setRolloverEnabled(true);
58          this.addActionListener(acaoToolbar);
59          
60          this.setText("");
61  
62          if (botaoPersonalizado) {
63              this.setContentAreaFilled(false);
64              this.setBorderPainted(false);
65              this.setFocusPainted(false);
66          }
67  
68          this.setBounds(getX(), getY(), TAMANHOX, TAMANHOY);
69          
70          this.setUpIcons(iconPrefix);
71  
72      }
73  
74      /**
75       * Retorna o Objeto do tipo {@link net.sf.webphotos.acao.AcaoToolbar}
76       * responsável pelas ações que todos os botões irão acessar.
77       *
78       * @return Objeto {@link net.sf.webphotos.acao.AcaoToolbar} atualmente em
79       * uso.
80       */
81      public static Action getAcaoToolbar() {
82          return acaoToolbar;
83      }
84  
85      /**
86       * Retorna o Prefixo dos ícones em uso.
87       *
88       * @return String em uso.
89       */
90      public String getIconPrefix() {
91          return iconPrefix;
92      }
93  
94      /**
95       * <PRE>
96       * Prefixo do nome dos 3 Ícones que serão usados nas bordas personalizadas.
97       * Exemplo:
98       *
99       * Com o prefixo icone1, temos:
100      *
101      * * icone1.gif - Padrão. apresentado durante toda a execução.
102      * * icone1over.gif - Apresentado quando o mouse passa sobre o botão.
103      * * icone1press.gif - Apresentado quando o mouse é pressionado.
104      * </PRE>
105      *
106      * @param iconPrefix A string que será usada.
107      */
108     public synchronized void setIconPrefix(String iconPrefix) {
109         this.iconPrefix = iconPrefix;
110         setUpIcons(iconPrefix);
111     }
112 
113     /**
114      * @param iconPrefix Icon Set prefix
115      */
116     private void setUpIcons(String iconPrefix) {
117         this.setIcon(new ImageIcon(getClass().getResource("/icons/" + iconPrefix + ".gif")));
118         this.setActionCommand(iconPrefix);
119         if (botaoPersonalizado) {
120             this.setRolloverIcon(new ImageIcon(getClass().getResource("/icons/" + iconPrefix + "over.gif")));
121             this.setPressedIcon(new ImageIcon(getClass().getResource("/icons/" + iconPrefix + "press.gif")));
122         }
123     }
124 }