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)
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
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
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
;
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>
49 * @status updated to 1.4
51 public class AccessibleRelation
extends AccessibleBundle
54 * Indicates the object labels other objects.
57 * @see #CONTROLLER_FOR
62 public static final String LABEL_FOR
= "labelFor";
65 * Indicates the object is labeled by other objects.
68 * @see #CONTROLLER_FOR
73 public static final String LABELED_BY
= "labeledBy";
76 * Indicates an object is a member of a group of target objects.
79 * @see #CONTROLLER_FOR
84 public static final String MEMBER_OF
= "memberOf";
87 * Indicates an object is a controller for other objects.
95 public static final String CONTROLLER_FOR
= "controllerFor";
98 * Indicates an object is controlled by other objects.
101 * @see #CONTROLLER_FOR
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.
130 * @see #setTarget(Object)
131 * @see #setTarget(Object[])
136 * Create a new relation with a locale independent key, and no related
139 * @param key the name of the role
140 * @see #toDisplayString(String, Locale)
142 public AccessibleRelation(String key
)
145 targets
= EMPTY_TARGETS
;
149 * Create a new relation with a locale independent key, and a single related
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
)
159 targets
= new Object
[] { target
};
163 * Create a new relation with a locale independent key, and the given
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
)
173 this.targets
= targets
== null ? EMPTY_TARGETS
: targets
;
177 * Return the key for this relation.
180 * @see #CONTROLLER_FOR
181 * @see #CONTROLLED_BY
186 public String
getKey()
192 * Return the targets of this relation.
194 * @return the targets, may be empty, but never null
196 public Object
[] getTarget()
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