StackBox.java revision 00af9fe6ae0da5b716212fa754163d90b60c1ee6
1c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner/* 2c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner * Copyright (C) 2013 The Android Open Source Project 3c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner * 4c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner * Licensed under the Apache License, Version 2.0 (the "License"); 5c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner * you may not use this file except in compliance with the License. 6c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner * You may obtain a copy of the License at 7c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner * 8c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner * http://www.apache.org/licenses/LICENSE-2.0 9c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner * 10c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner * Unless required by applicable law or agreed to in writing, software 11c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner * distributed under the License is distributed on an "AS IS" BASIS, 12c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner * See the License for the specific language governing permissions and 14c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner * limitations under the License. 15c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner */ 16c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner 17c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautnerpackage com.android.server.wm; 18c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner 19c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautnerimport android.graphics.Rect; 20c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner 2100af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautnerimport java.io.PrintWriter; 22d9a22881fda77e208f54f893a804d0001d27a27eCraig Mautnerimport java.util.ArrayList; 23d9a22881fda77e208f54f893a804d0001d27a27eCraig Mautner 24c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautnerpublic class StackBox { 25c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner /** For use with {@link WindowManagerService#createStack} */ 26c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner public static final int TASK_STACK_GOES_BEFORE = 0; 27c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner public static final int TASK_STACK_GOES_AFTER = 1; 28c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner public static final int TASK_STACK_GOES_ABOVE = 2; 29c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner public static final int TASK_STACK_GOES_BELOW = 3; 30c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner public static final int TASK_STACK_GOES_OVER = 4; 31c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner public static final int TASK_STACK_GOES_UNDER = 5; 32c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner 3300af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner /** The display this box sits in. */ 34c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner final DisplayContent mDisplayContent; 3500af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner 3600af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner /** Non-null indicates this is mFirst or mSecond of a parent StackBox. Null indicates this 3700af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner * is this entire size of mDisplayContent. */ 38c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner StackBox mParent; 3900af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner 4000af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner /** First child, this is null exactly when mStack is non-null. */ 41c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner StackBox mFirst; 4200af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner 4300af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner /** Second child, this is null exactly when mStack is non-null. */ 44c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner StackBox mSecond; 4500af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner 4600af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner /** Stack of Tasks, this is null exactly when mFirst and mSecond are non-null. */ 47c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner TaskStack mStack; 4800af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner 4900af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner /** Content limits relative to the DisplayContent this sits in. */ 50c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner Rect mBounds; 5100af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner 5200af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner /** Relative orientation of mFirst and mSecond. */ 5300af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner boolean mVertical; 5400af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner 5500af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner /** Dirty flag. Something inside this or some descendant of this has changed. */ 56c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner boolean layoutNeeded; 5700af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner 5800af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner /** Used to keep from reallocating a temporary array to hold the list of Tasks below */ 59d9a22881fda77e208f54f893a804d0001d27a27eCraig Mautner ArrayList<Task> mTmpTasks = new ArrayList<Task>(); 60c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner 61c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner StackBox(DisplayContent displayContent, Rect bounds) { 62c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner mDisplayContent = displayContent; 63c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner mBounds = bounds; 64c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner } 65c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner 66c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner /** Propagate #layoutNeeded bottom up. */ 67c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner void makeDirty() { 68c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner layoutNeeded = true; 69c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner if (mParent != null) { 70c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner mParent.makeDirty(); 71c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner } 72c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner } 73c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner 74c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner /** Propagate #layoutNeeded top down. */ 75c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner void makeClean() { 76c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner layoutNeeded = false; 77c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner if (mFirst != null) { 78c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner mFirst.makeClean(); 79c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner mSecond.makeClean(); 80c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner } 81c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner } 82c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner 8300af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner /** 8400af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner * Detremine if a particular TaskStack is in this StackBox or any of its descendants. 8500af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner * @param stackId The TaskStack being considered. 8600af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner * @return true if the specified TaskStack is in this box or its descendants. False otherwise. 8700af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner */ 8800af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner boolean contains(int stackId) { 8900af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner if (mStack != null) { 9000af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner return mStack.mStackId == stackId; 9100af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner } 9200af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner return mFirst.contains(stackId) || mSecond.contains(stackId); 9300af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner } 9400af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner 9500af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner /** 9600af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner * Create a new TaskStack relative to a specified one by splitting the StackBox containing 9700af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner * the specified TaskStack into two children. The size and position each of the new StackBoxes 9800af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner * is determined by the passed parameters. 9900af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner * @param stackId The id of the new TaskStack to create. 10000af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner * @param relativeStackId The id of the TaskStack to place the new one next to. 10100af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner * @param position One of the static TASK_STACK_GOES_xxx positions defined in this class. 10200af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner * @param weight The percentage size of the parent StackBox to devote to the new TaskStack. 10300af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner * @return The new TaskStack. 10400af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner */ 105c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner TaskStack split(int stackId, int relativeStackId, int position, float weight) { 106c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner if (mStack != null) { 107c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner if (mStack.mStackId == relativeStackId) { 108c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner // Found it! 109c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner TaskStack stack = new TaskStack(stackId, this); 110c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner TaskStack firstStack; 111c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner TaskStack secondStack; 112c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner int width, height, split; 113c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner switch (position) { 114c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner default: 115c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner case TASK_STACK_GOES_BEFORE: 116c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner case TASK_STACK_GOES_AFTER: 117c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner mVertical = false; 118c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner width = (int)(weight * mBounds.width()); 119c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner height = mBounds.height(); 120c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner if (position == TASK_STACK_GOES_BEFORE) { 121c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner firstStack = stack; 122c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner secondStack = mStack; 123c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner split = mBounds.left + width; 124c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner } else { 125c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner firstStack = mStack; 126c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner secondStack = stack; 127c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner split = mBounds.right - width; 128c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner } 129c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner break; 130c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner case TASK_STACK_GOES_ABOVE: 131c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner case TASK_STACK_GOES_BELOW: 132c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner mVertical = true; 133c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner width = mBounds.width(); 134c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner height = (int)(weight * mBounds.height()); 135c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner if (position == TASK_STACK_GOES_ABOVE) { 136c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner firstStack = stack; 137c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner secondStack = mStack; 138c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner split = mBounds.top + height; 139c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner } else { 140c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner firstStack = mStack; 141c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner secondStack = stack; 142c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner split = mBounds.bottom - height; 143c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner } 144c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner break; 145c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner } 146c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner mFirst = new StackBox(mDisplayContent, new Rect(mBounds.left, mBounds.top, 147c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner mVertical ? mBounds.right : split, mVertical ? split : mBounds.bottom)); 148c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner mFirst.mStack = firstStack; 149c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner mSecond = new StackBox(mDisplayContent, new Rect(mVertical ? mBounds.left : split, 150c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner mVertical ? split : mBounds.top, mBounds.right, mBounds.bottom)); 151c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner mSecond.mStack = secondStack; 152c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner mStack = null; 153c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner return stack; 154c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner } 15500af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner // Not the intended TaskStack. 156c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner return null; 157c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner } 158c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner 159c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner // Propagate the split to see if the target task stack is in either sub box. 160c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner TaskStack stack = mFirst.split(stackId, relativeStackId, position, weight); 161c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner if (stack != null) { 162c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner return stack; 163c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner } 164c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner return mSecond.split(stackId, relativeStackId, position, weight); 165c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner } 166c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner 16700af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner /** 16800af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner * @return List of all Tasks underneath this StackBox. The order is currently mFirst followed 16900af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner * by mSecond putting mSecond Tasks more recent than mFirst Tasks. 17000af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner * TODO: Change to MRU ordering. 17100af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner */ 172d9a22881fda77e208f54f893a804d0001d27a27eCraig Mautner ArrayList<Task> getTasks() { 173d9a22881fda77e208f54f893a804d0001d27a27eCraig Mautner mTmpTasks.clear(); 174d9a22881fda77e208f54f893a804d0001d27a27eCraig Mautner if (mStack != null) { 175d9a22881fda77e208f54f893a804d0001d27a27eCraig Mautner mTmpTasks.addAll(mStack.getTasks()); 176d9a22881fda77e208f54f893a804d0001d27a27eCraig Mautner } else { 177d9a22881fda77e208f54f893a804d0001d27a27eCraig Mautner mTmpTasks.addAll(mFirst.getTasks()); 178d9a22881fda77e208f54f893a804d0001d27a27eCraig Mautner mTmpTasks.addAll(mSecond.getTasks()); 179d9a22881fda77e208f54f893a804d0001d27a27eCraig Mautner } 180d9a22881fda77e208f54f893a804d0001d27a27eCraig Mautner return mTmpTasks; 181d9a22881fda77e208f54f893a804d0001d27a27eCraig Mautner } 182d9a22881fda77e208f54f893a804d0001d27a27eCraig Mautner 18300af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner /** Combine a child StackBox into its parent. 18400af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner * @param child The surviving child to be merge up into this StackBox. */ 18500af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner void absorb(StackBox child) { 18600af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner mFirst = child.mFirst; 18700af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner mSecond = child.mSecond; 18800af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner mStack = child.mStack; 189c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner layoutNeeded = true; 190c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner } 191c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner 19200af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner /** Return the stackId of the first mFirst StackBox with a non-null mStack */ 19300af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner int getStackId() { 19400af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner if (mStack != null) { 19500af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner return mStack.mStackId; 196c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner } 19700af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner return mFirst.getStackId(); 198c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner } 199c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner 20000af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner /** Remove this box and propagate its sibling's content up to their parent. 20100af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner * @return The first stackId of the resulting StackBox. */ 20200af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner int removeStack() { 20300af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner if (mParent.mFirst == this) { 20400af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner mParent.absorb(mParent.mSecond); 20500af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner } else { 20600af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner mParent.absorb(mParent.mFirst); 207c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner } 20800af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner mParent.makeDirty(); 20900af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner return getStackId(); 210c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner } 211c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner 21200af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner /** TODO: */ 213c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner boolean resize(int stackId, float weight) { 214c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner return false; 215c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner } 21600af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner 21700af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner public void dump(String prefix, PrintWriter pw) { 21800af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner pw.print(prefix); pw.print("mParent="); pw.println(mParent); 21900af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner pw.print(prefix); pw.print("mFirst="); pw.println(mFirst); 22000af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner pw.print(prefix); pw.print("mSecond="); pw.println(mSecond); 22100af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner pw.print(prefix); pw.print("mBounds="); pw.print(mBounds.toShortString()); 22200af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner pw.print("mVertical="); pw.print(mVertical); 22300af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner pw.print("layoutNeeded="); pw.println(layoutNeeded); 22400af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner if (mStack != null) { 22500af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner pw.print(prefix); pw.print("mStack="); pw.println(mStack); 22600af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner mStack.dump(prefix + " ", pw); 22700af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner } else { 22800af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner pw.print(prefix); pw.print("mFirst="); pw.println(mStack); 22900af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner mFirst.dump(prefix + " ", pw); 23000af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner pw.print(prefix); pw.print("mSecond="); pw.println(mStack); 23100af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner mSecond.dump(prefix + " ", pw); 23200af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner } 23300af9fe6ae0da5b716212fa754163d90b60c1ee6Craig Mautner } 234c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner} 235