View Javadoc

    1   package nl.tudelft.simulation.dsol.gui.windows;
    2
    3   import java.awt.BorderLayout;
    4   import java.awt.Dimension;
    5   import java.awt.event.ActionEvent;
    6   import java.net.URL;
    7
    8   import javax.swing.AbstractAction;
    9   import javax.swing.JFrame;
    10  import javax.swing.JLabel;
    11  import javax.swing.JOptionPane;
    12  import javax.swing.JPanel;
    13  import javax.swing.JTextField;
    14  import javax.swing.border.BevelBorder;
    15  import javax.swing.border.CompoundBorder;
    16  import javax.swing.border.EmptyBorder;
    17
    18  import nl.tudelft.simulation.dsol.experiment.Experiment;
    19  import nl.tudelft.simulation.dsol.gui.DSOLApplicationInterface;
    20  import nl.tudelft.simulation.dsol.gui.panels.GUIExperimentParsingThread;
    21  import nl.tudelft.simulation.event.EventInterface;
    22  import nl.tudelft.simulation.event.EventListenerInterface;
    23
    24  /***
    25   * The URLChooserFrame provides an addess bar for the selection of an URL
    26   */
    27  public class URLChooserFrame extends JFrame implements EventListenerInterface
    28  {
    29
    30  	/*** The address text field. */
    31  	private JTextField addressField;
    32
    33  	/*** the DSOL application */
    34  	private DSOLApplicationInterface application = null;
    35
    36
    37  	/***
    38  	 * Creates a new empty HTML panel.
    39  	 *
    40  	 * @param application application
    41  	 */
    42  	public URLChooserFrame(final DSOLApplicationInterface application)
    43  	{
    44  		super("Enter the URL of an experiment");
    45  		this.setLocation(100, 150);
    46  		this.application = application;
    47  		this.initialize();
    48  	}
    49
    50  	/***
    51  	 * initializes the URLChooserFrame
    52  	 */
    53  	private void initialize()
    54  	{
    55  		JPanel contentPane = new JPanel(new BorderLayout());
    56  		JPanel addressPanel = new JPanel(new BorderLayout());
    57  		contentPane.add(addressPanel, BorderLayout.CENTER);
    58  		JPanel addressBar = new JPanel(new BorderLayout());
    59  		addressBar.setBorder(new CompoundBorder(new BevelBorder(
    60  				BevelBorder.RAISED), new EmptyBorder(2, 2, 2, 2)));
    61  		addressPanel.add(addressBar, BorderLayout.CENTER);
    62  		addressBar.add(new JLabel("Address: "), BorderLayout.WEST);
    63  		this.addressField = new JTextField();
    64  		this.addressField.addActionListener(new AddressEntered(this));
    65  		addressBar.add(this.addressField, BorderLayout.CENTER);
    66  		addressPanel.setPreferredSize(new Dimension(600, (int) addressBar
    67  				.getPreferredSize().getHeight()));
    68  		this.setContentPane(contentPane);
    69  		this.pack();
    70  		this.setVisible(true);
    71  	}
    72
    73  	/***
    74  	 * gets addressField
    75  	 *
    76  	 * @return Returns the addressField.
    77  	 */
    78  	protected JTextField getAddressField()
    79  	{
    80  		return this.addressField;
    81  	}
    82
    83  	/***
    84  	 * gets application
    85  	 *
    86  	 * @return Returns the application.
    87  	 */
    88  	protected DSOLApplicationInterface getApplication()
    89  	{
    90  		return this.application;
    91  	}
    92
    93  	/***
    94  	 * Responds to an address change.
    95  	 */
    96  	private class AddressEntered extends AbstractAction
    97  	{
    98
    99  		/*** the URLChooserFrame */
    100 		private URLChooserFrame frame = null;
    101
    102 		/***
    103 		 * constructs a new AddressEntered
    104 		 *
    105 		 * @param frame the frame
    106 		 */
    107 		public AddressEntered(final URLChooserFrame frame)
    108 		{
    109 			this.frame = frame;
    110 		}
    111
    112 		/***
    113 		 * @see java.awt.event.ActionListener
    114 		 *      #actionPerformed(java.awt.event.ActionEvent)
    115 		 */
    116 		public void actionPerformed(final ActionEvent event)
    117 		{
    118 			URLChooserFrame.this.dispose();
    119 			String address = this.frame.getAddressField().getText();
    120 			try
    121 			{
    122 				if (address.indexOf("://") == -1)
    123 				{
    124 					address = "http://" + address;
    125 				}
    126 				URL url = new URL(address);
    127 				new GUIExperimentParsingThread(this.frame, this.frame, url)
    128 						.start();
    129 			} catch (Exception exception)
    130 			{
    131 				JOptionPane.showMessageDialog(URLChooserFrame.this,
    132 						exception.getClass().getName()
    133 								.substring(
    134 										exception.getClass().getName()
    135 												.lastIndexOf(".") + 1)
    136 								+ " occurred while connecting to "
    137 								+ address
    138 								+ ".\n", "Error", JOptionPane.ERROR_MESSAGE);
    139 				return;
    140 			}
    141 		}
    142 	}
    143
    144 	/***
    145 	 * @see nl.tudelft.simulation.event.EventListenerInterface
    146 	 *      #notify(nl.tudelft.simulation.event.EventInterface)
    147 	 */
    148 	public void notify(final EventInterface event)
    149 	{
    150 		this.application.setExperiment((Experiment) event.getContent());
    151 	}
    152 }