KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > beehive > controls > api > properties > PropertySet


1 package org.apache.beehive.controls.api.properties;
2 /*
3  * Copyright 2004 The Apache Software Foundation.
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  * $Header:$
18  */

19
20 import java.lang.annotation.ElementType JavaDoc;
21 import java.lang.annotation.Inherited JavaDoc;
22 import java.lang.annotation.Retention JavaDoc;
23 import java.lang.annotation.RetentionPolicy JavaDoc;
24 import java.lang.annotation.Target JavaDoc;
25
26 /**
27  * The PropertySet annotation type is used to mark an interface that defines a set of
28  * properties that are associated with a Java Control. By convention, property sets
29  * are declared as an inner annotation types on the Java Control public interface.
30  * <p>
31  * Each member of the annotation type targeted by the <code>PropertySet</code> annotation
32  * will define a new property for the control.
33  * <p>
34  * Here is a simple example:
35  * <code><pre>
36  * public interface MyControl extends org.apache.beehive.controls.api.Control
37  * {
38  * <sp>@PropertySet
39  * public @interface MyProperties
40  * {
41  * public String aStringProperty();
42  * public int anIntProperty();
43  * ...
44        }
45  * }
46  * </pre></code>
47  * <p>
48  * A Java Control can have multiple property sets associated with it.
49  */

50 @Inherited JavaDoc
51 @Retention JavaDoc(RetentionPolicy.RUNTIME)
52 @Target JavaDoc({ElementType.ANNOTATION_TYPE})
53 public @interface PropertySet
54 {
55     /**
56      * The prefix member defines a prefix that will be used in all property setter/getter
57      * methods for properties in the <code>PropertySet</code>. It is necessary to specify
58      * a prefixes when a control interface has multiple property sets that contain
59      * properties with the same name.
60      * <p>
61      * The following code shows the basic conventions for setter/getter methods on a Java
62      * Control Bean:
63      * <code><pre>
64      * public void set&lt;prefix&gt;&lt;propertyName&gt;(&lt;propertyType&gt; value);
65      * public &lt;propertyType&gt; get&lt;prefix&gt;&lt;propertyName&gt;();
66      * </pre>/code>
67      * where <code>prefix</code> is the prefix member value, <code>propertyName</code> is
68      * the name of the declared property member, and <code>propertyType</code> is the
69      * type associated with the declared property member.
70      */

71     String JavaDoc prefix() default "";
72
73     /**
74      * The externalConfig member defines whether properties in the set will be settable
75      * via external configuration.
76      */

77     boolean externalConfig() default true;
78
79     /**
80      * The optional member specifies that this property set may optionally be associated
81      * with the control. Because there is no way to represent an 'unset' property value,
82      * optional properties will not expose a getter method to clients; a control
83      * implementation class can determine whether a property is/is not set, because the
84      * PropertySet query APIs on ControlBeanContext will return null if unset. For
85      * properties that are not optional, a PropertySet instance with all default values
86      * will be returned if unset.
87      *
88      * @see org.apache.beehive.controls.api.context.ControlBeanContext#getControlPropertySet
89      * @see org.apache.beehive.controls.api.context.ControlBeanContext#getMethodPropertySet
90      */

91     boolean optional() default false;
92
93     /**
94      * The hasSetters member defines whether properties in the set will have programmatic
95      * setter methods.
96      */

97     boolean hasSetters() default true;
98 }
99
Popular Tags