bump product version to 5.0.4.1
[LibreOffice.git] / toolkit / test / accessibility / AccessibleUNOHandler.java
blob1ee522b277265c742ee8b6d6be5b022bd7286e2a
1 /*
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
30 extends NodeHandler
32 @Override
33 public NodeHandler createHandler (XAccessibleContext xContext)
35 if (xContext == null)
36 return null;
37 else
39 AccessibleUNOHandler h = new AccessibleUNOHandler();
40 h.maChildList.setSize (3);
41 return h;
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());
51 return xServiceInfo;
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());
59 return xTypeProvider;
62 @Override
63 public AccessibleTreeNode createChild (AccessibleTreeNode aParent,
64 int nIndex)
66 AccessibleTreeNode aChild = null;
67 XServiceInfo xServiceInfo;
68 switch (nIndex)
70 case 0 : // Implementation name.
71 xServiceInfo = GetServiceInfo (aParent);
72 aChild = new StringNode ("Implementation name: " +
73 (xServiceInfo!=null ? xServiceInfo.getImplementationName()
74 : "<XServiceInfo not supported>"),
75 aParent);
76 break;
77 case 1 :
78 xServiceInfo = GetServiceInfo (aParent);
79 if (xServiceInfo == null)
80 aChild = new StringNode (
81 "Supported services: <XServiceInfo not supported>",
82 aParent);
83 else
84 aChild = CreateServiceTree (aParent, xServiceInfo);
85 break;
86 case 2 :
87 XTypeProvider xTypeProvider = GetTypeProvider (aParent);
88 if (xTypeProvider == null)
89 aChild = new StringNode (
90 "Supported interfaces: <XTypeProvider not supported>",
91 aParent);
92 else
93 aChild = CreateInterfaceTree (aParent, xTypeProvider);
94 break;
97 return aChild;
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));
111 return aNode;
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));
124 return aNode;