1 package org.woehlke.computer.kurzweil.tabs.mandelbrot2julia;
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 import org.woehlke.computer.kurzweil.tabs.mandelbrotzoom.model.turing.Point;
11
12 import java.awt.*;
13 import java.awt.event.*;
14
15
16
17
18
19
20
21
22 @Log4j2
23 @Getter
24 @ToString(callSuper = true, exclude = {"tabCtx"})
25 @EqualsAndHashCode(callSuper=true, exclude = {"tabCtx"})
26 public class MandelbrotTab extends TabPanel implements Tab, Mandelbrot, MouseListener {
27
28 private final MandelbrotContext tabCtx;
29 private final MandelbrotCanvas canvas;
30 private final MandelbrotTabPane mandelbrotTabPane;
31 private final MandelbrotModel mandelbrotModel;
32
33
34
35 public MandelbrotTab(ComputerKurzweilTabbedPane tabbedPane) {
36 super(tabbedPane, TAB_TYPE);
37 this.tabCtx = new MandelbrotContext(this, ctx);
38 this.canvas = this.tabCtx.getCanvas();
39 this.mandelbrotModel = this.tabCtx.getTabModel();
40
41 this.mandelbrotTabPane = new MandelbrotTabPane(this);
42 this.add(this.panelSubtitle);
43 this.add(this.canvas);
44 this.add(this.mandelbrotTabPane);
45 this.mandelbrotTabPane.stop();
46 this.canvas.addMouseListener( this);
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67 }
68
69 @Override
70 public void start() {
71 log.info("start");
72 this.mandelbrotTabPane.start();
73 this.tabCtx.getTabModel().start();
74 this.tabCtx.startController();
75 this.tabCtx.getController().start();
76 this.ctx.getFrame().pack();
77 int x = this.canvas.getWidth();
78 int y = this.canvas.getHeight();
79 log.info("started with canvas x="+x+" y="+y);
80 }
81
82 @Override
83 public void stop() {
84 log.info("stop");
85 this.tabCtx.getTabModel().stop();
86 this.mandelbrotTabPane.stop();
87 this.tabCtx.stopController();
88 int x = this.canvas.getWidth();
89 int y = this.canvas.getHeight();
90 log.info("stopped with canvas x="+x+" y="+y);
91 }
92
93 @Override
94 public void actionPerformed(ActionEvent ae) {
95 if(ae.getSource() == this.mandelbrotTabPane.getPanelChooseMouseClickMode().getRadioButtonsSwitch()){
96 setModeSwitch();
97 }
98 if(ae.getSource() == this.mandelbrotTabPane.getPanelChooseMouseClickMode().getRadioButtonsZoom()){
99 setModeZoom();
100 }
101 if(ae.getSource() == this.mandelbrotTabPane.getPanelZoom().getZoomOutButton()){
102 this.mandelbrotModel.zoomOut();
103 }
104 if(ae.getSource() == this.mandelbrotTabPane.getStartButton()){
105 super.ctx.getFrame().start();
106 }
107 if(ae.getSource() == this.mandelbrotTabPane.getStopButton()){
108 super.ctx.getFrame().stop();
109 }
110 }
111
112 public void setModeSwitch() {
113 this.mandelbrotModel.setModeSwitch();
114 canvas.setCursor(new Cursor(Cursor.CROSSHAIR_CURSOR));
115 }
116
117 public void setModeZoom() {
118 this.mandelbrotModel.setModeZoom();
119 canvas.setCursor(new Cursor(Cursor.HAND_CURSOR));
120 }
121
122 @Override
123 public void mouseClicked(MouseEvent e) {
124 Pointuter/kurzweil/tabs/mandelbrotzoom/model/turing/Point.html#Point">Point p = new Point( e.getPoint().getX(), e.getPoint().getY());
125 mandelbrotModel.click( p );
126 }
127
128 @Override
129 public void mousePressed(MouseEvent e) {
130
131 }
132
133 @Override
134 public void mouseReleased(MouseEvent e) {
135
136 }
137
138 @Override
139 public void mouseEntered(MouseEvent e) {
140
141 }
142
143 @Override
144 public void mouseExited(MouseEvent e) {
145
146 }
147 }