/* * Copyright (C) 2015 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package com.android.switchaccess.treebuilding; import android.annotation.TargetApi; import android.content.Context; import android.os.Build; import com.android.switchaccess.ClearFocusNode; import com.android.switchaccess.ContextMenuItem; import com.android.switchaccess.ContextMenuNode; import com.android.switchaccess.OptionScanActionNode; import com.android.switchaccess.OptionScanNode; import com.android.switchaccess.SwitchAccessNodeCompat; import com.android.switchaccess.SwitchAccessWindowInfo; import java.util.*; /** * Build a binary tree of OptionScanNodes using linear scanning. */ public class LinearScanTreeBuilder extends BinaryTreeBuilder { public LinearScanTreeBuilder(Context context) { super(context); } @Override public OptionScanNode addViewHierarchyToTree(SwitchAccessNodeCompat root, OptionScanNode treeToBuildOn) { OptionScanNode tree = (treeToBuildOn != null) ? treeToBuildOn : new ClearFocusNode(); LinkedList<SwitchAccessNodeCompat> talkBackOrderList = getNodesInTalkBackOrder(root); Iterator<SwitchAccessNodeCompat> reverseListIterator = talkBackOrderList.descendingIterator(); while (reverseListIterator.hasNext()) { SwitchAccessNodeCompat next = reverseListIterator.next(); tree = addCompatToTree(next, tree); next.recycle(); } return tree; } @Override public OptionScanNode addWindowListToTree(List<SwitchAccessWindowInfo> windowList, OptionScanNode treeToBuildOn) { /* Not currently needed */ return null; } }