View Javadoc
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    * Mandelbrot Set drawn by a Turing Machine.
8    *
9    * (C) 2006 - 2015 Thomas Woehlke.
10   * https://thomas-woehlke.blogspot.com/2016/01/mandelbrot-set-drawn-by-turing-machine.html
11   * @author Thomas Woehlke
12   *
13   * Created by tw on 16.12.2019.
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          switch (applicationState){
40              case MANDELBROT:
41              case JULIA_SET:
42                  break;
43              case MANDELBROT_ZOOM:
44                  nextApplicationState = MANDELBROT;
45                  break;
46              case JULIA_SET_ZOOM:
47                  nextApplicationState = JULIA_SET;
48                  break;
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              //case JULIA_SET:
61                //  nextApplicationState = JULIA_SET_ZOOM;
62                  //break;
63              case MANDELBROT_ZOOM:
64              //case JULIA_SET_ZOOM:
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  }