1 package org.woehlke.computer.kurzweil.tabs.sierpinskitriangle.model;
2
3
4 import org.woehlke.computer.kurzweil.tabs.sierpinskitriangle.model.SierpinskiTriangleTabState;
5
6 import static org.woehlke.computer.kurzweil.tabs.sierpinskitriangle.model.SierpinskiTriangleTabState.*;
7
8
9
10
11
12
13
14
15
16
17 public class SierpinskiTriangleTabStateMachine {
18
19 private volatile SierpinskiTriangleTabState applicationState;
20
21 public SierpinskiTriangleTabStateMachine() {
22 this.applicationState = SierpinskiTriangleTabState.MANDELBROT;
23 }
24
25 public void click(){
26 SierpinskiTriangleTabState nextApplicationState = null;
27 switch (applicationState){
28 case MANDELBROT:
29 nextApplicationState = MANDELBROT_ZOOM;
30 break;
31 case MANDELBROT_ZOOM:
32 nextApplicationState = MANDELBROT;
33 break;
34 }
35 this.setApplicationState(nextApplicationState);
36 }
37
38 public void setModeSwitch() {
39 SierpinskiTriangleTabState nextApplicationState = this.applicationState;
40
41
42
43
44
45
46
47
48
49
50
51
52
53 this.setApplicationState(nextApplicationState);
54 }
55
56 public void setModeZoom() {
57 SierpinskiTriangleTabState nextApplicationState = this.applicationState;
58 switch (applicationState){
59 case MANDELBROT:
60 nextApplicationState = MANDELBROT_ZOOM;
61 break;
62
63
64
65 case MANDELBROT_ZOOM:
66
67 break;
68 }
69 this.setApplicationState(nextApplicationState);
70 }
71
72 public SierpinskiTriangleTabState getApplicationState() {
73 return applicationState;
74 }
75
76 public void setApplicationState(SierpinskiTriangleTabState applicationState) {
77 this.applicationState = applicationState;
78 }
79
80 }