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