View Javadoc
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.java.Log;
7   import org.woehlke.computer.kurzweil.tabs.ComputerKurzweilTabbedPane;
8   import org.woehlke.computer.kurzweil.tabs.Tab;
9   import org.woehlke.computer.kurzweil.tabs.TabPanel;
10  import org.woehlke.computer.kurzweil.tabs.randomwalk.canvas.RandomWalkCanvas;
11  import org.woehlke.computer.kurzweil.tabs.randomwalk.config.RandomWalk;
12  import org.woehlke.computer.kurzweil.tabs.randomwalk.config.RandomWalkContext;
13  import org.woehlke.computer.kurzweil.tabs.randomwalk.model.RandomWalkModel;
14  import org.woehlke.computer.kurzweil.tabs.randomwalk.views.RandomWalkTabPane;
15  
16  import java.awt.event.ActionEvent;
17  
18  @Log
19  @Getter
20  @ToString(callSuper = true, exclude = {"tabCtx"})
21  @EqualsAndHashCode(callSuper = true, exclude = {"tabCtx"})
22  public class RandomWalkTab extends TabPanel implements Tab, RandomWalk {
23  
24      private static final long serialVersionUID = 7526471155622776147L;
25  
26      private final RandomWalkContext tabCtx;
27  
28      private final RandomWalkCanvas canvas;
29      private final RandomWalkModel tabModel;
30      private final RandomWalkTabPane randomWalkTabPane;
31  
32      public RandomWalkTab(ComputerKurzweilTabbedPane tabbedPane) {
33          super(tabbedPane, TAB_TYPE);
34          this.tabCtx = new RandomWalkContext(this);
35          this.canvas = this.tabCtx.getCanvas();
36          this.tabModel = this.canvas.getTabModel();
37          this.randomWalkTabPane = new RandomWalkTabPane(this);
38          this.add(this.panelSubtitle);
39          this.add(this.canvas);
40          this.add(this.randomWalkTabPane);
41          this.randomWalkTabPane.getStartButton().addActionListener(this);
42          this.randomWalkTabPane.getStopButton().addActionListener(this);
43          this.tabModel.stop();
44          this.randomWalkTabPane.stop();
45          this.ctx.getFrame().pack();
46      }
47  
48      @Override
49      public void start() {
50          log.info("start");
51          this.tabModel.start();
52          this.randomWalkTabPane.start();
53          this.getTabCtx().stopController();
54          this.getTabCtx().getController().start();
55          this.ctx.getFrame().pack();
56          int x = this.canvas.getWidth();
57          int y = this.canvas.getHeight();
58          log.info("started with canvas x=" + x + " y=" + y);
59      }
60  
61      @Override
62      public void stop() {
63          log.info("stop");
64          this.tabModel.stop();
65          this.randomWalkTabPane.stop();
66          this.getTabCtx().stopController();
67          int x = this.canvas.getWidth();
68          int y = this.canvas.getHeight();
69          log.info("stopped with canvas x=" + x + " y=" + y);
70      }
71  
72      @Override
73      public void actionPerformed(ActionEvent ae) {
74          if (ae.getSource() == this.randomWalkTabPane.getStartButton()) {
75              super.ctx.getFrame().start();
76          }
77          if (ae.getSource() == this.randomWalkTabPane.getStopButton()) {
78              super.ctx.getFrame().stop();
79          }
80      }
81  
82  }