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 java.beans.BeanDescriptor;
27  
28  import org.dishevelled.iconbundle.IconBundle;
29  
30  /**
31   * Abstract BeanDescriptor which provides for discovery of the
32   * name property and icon bundle for a bean through introspection.
33   *
34   * @author  Michael Heuer
35   */
36  public abstract class IdentifiableBeanDescriptor
37      extends BeanDescriptor
38  {
39  
40      /**
41       * Create a new abstract BeanDescriptor for an identifiable
42       * bean with the specified class.
43       *
44       * @param beanClass class of the identifiable bean
45       */
46      protected IdentifiableBeanDescriptor(final Class beanClass)
47      {
48          super(beanClass);
49      }
50  
51      /**
52       * Create a new abstract BeanDescriptor for an identifiable
53       * bean with the specified class and customizer class.
54       *
55       * @param beanClass class of the identifiable bean
56       * @param customizerClass class of the customizer to use for the
57       *    identifiable bean
58       */
59      protected IdentifiableBeanDescriptor(final Class beanClass,
60                                           final Class customizerClass)
61      {
62          super(beanClass, customizerClass);
63      }
64  
65  
66      /**
67       * Return the index of the name property descriptor, or
68       * <code>-1</code> if one does not exist.
69       *
70       * @return the index of the name property descriptor, or
71       *    <code>-1</code> if one does not exist
72       */
73      public abstract int getNamePropertyIndex();
74  
75      /**
76       * Return an icon bundle to use for all instances of the
77       * identifiable bean class this descriptor describes.
78       *
79       * @return an icon bundle to use for all instances of the
80       *    identifiable bean class this descriptor describes
81       */
82      public abstract IconBundle getIconBundle();
83  }