/* * ------------------------------------------------------------------------- * $Id: Driver.java,v 1.9 2003/09/17 22:02:33 brophy 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.risk; import com.imsl.stat.Covariances; import java.awt.Dimension; /** * * @author brophy * @created February 1, 2002 */ public class Driver extends javax.swing.JFrame { static private final int STEP_CHART_INTRO = 0; static private final int STEP_CHART_SERIES = 1; static private final int STEP_CHART_RETURN = 2; static private final int STEP_CHART_SIMULATE = 3; private Database db; private int step; private ChartSeries chartSeries; private ChartReturns chartReturns; private Simulate simulate; private Dimension screenSize; private boolean exitOnClose ; /** Creates new form Driver */ public Driver(boolean exitOnClose) throws Exception { this.exitOnClose = exitOnClose; initComponents(); screenSize = getToolkit().getScreenSize(); int w = Math.min(screenSize.width/2,600); //jPanelEditor.setPreferredSize(new Dimension(w, 175)); //jScrolPanel.setPreferredSize(new Dimension(w, 175)); setLocation(screenSize.width-w,0); pack(); db = new Database(); step = STEP_CHART_INTRO; update(); } public void update() { try { jButtonBack.setEnabled(step > STEP_CHART_INTRO); jButtonNext.setEnabled(step < STEP_CHART_SIMULATE); if (chartSeries != null) chartSeries.setVisible(false); if (chartReturns != null) chartReturns.setVisible(false); if (simulate != null) simulate.setVisible(false); Dimension size = getSize(); switch (step) { case STEP_CHART_INTRO: jEditorPaneDescribe.setPage(url("intro.html")); break; case STEP_CHART_SERIES: jEditorPaneDescribe.setPage(url("chartSeries.html")); if (chartSeries == null) { chartSeries = new ChartSeries(db); int h = Math.min(screenSize.width/2, screenSize.height-size.height-32); int w = (int)(h/.8); chartSeries.setSize(w, h); chartSeries.setLocation(screenSize.width/3, size.height); } chartSeries.setVisible(true); break; case STEP_CHART_RETURN: jEditorPaneDescribe.setPage(url("chartReturns.html")); if (chartReturns == null) { chartReturns = new ChartReturns(db, "spx"); int h = Math.min(screenSize.width/2, screenSize.height-size.height-32); int w = (int)(h/.8); chartReturns.setSize(w, h); chartReturns.setLocation(screenSize.width/3, size.height); } chartReturns.setVisible(true); break; case STEP_CHART_SIMULATE: jEditorPaneDescribe.setPage(url("simulate.html")); if (simulate == null) { Covariances covariance = new Covariances(db.getReturns()); double covar[][] = covariance.compute(Covariances.VARIANCE_COVARIANCE_MATRIX); simulate = new Simulate(db, covar); int h = Math.min(screenSize.width/2, screenSize.height-size.height-32); int w = (int)(h/.8); simulate.setSize(w, h); simulate.setLocation(screenSize.width/3, size.height); } simulate.setVisible(true); break; } } catch (Exception e) { javax.swing.JOptionPane.showMessageDialog(this, e.getMessage(), "Exception", javax.swing.JOptionPane.ERROR_MESSAGE); e.printStackTrace(); } } private String url(String name) { String s = "com/imsl/demo/risk/" + name; return getClass().getClassLoader().getResource(s).toExternalForm(); } /** 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 jPanel2 = new javax.swing.JPanel(); jButtonBack = new javax.swing.JButton(); jButtonNext = new javax.swing.JButton(); jScrollPane1 = new javax.swing.JScrollPane(); jEditorPaneDescribe = new javax.swing.JEditorPane(); setTitle("Risk Analysis"); addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent evt) { exitForm(evt); } }); jButtonBack.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/imsl/demo/risk/Back16.gif"))); jButtonBack.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonBackActionPerformed(evt); } }); jPanel2.add(jButtonBack); jButtonNext.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/imsl/demo/risk/Forward16.gif"))); jButtonNext.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonNextActionPerformed(evt); } }); jPanel2.add(jButtonNext); getContentPane().add(jPanel2, java.awt.BorderLayout.SOUTH); jEditorPaneDescribe.setEditable(false); jEditorPaneDescribe.setContentType("text/html"); jEditorPaneDescribe.setPreferredSize(new java.awt.Dimension(Math.min((int)(getToolkit().getScreenSize().width/2),600),175)); jEditorPaneDescribe.addHyperlinkListener(new javax.swing.event.HyperlinkListener() { public void hyperlinkUpdate(javax.swing.event.HyperlinkEvent evt) { jEditorPaneDescribeHyperlinkUpdate(evt); } }); jScrollPane1.setViewportView(jEditorPaneDescribe); getContentPane().add(jScrollPane1, java.awt.BorderLayout.EAST); pack(); }//GEN-END:initComponents private void jEditorPaneDescribeHyperlinkUpdate(javax.swing.event.HyperlinkEvent evt) {//GEN-FIRST:event_jEditorPaneDescribeHyperlinkUpdate if (evt.getEventType() != javax.swing.event.HyperlinkEvent.EventType.ACTIVATED) return; String page = evt.getURL().toExternalForm(); com.imsl.demo.gallery.Describe describe = new com.imsl.demo.gallery.Describe(this,page); describe.show(); }//GEN-LAST:event_jEditorPaneDescribeHyperlinkUpdate private void jButtonNextActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonNextActionPerformed step++; update(); }//GEN-LAST:event_jButtonNextActionPerformed private void jButtonBackActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonBackActionPerformed step--; update(); }//GEN-LAST:event_jButtonBackActionPerformed /** Exit the Application */ private void exitForm(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_exitForm if (exitOnClose) { System.exit(0); } else { dispose(); } }//GEN-LAST:event_exitForm /** * @param args the command line arguments */ public static void main(String args[]) throws Exception { boolean exitOnClose = true; if (args.length > 0 && args[0].equals("-noexit")) exitOnClose = false; new Driver(exitOnClose).show(); } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JScrollPane jScrollPane1; private javax.swing.JEditorPane jEditorPaneDescribe; private javax.swing.JPanel jPanel2; private javax.swing.JButton jButtonNext; private javax.swing.JButton jButtonBack; // End of variables declaration//GEN-END:variables }