/*
* -------------------------------------------------------------------------
* $Id: Describe.java,v 1.8 2004/05/26 18:13:18 estewart Exp $
* -------------------------------------------------------------------------
* Copyright (c) 1999 Visual Numerics Inc. All Rights Reserved.
*
* This software is confidential information which is proprietary to
* and a trade secret of Visual Numerics, Inc. Use, duplication or
* disclosure is subject to the terms of an appropriate license
* agreement.
*
* VISUAL NUMERICS MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE
* SUITABILITY OF THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING
* BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. VISUAL
* NUMERICS SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE
* AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR
* ITS DERIVATIVES.
*--------------------------------------------------------------------------
*/
package com.imsl.demo.gallery;
import java.net.URL;
import java.util.ArrayList;
import javax.swing.event.HyperlinkEvent;
/**
*
* @author brophy
* @created February 6, 2002
*/
public class Describe extends javax.swing.JDialog {
private ArrayList listURL;
private int listURLindex;
/** Creates new form Describe */
public Describe(java.awt.Frame parent, String page) {
super(parent, false);
initComponents();
listURL = new ArrayList(20);
listURLindex = 0;
setPage(page, true);
setLocation(getToolkit().getScreenSize().width-getWidth(), 0);
updateNavigationControls();
pack();
//javax.swing.JOptionPane.showMessageDialog(this,"ctor "+page);
}
public Describe(java.awt.Frame parent) {
this(parent, "intro.html");
}
/**
* @param name is the location of the page to set.
* @param reset is true if the existing naviagtion stack is to be reset.
*/
public void setPage(String name, boolean reset) {
java.net.URL url = getClass().getResource(name);
try {
jEditorPane.setPage(url);
} catch (Exception e) {
try {
jEditorPane.setPage(name);
} catch (java.io.IOException e2) {
javax.swing.JOptionPane.showMessageDialog(this,"Error loading page "+name+" "+url);
}
} finally {
if (reset) listURL.clear();
listURL.add(jEditorPane.getPage());
listURLindex = listURL.size() - 1;
updateNavigationControls();
}
}
private void updateNavigationControls() {
jButtonBack.setEnabled(listURLindex > 0);
jButtonNext.setEnabled(listURLindex < listURL.size()-1);
jPanelControl.setVisible(listURL.size() > 1);
jPanelStatus.setVisible(listURL.size() > 1);
URL url = jEditorPane.getPage();
if (url != null) jLabelStatus.setText(url.toExternalForm());
repaint();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
private void initComponents() {//GEN-BEGIN:initComponents
jScrollPane1 = new javax.swing.JScrollPane();
jEditorPane = new javax.swing.JEditorPane();
jPanelControl = new javax.swing.JPanel();
jButtonBack = new javax.swing.JButton();
jButtonNext = new javax.swing.JButton();
jPanelStatus = new javax.swing.JPanel();
jLabelStatus = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setTitle("JMSL Demo Description");
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent evt) {
formWindowClosing(evt);
}
});
jScrollPane1.setPreferredSize(new java.awt.Dimension((int)(getToolkit().getScreenSize().width-216),(int)(getToolkit().getScreenSize().height/6)));
jEditorPane.setEditable(false);
jEditorPane.setContentType("text/html");
jEditorPane.addHyperlinkListener(new javax.swing.event.HyperlinkListener() {
public void hyperlinkUpdate(javax.swing.event.HyperlinkEvent evt) {
jEditorPaneHyperlinkUpdate(evt);
}
});
jScrollPane1.setViewportView(jEditorPane);
getContentPane().add(jScrollPane1, java.awt.BorderLayout.CENTER);
jPanelControl.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jPanelControl.setBackground(new java.awt.Color(0, 0, 50));
jButtonBack.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/imsl/demo/gallery/Back16.gif")));
jButtonBack.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButtonBackActionPerformed(evt);
}
});
jPanelControl.add(jButtonBack);
jButtonNext.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/imsl/demo/gallery/Forward16.gif")));
jButtonNext.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButtonNextActionPerformed(evt);
}
});
jPanelControl.add(jButtonNext);
getContentPane().add(jPanelControl, java.awt.BorderLayout.NORTH);
jPanelStatus.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jLabelStatus.setFont(new java.awt.Font("Dialog", 0, 12));
jLabelStatus.setForeground(java.awt.Color.blue);
jLabelStatus.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
jPanelStatus.add(jLabelStatus);
getContentPane().add(jPanelStatus, java.awt.BorderLayout.SOUTH);
pack();
}//GEN-END:initComponents
private void formWindowClosing(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosing
setVisible(false);
dispose();
}//GEN-LAST:event_formWindowClosing
private void jButtonNextActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonNextActionPerformed
try {
if (listURLindex+1 == listURL.size()) return;
jEditorPane.setPage((URL)listURL.get(++listURLindex));
} catch (Exception e) {
} finally {
updateNavigationControls();
}
}//GEN-LAST:event_jButtonNextActionPerformed
private void jButtonBackActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonBackActionPerformed
try {
if (listURLindex == 0) return;
jEditorPane.setPage((URL)listURL.get(--listURLindex));
} catch (Exception e) {
} finally {
updateNavigationControls();
}
}//GEN-LAST:event_jButtonBackActionPerformed
private void jEditorPaneHyperlinkUpdate(javax.swing.event.HyperlinkEvent evt) {//GEN-FIRST:event_jEditorPaneHyperlinkUpdate
if (evt.getEventType() != HyperlinkEvent.EventType.ACTIVATED) return;
try {
for (int k = listURL.size()-1; k > listURLindex; k--) listURL.remove(k);
setPage(evt.getURL().toExternalForm(), false);
} catch (Exception e) {
} finally {
updateNavigationControls();
}
}//GEN-LAST:event_jEditorPaneHyperlinkUpdate
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
new Describe(new javax.swing.JFrame()).show();
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JPanel jPanelStatus;
private javax.swing.JLabel jLabelStatus;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JEditorPane jEditorPane;
private javax.swing.JPanel jPanelControl;
private javax.swing.JButton jButtonNext;
private javax.swing.JButton jButtonBack;
// End of variables declaration//GEN-END:variables
}