View Javadoc

1   /*
2    * @(#) CloseExperiment.java Oct 23, 2003
3    * 
4    * Copyright (c) 2002-2005 Delft University of Technology Jaffalaan 5, 2628 BX
5    * Delft, the Netherlands. All rights reserved.
6    * 
7    * This software is proprietary information of Delft University of Technology
8    * The code is published under the Lesser General Public License
9    */
10  package nl.tudelft.simulation.dsol.gui.menu.actions;
11  
12  import java.awt.event.ActionEvent;
13  import java.awt.event.InputEvent;
14  import java.awt.event.KeyEvent;
15  import java.rmi.RemoteException;
16  
17  import javax.swing.AbstractAction;
18  import javax.swing.Action;
19  import javax.swing.KeyStroke;
20  
21  import nl.tudelft.simulation.dsol.gui.DSOLApplicationInterface;
22  import nl.tudelft.simulation.event.Event;
23  import nl.tudelft.simulation.event.EventInterface;
24  import nl.tudelft.simulation.event.EventListenerInterface;
25  import nl.tudelft.simulation.logger.Logger;
26  
27  /***
28   * The CloseExperiment action <br>
29   * (c) copyright 2002-2005 <a href="http://www.simulation.tudelft.nl">Delft
30   * University of Technology </a>, the Netherlands. <br>
31   * See for project information <a
32   * href="http://www.simulation.tudelft.nl">www.simulation.tudelft.nl </a> <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">Peter Jacobs </a>
38   */
39  public class CloseExperimentAction extends AbstractAction implements
40  		EventListenerInterface
41  {
42  	/*** the parent */
43  	private DSOLApplicationInterface application = null;
44  
45  	/***
46  	 * constructs a new OpenFileAction
47  	 * 
48  	 * @param application the parent application
49  	 */
50  	public CloseExperimentAction(final DSOLApplicationInterface application)
51  	{
52  		super("Close");
53  		this.application = application;
54  		this.putValue(Action.MNEMONIC_KEY, new Integer('s'));
55  		this.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(
56  				KeyEvent.VK_F4, InputEvent.CTRL_DOWN_MASK));
57  		this.setEnabled(false);
58  		try
59  		{
60  			this.application.addListener(this,
61  					DSOLApplicationInterface.EXPERIMENT_CHANGED_EVENT);
62  			this.notify(new Event(
63  					DSOLApplicationInterface.EXPERIMENT_CHANGED_EVENT,
64  					this.application, this.application.getExperiment()));
65  		} catch (RemoteException exception)
66  		{
67  			Logger.warning(this, "CloseExperimentAction", exception);
68  		}
69  	}
70  
71  	/***
72  	 * @see java.awt.event.ActionListener
73  	 *      #actionPerformed(java.awt.event.ActionEvent)
74  	 */
75  	public void actionPerformed(final ActionEvent event)
76  	{
77  		this.application.setExperiment(null);
78  	}
79  
80  	/***
81  	 * @see nl.tudelft.simulation.event.EventListenerInterface
82  	 *      #notify(nl.tudelft.simulation.event.EventInterface)
83  	 */
84  	public void notify(final EventInterface event)
85  	{
86  		if (event.getSource().equals(this.application)
87  				&& event.getType().equals(
88  						DSOLApplicationInterface.EXPERIMENT_CHANGED_EVENT))
89  		{
90  			if (event.getContent() == null)
91  			{
92  				this.setEnabled(false);
93  			} else
94  			{
95  				this.setEnabled(true);
96  			}
97  		}
98  	}
99  }