View Javadoc
1   package org.woehlke.computer.kurzweil.tabs.mandelbrot2julia.config;
2   
3   
4   import lombok.Getter;
5   import lombok.extern.java.Log;
6   import org.woehlke.computer.kurzweil.application.ComputerKurzweilContext;
7   import org.woehlke.computer.kurzweil.commons.tabs.TabContext;
8   import org.woehlke.computer.kurzweil.tabs.mandelbrot2julia.control.MandelbrotController;
9   import org.woehlke.computer.kurzweil.tabs.mandelbrot2julia.model.MandelbrotModel;
10  import org.woehlke.computer.kurzweil.tabs.mandelbrot2julia.MandelbrotTab;
11  import org.woehlke.computer.kurzweil.tabs.mandelbrot2julia.canvas.MandelbrotCanvas;
12  
13  
14  import java.util.concurrent.ForkJoinTask;
15  
16  import static java.lang.Thread.State.NEW;
17  
18  @Log
19  @Getter
20  public class MandelbrotContext extends ForkJoinTask<Void> implements TabContext, Mandelbrot {
21  
22      private static final long serialVersionUID = 7526471155622776147L;
23  
24      private final ComputerKurzweilContext ctx;
25      private final MandelbrotTab tab;
26      private final MandelbrotModel tabModel;
27      private final MandelbrotCanvas canvas;
28  
29      private volatile MandelbrotController controller;
30  
31      public MandelbrotContext(MandelbrotTab tab, ComputerKurzweilContext ctx) {
32          this.tab = tab;
33          this.ctx = ctx;
34          this.tabModel = new MandelbrotModel(this.ctx.getProperties(), this.tab );
35          this.canvas = new MandelbrotCanvas(this);
36          this.controller = new MandelbrotController(this.tabModel,  this.tab );
37      }
38  
39      @Override
40      public void stopController() {
41          this.controller.exit();
42          this.controller = null;
43          this.controller = new MandelbrotController(this.tabModel,  this.tab );
44      }
45  
46      @Override
47      public void startController() {
48          if (this.controller == null) {
49              this.controller = new MandelbrotController(this.tabModel,  this.tab );
50          } else {
51              if (this.controller.getState() != NEW) {
52                  this.stopController();
53              }
54          }
55      }
56  
57      @Override
58      public Void getRawResult() {
59          return null;
60      }
61  
62      @Override
63      protected void setRawResult(Void value) {
64  
65      }
66  
67      @Override
68      protected boolean exec() {
69          this.tab.repaint();
70          return true;
71      }
72  }
73  
74