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