2 * Sixth 3D engine. Copyright ©2012-2019, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu
4 * This program is free software; you can redistribute it and/or
5 * modify it under the terms of version 3 of the GNU Lesser General Public License
6 * or later as published by the Free Software Foundation.
10 package eu.svjatoslav.sixth.e3d.gui;
14 import java.awt.event.ComponentEvent;
15 import java.awt.event.ComponentListener;
16 import java.awt.event.WindowEvent;
17 import java.awt.event.WindowListener;
19 public class ViewFrame extends JFrame implements WindowListener {
21 private static final long serialVersionUID = -7037635097739548470L;
23 private final ViewPanel viewPanel;
26 setTitle("3D engine");
28 addWindowListener(new java.awt.event.WindowAdapter() {
30 public void windowClosing(final java.awt.event.WindowEvent e) {
35 viewPanel = new ViewPanel();
42 setExtendedState(JFrame.MAXIMIZED_BOTH);
46 addWindowListener(this);
49 private void addResizeListener() {
50 addComponentListener(new ComponentListener() {
51 // This method is called after the component's size changes
53 public void componentHidden(final ComponentEvent e) {
57 public void componentMoved(final ComponentEvent e) {
61 public void componentResized(final ComponentEvent evt) {
63 final Component c = (Component) evt.getSource();
66 final Dimension newSize = c.getSize();
68 boolean sizeFixed = false;
70 if (newSize.width < 400) {
75 if (newSize.height < 400) {
86 public void componentShown(final ComponentEvent e) {
87 viewPanel.repaintDuringNextViewUpdate();
94 if (getViewPanel() != null) {
95 getViewPanel().stop();
96 getViewPanel().setEnabled(false);
97 getViewPanel().setVisible(false);
103 public java.awt.Dimension getPreferredSize() {
104 return new java.awt.Dimension(640, 480);
110 public ViewPanel getViewPanel() {
115 public void windowActivated(final WindowEvent e) {
116 viewPanel.repaintDuringNextViewUpdate();
120 public void windowClosed(final WindowEvent e) {
124 public void windowClosing(final WindowEvent e) {
128 public void windowDeactivated(final WindowEvent e) {
132 public void windowDeiconified(final WindowEvent e) {
133 viewPanel.repaintDuringNextViewUpdate();
137 public void windowIconified(final WindowEvent e) {
141 public void windowOpened(final WindowEvent e) {
142 viewPanel.repaintDuringNextViewUpdate();