/* * HelpOverviewDialog.java * * This file is part of TDA - Thread Dump Analysis Tool. * * TDA is free software; you can redistribute it and/or modify * it under the terms of the Lesser GNU General Public License as published by * the Free Software Foundation; either version 2.1 of the License, or * (at your option) any later version. * * TDA is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * Lesser GNU General Public License for more details. * * You should have received a copy of the Lesser GNU General Public License * along with TDA; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * * $Id: HelpOverviewDialog.java,v 1.11 2008-01-20 12:00:40 irockel Exp $ */ package com.pironet.tda; import com.pironet.tda.utils.Browser; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Image; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JEditorPane; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.event.HyperlinkEvent; import javax.swing.event.HyperlinkListener; /** * * @author irockel */ public class HelpOverviewDialog extends JDialog { private JEditorPane htmlView; private JPanel buttonPanel; private JButton closeButton; private String file; /** * Creates a new instance of HelpOverviewDialog */ public HelpOverviewDialog(JFrame owner, String title, String file, Image icon) { super(owner, title); setFile(file); if(icon != null) { try { this.setIconImage(icon); } catch (NoSuchMethodError nsme) { // ignore, for 1.4 backward compatibility } } getContentPane().setLayout(new BorderLayout()); initPanel(); setLocationRelativeTo(owner); } private void initPanel() { try { URL tutURL = HelpOverviewDialog.class.getResource(getFile()); htmlView = new JEditorPane(tutURL); } catch (MalformedURLException ex) { ex.printStackTrace(); } catch (IOException ex) { ex.printStackTrace(); } htmlView.addHyperlinkListener( new HyperlinkListener() { public void hyperlinkUpdate(HyperlinkEvent evt) { // if a link was clicked if(evt.getEventType()==HyperlinkEvent.EventType.ACTIVATED) { try { if(evt.getURL().toString().indexOf("#") >= 0) { // show internal anchors in editor pane. htmlView.setPage(evt.getURL()); } else { // launch a browser with the appropriate URL Browser.open(evt.getURL().toString()); } } catch(InterruptedException e) { System.out.println("Error launching external browser."); } catch(IOException e) { System.out.println("I/O error launching external browser." + e.getMessage()); e.printStackTrace(); } } } }); JScrollPane scrollPane = new JScrollPane(htmlView); htmlView.setEditable(false); htmlView.setPreferredSize(new Dimension(780, 600)); htmlView.setCaretPosition(0); getContentPane().add(scrollPane, BorderLayout.CENTER); closeButton = new JButton("Close"); buttonPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT)); buttonPanel.add(closeButton); getContentPane().add(buttonPanel, BorderLayout.SOUTH); closeButton.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { dispose(); } }); getRootPane().setDefaultButton(closeButton); } //Must be called from the event-dispatching thread. public void resetFocus() { //searchField.requestFocusInWindow(); } private String getFile() { return(file); } private void setFile(String value) { file = value; } }