Merge from the pain train
[official-gcc.git] / libjava / javax / accessibility / AccessibleRelation.java
blobd77a90a3d364035def8076bc27bb084e1de972ad
1 /* AccessibleRelation.java -- the relation between accessible objects
2 Copyright (C) 2002 Free Software Foundation
4 This file is part of GNU Classpath.
6 GNU Classpath is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2, or (at your option)
9 any later version.
11 GNU Classpath is distributed in the hope that it will be useful, but
12 WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with GNU Classpath; see the file COPYING. If not, write to the
18 Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
19 02111-1307 USA.
21 Linking this library statically or dynamically with other modules is
22 making a combined work based on this library. Thus, the terms and
23 conditions of the GNU General Public License cover the whole
24 combination.
26 As a special exception, the copyright holders of this library give you
27 permission to link this library with independent modules to produce an
28 executable, regardless of the license terms of these independent
29 modules, and to copy and distribute the resulting executable under
30 terms of your choice, provided that you also meet, for each linked
31 independent module, the terms and conditions of the license of that
32 module. An independent module is a module which is not derived from
33 or based on this library. If you modify this library, you may extend
34 this exception to your version of the library, but you are not
35 obligated to do so. If you do not wish to do so, delete this
36 exception statement from your version. */
38 package javax.accessibility;
40 /**
41 * The relation between one accessible object and one or more other objects.
42 * For example, a button may control an action. An AccessibleRelationSet
43 * summarizes all relations of the object. This strongly typed "enumeration"
44 * supports localized strings. If the constants of this class are not
45 * adequate, new ones may be added in a similar matter.
47 * @author Eric Blake (ebb9@email.byu.edu)
48 * @since 1.2
49 * @status updated to 1.4
51 public class AccessibleRelation extends AccessibleBundle
53 /**
54 * Indicates the object labels other objects.
56 * @see #getTarget()
57 * @see #CONTROLLER_FOR
58 * @see #CONTROLLED_BY
59 * @see #LABELED_BY
60 * @see #MEMBER_OF
62 public static final String LABEL_FOR = "labelFor";
64 /**
65 * Indicates the object is labeled by other objects.
67 * @see #getTarget()
68 * @see #CONTROLLER_FOR
69 * @see #CONTROLLED_BY
70 * @see #LABEL_FOR
71 * @see #MEMBER_OF
73 public static final String LABELED_BY = "labeledBy";
75 /**
76 * Indicates an object is a member of a group of target objects.
78 * @see #getTarget()
79 * @see #CONTROLLER_FOR
80 * @see #CONTROLLED_BY
81 * @see #LABEL_FOR
82 * @see #LABELED_BY
84 public static final String MEMBER_OF = "memberOf";
86 /**
87 * Indicates an object is a controller for other objects.
89 * @see #getTarget()
90 * @see #CONTROLLED_BY
91 * @see #LABEL_FOR
92 * @see #LABELED_BY
93 * @see #MEMBER_OF
95 public static final String CONTROLLER_FOR = "controllerFor";
97 /**
98 * Indicates an object is controlled by other objects.
100 * @see #getTarget()
101 * @see #CONTROLLER_FOR
102 * @see #LABEL_FOR
103 * @see #LABELED_BY
104 * @see #MEMBER_OF
106 public static final String CONTROLLED_BY = "controlledBy";
108 /** Indicates that the label target group has changed. */
109 public static final String LABEL_FOR_PROPERTY = "labelForProperty";
111 /** Indicates that the labelling objects have changed. */
112 public static final String LABELED_BY_PROPERTY = "labeledByProperty";
114 /** Indicates that group membership has changed. */
115 public static final String MEMBER_OF_PROPERTY = "memberOfProperty";
117 /** Indicates that the controller target group has changed. */
118 public static final String CONTROLLER_FOR_PROPERTY = "controllerForProperty";
120 /** Indicates that the controlling objects have changed. */
121 public static final String CONTROLLED_BY_PROPERTY = "controlledByProperty";
123 /** An empty set of targets. */
124 private static final Object[] EMPTY_TARGETS = { };
127 * The related objects.
129 * @see #getTarget()
130 * @see #setTarget(Object)
131 * @see #setTarget(Object[])
133 Object[] targets;
136 * Create a new relation with a locale independent key, and no related
137 * objects.
139 * @param key the name of the role
140 * @see #toDisplayString(String, Locale)
142 public AccessibleRelation(String key)
144 this.key = key;
145 targets = EMPTY_TARGETS;
149 * Create a new relation with a locale independent key, and a single related
150 * object.
152 * @param key the name of the role
153 * @param target the related object
154 * @see #toDisplayString(String, Locale)
156 public AccessibleRelation(String key, Object target)
158 this.key = key;
159 targets = new Object[] { target };
163 * Create a new relation with a locale independent key, and the given
164 * related objects.
166 * @param key the name of the role
167 * @param targets the related objects
168 * @see #toDisplayString(String, Locale)
170 public AccessibleRelation(String key, Object[] targets)
172 this.key = key;
173 this.targets = targets == null ? EMPTY_TARGETS : targets;
177 * Return the key for this relation.
179 * @return the key
180 * @see #CONTROLLER_FOR
181 * @see #CONTROLLED_BY
182 * @see #LABEL_FOR
183 * @see #LABELED_BY
184 * @see #MEMBER_OF
186 public String getKey()
188 return key;
192 * Return the targets of this relation.
194 * @return the targets, may be empty, but never null
196 public Object[] getTarget()
198 return targets;
202 * Set the target to a single object.
204 * @param target the new target
206 public void setTarget(Object target)
208 targets = new Object[] { target };
212 * Set the target to an array of objects.
214 * @param targets the new targets
216 public void setTarget(Object[] targets)
218 this.targets = targets == null ? EMPTY_TARGETS : targets;
220 } // class AccessibleRelation