View Javadoc
1   package org.woehlke.computer.kurzweil.tabs.turmite.model;
2   
3   
4   import org.woehlke.computer.kurzweil.tabs.turmite.model.TurmiteTabState;
5   
6   import java.io.Serializable;
7   
8   import static org.woehlke.computer.kurzweil.tabs.turmite.model.TurmiteTabState.*;
9   
10  /**
11   * Mandelbrot Set drawn by a Turing Machine.
12   *
13   * (C) 2006 - 2015 Thomas Woehlke.
14   * https://thomas-woehlke.blogspot.com/2016/01/mandelbrot-set-drawn-by-turing-machine.html
15   * @author Thomas Woehlke
16   *
17   * Created by tw on 16.12.2019.
18   */
19  public class TurmiteTabStateMachine implements Serializable {
20  
21      private static final long serialVersionUID = 7526471155622776147L;
22  
23      private volatile TurmiteTabState applicationState;
24  
25      public TurmiteTabStateMachine() {
26          this.applicationState = TurmiteTabState.MANDELBROT;
27      }
28  
29      public void click(){
30          TurmiteTabState nextApplicationState = null;
31          switch (applicationState){
32              case MANDELBROT:
33                  nextApplicationState = MANDELBROT_ZOOM;
34                  break;
35              case MANDELBROT_ZOOM:
36                  nextApplicationState = MANDELBROT;
37                  break;
38          }
39          this.setApplicationState(nextApplicationState);
40      }
41  
42      public void setModeSwitch() {
43          TurmiteTabState nextApplicationState = this.applicationState;
44          /*
45          switch (applicationState){
46              case MANDELBROT:
47              case JULIA_SET:
48                  break;
49              case MANDELBROT_ZOOM:
50                  nextApplicationState = MANDELBROT;
51                  break;
52              case JULIA_SET_ZOOM:
53                  nextApplicationState = JULIA_SET;
54                  break;
55          }
56          */
57          this.setApplicationState(nextApplicationState);
58      }
59  
60      public void setModeZoom() {
61          TurmiteTabState nextApplicationState = this.applicationState;
62          switch (applicationState){
63              case MANDELBROT:
64                  nextApplicationState = MANDELBROT_ZOOM;
65                  break;
66              //case JULIA_SET:
67                //  nextApplicationState = JULIA_SET_ZOOM;
68                  //break;
69              case MANDELBROT_ZOOM:
70              //case JULIA_SET_ZOOM:
71                  break;
72          }
73          this.setApplicationState(nextApplicationState);
74      }
75  
76      public TurmiteTabState getApplicationState() {
77          return applicationState;
78      }
79  
80      public void setApplicationState(TurmiteTabState applicationState) {
81          this.applicationState = applicationState;
82      }
83  
84  }