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 }