/* * ------------------------------------------------------------------------- * $Id: Driver.java,v 1.13 2005/12/30 16:57:07 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 javax.swing.JButton; import java.lang.reflect.Method; import java.net.URL; import java.net.URLClassLoader; import java.util.List; import java.util.jar.*; /** * * @author brophy * @created February 6, 2002 */ public class Driver extends javax.swing.JFrame { private class Item { int group; String title; Item (int group, String title) { this.group = group; this.title = title; } public String toString() { return title; } } private final Demo demoList[]; private Describe describe; private java.awt.Color vniBlueDark = new java.awt.Color(0, 51, 102); private java.awt.Color vniBlue = new java.awt.Color(51, 102, 153); private java.awt.Color vniBlueLight = new java.awt.Color(102, 153, 204); /** Creates new form Driver */ public Driver() { demoList = Binding.getDemos(); initComponents(); jComboBoxCategory.addItem(new Item(-1,"All")); jComboBoxCategory.addItem(new Item(Demo.GROUP_MATH,"Math")); jComboBoxCategory.addItem(new Item(Demo.GROUP_STAT,"Statistics")); jComboBoxCategory.addItem(new Item(Demo.GROUP_FINANCE,"Finance")); jComboBoxCategory.addItem(new Item(Demo.GROUP_CHART,"Chart")); jComboBoxCategory.addItem(new Item(Demo.GROUP_QS,"Quick Start")); createButtons(-1); pack(); describe = new Describe(this); java.awt.Dimension size = getSize(); describe.setLocation(size.width,0); describe.show(); } private void createButtons(int group) { jPanelButtons.removeAll(); for (int k = 0; k < demoList.length; k++) { if ((group&demoList[k].group) != 0) { JButton b = new JButton(demoList[k].title); b.setForeground(vniBlueDark); b.setFont(new java.awt.Font("Verdana", 1, 11)); b.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); b.setPreferredSize(new java.awt.Dimension(185,25)); final String main = demoList[k].mainClass; final String page = demoList[k].page; final List classpath = demoList[k].classpath; b.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { run(main, classpath, page); } }); jPanelButtons.add(b); } } pack(); repaint(); } private String findMainClass(String jarFilename) { try { JarFile jf = new JarFile(jarFilename); Manifest manifest = jf.getManifest(); if (manifest != null) { Attributes attr = manifest.getMainAttributes(); String attrname = "Main-Class"; return attr.getValue("Main-Class"); } } catch (java.io.IOException e) { } return null; } private void run(String main, List listClasspath, String page) { try { //describe.setVisible(page != null); //if (page != null) describe.setPage(page, true); describe.setVisible(false); Class classMain = null; if (listClasspath != null && listClasspath.size() > 0) { String sClasspath[] = new String[0]; sClasspath = (String[])listClasspath.toArray(sClasspath); if (main == null) { for (int k = 0; k < sClasspath.length; k++) { main = findMainClass(sClasspath[k]); if (main != null) break; } } URL url[] = new URL[sClasspath.length]; for (int k = 0; k < url.length; k++) { try { url[k] = new URL(sClasspath[k]); } catch (java.net.MalformedURLException e) { try { url[k] = new URL("file:"+sClasspath[k]); } catch (java.net.MalformedURLException e2) { e2.printStackTrace(); } } } classMain = new URLClassLoader(url).loadClass(main); } if (classMain == null) classMain = Class.forName(main); String argsMain[] = {"-noexit"}; Method methodMain = classMain.getMethod("main", new Class[]{argsMain.getClass()}); methodMain.invoke(null, new Object[]{argsMain}); } catch (Exception e) { e.printStackTrace(); } } /** 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(); jLabel1 = new javax.swing.JLabel(new javax.swing.ImageIcon(getClass().getResource("/com/imsl/demo/gallery/blue_logo.gif"))); jComboBoxCategory = new javax.swing.JComboBox(); jScrollPaneButtons = new javax.swing.JScrollPane(); jPanelButtons = new javax.swing.JPanel(); setTitle("JMSL Demos"); setBackground(vniBlue); addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent evt) { exitForm(evt); } }); jPanel2.setLayout(new java.awt.BorderLayout()); jPanel2.setBackground(vniBlueDark); jPanel2.setForeground(vniBlueLight); jPanel2.setMaximumSize(new java.awt.Dimension(0, 0)); jPanel2.setPreferredSize(new java.awt.Dimension(200,(int)(25+getToolkit().getScreenSize().height/6))); jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabel1.setText(" "); jLabel1.setPreferredSize(new java.awt.Dimension(200,(int)(25+getToolkit().getScreenSize().height/6))); jLabel1.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); jPanel2.add(jLabel1, java.awt.BorderLayout.CENTER); jComboBoxCategory.setFont(new java.awt.Font("Verdana", 1, 11)); jComboBoxCategory.setForeground(vniBlueDark); jComboBoxCategory.setMaximumSize(new java.awt.Dimension(0, 0)); jComboBoxCategory.setMinimumSize(new java.awt.Dimension(0, 0)); jComboBoxCategory.setPreferredSize(new java.awt.Dimension(200, 25)); jComboBoxCategory.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jComboBoxCategoryActionPerformed(evt); } }); jPanel2.add(jComboBoxCategory, java.awt.BorderLayout.SOUTH); getContentPane().add(jPanel2, java.awt.BorderLayout.NORTH); jScrollPaneButtons.setBackground(vniBlue); jScrollPaneButtons.setForeground(vniBlueLight); jScrollPaneButtons.setHorizontalScrollBarPolicy(javax.swing.JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); jScrollPaneButtons.setVerticalScrollBarPolicy(javax.swing.JScrollPane.VERTICAL_SCROLLBAR_NEVER); jScrollPaneButtons.setMaximumSize(new java.awt.Dimension(0, 0)); jScrollPaneButtons.setMinimumSize(new java.awt.Dimension(0, 0)); jScrollPaneButtons.setPreferredSize(new java.awt.Dimension(200, 543)); jPanelButtons.setLayout(new java.awt.GridLayout(22, 1)); jPanelButtons.setForeground(new java.awt.Color(0, 0, 50)); jPanelButtons.setMaximumSize(new java.awt.Dimension(0, 0)); jPanelButtons.setPreferredSize(new java.awt.Dimension(185, 750)); jScrollPaneButtons.setViewportView(jPanelButtons); getContentPane().add(jScrollPaneButtons, java.awt.BorderLayout.CENTER); pack(); }//GEN-END:initComponents private void jComboBoxCategoryActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jComboBoxCategoryActionPerformed createButtons(((Item)jComboBoxCategory.getSelectedItem()).group); }//GEN-LAST:event_jComboBoxCategoryActionPerformed /** Exit the Application */ private void exitForm(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_exitForm System.exit(0); }//GEN-LAST:event_exitForm /** * @param args the command line arguments */ public static void main(String args[]) { try { new Driver().show(); } catch (Exception e) { e.printStackTrace(); } } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JLabel jLabel1; private javax.swing.JComboBox jComboBoxCategory; private javax.swing.JPanel jPanel2; private javax.swing.JPanel jPanelButtons; private javax.swing.JScrollPane jScrollPaneButtons; // End of variables declaration//GEN-END:variables }