/* * frmPreferences.java * * Created on March 3, 2003, 10:19 AM */ import java.io.*; import java.util.*; import javax.swing.JOptionPane; import javax.swing.DefaultListModel; import javax.swing.JFileChooser; /** * * @author Joset A. Etzel */ public class frmPreferences extends javax.swing.JInternalFrame { private static Vector vecLengths = new Vector(0); private static Vector vecNames = new Vector(0); private static DefaultListModel jcModel = new DefaultListModel(); /** The path to the directory in which the wfdb code is installed. This directory * should contain the compiled executables (rdann, etc.). */ public static String strWFDBPath = ""; private static String strInstallPath = ""; public static String strWFDBDataPath = ""; public static String strConvertECGPath = ""; public static String strSampleFreq = ""; public static String strSignalUnits = ""; public static String strSignalGain = ""; public static String strADCResolution = ""; public static String strADCZero = ""; public static String strLength = ""; private static int intColEKG = 0; private static int intColRespiration = 0; private static int intColTrigger = 0; private static ArrayList jcDBList = new ArrayList(); /** Creates new form frmPreferences */ public frmPreferences() { initComponents(); FillBoxes(); } private void FillBoxes() { Iterator jcIterator; //show the variables on the screen controls txtWFDBpath.setText(strWFDBPath); txtInstallPath.setText(strInstallPath); txtDataFile.setText(strWFDBDataPath); txtConvertECG.setText(strConvertECGPath); txtFreq.setText(strSampleFreq); txtTime.setText(strLength); txtSignalGain.setText(strSignalGain); txtADCRes.setText(strADCResolution); txtADCzero.setText(strADCZero); txtSignalUnits.setText(strSignalUnits); lstClips.setListData(vecNames); txtEKG.setText("" + intColEKG); txtRespiration.setText("" + intColRespiration); txtTrigger.setText("" + intColTrigger); File filePref = new File("preferences.txt"); txtSave.setText(filePref.getAbsolutePath()); //fill up the list model for the database names so will show on the screen jcModel.clear(); //so don't get multiple copies in the list jcIterator = jcDBList.iterator(); while (jcIterator.hasNext()) { jcModel.add(0, (String)jcIterator.next()); } lstDBs.setModel(jcModel); } /** 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 java.awt.GridBagConstraints gridBagConstraints; cmdCancel = new javax.swing.JButton(); cmdOK = new javax.swing.JButton(); jTabbedPane1 = new javax.swing.JTabbedPane(); pnlDirectories = new javax.swing.JPanel(); lblWFDBpath = new javax.swing.JLabel(); txtWFDBpath = new javax.swing.JTextField(); lblWFDBpathHelp = new javax.swing.JLabel(); lblInstall = new javax.swing.JLabel(); txtInstallPath = new javax.swing.JTextField(); lblDataFile = new javax.swing.JLabel(); txtDataFile = new javax.swing.JTextField(); lblHelpDataFile = new javax.swing.JLabel(); lblConvertECG = new javax.swing.JLabel(); txtConvertECG = new javax.swing.JTextField(); lblHelpConvertECG = new javax.swing.JLabel(); lblHelpInstall = new javax.swing.JLabel(); pnlConvert = new javax.swing.JPanel(); lblFreq = new javax.swing.JLabel(); txtFreq = new javax.swing.JTextField(); lblHelpFreq = new javax.swing.JLabel(); lblTime = new javax.swing.JLabel(); txtTime = new javax.swing.JTextField(); lblHelpTime = new javax.swing.JLabel(); lblSignalGain = new javax.swing.JLabel(); txtSignalGain = new javax.swing.JTextField(); lblHelpSignalGain = new javax.swing.JLabel(); lblADCRes = new javax.swing.JLabel(); txtADCRes = new javax.swing.JTextField(); lblHelpADCRes = new javax.swing.JLabel(); lblADCzero = new javax.swing.JLabel(); txtADCzero = new javax.swing.JTextField(); lblHelpADCzero = new javax.swing.JLabel(); lblSignalUnits = new javax.swing.JLabel(); txtSignalUnits = new javax.swing.JTextField(); lblHelpSignalUnits = new javax.swing.JLabel(); pnlColumns = new javax.swing.JPanel(); lblColumns = new javax.swing.JLabel(); lblEKG = new javax.swing.JLabel(); txtEKG = new javax.swing.JTextField(); lblRespiration = new javax.swing.JLabel(); txtRespiration = new javax.swing.JTextField(); lblTrigger = new javax.swing.JLabel(); txtTrigger = new javax.swing.JTextField(); pnlClips = new javax.swing.JPanel(); cmdAdd = new javax.swing.JButton(); cmdDelete = new javax.swing.JButton(); txtName = new javax.swing.JTextField(); txtLength = new javax.swing.JTextField(); lblName = new javax.swing.JLabel(); lblLength = new javax.swing.JLabel(); lblHelp = new javax.swing.JLabel(); lblHelp2 = new javax.swing.JLabel(); jScrollPane1 = new javax.swing.JScrollPane(); lstClips = new javax.swing.JList(); pnlDatabase = new javax.swing.JPanel(); lblDB = new javax.swing.JLabel(); txtDB = new javax.swing.JTextField(); cmdDeleteDB = new javax.swing.JButton(); cmdAddDB = new javax.swing.JButton(); jScrollPane2 = new javax.swing.JScrollPane(); lstDBs = new javax.swing.JList(); txtSave = new javax.swing.JTextField(); lblSave = new javax.swing.JLabel(); cmdChangeFile = new javax.swing.JButton(); getContentPane().setLayout(new java.awt.GridBagLayout()); setClosable(true); setIconifiable(true); setMaximizable(true); setTitle("Program Preferences"); cmdCancel.setMnemonic('C'); cmdCancel.setText("Close"); cmdCancel.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { cmdCancelActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 4; gridBagConstraints.gridy = 1; gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; getContentPane().add(cmdCancel, gridBagConstraints); cmdOK.setMnemonic('O'); cmdOK.setText("Save"); cmdOK.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { cmdOKActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 3; gridBagConstraints.gridy = 1; getContentPane().add(cmdOK, gridBagConstraints); pnlDirectories.setLayout(new java.awt.GridBagLayout()); lblWFDBpath.setText("WFDB app directory:"); pnlDirectories.add(lblWFDBpath, new java.awt.GridBagConstraints()); txtWFDBpath.setMaximumSize(new java.awt.Dimension(500, 20)); txtWFDBpath.setMinimumSize(new java.awt.Dimension(150, 20)); txtWFDBpath.setPreferredSize(new java.awt.Dimension(300, 20)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = 2; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(0, 5, 3, 0); pnlDirectories.add(txtWFDBpath, gridBagConstraints); lblWFDBpathHelp.setFont(new java.awt.Font("Dialog", 0, 10)); lblWFDBpathHelp.setText("The WFDB app directory is the directory in which the compiled executables (such as rdann.exe) are located."); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 1; gridBagConstraints.gridwidth = 3; gridBagConstraints.insets = new java.awt.Insets(0, 0, 10, 0); pnlDirectories.add(lblWFDBpathHelp, gridBagConstraints); lblInstall.setText("Installation directory:"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 2; pnlDirectories.add(lblInstall, gridBagConstraints); txtInstallPath.setMaximumSize(new java.awt.Dimension(500, 20)); txtInstallPath.setMinimumSize(new java.awt.Dimension(150, 20)); txtInstallPath.setPreferredSize(new java.awt.Dimension(300, 20)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 2; gridBagConstraints.gridwidth = 2; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(0, 5, 3, 0); pnlDirectories.add(txtInstallPath, gridBagConstraints); lblDataFile.setText("WFDB data file directory:"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 4; pnlDirectories.add(lblDataFile, gridBagConstraints); txtDataFile.setMaximumSize(new java.awt.Dimension(500, 20)); txtDataFile.setMinimumSize(new java.awt.Dimension(150, 20)); txtDataFile.setPreferredSize(new java.awt.Dimension(300, 20)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 4; gridBagConstraints.gridwidth = 2; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(0, 5, 3, 0); pnlDirectories.add(txtDataFile, gridBagConstraints); lblHelpDataFile.setFont(new java.awt.Font("Dialog", 0, 10)); lblHelpDataFile.setText("The directory where the wfdb-format data files will be stored."); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 5; gridBagConstraints.gridwidth = 3; gridBagConstraints.insets = new java.awt.Insets(0, 0, 10, 0); pnlDirectories.add(lblHelpDataFile, gridBagConstraints); lblConvertECG.setText("ConvertECG directory:"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 6; pnlDirectories.add(lblConvertECG, gridBagConstraints); txtConvertECG.setMaximumSize(new java.awt.Dimension(500, 20)); txtConvertECG.setMinimumSize(new java.awt.Dimension(150, 20)); txtConvertECG.setPreferredSize(new java.awt.Dimension(300, 20)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 6; gridBagConstraints.gridwidth = 2; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(0, 5, 3, 0); pnlDirectories.add(txtConvertECG, gridBagConstraints); lblHelpConvertECG.setFont(new java.awt.Font("Dialog", 0, 10)); lblHelpConvertECG.setText("The directory in which convertECG.exe is located."); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 7; gridBagConstraints.gridwidth = 3; gridBagConstraints.insets = new java.awt.Insets(0, 0, 10, 0); pnlDirectories.add(lblHelpConvertECG, gridBagConstraints); lblHelpInstall.setFont(new java.awt.Font("Dialog", 0, 10)); lblHelpInstall.setText("The directory where puka.jar and ecgpuwave.exe are located."); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 3; gridBagConstraints.gridwidth = 3; gridBagConstraints.insets = new java.awt.Insets(0, 0, 10, 0); pnlDirectories.add(lblHelpInstall, gridBagConstraints); jTabbedPane1.addTab("paths", pnlDirectories); pnlConvert.setLayout(new java.awt.GridBagLayout()); lblFreq.setText("Sampling Frequency (Hz):"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 0); pnlConvert.add(lblFreq, gridBagConstraints); txtFreq.setMaximumSize(new java.awt.Dimension(100, 20)); txtFreq.setMinimumSize(new java.awt.Dimension(50, 20)); txtFreq.setPreferredSize(new java.awt.Dimension(100, 20)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 0); pnlConvert.add(txtFreq, gridBagConstraints); lblHelpFreq.setFont(new java.awt.Font("Dialog", 0, 10)); lblHelpFreq.setText("sampling freq of raw ECG signal."); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 0); pnlConvert.add(lblHelpFreq, gridBagConstraints); lblTime.setText("Length of Record (H:M:S):"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 5; gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 0); pnlConvert.add(lblTime, gridBagConstraints); txtTime.setMaximumSize(new java.awt.Dimension(100, 20)); txtTime.setMinimumSize(new java.awt.Dimension(50, 20)); txtTime.setPreferredSize(new java.awt.Dimension(100, 20)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 5; gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 0); pnlConvert.add(txtTime, gridBagConstraints); lblHelpTime.setFont(new java.awt.Font("Dialog", 0, 10)); lblHelpTime.setText("set longer than the longest record"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 2; gridBagConstraints.gridy = 5; gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 0); pnlConvert.add(lblHelpTime, gridBagConstraints); lblSignalGain.setText("Signal Gain (adu/mV):"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 2; gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 0); pnlConvert.add(lblSignalGain, gridBagConstraints); txtSignalGain.setMaximumSize(new java.awt.Dimension(100, 20)); txtSignalGain.setMinimumSize(new java.awt.Dimension(50, 20)); txtSignalGain.setPreferredSize(new java.awt.Dimension(100, 20)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 2; gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 0); pnlConvert.add(txtSignalGain, gridBagConstraints); lblHelpSignalGain.setFont(new java.awt.Font("Dialog", 0, 10)); lblHelpSignalGain.setText("signal gain (adu/mV)"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 2; gridBagConstraints.gridy = 2; gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 0); pnlConvert.add(lblHelpSignalGain, gridBagConstraints); lblADCRes.setText("ADC Resolution (bits):"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 3; gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 0); pnlConvert.add(lblADCRes, gridBagConstraints); txtADCRes.setMaximumSize(new java.awt.Dimension(100, 20)); txtADCRes.setMinimumSize(new java.awt.Dimension(50, 20)); txtADCRes.setPreferredSize(new java.awt.Dimension(100, 20)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 3; gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 0); pnlConvert.add(txtADCRes, gridBagConstraints); lblHelpADCRes.setFont(new java.awt.Font("Dialog", 0, 10)); lblHelpADCRes.setText("range 8 to 16?"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 2; gridBagConstraints.gridy = 3; gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 0); pnlConvert.add(lblHelpADCRes, gridBagConstraints); lblADCzero.setText("ADC Zero Level (adu):"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 4; gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 0); pnlConvert.add(lblADCzero, gridBagConstraints); txtADCzero.setMaximumSize(new java.awt.Dimension(100, 20)); txtADCzero.setMinimumSize(new java.awt.Dimension(50, 20)); txtADCzero.setPreferredSize(new java.awt.Dimension(100, 20)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 4; gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 0); pnlConvert.add(txtADCzero, gridBagConstraints); lblHelpADCzero.setFont(new java.awt.Font("Dialog", 0, 10)); lblHelpADCzero.setText("ADC zero level (adu)"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 2; gridBagConstraints.gridy = 4; gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 0); pnlConvert.add(lblHelpADCzero, gridBagConstraints); lblSignalUnits.setText("Signal Units:"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 1; gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 0); pnlConvert.add(lblSignalUnits, gridBagConstraints); txtSignalUnits.setMaximumSize(new java.awt.Dimension(100, 20)); txtSignalUnits.setMinimumSize(new java.awt.Dimension(50, 20)); txtSignalUnits.setPreferredSize(new java.awt.Dimension(100, 20)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 1; gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 0); pnlConvert.add(txtSignalUnits, gridBagConstraints); lblHelpSignalUnits.setFont(new java.awt.Font("Dialog", 0, 10)); lblHelpSignalUnits.setText("units raw ECG sampled in"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 2; gridBagConstraints.gridy = 1; gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 0); pnlConvert.add(lblHelpSignalUnits, gridBagConstraints); jTabbedPane1.addTab("EKG", pnlConvert); pnlColumns.setLayout(new java.awt.GridBagLayout()); lblColumns.setText("data columns in input file. if a data type is not present enter -1."); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = 2; gridBagConstraints.insets = new java.awt.Insets(0, 0, 4, 0); pnlColumns.add(lblColumns, gridBagConstraints); lblEKG.setText("EKG"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 1; pnlColumns.add(lblEKG, gridBagConstraints); txtEKG.setPreferredSize(new java.awt.Dimension(50, 20)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 1; pnlColumns.add(txtEKG, gridBagConstraints); lblRespiration.setText("respiration"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 2; pnlColumns.add(lblRespiration, gridBagConstraints); txtRespiration.setPreferredSize(new java.awt.Dimension(50, 20)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 2; pnlColumns.add(txtRespiration, gridBagConstraints); lblTrigger.setText("onset trigger"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 3; pnlColumns.add(lblTrigger, gridBagConstraints); txtTrigger.setPreferredSize(new java.awt.Dimension(50, 20)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 3; pnlColumns.add(txtTrigger, gridBagConstraints); jTabbedPane1.addTab("data columns", pnlColumns); pnlClips.setLayout(new java.awt.GridBagLayout()); cmdAdd.setMnemonic('A'); cmdAdd.setText("Add"); cmdAdd.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { cmdAddActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 3; gridBagConstraints.gridy = 4; gridBagConstraints.insets = new java.awt.Insets(10, 0, 0, 0); pnlClips.add(cmdAdd, gridBagConstraints); cmdDelete.setMnemonic('D'); cmdDelete.setText("Delete"); cmdDelete.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { cmdDeleteActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 2; gridBagConstraints.gridy = 4; gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(10, 0, 0, 0); pnlClips.add(cmdDelete, gridBagConstraints); txtName.setMaximumSize(new java.awt.Dimension(150, 20)); txtName.setMinimumSize(new java.awt.Dimension(50, 20)); txtName.setPreferredSize(new java.awt.Dimension(150, 20)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 2; gridBagConstraints.gridy = 0; gridBagConstraints.gridwidth = 2; pnlClips.add(txtName, gridBagConstraints); txtLength.setMaximumSize(new java.awt.Dimension(150, 20)); txtLength.setMinimumSize(new java.awt.Dimension(50, 20)); txtLength.setPreferredSize(new java.awt.Dimension(150, 20)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 2; gridBagConstraints.gridy = 1; gridBagConstraints.gridwidth = 2; gridBagConstraints.insets = new java.awt.Insets(4, 0, 4, 0); pnlClips.add(txtLength, gridBagConstraints); lblName.setText("Clip name:"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 0; pnlClips.add(lblName, gridBagConstraints); lblLength.setText("Clip length:"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 1; pnlClips.add(lblLength, gridBagConstraints); lblHelp.setFont(new java.awt.Font("Dialog", 0, 10)); lblHelp.setText("Enter the clip length as the number of samples in the clip after the onset trigger."); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 2; gridBagConstraints.gridwidth = 4; pnlClips.add(lblHelp, gridBagConstraints); lblHelp2.setFont(new java.awt.Font("Dialog", 0, 10)); lblHelp2.setText("The clip name will be shown in the box from which the clip is selected when loading a file."); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 3; gridBagConstraints.gridwidth = 4; pnlClips.add(lblHelp2, gridBagConstraints); jScrollPane1.setMaximumSize(new java.awt.Dimension(259, 131)); jScrollPane1.setMinimumSize(new java.awt.Dimension(259, 131)); jScrollPane1.setViewportView(lstClips); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 0; gridBagConstraints.gridheight = 2; pnlClips.add(jScrollPane1, gridBagConstraints); jTabbedPane1.addTab("clips", pnlClips); pnlDatabase.setLayout(new java.awt.GridBagLayout()); lblDB.setText("list the names of the databases"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 0; gridBagConstraints.gridwidth = 3; pnlDatabase.add(lblDB, gridBagConstraints); txtDB.setMaximumSize(new java.awt.Dimension(150, 20)); txtDB.setMinimumSize(new java.awt.Dimension(50, 20)); txtDB.setPreferredSize(new java.awt.Dimension(150, 20)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 2; gridBagConstraints.insets = new java.awt.Insets(10, 0, 0, 0); pnlDatabase.add(txtDB, gridBagConstraints); cmdDeleteDB.setMnemonic('D'); cmdDeleteDB.setText("Delete"); cmdDeleteDB.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { cmdDeleteDBActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 2; gridBagConstraints.gridy = 2; gridBagConstraints.insets = new java.awt.Insets(10, 5, 0, 0); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; pnlDatabase.add(cmdDeleteDB, gridBagConstraints); cmdAddDB.setMnemonic('A'); cmdAddDB.setText("Add"); cmdAddDB.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { cmdAddDBActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 2; gridBagConstraints.insets = new java.awt.Insets(10, 0, 0, 0); pnlDatabase.add(cmdAddDB, gridBagConstraints); jScrollPane2.setMaximumSize(new java.awt.Dimension(259, 131)); jScrollPane2.setMinimumSize(new java.awt.Dimension(259, 131)); jScrollPane2.setViewportView(lstDBs); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 1; gridBagConstraints.gridwidth = 3; pnlDatabase.add(jScrollPane2, gridBagConstraints); jTabbedPane1.addTab("database", pnlDatabase); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 0; gridBagConstraints.gridwidth = 5; gridBagConstraints.insets = new java.awt.Insets(0, 0, 10, 0); getContentPane().add(jTabbedPane1, gridBagConstraints); txtSave.setMinimumSize(new java.awt.Dimension(300, 20)); txtSave.setPreferredSize(new java.awt.Dimension(300, 20)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 1; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; getContentPane().add(txtSave, gridBagConstraints); lblSave.setText("file location"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 1; gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; getContentPane().add(lblSave, gridBagConstraints); cmdChangeFile.setText("Change"); cmdChangeFile.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { cmdChangeFileActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 2; gridBagConstraints.gridy = 1; getContentPane().add(cmdChangeFile, gridBagConstraints); pack(); }//GEN-END:initComponents private void cmdChangeFileActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdChangeFileActionPerformed //use a file dialog to pick the file to write int intResult = 0; JFileChooser frmFileSave = new JFileChooser(); intResult = frmFileSave.showSaveDialog(null); //this returns if select or cancel was clicked if (intResult == JFileChooser.APPROVE_OPTION) { txtSave.setText(frmFileSave.getSelectedFile().getAbsolutePath()); } }//GEN-LAST:event_cmdChangeFileActionPerformed private void cmdAddDBActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdAddDBActionPerformed //check if the name is already present, and if not add to list box and vectors String strName = ""; int intC = 0; strName = txtDB.getText(); if (strName.equals("")) { JOptionPane.showMessageDialog(null, "Please enter a database name.", "Error", JOptionPane.ERROR_MESSAGE); } else if (jcModel.contains(strName)) { JOptionPane.showMessageDialog(null, "There already is a database of that name. Please enter a different name.", "Error", JOptionPane.ERROR_MESSAGE); } else { jcModel.add(0, strName); jcDBList.add(strName); txtDB.setText(""); } }//GEN-LAST:event_cmdAddDBActionPerformed private void cmdDeleteDBActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdDeleteDBActionPerformed //delete the database name selected in lstDBs String strTemp = ""; if (lstDBs.isSelectionEmpty()) { return; } //nothing to do if nothing selected for (int i = 0; i < jcModel.getSize(); i++) { //remove selected items if (lstDBs.isSelectedIndex(i)) { strTemp = (String)jcModel.get(i); jcModel.remove(i); } } jcDBList.remove(strTemp); }//GEN-LAST:event_cmdDeleteDBActionPerformed private void cmdDeleteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdDeleteActionPerformed //delete selected clip from list box and vectors int intC = 0; String strClipName = ""; //check if something is selected in the list, get it if so if (lstClips.getSelectedIndex() == -1) { JOptionPane.showMessageDialog(null, "Please select the clip to delete from the list.", "Missing Data Error", JOptionPane.ERROR_MESSAGE); return; } strClipName = (String)lstClips.getSelectedValue(); for (intC = 0; intC < vecNames.size(); intC++) { //take the clip out of the vectors if (vecNames.get(intC).equals(strClipName)) { vecNames.removeElementAt(intC); vecLengths.removeElementAt(intC); } } lstClips.setListData(vecNames); //show list with clip name removed }//GEN-LAST:event_cmdDeleteActionPerformed private void cmdAddActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdAddActionPerformed //check if name and length are present, if so, add to list box and vectors String strName = ""; String strLength = ""; int intC = 0; strName = txtName.getText(); strLength = txtLength.getText(); if (strName.equals("")) { JOptionPane.showMessageDialog(null, "Please enter a clip name.", "Error", JOptionPane.ERROR_MESSAGE); return; } if (strLength.equals("")) { JOptionPane.showMessageDialog(null, "Please enter a clip length.", "Error", JOptionPane.ERROR_MESSAGE); return; } for (intC = 0; intC < vecNames.size(); intC++) { if (vecNames.get(intC).equals(strName)) { JOptionPane.showMessageDialog(null, "There already is a clip of that name. Please enter a different name.", "Error", JOptionPane.ERROR_MESSAGE); return; } } vecNames.addElement(strName); vecLengths.addElement(strLength); //add new item to vectors lstClips.setListData(vecNames); //show list with new clip name }//GEN-LAST:event_cmdAddActionPerformed private void cmdOKActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdOKActionPerformed //sets the preferences to the new values shown on the screen String strTemp = ""; File fileTemp; int intTemp = 0; boolean bolValid = true; Iterator jcIterator; //test the directories entered on pnlDirectories strTemp = txtWFDBpath.getText(); if (strTemp.equals("") == true) { JOptionPane.showMessageDialog(null, "The WFDB directory is not valid.", "Preference Error", JOptionPane.ERROR_MESSAGE); bolValid = false; } else { fileTemp = new File(strTemp); //make a file object so can make a few tests on the validity of the path if( fileTemp.isDirectory() == false ) { JOptionPane.showMessageDialog(null, "The WFDB directory is not valid.", "Preference Error", JOptionPane.ERROR_MESSAGE); bolValid = false; } else { fileTemp = new File(strTemp + "rdann.exe"); if( fileTemp.isFile() == false ) { JOptionPane.showMessageDialog(null, "The WFDB directory does not contain rdann.exe.", "Preference Error", JOptionPane.ERROR_MESSAGE); bolValid = false; } } } strTemp = txtInstallPath.getText(); if( strTemp.equals("") == true ) { JOptionPane.showMessageDialog(null, "The installation directory is not valid.", "Preference Error", JOptionPane.ERROR_MESSAGE); bolValid = false; } else { fileTemp = new File(strTemp); //make a file object so can make a few tests on the validity of the path if (fileTemp.isDirectory() == false) { JOptionPane.showMessageDialog(null, "The installation directory is not valid.", "Preference Error", JOptionPane.ERROR_MESSAGE); bolValid = false; } else { fileTemp = new File(strTemp + "puka.jar"); if (fileTemp.isFile() == false) { JOptionPane.showMessageDialog(null, "The installation directory does not contain puka.jar.", "Preference Error", JOptionPane.ERROR_MESSAGE); bolValid = false; } fileTemp = new File(strTemp + "ecgpuwave.exe"); if (fileTemp.isFile() == false) { JOptionPane.showMessageDialog(null, "The installation directory does not contain ecgpuwave.exe.", "Preference Error", JOptionPane.ERROR_MESSAGE); bolValid = false; } } } strTemp = txtDataFile.getText(); if (strTemp.equals("") == true) { JOptionPane.showMessageDialog(null, "The WFDB data file directory is not valid.", "Preference Error", JOptionPane.ERROR_MESSAGE); bolValid = false; } else { fileTemp = new File(strTemp); //make a file object so can make a few tests on the validity of the path if (fileTemp.isDirectory() == false) { JOptionPane.showMessageDialog(null, "The WFDB data file directory is not valid.", "Preference Error", JOptionPane.ERROR_MESSAGE); bolValid = false; } } strTemp = txtConvertECG.getText(); if (strTemp.equals("")) { JOptionPane.showMessageDialog(null, "The ConvertECG directory is not valid.", "Preference Error", JOptionPane.ERROR_MESSAGE); bolValid = false; } else { fileTemp = new File(strTemp); //make a file object so can make a few tests on the validity of the path if (fileTemp.isDirectory() == false) { JOptionPane.showMessageDialog(null, "The ConvertECG directory is not a valid directory.", "Preference Error", JOptionPane.ERROR_MESSAGE); bolValid = false; } else { fileTemp = new File(strTemp + "convertecg.exe"); if (fileTemp.isFile() == false) { JOptionPane.showMessageDialog(null, "The ConvertECG directory does not contain ConvertECG.exe.", "Preference Error", JOptionPane.ERROR_MESSAGE); bolValid = false; } } } strTemp = txtFreq.getText(); if (strTemp.equals("")) { JOptionPane.showMessageDialog(null, "The sampling frequency is not valid.", "Preference Error", JOptionPane.ERROR_MESSAGE); bolValid = false; } else { intTemp = Integer.parseInt(strTemp); if (intTemp <= 0) { JOptionPane.showMessageDialog(null, "The sampling frequency is not valid. It must be greater than zero Hz.", "Preference Error", JOptionPane.ERROR_MESSAGE); bolValid = false; } } strTemp = txtSignalUnits.getText(); if (strTemp.equals("")) { JOptionPane.showMessageDialog(null, "The signal units are not valid.", "Preference Error", JOptionPane.ERROR_MESSAGE); bolValid = false; } strTemp = txtSignalGain.getText(); if (strTemp.equals("")) { JOptionPane.showMessageDialog(null, "The signal gain is not valid.", "Preference Error", JOptionPane.ERROR_MESSAGE); bolValid = false; } strTemp = txtADCRes.getText(); if (strTemp.equals("")) { JOptionPane.showMessageDialog(null, "The ADC resolution is not valid.", "Preference Error", JOptionPane.ERROR_MESSAGE); bolValid = false; } else if ((strTemp.equals("8") == false) & (strTemp.equals("16") == false)) { JOptionPane.showMessageDialog(null, "The ADC resolution must be 8 or 16.", "Preference Error", JOptionPane.ERROR_MESSAGE); bolValid = false; } strTemp = txtADCzero.getText(); if (strTemp.equals("")) { JOptionPane.showMessageDialog(null, "The ADC zero level is not valid.", "Preference Error", JOptionPane.ERROR_MESSAGE); bolValid = false; } //pnlColumns information strTemp = txtEKG.getText(); if (strTemp.equals("")) { JOptionPane.showMessageDialog(null, "The EKG column number is not valid.", "Preference Error", JOptionPane.ERROR_MESSAGE); bolValid = false; } strTemp = txtRespiration.getText(); if (strTemp.equals("")) { JOptionPane.showMessageDialog(null, "The respiration column number is not valid.", "Preference Error", JOptionPane.ERROR_MESSAGE); bolValid = false; } strTemp = txtTrigger.getText(); if (strTemp.equals("")) { JOptionPane.showMessageDialog(null, "The trigger column number is not valid.", "Preference Error", JOptionPane.ERROR_MESSAGE); bolValid = false; } strTemp = txtTime.getText(); if( strTemp.equals("")) { JOptionPane.showMessageDialog(null, "The clip length is not valid.", "Preference Error", JOptionPane.ERROR_MESSAGE); bolValid = false; } strTemp = txtSave.getText(); if( strTemp.equals("")) { JOptionPane.showMessageDialog(null, "Enter the path to where the new preference file should be written.", "Preference Error", JOptionPane.ERROR_MESSAGE); bolValid = false; } //check if file already exists, prompt for overwrite File fileChosen = new File(txtSave.getText()); if (fileChosen.exists()) { // File exists so prompt user to confirm delete String msg = "The file \"" + fileChosen.getName() + "\" already exists.\n\nOverwrite existing file?"; int intResult = JOptionPane.showConfirmDialog(null, msg, "Confirm File Delete", JOptionPane.YES_NO_OPTION); if (intResult == JOptionPane.NO_OPTION) { return; } //delete the existing data archive & check if successful if (fileChosen.delete() == false) { JOptionPane.showMessageDialog(null, "The file could not be deleted. Please delete it or save with a new name."); return; } } if (bolValid == true) { strWFDBPath = txtWFDBpath.getText(); strInstallPath = txtInstallPath.getText(); strWFDBDataPath = txtDataFile.getText(); strConvertECGPath = txtConvertECG.getText(); strSampleFreq = txtFreq.getText(); strSignalUnits = txtSignalUnits.getText(); strSignalGain = txtSignalGain.getText(); strADCResolution = txtADCRes.getText(); strADCZero = txtADCzero.getText(); intColEKG = new Integer(txtEKG.getText()).intValue(); intColRespiration = new Integer(txtRespiration.getText()).intValue(); intColTrigger = new Integer(txtTrigger.getText()).intValue(); strLength = txtTime.getText(); //UPDATE DATABASE & clip NAMES, TOO! jcDBList.clear(); for (int i = 0; i < jcModel.size(); i++) { jcDBList.add(jcModel.getElementAt(i)); } intTemp = WritePreferenceFile(); //output the preference file again if (intTemp != 0) { JOptionPane.showMessageDialog(null, "The preference.txt file was not written correctly.", "Preference Error", JOptionPane.ERROR_MESSAGE); } try { this.setClosed(true); } //close the form catch(java.beans.PropertyVetoException e) { e.printStackTrace(); } } }//GEN-LAST:event_cmdOKActionPerformed private int WritePreferenceFile() { //writes out the preference file so the paths will be loaded correctly next time int intReturn = 0; int intC = 0; try { FileWriter jcOut = new FileWriter(txtSave.getText()); //writer to write preferences file jcOut.write("WFDBDirectory|" + strWFDBPath + "\n"); jcOut.write("InstallPath|" + strInstallPath + "\n"); jcOut.write("WFDBDataPath|" + strWFDBDataPath + "\n"); jcOut.write("ConvertECGPath|" + strConvertECGPath + "\n"); jcOut.write("SampleFreq|" + strSampleFreq + "\n"); jcOut.write("SignalUnits|" + strSignalUnits + "\n"); jcOut.write("SignalGain|" + strSignalGain + "\n"); jcOut.write("ADCResolution|" + strADCResolution + "\n"); jcOut.write("ADCZero|" + strADCZero + "\n"); jcOut.write("Length|" + strLength + "\n"); for (intC = 0; intC < vecNames.size(); intC++) { jcOut.write("ClipName|" + vecNames.get(intC) + "\n"); } for (intC = 0; intC < vecLengths.size(); intC++) { jcOut.write("ClipLength|" + vecLengths.get(intC) + "\n"); } jcOut.write("ColEKG|" + intColEKG + "\n"); jcOut.write("ColRespiration|" + intColRespiration + "\n"); jcOut.write("ColTrigger|" + intColTrigger + "\n"); for (intC = 0; intC < jcDBList.size(); intC++) { jcOut.write("dbname|" + jcDBList.get(intC) + "\n"); } jcOut.close(); } catch (Exception e) { e.printStackTrace(); intReturn = -1; } return intReturn; } public void ReadPreferenceFile() { //reads the preference file to set paths to the correct directories File filePref; String strInput = ""; String strToken = ""; StringTokenizer jcTokenizer; Iterator jcIterator; filePref = new File("preferences.txt"); if (filePref.isFile() == false) { JOptionPane.showMessageDialog(null, "Puka can't find the preference file.", "Error", JOptionPane.ERROR_MESSAGE); System.exit(1); } try { FileReader jcFReader = new FileReader(filePref); //reader to connect to the file BufferedReader jcBReader = new BufferedReader(jcFReader); //another reader while( (strInput = jcBReader.readLine()) != null ) { jcTokenizer = new StringTokenizer(strInput, "|"); //read strInput with | as the only delimiter strToken = jcTokenizer.nextToken(); //get the first word - parameter name if (strToken.equals("WFDBDirectory")) { strWFDBPath = jcTokenizer.nextToken(); } else if (strToken.equals("InstallPath")) { strInstallPath = jcTokenizer.nextToken(); } else if (strToken.equals("WFDBDataPath")) { strWFDBDataPath = jcTokenizer.nextToken(); } else if (strToken.equals("ConvertECGPath")) { strConvertECGPath = jcTokenizer.nextToken(); } else if (strToken.equals("SampleFreq")) { strSampleFreq = jcTokenizer.nextToken(); } else if (strToken.equals("SignalUnits")) { strSignalUnits = jcTokenizer.nextToken(); } else if (strToken.equals("SignalGain")) { strSignalGain = jcTokenizer.nextToken(); } else if (strToken.equals("ADCResolution")) { strADCResolution = jcTokenizer.nextToken(); } else if (strToken.equals("ADCZero")) { strADCZero = jcTokenizer.nextToken(); } else if (strToken.equals("Length")) { strLength = jcTokenizer.nextToken(); } else if (strToken.equals("ClipName")) { vecNames.addElement(jcTokenizer.nextToken()); } else if (strToken.equals("ClipLength")) { vecLengths.addElement(jcTokenizer.nextToken()); } else if (strToken.equals("ColEKG")) { intColEKG = new Integer(jcTokenizer.nextToken()).intValue(); } else if (strToken.equals("ColRespiration")) { intColRespiration = new Integer(jcTokenizer.nextToken()).intValue(); } else if (strToken.equals("ColTrigger")) { intColTrigger = new Integer(jcTokenizer.nextToken()).intValue(); } else if (strToken.equals("dbname")) { jcDBList.add(jcTokenizer.nextToken()); } } jcFReader.close(); jcBReader.close(); //get rid of readers } catch (Exception e) { e.printStackTrace(); JOptionPane.showMessageDialog(null, "The preference file is not valid. Please check the settings.", "Preference Error", JOptionPane.ERROR_MESSAGE); return; } //fill up the list model for the database names so will show on the screen // jcIterator = jcDBList.iterator(); // while (jcIterator.hasNext()) { jcModel.add(0, (String)jcIterator.next()); } // lstDBs.setModel(jcModel); } public static ArrayList getDBNames() { return jcDBList; } public static Vector getClipNames() { return vecNames; } public static double getClipLength(String strClipName) { //returns the length in number of raw signal samples of the clip whose name was passed double dblLength = -1; int intC = 0; String strTemp = ""; for (intC = 0; intC < vecNames.size(); intC++) { if (vecNames.get(intC).equals(strClipName)) { strTemp = (String)vecLengths.elementAt(intC); dblLength = Double.parseDouble(strTemp); } } if (dblLength == -1) { JOptionPane.showMessageDialog(null, "Couldn't find the clip length.", "Serious Error", JOptionPane.ERROR_MESSAGE); } return dblLength; } private void cmdCancelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdCancelActionPerformed //just close the form try { this.setClosed(true); } catch(java.beans.PropertyVetoException e) { e.printStackTrace(); } }//GEN-LAST:event_cmdCancelActionPerformed /** the data column in the raw data file corresponding to the EKG channel */ public static int getColEKG() { return intColEKG; } /** the data column in the raw data file corresponding to the respiration channel */ public static int getColRespiration() { return intColRespiration; } /** the data column in the raw data file corresponding to the onset trigger channel */ public static int getColTrigger() { return intColTrigger; } /** the directory in which puka.jar is located */ public static String getInstallPath() { return strInstallPath; } /** the frequency of sampling, in Hz - samples per second */ public static int getSamplingFreq() { return (new Integer(strSampleFreq)).intValue(); } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton cmdAdd; private javax.swing.JButton cmdAddDB; private javax.swing.JButton cmdCancel; private javax.swing.JButton cmdChangeFile; private javax.swing.JButton cmdDelete; private javax.swing.JButton cmdDeleteDB; private javax.swing.JButton cmdOK; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JScrollPane jScrollPane2; private javax.swing.JTabbedPane jTabbedPane1; private javax.swing.JLabel lblADCRes; private javax.swing.JLabel lblADCzero; private javax.swing.JLabel lblColumns; private javax.swing.JLabel lblConvertECG; private javax.swing.JLabel lblDB; private javax.swing.JLabel lblDataFile; private javax.swing.JLabel lblEKG; private javax.swing.JLabel lblFreq; private javax.swing.JLabel lblHelp; private javax.swing.JLabel lblHelp2; private javax.swing.JLabel lblHelpADCRes; private javax.swing.JLabel lblHelpADCzero; private javax.swing.JLabel lblHelpConvertECG; private javax.swing.JLabel lblHelpDataFile; private javax.swing.JLabel lblHelpFreq; private javax.swing.JLabel lblHelpInstall; private javax.swing.JLabel lblHelpSignalGain; private javax.swing.JLabel lblHelpSignalUnits; private javax.swing.JLabel lblHelpTime; private javax.swing.JLabel lblInstall; private javax.swing.JLabel lblLength; private javax.swing.JLabel lblName; private javax.swing.JLabel lblRespiration; private javax.swing.JLabel lblSave; private javax.swing.JLabel lblSignalGain; private javax.swing.JLabel lblSignalUnits; private javax.swing.JLabel lblTime; private javax.swing.JLabel lblTrigger; private javax.swing.JLabel lblWFDBpath; private javax.swing.JLabel lblWFDBpathHelp; private javax.swing.JList lstClips; private javax.swing.JList lstDBs; private javax.swing.JPanel pnlClips; private javax.swing.JPanel pnlColumns; private javax.swing.JPanel pnlConvert; private javax.swing.JPanel pnlDatabase; private javax.swing.JPanel pnlDirectories; private javax.swing.JTextField txtADCRes; private javax.swing.JTextField txtADCzero; private javax.swing.JTextField txtConvertECG; private javax.swing.JTextField txtDB; private javax.swing.JTextField txtDataFile; private javax.swing.JTextField txtEKG; private javax.swing.JTextField txtFreq; private javax.swing.JTextField txtInstallPath; private javax.swing.JTextField txtLength; private javax.swing.JTextField txtName; private javax.swing.JTextField txtRespiration; private javax.swing.JTextField txtSave; private javax.swing.JTextField txtSignalGain; private javax.swing.JTextField txtSignalUnits; private javax.swing.JTextField txtTime; private javax.swing.JTextField txtTrigger; private javax.swing.JTextField txtWFDBpath; // End of variables declaration//GEN-END:variables }