/* * Akima.java * */ package com.imsl.demo.SeriesAnalysis.Lib; import java.util.ArrayList; import com.imsl.stat.*; import com.imsl.math.*; import com.imsl.demo.SeriesAnalysis.SeriesAnalysis; /** * * @author bmiller * @created November 15, 2002 */ public class Akima extends javax.swing.JDialog { private ArrayList data; private ArrayList params; private CsAkima spln; private int index1; private javax.swing.JFrame parentFrame; /** Creates new form Akima */ public Akima(javax.swing.JFrame parent) { super(parent, false); parentFrame = parent; initComponents(); java.awt.Dimension parentSize = parent.getSize(); java.awt.Point parentLoc = parent.getLocationOnScreen(); parentLoc.x += parentSize.width/2.5; parentLoc.y += parentSize.height/2.5; setLocation(parentLoc.x, parentLoc.y); } public void setData(ArrayList names, ArrayList dataList) { params = names; jList1.setVisibleRowCount(params.size()); jList1.setPreferredSize(jList1.getPreferredScrollableViewportSize()); data = dataList; jList1.setListData(params.toArray()); String[] order = {" Select"," 0th"," 1st"," 2nd"," 3rd"," 4th"," 5th"," 6th"," 7th"," 8th"," 9th"}; for (int i = 0; i < 11; i++) jComboBox1.addItem(order[i]); jComboBox1.setEnabled(false); jButton1.setEnabled(false); } /** 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(); jList1 = new javax.swing.JList(); jPanel2 = new javax.swing.JPanel(); jPanel3 = new javax.swing.JPanel(); jLabel1 = new javax.swing.JLabel(); jTextField1 = new javax.swing.JTextField(); jPanel4 = new javax.swing.JPanel(); jLabel2 = new javax.swing.JLabel(); jPanel5 = new javax.swing.JPanel(); jPanel8 = new javax.swing.JPanel(); jLabel5 = new javax.swing.JLabel(); jLabel6 = new javax.swing.JLabel(); jLabel7 = new javax.swing.JLabel(); jPanel9 = new javax.swing.JPanel(); jTextField2 = new javax.swing.JTextField(); jTextField3 = new javax.swing.JTextField(); jTextField4 = new javax.swing.JTextField(); jPanel6 = new javax.swing.JPanel(); jLabel3 = new javax.swing.JLabel(); jPanel7 = new javax.swing.JPanel(); jLabel4 = new javax.swing.JLabel(); jComboBox1 = new javax.swing.JComboBox(); jPanel10 = new javax.swing.JPanel(); jLabel8 = new javax.swing.JLabel(); jPanel11 = new javax.swing.JPanel(); jButton1 = new javax.swing.JButton(); getContentPane().setLayout(new javax.swing.BoxLayout(getContentPane(), javax.swing.BoxLayout.X_AXIS)); setTitle("Akima Cubic Spline"); addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent evt) { exitForm(evt); } }); jScrollPane1.setPreferredSize(new java.awt.Dimension(100, 300)); jList1.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); jList1.setFixedCellHeight(18); jList1.setPreferredSize(new java.awt.Dimension(300, 500)); jList1.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { jList1MouseClicked(evt); } }); jScrollPane1.setViewportView(jList1); getContentPane().add(jScrollPane1); jPanel2.setLayout(new javax.swing.BoxLayout(jPanel2, javax.swing.BoxLayout.Y_AXIS)); jPanel2.setPreferredSize(new java.awt.Dimension(300, 300)); jPanel3.setLayout(new javax.swing.BoxLayout(jPanel3, javax.swing.BoxLayout.X_AXIS)); jPanel3.setPreferredSize(new java.awt.Dimension(300, 40)); jLabel1.setText(" Name:"); jLabel1.setBorder(new javax.swing.border.BevelBorder(javax.swing.border.BevelBorder.RAISED)); jLabel1.setMaximumSize(new java.awt.Dimension(2147483647, 2147483647)); jLabel1.setMinimumSize(new java.awt.Dimension(4, 20)); jLabel1.setPreferredSize(new java.awt.Dimension(150, 40)); jPanel3.add(jLabel1); jTextField1.setEditable(false); jTextField1.setPreferredSize(new java.awt.Dimension(150, 40)); jPanel3.add(jTextField1); jPanel2.add(jPanel3); jPanel4.setLayout(new javax.swing.BoxLayout(jPanel4, javax.swing.BoxLayout.X_AXIS)); jPanel4.setPreferredSize(new java.awt.Dimension(300, 20)); jLabel2.setText(" Integral"); jLabel2.setBorder(new javax.swing.border.BevelBorder(javax.swing.border.BevelBorder.RAISED)); jLabel2.setMaximumSize(new java.awt.Dimension(32767, 32767)); jLabel2.setMinimumSize(new java.awt.Dimension(10, 10)); jLabel2.setPreferredSize(new java.awt.Dimension(300, 20)); jPanel4.add(jLabel2); jPanel2.add(jPanel4); jPanel5.setLayout(new javax.swing.BoxLayout(jPanel5, javax.swing.BoxLayout.X_AXIS)); jPanel5.setPreferredSize(new java.awt.Dimension(300, 120)); jPanel8.setLayout(new javax.swing.BoxLayout(jPanel8, javax.swing.BoxLayout.Y_AXIS)); jPanel8.setPreferredSize(new java.awt.Dimension(150, 120)); jLabel5.setText(" Upper Limit:"); jLabel5.setBorder(new javax.swing.border.BevelBorder(javax.swing.border.BevelBorder.RAISED)); jLabel5.setMaximumSize(new java.awt.Dimension(32767, 32767)); jLabel5.setPreferredSize(new java.awt.Dimension(150, 40)); jPanel8.add(jLabel5); jLabel6.setText(" Lower Limit:"); jLabel6.setBorder(new javax.swing.border.BevelBorder(javax.swing.border.BevelBorder.RAISED)); jLabel6.setMaximumSize(new java.awt.Dimension(32767, 32767)); jLabel6.setPreferredSize(new java.awt.Dimension(150, 40)); jPanel8.add(jLabel6); jLabel7.setText(" Value:"); jLabel7.setBorder(new javax.swing.border.BevelBorder(javax.swing.border.BevelBorder.RAISED)); jLabel7.setMaximumSize(new java.awt.Dimension(32767, 32767)); jLabel7.setPreferredSize(new java.awt.Dimension(150, 40)); jPanel8.add(jLabel7); jPanel5.add(jPanel8); jPanel9.setLayout(new javax.swing.BoxLayout(jPanel9, javax.swing.BoxLayout.Y_AXIS)); jPanel9.setPreferredSize(new java.awt.Dimension(150, 120)); jTextField2.setEditable(false); jTextField2.setPreferredSize(new java.awt.Dimension(150, 40)); jPanel9.add(jTextField2); jTextField3.setEditable(false); jTextField3.setPreferredSize(new java.awt.Dimension(150, 40)); jPanel9.add(jTextField3); jTextField4.setEditable(false); jTextField4.setPreferredSize(new java.awt.Dimension(150, 40)); jPanel9.add(jTextField4); jPanel5.add(jPanel9); jPanel2.add(jPanel5); jPanel6.setLayout(new javax.swing.BoxLayout(jPanel6, javax.swing.BoxLayout.X_AXIS)); jPanel6.setPreferredSize(new java.awt.Dimension(300, 20)); jLabel3.setText(" Derivative"); jLabel3.setBorder(new javax.swing.border.BevelBorder(javax.swing.border.BevelBorder.RAISED)); jLabel3.setMaximumSize(new java.awt.Dimension(32767, 32767)); jLabel3.setMinimumSize(new java.awt.Dimension(10, 10)); jLabel3.setPreferredSize(new java.awt.Dimension(300, 20)); jPanel6.add(jLabel3); jPanel2.add(jPanel6); jPanel7.setLayout(new javax.swing.BoxLayout(jPanel7, javax.swing.BoxLayout.X_AXIS)); jPanel7.setPreferredSize(new java.awt.Dimension(300, 40)); jLabel4.setText(" Order:"); jLabel4.setBorder(new javax.swing.border.BevelBorder(javax.swing.border.BevelBorder.RAISED)); jLabel4.setMaximumSize(new java.awt.Dimension(32767, 32767)); jLabel4.setMinimumSize(new java.awt.Dimension(10, 10)); jLabel4.setPreferredSize(new java.awt.Dimension(150, 40)); jPanel7.add(jLabel4); jComboBox1.setPreferredSize(new java.awt.Dimension(150, 40)); jComboBox1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jComboBox1ActionPerformed(evt); } }); jPanel7.add(jComboBox1); jPanel2.add(jPanel7); jPanel10.setLayout(new javax.swing.BoxLayout(jPanel10, javax.swing.BoxLayout.X_AXIS)); jPanel10.setPreferredSize(new java.awt.Dimension(300, 20)); jLabel8.setText(" Add Akima Cubic Spline"); jLabel8.setBorder(new javax.swing.border.BevelBorder(javax.swing.border.BevelBorder.RAISED)); jLabel8.setMaximumSize(new java.awt.Dimension(2147483647, 2147483647)); jLabel8.setPreferredSize(new java.awt.Dimension(300, 20)); jPanel10.add(jLabel8); jPanel2.add(jPanel10); jPanel11.setPreferredSize(new java.awt.Dimension(300, 40)); jButton1.setText("Add"); jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton1ActionPerformed(evt); } }); jPanel11.add(jButton1); jPanel2.add(jPanel11); getContentPane().add(jPanel2); pack(); }//GEN-END:initComponents private void jList1MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jList1MouseClicked index1 = jList1.locationToIndex(evt.getPoint()); double[] dataArray = (double[]) data.get(index1); double[] x = new double [dataArray.length]; for (int i = 0; i < dataArray.length; i++) x[i] = i; spln = new CsAkima(x,dataArray); jTextField1.setText((String) params.get(index1)); jComboBox1.setEnabled(true); jButton1.setEnabled(true); double max = Summary.maximum(x); double min = Summary.minimum(x); jTextField2.setText(new Float(max).toString()); jTextField3.setText(new Float(min).toString()); jTextField4.setText(new Float(spln.integral(min,max)).toString()); }//GEN-LAST:event_jList1MouseClicked private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed double[] dataArray = (double[]) data.get(index1); params.add((String) params.get(index1) + "_CsAkima"); double[] tmp = spln.value((double[]) data.get(index1)); data.add(tmp); jList1.setVisibleRowCount(params.size()); jList1.setPreferredSize(jList1.getPreferredScrollableViewportSize()); jList1.setListData(params.toArray()); ((SeriesAnalysis)parentFrame).updateList(); }//GEN-LAST:event_jButton1ActionPerformed private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jComboBox1ActionPerformed int index2 = jComboBox1.getSelectedIndex(); if (index2 > 0) { double[] dataArray = (double[]) data.get(index1); double[] x = new double [dataArray.length]; for (int i = 0; i < dataArray.length; i++) x[i] = i; params.add(((String) params.get(index1))+((String) jComboBox1.getSelectedItem())+"_CsA_Derivative"); double[] tmp = spln.derivative(x,index2-1); data.add(tmp); jList1.setVisibleRowCount(params.size()); jList1.setPreferredSize(jList1.getPreferredScrollableViewportSize()); jList1.setListData(params.toArray()); jButton1.setEnabled(true); ((SeriesAnalysis)parentFrame).updateList(); } }//GEN-LAST:event_jComboBox1ActionPerformed /** Exit the Application */ private void exitForm(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_exitForm setVisible(false); dispose(); }//GEN-LAST:event_exitForm // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JLabel jLabel8; private javax.swing.JLabel jLabel4; private javax.swing.JPanel jPanel4; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel3; private javax.swing.JTextField jTextField3; private javax.swing.JPanel jPanel3; private javax.swing.JPanel jPanel10; private javax.swing.JLabel jLabel2; private javax.swing.JButton jButton1; private javax.swing.JPanel jPanel2; private javax.swing.JPanel jPanel5; private javax.swing.JPanel jPanel11; private javax.swing.JPanel jPanel8; private javax.swing.JList jList1; private javax.swing.JLabel jLabel7; private javax.swing.JPanel jPanel7; private javax.swing.JTextField jTextField2; private javax.swing.JPanel jPanel6; private javax.swing.JLabel jLabel6; private javax.swing.JComboBox jComboBox1; private javax.swing.JTextField jTextField1; private javax.swing.JPanel jPanel9; private javax.swing.JTextField jTextField4; private javax.swing.JLabel jLabel5; // End of variables declaration//GEN-END:variables }