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 }