public AboutDialog(JFrame parent) {
		super(parent, "About Sinalgo", true);
		GuiHelper.setWindowIcon(this);
		
		this.setLayout(new BorderLayout());
		//this.setResizable(false);
		this.setPreferredSize(new Dimension(600, 300));
		
		JEditorPane html = new JEditorPane();
		html.setContentType("text/html");
		html.setText("" +
				"<html>" +
				"<head>" +
				"<title>Sinalgo</title>" +
				"<style type='text/css'>" +
				"<!--" +
				"body { font-family: Verdana, Arial, Helvetica, sans-serif; }" +
				"h1 { color:#000077; } " +
				".red { color: rgb(160, 0, 0);} " +
				"-->" +
				"</style>" +
				"</head>" +
				"<body>" +
				"<center><h1><span class='red'>Si</span>mulator for <span class='red'>N</span>etwork <span class='red'>Algo</span>rithms</h1></center>" +
				"" +
				"<center>Version " + Configuration.versionString + "</center><center><small><a href='TestVersion'>Test for newer version</a></small></center>" +  
				"<p>Visit <a href='http://sourceforge.net/projects/sinalgo'>http://sourceforge.net/projects/sinalgo</a> to obtain the latest version, report bugs or problems, " +
				"and visit <a href='http://dcg.ethz.ch/projects/sinalgo'>http://dcg.ethz.ch/projects/sinalgo</a> for a documentation of Sinalgo" +
				"<p>" +
				"Sinalgo is brought to you by the Distributed Computing Group of ETH Zurich <a href='http://dcg.ethz.ch'>http://dcg.ethz.ch</a>" +
				"<p>" +
				"<small>Hint: Click on a link to copy it to the clip board.</small>" +
				"</body>" +
				"</html>");
		html.setEditable(false);
		html.setBackground(this.getBackground());
		this.add(html);
		
		html.addHyperlinkListener(new HyperlinkListener() {
			public void hyperlinkUpdate(HyperlinkEvent e) { 
				if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) { 
					if(e.getDescription().equals("TestVersion")) {
						VersionTester.testVersion(false, true);
						return;
					}
					Clipboard cp = Toolkit.getDefaultToolkit().getSystemClipboard();
					cp.setContents(new StringSelection(e.getDescription()), null);
// With Java 1.6, we could open the 'default' browser
//					Desktop dt = Desktop.getDesktop();
//					try {
//						dt.browse(url.toURI());
//					} catch (IOException e1) {
//						// TODO Auto-generated catch block
//						e1.printStackTrace();
//					} catch (URISyntaxException e1) {
//						// TODO Auto-generated catch block
//						e1.printStackTrace();
//					}
				} 
			}
		});
		
		// The close button
		JPanel buttons = new JPanel();
		JButton closeButton = new JButton("Close");
		closeButton.addActionListener(this);
		buttons.add(closeButton);

		// Detect ESCAPE button
		KeyboardFocusManager focusManager = KeyboardFocusManager.getCurrentKeyboardFocusManager();
		focusManager.addKeyEventPostProcessor(new KeyEventPostProcessor() {
			public boolean postProcessKeyEvent(KeyEvent e) {
				if(!e.isConsumed() && e.getID() == KeyEvent.KEY_PRESSED && e.getKeyCode() == KeyEvent.VK_ESCAPE) {
					AboutDialog.this.setVisible(false);
				}
				return false;
			}
		});
		
		
		this.add(BorderLayout.SOUTH, buttons);
		this.getRootPane().setDefaultButton(closeButton);
				
		this.pack();
		this.setLocationRelativeTo(parent);
		this.setVisible(true);
	}