View Javadoc
1   package org.woehlke.computer.kurzweil.tabs.simulatedevolution;
2   
3   import lombok.EqualsAndHashCode;
4   import lombok.Getter;
5   import lombok.Setter;
6   import lombok.ToString;
7   import lombok.extern.log4j.Log4j2;
8   import org.woehlke.computer.kurzweil.application.ComputerKurzweilContext;
9   import org.woehlke.computer.kurzweil.commons.tabs.TabContext;
10  import org.woehlke.computer.kurzweil.tabs.simulatedevolution.model.WorldPoint;
11  
12  import java.util.concurrent.ForkJoinTask;
13  
14  import static java.lang.Thread.State.NEW;
15  
16  @Log4j2
17  @Getter
18  @ToString(callSuper = false, exclude={"ctx","controller","tab"})
19  @EqualsAndHashCode(callSuper = false, exclude={"ctx","controller","tab"})
20  public class SimulatedEvolutionContext extends ForkJoinTask<Void> implements TabContext, SimulatedEvolution {
21  
22      private final ComputerKurzweilContext ctx;
23      private final SimulatedEvolutionTab tab;
24      private final SimulatedEvolutionCanvas canvas;
25      private final SimulatedEvolutionModel tabModel;
26  
27      @Setter
28      private SimulatedEvolutionController controller;
29  
30      public SimulatedEvolutionContext(
31          SimulatedEvolutionTab tab,
32          ComputerKurzweilContext ctx
33      ) {
34         this.tab = tab;
35         this.ctx = ctx;
36          int scale = 2;
37          int width = 320 * scale;
38          int height = 234 * scale;
39          WorldPointsimulatedevolution/model/WorldPoint.html#WorldPoint">WorldPoint worldDimensions = new WorldPoint(width,height);
40         this.canvas = new SimulatedEvolutionCanvas(  worldDimensions );
41         this.tabModel = this.canvas.getTabModel();
42         this.controller = new SimulatedEvolutionController();
43      }
44  
45      @Override
46      public void stopController() {
47          this.controller.exit();
48          this.controller = null;
49          this.controller = new SimulatedEvolutionController();
50      }
51  
52      @Override
53      public void startController() {
54          if(this.controller == null){
55              this.controller = new SimulatedEvolutionController();
56          } else {
57              if(this.controller.getState() != NEW){
58                  this.stopController();
59              }
60          }
61      }
62  
63      @Override
64      public Void getRawResult() {
65          return null;
66      }
67  
68      @Override
69      protected void setRawResult(Void value) {
70  
71      }
72  
73      @Override
74      protected boolean exec() {
75          this.tab.update();
76          this.tab.repaint();
77          return true;
78      }
79  }