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 }