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.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  }