1389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen/* 2389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen * Copyright (C) 2014 The Android Open Source Project 3389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen * 4389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen * Licensed under the Apache License, Version 2.0 (the "License"); 5389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen * you may not use this file except in compliance with the License. 6389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen * You may obtain a copy of the License at 7389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen * 8389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen * http://www.apache.org/licenses/LICENSE-2.0 9389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen * 10389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen * Unless required by applicable law or agreed to in writing, software 11389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen * distributed under the License is distributed on an "AS IS" BASIS, 12389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen * See the License for the specific language governing permissions and 14389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen * limitations under the License. 15389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen */ 16389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen 17389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsenpackage android.support.v4.view.accessibility; 18389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen 19c5b63021dfda1dd155775a0b4845c5ca3c70b1b0Chris Banesimport android.view.View; 20389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsenimport android.view.accessibility.AccessibilityNodeInfo; 21389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsenimport android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction; 22389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen 23389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsenimport java.util.List; 24389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen 25389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen/** 26389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen * Api21-specific AccessibilityNodeInfo API implementation. 27389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen */ 28389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsenclass AccessibilityNodeInfoCompatApi21 { 29389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen static List<Object> getActionList(Object info) { 30389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen Object result = ((AccessibilityNodeInfo) info).getActionList(); 31389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen return (List<Object>) result; 32389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen } 33389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen 3484ef4490e42b960ea375630f9cc37246af9c571bSvetoslav static void addAction(Object info, Object action) { 3584ef4490e42b960ea375630f9cc37246af9c571bSvetoslav ((AccessibilityNodeInfo) info).addAction((AccessibilityAction) action); 36389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen } 37389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen 388aaf50bd7d713dafc358e6215111e7b0a43ecc82Maxim Bogatov public static boolean removeAction(Object info, Object action) { 398aaf50bd7d713dafc358e6215111e7b0a43ecc82Maxim Bogatov return ((AccessibilityNodeInfo) info).removeAction((AccessibilityAction) action); 408aaf50bd7d713dafc358e6215111e7b0a43ecc82Maxim Bogatov } 418aaf50bd7d713dafc358e6215111e7b0a43ecc82Maxim Bogatov 42a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar public static Object obtainCollectionInfo(int rowCount, int columnCount, 43a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar boolean hierarchical, int selectionMode) { 44a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar return AccessibilityNodeInfo.CollectionInfo.obtain(rowCount, columnCount, hierarchical, 45a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar selectionMode); 46a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar } 47a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar 48a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar public static Object obtainCollectionItemInfo(int rowIndex, int rowSpan, int columnIndex, 49a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar int columnSpan, boolean heading, boolean selected) { 50a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar return AccessibilityNodeInfo.CollectionItemInfo.obtain(rowIndex, rowSpan, columnIndex, 51a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar columnSpan, heading, selected); 52a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar } 53a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar 54c5b63021dfda1dd155775a0b4845c5ca3c70b1b0Chris Banes public static CharSequence getError(Object info) { 55c5b63021dfda1dd155775a0b4845c5ca3c70b1b0Chris Banes return ((AccessibilityNodeInfo) info).getError(); 56c5b63021dfda1dd155775a0b4845c5ca3c70b1b0Chris Banes } 57c5b63021dfda1dd155775a0b4845c5ca3c70b1b0Chris Banes 58c5b63021dfda1dd155775a0b4845c5ca3c70b1b0Chris Banes public static void setError(Object info, CharSequence error) { 59c5b63021dfda1dd155775a0b4845c5ca3c70b1b0Chris Banes ((AccessibilityNodeInfo) info).setError(error); 60c5b63021dfda1dd155775a0b4845c5ca3c70b1b0Chris Banes } 61c5b63021dfda1dd155775a0b4845c5ca3c70b1b0Chris Banes 628aaf50bd7d713dafc358e6215111e7b0a43ecc82Maxim Bogatov public static void setMaxTextLength(Object info, int max) { 638aaf50bd7d713dafc358e6215111e7b0a43ecc82Maxim Bogatov ((AccessibilityNodeInfo) info).setMaxTextLength(max); 648aaf50bd7d713dafc358e6215111e7b0a43ecc82Maxim Bogatov } 658aaf50bd7d713dafc358e6215111e7b0a43ecc82Maxim Bogatov 668aaf50bd7d713dafc358e6215111e7b0a43ecc82Maxim Bogatov public static int getMaxTextLength(Object info) { 678aaf50bd7d713dafc358e6215111e7b0a43ecc82Maxim Bogatov return ((AccessibilityNodeInfo) info).getMaxTextLength(); 688aaf50bd7d713dafc358e6215111e7b0a43ecc82Maxim Bogatov } 698aaf50bd7d713dafc358e6215111e7b0a43ecc82Maxim Bogatov 708aaf50bd7d713dafc358e6215111e7b0a43ecc82Maxim Bogatov public static Object getWindow(Object info) { 718aaf50bd7d713dafc358e6215111e7b0a43ecc82Maxim Bogatov return ((AccessibilityNodeInfo) info).getWindow(); 728aaf50bd7d713dafc358e6215111e7b0a43ecc82Maxim Bogatov } 738aaf50bd7d713dafc358e6215111e7b0a43ecc82Maxim Bogatov 748aaf50bd7d713dafc358e6215111e7b0a43ecc82Maxim Bogatov public static boolean removeChild(Object info, View child) { 758aaf50bd7d713dafc358e6215111e7b0a43ecc82Maxim Bogatov return ((AccessibilityNodeInfo) info).removeChild(child); 76c5b63021dfda1dd155775a0b4845c5ca3c70b1b0Chris Banes } 77c5b63021dfda1dd155775a0b4845c5ca3c70b1b0Chris Banes 788aaf50bd7d713dafc358e6215111e7b0a43ecc82Maxim Bogatov public static boolean removeChild(Object info, View root, int virtualDescendantId) { 798aaf50bd7d713dafc358e6215111e7b0a43ecc82Maxim Bogatov return ((AccessibilityNodeInfo) info).removeChild(root, virtualDescendantId); 80c5b63021dfda1dd155775a0b4845c5ca3c70b1b0Chris Banes } 81c5b63021dfda1dd155775a0b4845c5ca3c70b1b0Chris Banes 82a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar static class CollectionItemInfo { 83a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar public static boolean isSelected(Object info) { 84a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar return ((AccessibilityNodeInfo.CollectionItemInfo) info).isSelected(); 85a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar } 86a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar } 87a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar 8884ef4490e42b960ea375630f9cc37246af9c571bSvetoslav static Object newAccessibilityAction(int actionId, CharSequence label) { 8984ef4490e42b960ea375630f9cc37246af9c571bSvetoslav return new AccessibilityAction(actionId, label); 9084ef4490e42b960ea375630f9cc37246af9c571bSvetoslav } 91389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen 9284ef4490e42b960ea375630f9cc37246af9c571bSvetoslav static int getAccessibilityActionId(Object action) { 9384ef4490e42b960ea375630f9cc37246af9c571bSvetoslav return ((AccessibilityNodeInfo.AccessibilityAction) action).getId(); 9484ef4490e42b960ea375630f9cc37246af9c571bSvetoslav } 9584ef4490e42b960ea375630f9cc37246af9c571bSvetoslav 9684ef4490e42b960ea375630f9cc37246af9c571bSvetoslav static CharSequence getAccessibilityActionLabel(Object action) { 9784ef4490e42b960ea375630f9cc37246af9c571bSvetoslav return ((AccessibilityNodeInfo.AccessibilityAction) action).getLabel(); 98389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen } 99389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen} 100