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