/***************************************************
 * Copyright 2007 by Simran Gleason                *
 * This program is distributed under the terms     *
 * of the GNU General Public License.              *
 * See kepler.Kepler.LICENSE_TEXT or               *
 * http://www.gnu.org/licenses/gpl.txt             *
 ***************************************************/

package kepler;


import java.awt.Dimension;
import java.awt.GridBagLayout;
import java.awt.GridBagConstraints;
import java.awt.Insets;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JSlider;
import javax.swing.JToggleButton;
import javax.swing.JLabel;
import javax.swing.border.EmptyBorder;
import javax.swing.border.MatteBorder;

public class MissionControlPanel extends ControlPanel {



    public void worldRead() {
        setFriction(orrery.getFriction());
        setGravityFactor(orrery.getGravityFactorBody());
        setRepulsionFactor(orrery.getRepelFactorBody());
    }
    /**
     * override this to receive indication that a new world has started
     */
    public void dawnOfCreation() {
    }

    /**
     * override this to receive indication that a world has met its demise
     */
    public void endOfTheWorld() {
    }

    /**
     * This method initializes trailsCheck      
     *  
     * @return javax.swing.JCheckBox    
     */
    private JToggleButton getTrailsCheck() {
        if (trailsCheck == null) {
            String buttonImage = "images/trails_off.gif";
            String buttonPressedImage = "images/trails_on.gif";
            if (kepler.kioskMode()) {
                buttonImage = "images/trails_off_kiosk.gif";
                buttonPressedImage = "images/trails_on_kiosk.gif";
            }
            trailsCheck = new JToggleButton(Kepler.createImageIcon(buttonImage,
                                                                   "Turn on trails"));
            ImageIcon pressedIcon = Kepler.createImageIcon(buttonPressedImage,
                                                           "Turn off trails");
            trailsCheck.setBorderPainted(false);
            trailsCheck.setPressedIcon(pressedIcon);
            trailsCheck.setSelectedIcon(pressedIcon);
            trailsCheck.setMargin(new Insets(0, 0, 0, 0));
            trailsCheck.setContentAreaFilled(false);

            //trailsCheck.setText("Trails");
            //trailsCheck.setForeground(orrery.controlPanelFG);
            trailsCheck.setBackground(orrery.controlPanelBG);
            trailsCheck.addChangeListener(new javax.swing.event.ChangeListener() {
                    public void stateChanged(javax.swing.event.ChangeEvent e) {
                        System.out.println("Trails: stateChanged(): " + trailsCheck.isSelected()); // TODO Auto-generated Event stub stateChanged()
                        kepler.setTrails(trailsCheck.isSelected());
                    }
                });
        }
        return trailsCheck;
    }

    /**
     * This method initializes forceFieldCheck  
     *  
     * @return javax.swing.JCheckBox    
     */
    private JToggleButton getForceFieldCheck() {
        if (forceFieldCheck == null) {
            String buttonImage = "images/forcefield_off.gif";
            String buttonPressedImage = "images/forcefield_on.gif";
            if (kepler.kioskMode()) {
                buttonImage = "images/forcefield_off_kiosk.gif";
                buttonPressedImage = "images/forcefield_on_kiosk.gif";
            }
            forceFieldCheck = new JToggleButton(Kepler.createImageIcon(buttonImage,
                                                                       "Turn on force field"));
            ImageIcon pressedIcon = Kepler.createImageIcon(buttonPressedImage,
                                                           "Turn off force field");
            forceFieldCheck.setBorderPainted(false);
            forceFieldCheck.setPressedIcon(pressedIcon);
            forceFieldCheck.setSelectedIcon(pressedIcon);
            forceFieldCheck.setMargin(new Insets(0, 0, 0, 0));
            forceFieldCheck.setContentAreaFilled(false);

            forceFieldCheck.addChangeListener(new javax.swing.event.ChangeListener() {
                    public void stateChanged(javax.swing.event.ChangeEvent e) {
                        System.out.println("Force Field: stateChanged(): " + forceFieldCheck.isSelected()); // TODO Auto-generated Event stub stateChanged()
                        orrery.setShowForceField(forceFieldCheck.isSelected());
                    }
                });       
        }
        return forceFieldCheck;
    }

