|
@@ -8,7 +8,7 @@ import android.widget.FrameLayout;
|
8
|
8
|
import java.util.ArrayDeque;
|
9
|
9
|
|
10
|
10
|
public class StackController extends ViewController {
|
11
|
|
- private final ArrayDeque<ViewController> childControllers = new ArrayDeque<>();
|
|
11
|
+ private final ArrayDeque<ViewController> stack = new ArrayDeque<>();
|
12
|
12
|
|
13
|
13
|
public StackController(final Activity activity) {
|
14
|
14
|
super(activity);
|
|
@@ -18,7 +18,7 @@ public class StackController extends ViewController {
|
18
|
18
|
ViewController previousTop = peek();
|
19
|
19
|
|
20
|
20
|
child.setStackController(this);
|
21
|
|
- childControllers.push(child);
|
|
21
|
+ stack.push(child);
|
22
|
22
|
getView().addView(child.getView());
|
23
|
23
|
|
24
|
24
|
if (previousTop != null) {
|
|
@@ -27,14 +27,14 @@ public class StackController extends ViewController {
|
27
|
27
|
}
|
28
|
28
|
|
29
|
29
|
public boolean canPop() {
|
30
|
|
- return childControllers.size() > 1;
|
|
30
|
+ return stack.size() > 1;
|
31
|
31
|
}
|
32
|
32
|
|
33
|
33
|
public void pop() {
|
34
|
34
|
if (!canPop()) {
|
35
|
35
|
return;
|
36
|
36
|
}
|
37
|
|
- ViewController poppedController = childControllers.pop();
|
|
37
|
+ ViewController poppedController = stack.pop();
|
38
|
38
|
getView().removeView(poppedController.getView());
|
39
|
39
|
|
40
|
40
|
ViewController previousTop = peek();
|
|
@@ -45,20 +45,20 @@ public class StackController extends ViewController {
|
45
|
45
|
if (peek() == childController) {
|
46
|
46
|
pop();
|
47
|
47
|
} else {
|
48
|
|
- childControllers.remove(childController);
|
|
48
|
+ stack.remove(childController);
|
49
|
49
|
}
|
50
|
50
|
}
|
51
|
51
|
|
52
|
52
|
public ViewController peek() {
|
53
|
|
- return childControllers.peek();
|
|
53
|
+ return stack.peek();
|
54
|
54
|
}
|
55
|
55
|
|
56
|
56
|
public int size() {
|
57
|
|
- return childControllers.size();
|
|
57
|
+ return stack.size();
|
58
|
58
|
}
|
59
|
59
|
|
60
|
60
|
public boolean isEmpty() {
|
61
|
|
- return childControllers.isEmpty();
|
|
61
|
+ return stack.isEmpty();
|
62
|
62
|
}
|
63
|
63
|
|
64
|
64
|
@Override
|
|
@@ -88,6 +88,15 @@ public class StackController extends ViewController {
|
88
|
88
|
}
|
89
|
89
|
|
90
|
90
|
ArrayDeque<ViewController> getStack() {
|
91
|
|
- return childControllers;
|
|
91
|
+ return stack;
|
|
92
|
+ }
|
|
93
|
+
|
|
94
|
+ public void popTo(final ViewController viewController) {
|
|
95
|
+ if (!stack.contains(viewController)) {
|
|
96
|
+ return;
|
|
97
|
+ }
|
|
98
|
+ while (peek() != viewController) {
|
|
99
|
+ pop();
|
|
100
|
+ }
|
92
|
101
|
}
|
93
|
102
|
}
|