/*
JWildfire - an image and animation processor written in Java
Copyright (C) 1995-2011 Andreas Maschke
This is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser
General Public License as published by the Free Software Foundation; either version 2.1 of the
License, or (at your option) any later version.
This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with this software;
if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.jwildfire.create.eden.swing;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridBagLayout;
import java.awt.event.KeyEvent;
import javax.swing.JButton;
import javax.swing.JInternalFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTabbedPane;
import javax.swing.JTextArea;
import javax.swing.WindowConstants;
import org.jwildfire.base.Prefs;
import org.jwildfire.swing.ErrorHandler;
import org.jwildfire.swing.MainController;
import org.sunflow.system.ImagePanel;
public class EDENInternalFrame extends JInternalFrame {
private static final long serialVersionUID = 1L;
private EDENController sunflowController;
private JPanel jContentPane = null;
private JPanel northPanel = null;
private JPanel southPanel = null;
private JSplitPane hSplitPane = null;
private JPanel leftSplitPanel = null;
private JPanel rightSplitPanel = null;
private JTabbedPane rightTabbedPane = null;
private JPanel editorPanel = null;
private JPanel consolePanel = null;
/**
* This is the xxx default constructor
*/
public EDENInternalFrame() {
super();
initialize();
}
/**
* This method initializes this
*
* @return void
*/
private void initialize() {
this.setSize(1188, 740);
this.setClosable(true);
this.setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE);
this.setIconifiable(true);
this.setTitle("Structure Synthesizer");
this.setVisible(false);
this.setResizable(true);
this.setContentPane(getJContentPane());
}
/**
* This method initializes jContentPane
*
* @return javax.swing.JPanel
*/
private JPanel getJContentPane() {
if (jContentPane == null) {
jContentPane = new JPanel();
try {
jContentPane.setLayout(new BorderLayout());
jContentPane.add(getNorthPanel(), BorderLayout.NORTH);
jContentPane.add(getSouthPanel(), BorderLayout.SOUTH);
jContentPane.add(getHSplitPane(), BorderLayout.CENTER);
}
catch (Throwable ex) {
// TODO
//ex.printStackTrace();
}
}
return jContentPane;
}
/**
* This method initializes northPanel
*
* @return javax.swing.JPanel
*/
private JPanel getNorthPanel() {
if (northPanel == null) {
FlowLayout flowLayout1 = new FlowLayout();
flowLayout1.setAlignment(FlowLayout.RIGHT);
northPanel = new JPanel();
northPanel.setLayout(flowLayout1);
northPanel.setPreferredSize(new Dimension(0, 36));
northPanel.add(getRenderButton(), null);
northPanel.add(getIprButton(), null);
northPanel.add(getCancelRenderButton(), null);
}
return northPanel;
}
/**
* This method initializes southPanel
*
* @return javax.swing.JPanel
*/
private JPanel getSouthPanel() {
if (southPanel == null) {
southPanel = new JPanel();
southPanel.setLayout(new GridBagLayout());
southPanel.setPreferredSize(new Dimension(0, 26));
}
return southPanel;
}
/**
* This method initializes hSplitPane
*
* @return javax.swing.JSplitPane
*/
private JSplitPane getHSplitPane() {
if (hSplitPane == null) {
hSplitPane = new JSplitPane();
hSplitPane.setDividerSize(8);
hSplitPane.setOneTouchExpandable(true);
hSplitPane.setLeftComponent(getLeftSplitPanel());
hSplitPane.setRightComponent(getRightSplitPanel());
hSplitPane.setDividerLocation(700);
}
return hSplitPane;
}
/**
* This method initializes leftSplitPanel
*
* @return javax.swing.JPanel
*/
private ImagePanel imagePanel;
private JPanel editorNorthPanel = null;
private JPanel consoleNorthPanel = null;
private JPanel consoleCenterPanel = null;
private JPanel editorCenterPanel = null;
private JButton buildSceneButton = null;
private JButton loadSceneButton = null;
private JButton renderButton = null;
private JButton cancelRenderButton = null;
private JButton iprButton = null;
private JButton saveSceneButton = null;
private JButton clearConsoleButton = null;
private JScrollPane editorScrollPane = null;
private JTextArea editorTextArea1 = null;
private JScrollPane consoleScrollPane = null;
private JTextArea consoleTextArea1 = null;
private JButton newSceneButton = null;
private JPanel getLeftSplitPanel() {
if (leftSplitPanel == null) {
leftSplitPanel = new JPanel();
leftSplitPanel.setLayout(new BorderLayout());
imagePanel = new ImagePanel();
leftSplitPanel.add(imagePanel, BorderLayout.CENTER);
}
return leftSplitPanel;
}
/**
* This method initializes rightSplitPanel
*
* @return javax.swing.JPanel
*/
private JPanel getRightSplitPanel() {
if (rightSplitPanel == null) {
rightSplitPanel = new JPanel();
rightSplitPanel.setLayout(new BorderLayout());
rightSplitPanel.add(getRightTabbedPane(), BorderLayout.CENTER);
}
return rightSplitPanel;
}
/**
* This method initializes rightTabbedPane
*
* @return javax.swing.JTabbedPane
*/
private JTabbedPane getRightTabbedPane() {
if (rightTabbedPane == null) {
rightTabbedPane = new JTabbedPane();
rightTabbedPane.addTab("Scene Editor", null, getEditorPanel(), null);
rightTabbedPane.addTab("Console", null, getConsolePanel(), null);
}
return rightTabbedPane;
}
/**
* This method initializes editorPanel
*
* @return javax.swing.JPanel
*/
private JPanel getEditorPanel() {
if (editorPanel == null) {
editorPanel = new JPanel();
editorPanel.setLayout(new BorderLayout());
editorPanel.add(getEditorNorthPanel(), BorderLayout.NORTH);
editorPanel.add(getEditorCenterPanel(), BorderLayout.CENTER);
}
return editorPanel;
}
/**
* This method initializes consolePanel
*
* @return javax.swing.JPanel
*/
private JPanel getConsolePanel() {
if (consolePanel == null) {
consolePanel = new JPanel();
consolePanel.setLayout(new BorderLayout());
consolePanel.add(getConsoleNorthPanel(), BorderLayout.NORTH);
consolePanel.add(getConsoleCenterPanel(), BorderLayout.CENTER);
}
return consolePanel;
}
/**
* This method initializes editorNorthPanel
*
* @return javax.swing.JPanel
*/
private JPanel getEditorNorthPanel() {
if (editorNorthPanel == null) {
FlowLayout flowLayout = new FlowLayout();
flowLayout.setAlignment(FlowLayout.LEFT);
editorNorthPanel = new JPanel();
editorNorthPanel.setLayout(flowLayout);
editorNorthPanel.setPreferredSize(new Dimension(0, 36));
editorNorthPanel.add(getBuildSceneButton(), null);
editorNorthPanel.add(getLoadSceneButton(), null);
editorNorthPanel.add(getSaveSceneButton(), null);
editorNorthPanel.add(getNewSceneButton(), null);
}
return editorNorthPanel;
}
/**
* This method initializes consoleNorthPanel
*
* @return javax.swing.JPanel
*/
private JPanel getConsoleNorthPanel() {
if (consoleNorthPanel == null) {
FlowLayout flowLayout2 = new FlowLayout();
flowLayout2.setAlignment(FlowLayout.LEFT);
consoleNorthPanel = new JPanel();
consoleNorthPanel.setLayout(flowLayout2);
consoleNorthPanel.setPreferredSize(new Dimension(0, 36));
consoleNorthPanel.add(getClearConsoleButton(), null);
}
return consoleNorthPanel;
}
/**
* This method initializes consoleCenterPanel
*
* @return javax.swing.JPanel
*/
private JPanel getConsoleCenterPanel() {
if (consoleCenterPanel == null) {
consoleCenterPanel = new JPanel();
consoleCenterPanel.setLayout(new BorderLayout());
consoleCenterPanel.add(getConsoleScrollPane(), BorderLayout.CENTER);
}
return consoleCenterPanel;
}
/**
* This method initializes editorCenterPanel
*
* @return javax.swing.JPanel
*/
private JPanel getEditorCenterPanel() {
if (editorCenterPanel == null) {
editorCenterPanel = new JPanel();
editorCenterPanel.setLayout(new BorderLayout());
editorCenterPanel.add(getEditorScrollPane(), BorderLayout.CENTER);
}
return editorCenterPanel;
}
/**
* This method initializes buildSceneButton
*
* @return javax.swing.JButton
*/
private JButton getBuildSceneButton() {
if (buildSceneButton == null) {
buildSceneButton = new JButton();
buildSceneButton.setPreferredSize(new Dimension(111, 26));
buildSceneButton.setMnemonic(KeyEvent.VK_B);
buildSceneButton.setText("Build Scene");
buildSceneButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
sunflowController.buildScene();
}
});
}
return buildSceneButton;
}
/**
* This method initializes loadSceneButton
*
* @return javax.swing.JButton
*/
private JButton getLoadSceneButton() {
if (loadSceneButton == null) {
loadSceneButton = new JButton();
loadSceneButton.setPreferredSize(new Dimension(111, 26));
loadSceneButton.setMnemonic(KeyEvent.VK_L);
loadSceneButton.setText("Load Scene");
loadSceneButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
sunflowController.loadScene();
}
});
}
return loadSceneButton;
}
/**
* This method initializes renderButton
*
* @return javax.swing.JButton
*/
private JButton getRenderButton() {
if (renderButton == null) {
renderButton = new JButton();
renderButton.setPreferredSize(new Dimension(141, 26));
renderButton.setMnemonic(KeyEvent.VK_R);
renderButton.setText("Render");
renderButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
sunflowController.renderScene();
}
});
}
return renderButton;
}
public void setSunflowController(EDENController sunflowController) {
this.sunflowController = sunflowController;
}
private ImagePanel getImagePanel() {
getLeftSplitPanel();
return imagePanel;
}
/**
* This method initializes cancelRenderButton
*
* @return javax.swing.JButton
*/
private JButton getCancelRenderButton() {
if (cancelRenderButton == null) {
cancelRenderButton = new JButton();
cancelRenderButton.setPreferredSize(new Dimension(141, 26));
cancelRenderButton.setText("Cancel");
cancelRenderButton.setMnemonic(KeyEvent.VK_C);
cancelRenderButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
sunflowController.cancelRendering();
}
});
}
return cancelRenderButton;
}
/**
* This method initializes iprButton
*
* @return javax.swing.JButton
*/
private JButton getIprButton() {
if (iprButton == null) {
iprButton = new JButton();
iprButton.setPreferredSize(new Dimension(141, 26));
iprButton.setText("IPR");
iprButton.setMnemonic(KeyEvent.VK_I);
iprButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
sunflowController.iprScene();
}
});
}
return iprButton;
}
/**
* This method initializes saveSceneButton
*
* @return javax.swing.JButton
*/
private JButton getSaveSceneButton() {
if (saveSceneButton == null) {
saveSceneButton = new JButton();
saveSceneButton.setPreferredSize(new Dimension(111, 26));
saveSceneButton.setText("Save Scene");
saveSceneButton.setMnemonic(KeyEvent.VK_S);
saveSceneButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
sunflowController.saveScene();
}
});
}
return saveSceneButton;
}
/**
* This method initializes clearConsoleButton
*
* @return javax.swing.JButton
*/
private JButton getClearConsoleButton() {
if (clearConsoleButton == null) {
clearConsoleButton = new JButton();
clearConsoleButton.setPreferredSize(new Dimension(141, 26));
clearConsoleButton.setText("Clear");
clearConsoleButton.setMnemonic(KeyEvent.VK_L);
clearConsoleButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
sunflowController.clearConsole();
}
});
}
return clearConsoleButton;
}
/**
* This method initializes editorScrollPane
*
* @return javax.swing.JScrollPane
*/
private JScrollPane getEditorScrollPane() {
if (editorScrollPane == null) {
editorScrollPane = new JScrollPane();
editorScrollPane.setViewportView(getEditorTextArea());
}
return editorScrollPane;
}
/**
* This method initializes editorTextArea1
*
* @return javax.swing.JTextArea
*/
private JTextArea getEditorTextArea() {
if (editorTextArea1 == null) {
editorTextArea1 = new JTextArea();
}
return editorTextArea1;
}
/**
* This method initializes consoleScrollPane
*
* @return javax.swing.JScrollPane
*/
private JScrollPane getConsoleScrollPane() {
if (consoleScrollPane == null) {
consoleScrollPane = new JScrollPane();
consoleScrollPane.setViewportView(getConsoleTextArea());
}
return consoleScrollPane;
}
/**
* This method initializes consoleTextArea1
*
* @return javax.swing.JTextArea
*/
private JTextArea getConsoleTextArea() {
if (consoleTextArea1 == null) {
consoleTextArea1 = new JTextArea();
}
return consoleTextArea1;
}
public EDENController createController(MainController pMainController, ErrorHandler pErrorHandler, Prefs pPrefs) {
sunflowController = new EDENController(pMainController, pErrorHandler, pPrefs, getEditorTextArea(), getConsoleTextArea(),
getImagePanel(), getRenderButton(), getIprButton(), getLoadSceneButton(), getCancelRenderButton(),
getBuildSceneButton(), getSaveSceneButton(), getClearConsoleButton(), getNewSceneButton());
return sunflowController;
}
/**
* This method initializes newSceneButton
*
* @return javax.swing.JButton
*/
private JButton getNewSceneButton() {
if (newSceneButton == null) {
newSceneButton = new JButton();
newSceneButton.setPreferredSize(new Dimension(111, 26));
newSceneButton.setText("New Scene");
newSceneButton.setMnemonic(KeyEvent.VK_N);
newSceneButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
sunflowController.newScene();
}
});
}
return newSceneButton;
}
} // @jve:decl-index=0:visual-constraint="10,10"