2 * This file is part of the LibreOffice project.
4 * This Source Code Form is subject to the terms of the Mozilla Public
5 * License, v. 2.0. If a copy of the MPL was not distributed with this
6 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 * This file incorporates work covered by the following license notice:
10 * Licensed to the Apache Software Foundation (ASF) under one or more
11 * contributor license agreements. See the NOTICE file distributed
12 * with this work for additional information regarding copyright
13 * ownership. The ASF licenses this file to you under the Apache
14 * License, Version 2.0 (the "License"); you may not use this file
15 * except in compliance with the License. You may obtain a copy of
16 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
19 import com
.sun
.star
.uno
.UnoRuntime
;
20 import com
.sun
.star
.accessibility
.XAccessibleContext
;
21 import com
.sun
.star
.lang
.XServiceInfo
;
22 import com
.sun
.star
.lang
.XTypeProvider
;
23 import com
.sun
.star
.uno
.Type
;
26 /** This handler displays lower level UNO information. These are the
27 supported services, interfaces, and the implementation name.
29 class AccessibleUNOHandler
33 public NodeHandler
createHandler (XAccessibleContext xContext
)
39 AccessibleUNOHandler h
= new AccessibleUNOHandler();
40 h
.maChildList
.setSize (3);
45 private XServiceInfo
GetServiceInfo (AccessibleTreeNode aNode
)
47 XServiceInfo xServiceInfo
= null;
48 if (aNode
instanceof AccTreeNode
)
49 xServiceInfo
= UnoRuntime
.queryInterface(
50 XServiceInfo
.class, ((AccTreeNode
)aNode
).getContext());
53 private XTypeProvider
GetTypeProvider (AccessibleTreeNode aNode
)
55 XTypeProvider xTypeProvider
= null;
56 if (aNode
instanceof AccTreeNode
)
57 xTypeProvider
= UnoRuntime
.queryInterface(
58 XTypeProvider
.class, ((AccTreeNode
)aNode
).getContext());
63 public AccessibleTreeNode
createChild (AccessibleTreeNode aParent
,
66 AccessibleTreeNode aChild
= null;
67 XServiceInfo xServiceInfo
;
70 case 0 : // Implementation name.
71 xServiceInfo
= GetServiceInfo (aParent
);
72 aChild
= new StringNode ("Implementation name: " +
73 (xServiceInfo
!=null ? xServiceInfo
.getImplementationName()
74 : "<XServiceInfo not supported>"),
78 xServiceInfo
= GetServiceInfo (aParent
);
79 if (xServiceInfo
== null)
80 aChild
= new StringNode (
81 "Supported services: <XServiceInfo not supported>",
84 aChild
= CreateServiceTree (aParent
, xServiceInfo
);
87 XTypeProvider xTypeProvider
= GetTypeProvider (aParent
);
88 if (xTypeProvider
== null)
89 aChild
= new StringNode (
90 "Supported interfaces: <XTypeProvider not supported>",
93 aChild
= CreateInterfaceTree (aParent
, xTypeProvider
);
101 private AccessibleTreeNode
CreateServiceTree (AccessibleTreeNode aParent
,
102 XServiceInfo xServiceInfo
)
104 String
[] aServiceNames
= xServiceInfo
.getSupportedServiceNames();
105 VectorNode aNode
= new VectorNode ("Supported Services", aParent
);
107 int nCount
= aServiceNames
.length
;
108 for (int i
=0; i
<nCount
; i
++)
109 aNode
.addChild (new StringNode (aServiceNames
[i
], aParent
));
114 private AccessibleTreeNode
CreateInterfaceTree (AccessibleTreeNode aParent
,
115 XTypeProvider xTypeProvider
)
117 Type
[] aTypes
= xTypeProvider
.getTypes();
118 VectorNode aNode
= new VectorNode ("Supported Interfaces", aParent
);
120 int nCount
= aTypes
.length
;
121 for (int i
=0; i
<nCount
; i
++)
122 aNode
.addChild (new StringNode (aTypes
[i
].getTypeName(), aParent
));