1 /* 2 * This file is part of the LibreOffice project. 3 * 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/. 7 * 8 * This file incorporates work covered by the following license notice: 9 * 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 . 17 */ 18 19 import com.sun.star.accessibility.XAccessible; 20 import com.sun.star.accessibility.XAccessibleContext; 21 import com.sun.star.accessibility.XAccessibleStateSet; 22 import tools.NameProvider; 23 24 class AccessibleContextHandler 25 extends NodeHandler 26 { 27 @Override createHandler(XAccessibleContext xContext)28 public NodeHandler createHandler (XAccessibleContext xContext) 29 { 30 if (xContext != null) 31 return new AccessibleContextHandler (xContext); 32 else 33 return null; 34 } 35 AccessibleContextHandler()36 public AccessibleContextHandler () 37 { 38 super (); 39 } 40 AccessibleContextHandler(XAccessibleContext xContext)41 private AccessibleContextHandler (XAccessibleContext xContext) 42 { 43 super(); 44 if (xContext != null) 45 maChildList.setSize (4); 46 } 47 48 @Override createChild(AccessibleTreeNode aParent, int nIndex)49 public AccessibleTreeNode createChild (AccessibleTreeNode aParent, int nIndex) 50 { 51 XAccessibleContext xContext = null; 52 if (aParent instanceof AccTreeNode) 53 xContext = ((AccTreeNode)aParent).getContext(); 54 55 String sChild = ""; 56 if (xContext != null) 57 { 58 switch( nIndex ) 59 { 60 case 0: 61 sChild = "Description: " + 62 xContext.getAccessibleDescription(); 63 break; 64 case 1: 65 int nRole = xContext.getAccessibleRole(); 66 sChild = "Role: " + nRole + " (" + NameProvider.getRoleName(nRole) + ")"; 67 break; 68 case 2: 69 XAccessible xParent = xContext.getAccessibleParent(); 70 sChild = "Has parent: " + (xParent!=null ? "yes" : "no"); 71 break; 72 case 3: 73 sChild = ""; 74 XAccessibleStateSet xStateSet = 75 xContext.getAccessibleStateSet(); 76 if (xStateSet != null) 77 { 78 for (short i=0; i<=30; i++) 79 { 80 if (xStateSet.contains (i)) 81 { 82 if (sChild.compareTo ("") != 0) 83 sChild += ", "; 84 sChild += NameProvider.getStateName(i); 85 } 86 } 87 } 88 else 89 sChild += "no state set"; 90 sChild = "State set: " + sChild; 91 } 92 } 93 return new StringNode (sChild, aParent); 94 } 95 } 96