View Javadoc
1   /*
2   
3       dsh-identify  Lightweight components for identifiable beans.
4       Copyright (c) 2003-2019 held jointly by the individual authors.
5   
6       This library is free software; you can redistribute it and/or modify it
7       under the terms of the GNU Lesser General Public License as published
8       by the Free Software Foundation; either version 3 of the License, or (at
9       your option) any later version.
10  
11      This library is distributed in the hope that it will be useful, but WITHOUT
12      ANY WARRANTY; with out even the implied warranty of MERCHANTABILITY or
13      FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
14      License for more details.
15  
16      You should have received a copy of the GNU Lesser General Public License
17      along with this library;  if not, write to the Free Software Foundation,
18      Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307  USA.
19  
20      > http://www.fsf.org/licensing/licenses/lgpl.html
21      > http://www.opensource.org/licenses/lgpl-license.php
22  
23  */
24  package org.dishevelled.identify;
25  
26  import javax.swing.AbstractAction;
27  
28  import org.dishevelled.iconbundle.IconBundle;
29  
30  /**
31   * Abstract identifiable action.
32   *
33   * @author  Michael Heuer
34   */
35  public abstract class IdentifiableAction
36      extends AbstractAction
37      implements Identifiable
38  {
39      /** Icon bundle. */
40      private IconBundle iconBundle;
41  
42  
43      /**
44       * Create a new abstract identifiable action with the specified name
45       * and icon bundle.
46       *
47       * @param name name for this identifiable action
48       * @param iconBundle icon bundle for this identifiable action, must
49       *    not be null
50       */
51      protected IdentifiableAction(final String name, final IconBundle iconBundle)
52      {
53          super(name);
54          putValue(SHORT_DESCRIPTION, name);
55          setIconBundle(iconBundle);
56      }
57  
58  
59      /**
60       * Set the icon bundle for this identifiable action to <code>iconBundle</code>.
61       *
62       * <p>This is a bound property.</p>
63       *
64       * @param iconBundle icon bundle for this identifiable action, must not be null
65       */
66      public final void setIconBundle(final IconBundle iconBundle)
67      {
68          if (iconBundle == null)
69          {
70              throw new IllegalArgumentException("iconBundle must not be null");
71          }
72          IconBundle oldIconBundle = this.iconBundle;
73          this.iconBundle = iconBundle;
74          firePropertyChange("iconBundle", oldIconBundle, this.iconBundle);
75      }
76  
77      @Override
78      public final String getName()
79      {
80          return (String) getValue(NAME);
81      }
82  
83      @Override
84      public final IconBundle getIconBundle()
85      {
86          return iconBundle;
87      }
88  }