View Javadoc

    1   /*
    2    * @(#) GridPanel.java Oct 26, 2003
    3    *
    4    * Copyright (c) 2002-2005 Erasmus University Rotterdam Rotterdam, the
    5    * Netherlands All rights reserved.
    6    *
    7    * This software is proprietary information of Erasmus University The code is
    8    * published under the General Public License
    9    */
    10  package nl.tudelft.simulation.dsol.gui.animation2D;
    11
    12  import java.awt.BorderLayout;
    13  import java.awt.Dimension;
    14  import java.awt.FlowLayout;
    15  import java.awt.geom.Rectangle2D;
    16
    17  import javax.swing.JButton;
    18  import javax.swing.JFrame;
    19  import javax.swing.JPanel;
    20
    21  import nl.tudelft.simulation.dsol.gui.DSOLApplicationInterface;
    22  import nl.tudelft.simulation.dsol.gui.animation2D.actions.HomeAction;
    23  import nl.tudelft.simulation.dsol.gui.animation2D.actions.PanDownAction;
    24  import nl.tudelft.simulation.dsol.gui.animation2D.actions.PanLeftAction;
    25  import nl.tudelft.simulation.dsol.gui.animation2D.actions.PanRightAction;
    26  import nl.tudelft.simulation.dsol.gui.animation2D.actions.PanUpAction;
    27  import nl.tudelft.simulation.dsol.gui.animation2D.actions.ShowGridAction;
    28  import nl.tudelft.simulation.dsol.gui.animation2D.actions.ZoomInAction;
    29  import nl.tudelft.simulation.dsol.gui.animation2D.actions.ZoomOutAction;
    30
    31  /***
    32   * The AnimationFrame <br>
    33   * License of use: <a href="http://www.gnu.org/copyleft/lesser.html">Lesser
    34   * General Public License (LGPL) </a>, no warranty.
    35   *
    36   * @version $Revision$ $Date$
    37   * @author <a href="http://www.tbm.tudelft.nl/webstaf/peterja/index.htm">Peter
    38   *         Jacobs </a>
    39   */
    40  public class AnimationFrame extends JFrame
    41  {
    42  	/***
    43  	 * Constructor for AnimationFrame.
    44  	 *
    45  	 * @param application the application
    46  	 */
    47  	public AnimationFrame(final DSOLApplicationInterface application)
    48  	{
    49  		this("Animation window", application);
    50  	}
    51
    52  	/***
    53  	 * Constructor for AnimationFrame.
    54  	 *
    55  	 * @param name the name of the frame
    56  	 * @param application the application
    57  	 */
    58  	public AnimationFrame(final String name,
    59  			final DSOLApplicationInterface application)
    60  	{
    61  		super(name);
    62  		this.getContentPane().setLayout(new BorderLayout());
    63  		Rectangle2D extent = null;
    64  		String extentString = application.getProperties().getProperty(
    65  				"dsol-gui.animation.panel.extent");
    66  		if (extentString != null)
    67  		{
    68  			double[] values = new double[4];
    69  			for (int i = 0; i < 3; i++)
    70  			{
    71  				values[i] = new Double(extentString.substring(0, extentString
    72  						.indexOf(";"))).doubleValue();
    73  				extentString = extentString
    74  						.substring(extentString.indexOf(";") + 1);
    75  			}
    76  			values[3] = new Double(extentString).doubleValue();
    77  			extent = new Rectangle2D.Double(values[0], values[1], values[2],
    78  					values[3]);
    79  		} else
    80  		{
    81  			extent = new Rectangle2D.Double(-100, -100, 200, 200);
    82  		}
    83  		String sizeString = application.getProperties().getProperty(
    84  				"dsol-gui.animation.panel.size");
    85  		Dimension size = new Dimension(600, 600);
    86  		if (sizeString != null)
    87  		{
    88  			double width = new Double(sizeString.substring(0, sizeString
    89  					.indexOf(";"))).doubleValue();
    90  			double height = new Double(sizeString.substring(sizeString
    91  					.indexOf(";") + 1)).doubleValue();
    92  			size = new Dimension((int) width, (int) height);
    93  		}
    94  		AnimationPanel panel = new AnimationPanel(extent, size, application);
    95  		this.getContentPane().add(panel, BorderLayout.CENTER);
    96  		this.getContentPane().add(new ButtonPanel(panel), BorderLayout.SOUTH);
    97  		this.pack();
    98  		this.setVisible(true);
    99  		panel.requestFocus();
    100 	}
    101
    102 	/***
    103 	 * The ButtonPanel class
    104 	 */
    105 	public static class ButtonPanel extends JPanel
    106 	{
    107 		/***
    108 		 * constructs a new ButtonPanel
    109 		 *
    110 		 * @param target the target to control
    111 		 */
    112 		public ButtonPanel(final GridPanel target)
    113 		{
    114 			this.setLayout(new FlowLayout(FlowLayout.CENTER, 1, 1));
    115
    116 			JButton zoomIn = new JButton(new ZoomInAction(target));
    117 			JButton zoomOut = new JButton(new ZoomOutAction(target));
    118 			JButton left = new JButton(new PanLeftAction(target));
    119 			JButton right = new JButton(new PanRightAction(target));
    120 			JButton up = new JButton(new PanUpAction(target));
    121 			JButton down = new JButton(new PanDownAction(target));
    122 			JButton grid = new JButton(new ShowGridAction(target));
    123 			JButton home = new JButton(new HomeAction(target));
    124 			this.add(zoomIn);
    125 			this.add(zoomOut);
    126 			this.add(left);
    127 			this.add(right);
    128 			this.add(up);
    129 			this.add(down);
    130 			this.add(grid);
    131 			this.add(home);
    132 		}
    133 	}
    134 }