2 * Sixth 3D engine. Author: Svjatoslav Agejenko.
3 * This project is released under Creative Commons Zero (CC0) license.
5 package eu.svjatoslav.sixth.e3d.gui;
9 import java.awt.event.ComponentEvent;
10 import java.awt.event.ComponentListener;
11 import java.awt.event.WindowEvent;
12 import java.awt.event.WindowListener;
15 * Java Swing GUI frame that contains {@link ViewPanel} with canvas for 3D rendering.
17 public class ViewFrame extends JFrame implements WindowListener {
19 private static final long serialVersionUID = -7037635097739548470L;
21 private final ViewPanel viewPanel;
24 setTitle("3D engine");
26 addWindowListener(new java.awt.event.WindowAdapter() {
28 public void windowClosing(final java.awt.event.WindowEvent e) {
33 viewPanel = new ViewPanel();
40 setExtendedState(JFrame.MAXIMIZED_BOTH);
44 addWindowListener(this);
47 private void addResizeListener() {
48 addComponentListener(new ComponentListener() {
49 // This method is called after the component's size changes
51 public void componentHidden(final ComponentEvent e) {
55 public void componentMoved(final ComponentEvent e) {
59 public void componentResized(final ComponentEvent evt) {
61 final Component c = (Component) evt.getSource();
64 final Dimension newSize = c.getSize();
66 boolean sizeFixed = false;
68 if (newSize.width < 400) {
73 if (newSize.height < 400) {
84 public void componentShown(final ComponentEvent e) {
85 viewPanel.repaintDuringNextViewUpdate();
92 * Exit the application.
95 if (getViewPanel() != null) {
96 getViewPanel().stop();
97 getViewPanel().setEnabled(false);
98 getViewPanel().setVisible(false);
104 public java.awt.Dimension getPreferredSize() {
105 return new java.awt.Dimension(640, 480);
111 public ViewPanel getViewPanel() {
116 public void windowActivated(final WindowEvent e) {
117 viewPanel.repaintDuringNextViewUpdate();
121 public void windowClosed(final WindowEvent e) {
125 public void windowClosing(final WindowEvent e) {
129 public void windowDeactivated(final WindowEvent e) {
133 * Repaint the view when the window is deiconified.
135 * Deiconified means that the window is restored from minimized state.
138 public void windowDeiconified(final WindowEvent e) {
139 viewPanel.repaintDuringNextViewUpdate();
143 * Do nothing when the window is iconified.
145 * Iconified means that the window is minimized.
146 * @param e the event to be processed
149 public void windowIconified(final WindowEvent e) {
153 public void windowOpened(final WindowEvent e) {
154 viewPanel.repaintDuringNextViewUpdate();