public AboutDialog()
    {
        contentPane.setBorder(DefaultUIProvider.getDefaultEmptyEtchedBorder());
        setContentPane(contentPane);
        setModal(true);
        getRootPane().setDefaultButton(buttonOK);

        try
        {
            aboutTextPane.setPage(getClass().getResource("/config/about.html"));
        }
        catch (IOException e)
        {
            LOGGER.error("Cannot get about page!", e);
        }

        aboutTextPane.setFont(DefaultUIProvider.getQuestionFont());
        aboutTextPane.addHyperlinkListener(new HyperlinkListener()
        {
            @Override
            public void hyperlinkUpdate(HyperlinkEvent e)
            {
                if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED)
                {
                    Desktop desktop = Desktop.isDesktopSupported() ? Desktop.getDesktop() : null;
                    if (desktop != null && desktop.isSupported(Desktop.Action.BROWSE))
                    {
                        try
                        {
                            desktop.browse(e.getURL().toURI());
                        }
                        catch (Exception e1)
                        {
                            LOGGER.error("Cannot open URL!", e1);
                        }
                    }
                }
            }
        });

        contentPane.registerKeyboardAction(new ActionListener()
        {
            public void actionPerformed(ActionEvent e)
            {
                onOK();
            }
        }, KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);

        buttonOK.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent e)
            {
                onOK();
            }
        });

        setSize(400, 300);
    }