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