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