    /**
     * This method initializes bodyForceCheck   
     *  
     * @return javax.swing.JCheckBox    
     */
    private JToggleButton getBodyForceCheck() {
        if (bodyForceCheck == null) {
            String buttonImage = "images/bodyforces_off.gif";
            String buttonPressedImage = "images/bodyforces_on.gif";
            if (kepler.kioskMode()) {
                buttonImage = "images/bodyforces_off_kiosk.gif";
                buttonPressedImage = "images/bodyforces_on_kiosk.gif";
            }
            bodyForceCheck = new JToggleButton(Kepler.createImageIcon(buttonImage,
                                                                      "Turn on force field"));
            ImageIcon pressedIcon = Kepler.createImageIcon(buttonPressedImage,
                                                           "Turn off force field");
            bodyForceCheck.setBorderPainted(false);
            bodyForceCheck.setPressedIcon(pressedIcon);
            bodyForceCheck.setSelectedIcon(pressedIcon);
            bodyForceCheck.setMargin(new Insets(0, 0, 0, 0));
            bodyForceCheck.setContentAreaFilled(false);
            bodyForceCheck.addChangeListener(new javax.swing.event.ChangeListener() {
                    public void stateChanged(javax.swing.event.ChangeEvent e) {
                        System.out.println("bodyForce: stateChanged(): " + bodyForceCheck.isSelected()); // TODO Auto-generated Event stub stateChanged()
                        orrery.setShowBodyForces(bodyForceCheck.isSelected());
                    }
                });      
        }
        return bodyForceCheck;
    }

    /**
     * This method initializes pauseCheck       
     *  
     * @return javax.swing.JCheckBox    
     */
    private JToggleButton getPauseCheck() {
        if (pauseCheck == null) {
            String buttonImage = "images/pause.gif";
            String buttonPressedImage = "images/play.gif";
            if (kepler.kioskMode()) {
                buttonImage = "images/pause_kiosk.gif";
                buttonPressedImage = "images/play_kiosk.gif";
            }
            pauseCheck = new JToggleButton(Kepler.createImageIcon(buttonImage, "Pause"));
            ImageIcon pressedIcon = Kepler.createImageIcon(buttonPressedImage, "Play");
            pauseCheck.setBorderPainted(false);
            pauseCheck.setPressedIcon(pressedIcon);
            pauseCheck.setSelectedIcon(pressedIcon);
            pauseCheck.setMargin(new Insets(0, 0, 0, 0));
            pauseCheck.setContentAreaFilled(false);
            pauseCheck.addChangeListener(new javax.swing.event.ChangeListener() {
                    public void stateChanged(javax.swing.event.ChangeEvent e) {
                        orrery.setPause(pauseCheck.isSelected());
                    }
                });      
        }
        return pauseCheck;
    }

    /**
     * This method initializes muteCheck        
     *  
     * @return javax.swing.JCheckBox    
     */
    private JToggleButton getMuteCheck() {
        if (muteCheck == null) {
            String buttonImage = "images/mute_off.gif";
            String buttonPressedImage = "images/mute_on.gif";
            if (kepler.kioskMode()) {
                buttonImage = "images/mute_off_kiosk.gif";
                buttonPressedImage = "images/mute_on_kiosk.gif";
            }
            muteCheck = new JToggleButton(Kepler.createImageIcon(buttonImage, "Turn on force field"));
            ImageIcon pressedIcon = Kepler.createImageIcon(buttonPressedImage, "Turn off force field");
            muteCheck.setBorderPainted(false);
            muteCheck.setPressedIcon(pressedIcon);
            muteCheck.setSelectedIcon(pressedIcon);
            muteCheck.setMargin(new Insets(0, 0, 0, 0));
            muteCheck.setContentAreaFilled(false);

            muteCheck.addChangeListener(new javax.swing.event.ChangeListener() {
                    public void stateChanged(javax.swing.event.ChangeEvent e) {
                        orrery.setMuted(muteCheck.isSelected());
                    }
                });     
        }
        return muteCheck;
    }

