/* * Copyright (c) 1996, 1999, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided * by Oracle in the LICENSE file that accompanied this code. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. */ package java.beans; /** * A bean implementor who wishes to provide explicit information about * their bean may provide a BeanInfo class that implements this BeanInfo * interface and provides explicit information about the methods, * properties, events, etc, of their bean. *
* A bean implementor doesn't need to provide a complete set of * explicit information. You can pick and choose which information * you want to provide and the rest will be obtained by automatic * analysis using low-level reflection of the bean classes' methods * and applying standard design patterns. *
* You get the opportunity to provide lots and lots of different * information as part of the various XyZDescriptor classes. But * don't panic, you only really need to provide the minimal core * information required by the various constructors. *
* See also the SimpleBeanInfo class which provides a convenient * "noop" base class for BeanInfo classes, which you can override * for those specific places where you want to return explicit info. *
* To learn about all the behaviour of a bean see the Introspector class.
*/
public interface BeanInfo {
/**
* Gets the beans BeanDescriptor
.
*
* @return A BeanDescriptor providing overall information about
* the bean, such as its displayName, its customizer, etc. May
* return null if the information should be obtained by automatic
* analysis.
*/
BeanDescriptor getBeanDescriptor();
/**
* Gets the beans EventSetDescriptor
s.
*
* @return An array of EventSetDescriptors describing the kinds of
* events fired by this bean. May return null if the information
* should be obtained by automatic analysis.
*/
EventSetDescriptor[] getEventSetDescriptors();
/**
* A bean may have a "default" event that is the event that will
* mostly commonly be used by humans when using the bean.
* @return Index of default event in the EventSetDescriptor array
* returned by getEventSetDescriptors.
*
Returns -1 if there is no default event. */ int getDefaultEventIndex(); /** * Returns descriptors for all properties of the bean. * May return {@code null} if the information * should be obtained by automatic analysis. *
* If a property is indexed, then its entry in the result array * will belong to the {@link IndexedPropertyDescriptor} subclass * of the {@link PropertyDescriptor} class. * A client of the {@code getPropertyDescriptors} method * can use "{@code instanceof}" to check * whether a given {@code PropertyDescriptor} * is an {@code IndexedPropertyDescriptor}. * * @return an array of {@code PropertyDescriptor}s * describing all properties supported by the bean * or {@code null} */ PropertyDescriptor[] getPropertyDescriptors(); /** * A bean may have a "default" property that is the property that will * mostly commonly be initially chosen for update by human's who are * customizing the bean. * @return Index of default property in the PropertyDescriptor array * returned by getPropertyDescriptors. *
Returns -1 if there is no default property.
*/
int getDefaultPropertyIndex();
/**
* Gets the beans MethodDescriptor
s.
*
* @return An array of MethodDescriptors describing the externally
* visible methods supported by this bean. May return null if
* the information should be obtained by automatic analysis.
*/
MethodDescriptor[] getMethodDescriptors();
/**
* This method allows a BeanInfo object to return an arbitrary collection
* of other BeanInfo objects that provide additional information on the
* current bean.
*
* If there are conflicts or overlaps between the information provided * by different BeanInfo objects, then the current BeanInfo takes precedence * over the getAdditionalBeanInfo objects, and later elements in the array * take precedence over earlier ones. * * @return an array of BeanInfo objects. May return null. */ BeanInfo[] getAdditionalBeanInfo(); /** * This method returns an image object that can be used to * represent the bean in toolboxes, toolbars, etc. Icon images * will typically be GIFs, but may in future include other formats. *
* Beans aren't required to provide icons and may return null from * this method. *
* There are four possible flavors of icons (16x16 color, * 32x32 color, 16x16 mono, 32x32 mono). If a bean choses to only * support a single icon we recommend supporting 16x16 color. *
* We recommend that icons have a "transparent" background * so they can be rendered onto an existing background. * * @param iconKind The kind of icon requested. This should be * one of the constant values ICON_COLOR_16x16, ICON_COLOR_32x32, * ICON_MONO_16x16, or ICON_MONO_32x32. * @return An image object representing the requested icon. May * return null if no suitable icon is available. */ java.awt.Image getIcon(int iconKind); /** * Constant to indicate a 16 x 16 color icon. */ final static int ICON_COLOR_16x16 = 1; /** * Constant to indicate a 32 x 32 color icon. */ final static int ICON_COLOR_32x32 = 2; /** * Constant to indicate a 16 x 16 monochrome icon. */ final static int ICON_MONO_16x16 = 3; /** * Constant to indicate a 32 x 32 monochrome icon. */ final static int ICON_MONO_32x32 = 4; }