2 * Sixth 3D engine. Author: Svjatoslav Agejenko.
3 * This project is released under Creative Commons Zero (CC0) license.
8 package eu.svjatoslav.sixth.e3d.gui;
12 import java.awt.event.ComponentEvent;
13 import java.awt.event.ComponentListener;
14 import java.awt.event.WindowEvent;
15 import java.awt.event.WindowListener;
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 if (getViewPanel() != null) {
93 getViewPanel().stop();
94 getViewPanel().setEnabled(false);
95 getViewPanel().setVisible(false);
101 public java.awt.Dimension getPreferredSize() {
102 return new java.awt.Dimension(640, 480);
108 public ViewPanel getViewPanel() {
113 public void windowActivated(final WindowEvent e) {
114 viewPanel.repaintDuringNextViewUpdate();
118 public void windowClosed(final WindowEvent e) {
122 public void windowClosing(final WindowEvent e) {
126 public void windowDeactivated(final WindowEvent e) {
130 public void windowDeiconified(final WindowEvent e) {
131 viewPanel.repaintDuringNextViewUpdate();
135 public void windowIconified(final WindowEvent e) {
139 public void windowOpened(final WindowEvent e) {
140 viewPanel.repaintDuringNextViewUpdate();