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