source: trunk/gcc/libjava/javax/accessibility/AccessibleRelation.java

Last change on this file was 1389, checked in by bird, 21 years ago

Initial revision

  • Property cvs2svn:cvs-rev set to 1.1
  • Property svn:eol-style set to native
  • Property svn:executable set to *
File size: 6.2 KB
Line 
1/* AccessibleRelation.java -- the relation between accessible objects
2 Copyright (C) 2002 Free Software Foundation
3
4This file is part of GNU Classpath.
5
6GNU Classpath is free software; you can redistribute it and/or modify
7it under the terms of the GNU General Public License as published by
8the Free Software Foundation; either version 2, or (at your option)
9any later version.
10
11GNU Classpath is distributed in the hope that it will be useful, but
12WITHOUT ANY WARRANTY; without even the implied warranty of
13MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14General Public License for more details.
15
16You should have received a copy of the GNU General Public License
17along with GNU Classpath; see the file COPYING. If not, write to the
18Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
1902111-1307 USA.
20
21Linking this library statically or dynamically with other modules is
22making a combined work based on this library. Thus, the terms and
23conditions of the GNU General Public License cover the whole
24combination.
25
26As a special exception, the copyright holders of this library give you
27permission to link this library with independent modules to produce an
28executable, regardless of the license terms of these independent
29modules, and to copy and distribute the resulting executable under
30terms of your choice, provided that you also meet, for each linked
31independent module, the terms and conditions of the license of that
32module. An independent module is a module which is not derived from
33or based on this library. If you modify this library, you may extend
34this exception to your version of the library, but you are not
35obligated to do so. If you do not wish to do so, delete this
36exception statement from your version. */
37
38package javax.accessibility;
39
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.
46 *
47 * @author Eric Blake <ebb9@email.byu.edu>
48 * @since 1.2
49 * @status updated to 1.4
50 */
51public class AccessibleRelation extends AccessibleBundle
52{
53 /**
54 * Indicates the object labels other objects.
55 *
56 * @see #getTarget()
57 * @see #CONTROLLER_FOR
58 * @see #CONTROLLED_BY
59 * @see #LABELED_BY
60 * @see #MEMBER_OF
61 */
62 public static final String LABEL_FOR = "labelFor";
63
64 /**
65 * Indicates the object is labeled by other objects.
66 *
67 * @see #getTarget()
68 * @see #CONTROLLER_FOR
69 * @see #CONTROLLED_BY
70 * @see #LABEL_FOR
71 * @see #MEMBER_OF
72 */
73 public static final String LABELED_BY = "labeledBy";
74
75 /**
76 * Indicates an object is a member of a group of target objects.
77 *
78 * @see #getTarget()
79 * @see #CONTROLLER_FOR
80 * @see #CONTROLLED_BY
81 * @see #LABEL_FOR
82 * @see #LABELED_BY
83 */
84 public static final String MEMBER_OF = "memberOf";
85
86 /**
87 * Indicates an object is a controller for other objects.
88 *
89 * @see #getTarget()
90 * @see #CONTROLLED_BY
91 * @see #LABEL_FOR
92 * @see #LABELED_BY
93 * @see #MEMBER_OF
94 */
95 public static final String CONTROLLER_FOR = "controllerFor";
96
97 /**
98 * Indicates an object is controlled by other objects.
99 *
100 * @see #getTarget()
101 * @see #CONTROLLER_FOR
102 * @see #LABEL_FOR
103 * @see #LABELED_BY
104 * @see #MEMBER_OF
105 */
106 public static final String CONTROLLED_BY = "controlledBy";
107
108 /** Indicates that the label target group has changed. */
109 public static final String LABEL_FOR_PROPERTY = "labelForProperty";
110
111 /** Indicates that the labelling objects have changed. */
112 public static final String LABELED_BY_PROPERTY = "labeledByProperty";
113
114 /** Indicates that group membership has changed. */
115 public static final String MEMBER_OF_PROPERTY = "memberOfProperty";
116
117 /** Indicates that the controller target group has changed. */
118 public static final String CONTROLLER_FOR_PROPERTY = "controllerForProperty";
119
120 /** Indicates that the controlling objects have changed. */
121 public static final String CONTROLLED_BY_PROPERTY = "controlledByProperty";
122
123 /** An empty set of targets. */
124 private static final Object[] EMPTY_TARGETS = { };
125
126 /**
127 * The related objects.
128 *
129 * @see #getTarget()
130 * @see #setTarget(Object)
131 * @see #setTarget(Object[])
132 */
133 Object[] targets;
134
135 /**
136 * Create a new relation with a locale independent key, and no related
137 * objects.
138 *
139 * @param key the name of the role
140 * @see #toDisplayString(String, Locale)
141 */
142 public AccessibleRelation(String key)
143 {
144 this.key = key;
145 targets = EMPTY_TARGETS;
146 }
147
148 /**
149 * Create a new relation with a locale independent key, and a single related
150 * object.
151 *
152 * @param key the name of the role
153 * @param target the related object
154 * @see #toDisplayString(String, Locale)
155 */
156 public AccessibleRelation(String key, Object target)
157 {
158 this.key = key;
159 targets = new Object[] { target };
160 }
161
162 /**
163 * Create a new relation with a locale independent key, and the given
164 * related objects.
165 *
166 * @param key the name of the role
167 * @param targets the related objects
168 * @see #toDisplayString(String, Locale)
169 */
170 public AccessibleRelation(String key, Object[] targets)
171 {
172 this.key = key;
173 this.targets = targets == null ? EMPTY_TARGETS : targets;
174 }
175
176 /**
177 * Return the key for this relation.
178 *
179 * @return the key
180 * @see #CONTROLLER_FOR
181 * @see #CONTROLLED_BY
182 * @see #LABEL_FOR
183 * @see #LABELED_BY
184 * @see #MEMBER_OF
185 */
186 public String getKey()
187 {
188 return key;
189 }
190
191 /**
192 * Return the targets of this relation.
193 *
194 * @return the targets, may be empty, but never null
195 */
196 public Object[] getTarget()
197 {
198 return targets;
199 }
200
201 /**
202 * Set the target to a single object.
203 *
204 * @param target the new target
205 */
206 public void setTarget(Object target)
207 {
208 targets = new Object[] { target };
209 }
210
211 /**
212 * Set the target to an array of objects.
213 *
214 * @param targets the new targets
215 */
216 public void setTarget(Object[] targets)
217 {
218 this.targets = targets == null ? EMPTY_TARGETS : targets;
219 }
220} // class AccessibleRelation
Note: See TracBrowser for help on using the repository browser.