    /**
     * This method initializes fullScreenCheck  
     *  
     * @return javax.swing.JCheckBox    
     */
    private JToggleButton getFullScreenCheck() {
        if (fullScreenCheck == null) {
            String buttonImage = "images/fullscreen_off.gif";
            String buttonPressedImage = "images/fullscreen_on.gif";
            if (kepler.kioskMode()) {
                buttonImage = "images/fullscreen_off_kiosk.gif";
                buttonPressedImage = "images/fullscreen_on_kiosk.gif";
            }
            fullScreenCheck = new JToggleButton(Kepler.createImageIcon(buttonImage, "Turn on full screen"));
            ImageIcon pressedIcon = Kepler.createImageIcon(buttonPressedImage, "Turn off full screen");
            fullScreenCheck.setBorderPainted(false);
            fullScreenCheck.setPressedIcon(pressedIcon);
            fullScreenCheck.setSelectedIcon(pressedIcon);
            fullScreenCheck.setMargin(new Insets(0, 0, 0, 0));
            fullScreenCheck.setContentAreaFilled(false);
            fullScreenCheck.addChangeListener(new javax.swing.event.ChangeListener() {
                    public void stateChanged(javax.swing.event.ChangeEvent e) {
                        kepler.setFullScreen(fullScreenCheck.isSelected());
                    }
                });     
        }
        return fullScreenCheck;
    }

    /**
     * This method initializes fullScreenCheck  
     *  
     * @return javax.swing.JCheckBox    
     */
    private JButton getRestartButton() {
        if (restartButton == null) {
            String buttonImage = "images/RestartWorld.gif";
            String buttonPressedImage = "images/RestartWorld_pressed.gif";
            if (kepler.kioskMode()) {
                buttonImage = "images/RestartWorld_kiosk.gif";
                buttonPressedImage = "images/RestartWorld_kiosk_pressed.gif";
            }
            restartButton = new JButton(Kepler.createImageIcon(buttonImage, "RestartWorld"));
            ImageIcon pressedIcon = Kepler.createImageIcon(buttonPressedImage, "Turn off full screen");
            restartButton.setBorderPainted(false);
            restartButton.setPressedIcon(pressedIcon);
            restartButton.setSelectedIcon(pressedIcon);
            restartButton.setMargin(new Insets(0, 0, 0, 0));
            restartButton.setContentAreaFilled(false);
            restartButton.addActionListener(new java.awt.event.ActionListener() {
                    public void actionPerformed(java.awt.event.ActionEvent e) {
                        kepler.restartWorld();
                    }
                });     
        }
        return restartButton;
    }

    /**
     * This method initializes fullScreenCheck  
     *  
     * @return javax.swing.JCheckBox    
     */
    private JButton getNextWorldButton() {
        if (nextWorldButton == null) {
            String buttonImage = "images/NextWorld.gif";
            String buttonPressedImage = "images/NextWorld_pressed.gif";
            if (kepler.kioskMode()) {
                buttonImage = "images/NextWorld_kiosk.gif";
                buttonPressedImage = "images/NextWorld_kiosk_pressed.gif";
            }
            nextWorldButton = new JButton(Kepler.createImageIcon(buttonImage, "RestartWorld"));
            ImageIcon pressedIcon = Kepler.createImageIcon(buttonPressedImage, "Turn off full screen");
            nextWorldButton.setBorderPainted(false);
            nextWorldButton.setPressedIcon(pressedIcon);
            nextWorldButton.setSelectedIcon(pressedIcon);
            nextWorldButton.setMargin(new Insets(0, 0, 0, 0));
            nextWorldButton.setContentAreaFilled(false);
            nextWorldButton.addActionListener(new java.awt.event.ActionListener() {
                    public void actionPerformed(java.awt.event.ActionEvent e) {
                        kepler.playNext();
                    }
                });     
        }
        return nextWorldButton;
    }

}  //  @jve:decl-index=0:visual-constraint="543,9"
