View Javadoc
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   * (C) 2006 - 2013 Thomas Woehlke.
17   * https://thomas-woehlke.blogspot.com/2016/01/mandelbrot-set-drawn-by-turing-machine.html
18   * @author Thomas Woehlke
19   * Date: 04.02.2006
20   * Time: 18:47:46
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      //private volatile MandelbrotController mandelbrotController;
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          //this.mandelbrotController = this.tabCtx.getController();
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          super(properties.getMandelbrot().getView().getTitle());
49  
50          BoxLayout layout = new BoxLayout(rootPane, BoxLayout.PAGE_AXIS);
51          this.canvas = new MandelbrotCanvas(mandelbrotModel);
52          this.mandelbrotController = new MandelbrotController(mandelbrotModel, this);
53  
54          JSeparator separator = new JSeparator();
55          rootPane.setLayout(layout);
56          rootPane.add(panelSubtitle);
57          rootPane.add(canvas);
58          rootPane.add(panelCopyright);
59          rootPane.add(separator);
60          rootPane.add(panelButtons);
61          addWindowListener(this);
62          this.canvas.addMouseListener(   this);
63          showMeInit();
64          setModeSwitch();
65          this.mandelbrotController.start();
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 }