View Javadoc
1   package org.woehlke.computer.kurzweil.tabs.dla;
2   
3   import lombok.EqualsAndHashCode;
4   import lombok.Getter;
5   import lombok.ToString;
6   import lombok.extern.log4j.Log4j2;
7   import org.woehlke.computer.kurzweil.commons.tabs.TabContext;
8   import org.woehlke.computer.kurzweil.application.ComputerKurzweilContext;
9   
10  import java.util.concurrent.ForkJoinTask;
11  
12  import static java.lang.Thread.State.NEW;
13  
14  
15  @Log4j2
16  @Getter
17  @ToString(exclude={"canvas","controller","tab","ctx"})
18  @EqualsAndHashCode(exclude={"canvas","controller","tab","ctx"},callSuper = false)
19  public class DiffusionLimitedAggregationContext extends ForkJoinTask<Void> implements TabContext, DiffusionLimitedAggregation {
20  
21      private DiffusionLimitedAggregationController controller;
22  
23      private final DiffusionLimitedAggregationCanvas canvas;
24      private final DiffusionLimitedAggregationModel tabModel;
25      private final DiffusionLimitedAggregationTab tab;
26      private final ComputerKurzweilContext ctx;
27  
28      public DiffusionLimitedAggregationContext(
29          DiffusionLimitedAggregationTab tab
30      ) {
31          this.tab = tab;
32          this.ctx = this.tab.getCtx();
33          this.canvas = new DiffusionLimitedAggregationCanvas(this);
34          this.tabModel = this.canvas.getTabModel();
35          startController();
36      }
37  
38      @Override
39      public void stopController() {
40          this.controller.exit();
41          this.controller = new DiffusionLimitedAggregationController(this);
42      }
43  
44      @Override
45      public void startController() {
46          if(this.controller == null){
47              this.controller = new DiffusionLimitedAggregationController(this);
48          } else {
49              if(this.controller.getState() != NEW){
50                  this.stopController();
51              }
52          }
53      }
54  
55      @Override
56      public Void getRawResult() {
57          return null;
58      }
59  
60      @Override
61      protected void setRawResult(Void value) {
62  
63      }
64  
65      @Override
66      protected boolean exec() {
67          this.tab.repaint();
68          return true;
69      }
70  }