1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 package org.openoffice.java.accessibility;
24 
25 import com.sun.star.accessibility.*;
26 import com.sun.star.uno.*;
27 
28 import javax.accessibility.AccessibleState;
29 import javax.accessibility.AccessibleStateSet;
30 
31 
32 /**
33  */
34 public class Label extends Component implements javax.accessibility.Accessible {
Label(XAccessible xAccessible, XAccessibleContext xAccessibleContext)35     protected Label(XAccessible xAccessible, XAccessibleContext xAccessibleContext) {
36         super(xAccessible, xAccessibleContext);
37     }
38 
39     /** Creates the AccessibleContext associated with this object */
createAccessibleContext()40     public javax.accessibility.AccessibleContext createAccessibleContext() {
41         return new AccessibleLabel();
42     }
43 
44     protected class AccessibleLabel extends AccessibleUNOComponent {
45         /**
46         * Though the class is abstract, this should be called by all sub-classes
47         */
AccessibleLabel()48         protected AccessibleLabel() {
49             super();
50         }
51 
52         /*
53         * AccessibleContext
54         */
55 
56         /** Gets the role of this object */
getAccessibleRole()57         public javax.accessibility.AccessibleRole getAccessibleRole() {
58             return javax.accessibility.AccessibleRole.LABEL;
59         }
60 
61         /** Gets the AccessibleText associated with this object presenting text on the display */
getAccessibleText()62         public javax.accessibility.AccessibleText getAccessibleText() {
63 
64             if (disposed)
65                 return null;
66 
67             try {
68                 XAccessibleText unoAccessibleText = (XAccessibleText) UnoRuntime.queryInterface(XAccessibleText.class,
69                         unoAccessibleContext);
70 
71                 if (unoAccessibleText != null) {
72                     return new AccessibleTextImpl(unoAccessibleText);
73                 } else {
74                     return null;
75                 }
76             } catch (com.sun.star.uno.RuntimeException e) {
77                 return null;
78             }
79         }
80 
81         /** Returns the relation set of this object */
getAccessibleRelationSet()82         public javax.accessibility.AccessibleRelationSet getAccessibleRelationSet() {
83             try {
84                 XAccessibleRelationSet unoAccessibleRelationSet = unoAccessibleContext.getAccessibleRelationSet();
85 
86                 if (unoAccessibleRelationSet == null) {
87                     return null;
88                 }
89 
90                 javax.accessibility.AccessibleRelationSet relationSet = new javax.accessibility.AccessibleRelationSet();
91                 int count = unoAccessibleRelationSet.getRelationCount();
92 
93                 for (int i = 0; i < count; i++) {
94                     AccessibleRelation unoAccessibleRelation = unoAccessibleRelationSet.getRelation(i);
95 
96                     switch (unoAccessibleRelation.RelationType) {
97                         case AccessibleRelationType.LABEL_FOR:
98                             relationSet.add(new javax.accessibility.AccessibleRelation(
99                                     javax.accessibility.AccessibleRelation.LABEL_FOR,
100                                     getAccessibleComponents(
101                                         unoAccessibleRelation.TargetSet)));
102 
103                             break;
104 
105                         case AccessibleRelationType.MEMBER_OF:
106                             relationSet.add(new javax.accessibility.AccessibleRelation(
107                                     javax.accessibility.AccessibleRelation.MEMBER_OF,
108                                     getAccessibleComponents(
109                                         unoAccessibleRelation.TargetSet)));
110 
111                             break;
112 
113                         default:
114                             break;
115                     }
116                 }
117 
118                 return relationSet;
119             } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
120                 return null;
121             } catch (com.sun.star.uno.RuntimeException e) {
122                 return null;
123             }
124         }
125     }
126 }
127