/* * To change this template, choose Tools | Templates * and open the template in the editor. */ /* * PrimerResultFrame.java * * Created on Jul 7, 2011, 3:27:51 PM */ package org.clothocad.tool.primerdesigner; import java.awt.Color; import java.awt.Graphics; import java.util.ArrayList; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JOptionPane; import org.clothocore.api.core.Collector; import org.clothocore.api.data.ObjLink; import org.clothocore.api.data.ObjType; import org.clothocore.api.data.Oligo; /** * * @author jenhan */ public class PrimerResultFrame extends javax.swing.JFrame { /** Creates new form PrimerResultFrame */ public PrimerResultFrame() { try { initComponents(); } catch (Exception e) { e.printStackTrace(); } } public PrimerResultFrame(PrimerDesignController pdc, ArrayList<String> fwd, ArrayList<String> rev, ArrayList<Double> fwdG, ArrayList<Double> revG) { try { _controller = pdc; fwdSequences = fwd; revSequences = rev; initComponents(); fwdTableModel = new Object[fwdSequences.size()][5]; for (int i = 0; i < fwdSequences.size(); i++) { fwdTableModel[i][0] = fwdSequences.get(i); fwdTableModel[i][1] = fwdSequences.get(i).length(); // fwdTableModel[i][2] = _controller.calcDeltaG(fwdSequences.get(i)); fwdTableModel[i][2] = fwdG.get(i); fwdTableModel[i][3] = _controller.calcGCContent(fwdSequences.get(i)); fwdTableModel[i][4] = _controller.calcMeltingTemp(fwdSequences.get(i)); } revTableModel = new Object[revSequences.size()][5]; for (int i = 0; i < revSequences.size(); i++) { revTableModel[i][0] = revSequences.get(i); revTableModel[i][1] = revSequences.get(i).length(); // revTableModel[i][2] = _controller.calcDeltaG(revSequences.get(i)); revTableModel[i][2] = revG.get(i); revTableModel[i][3] = _controller.calcGCContent(revSequences.get(i)); revTableModel[i][4] = _controller.calcMeltingTemp(revSequences.get(i)); } fwdResultsTable.setModel(new javax.swing.table.DefaultTableModel(fwdTableModel, new String[]{"Fwd Seq", "Length", "Delta G", "GC%", "Tm"})); revResultsTable.setModel(new javax.swing.table.DefaultTableModel(revTableModel, new String[]{"Rev Seq", "Length", "Delta G", "GC%", "Tm"})); fwdResultsTable.setRowSelectionInterval(0, 0); fwdResultsTable.setRowSelectionInterval(0, 0); } 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. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { jScrollPane1 = new javax.swing.JScrollPane(); revResultsTable = new javax.swing.JTable(); saveAllButton = new javax.swing.JButton(); csvButton = new javax.swing.JButton(); closeButton = new javax.swing.JButton(); jScrollPane2 = new javax.swing.JScrollPane(); fwdResultsTable = new javax.swing.JTable(); tmDifferenceLabel = new javax.swing.JLabel(); lengthDifferenceLabel = new javax.swing.JLabel(); deltaGDifferenceLabel = new javax.swing.JLabel(); jLabel1 = new javax.swing.JLabel(); jLabel2 = new javax.swing.JLabel(); jScrollPane3 = new javax.swing.JScrollPane(); fwdSequenceTextField = new javax.swing.JTextArea(); jScrollPane4 = new javax.swing.JScrollPane(); revSequenceTextField = new javax.swing.JTextArea(); jScrollPane6 = new javax.swing.JScrollPane(); dimerTextArea = new javax.swing.JTextArea(); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); setTitle(org.openide.util.NbBundle.getMessage(PrimerResultFrame.class, "PrimerResultFrame.title")); // NOI18N setMinimumSize(new java.awt.Dimension(200, 200)); revResultsTable.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { {null, null, null, null, null}, {null, null, null, null, null}, {null, null, null, null, null}, {null, null, null, null, null}, {null, null, null, null, null}, {null, null, null, null, null} }, new String [] { "Rev Seq", "Length", "Delta G", "GC%", "Tm" } )); revResultsTable.setFillsViewportHeight(true); revResultsTable.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); revResultsTable.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { revResultsTableMouseClicked(evt); } }); jScrollPane1.setViewportView(revResultsTable); revResultsTable.getColumnModel().getColumn(0).setHeaderValue(org.openide.util.NbBundle.getMessage(PrimerResultFrame.class, "PrimerResultFrame.revResultsTable.columnModel.title0")); // NOI18N revResultsTable.getColumnModel().getColumn(1).setHeaderValue(org.openide.util.NbBundle.getMessage(PrimerResultFrame.class, "PrimerResultFrame.fwdResultsTable.columnModel.title2")); // NOI18N revResultsTable.getColumnModel().getColumn(2).setHeaderValue(org.openide.util.NbBundle.getMessage(PrimerResultFrame.class, "PrimerResultFrame.fwdResultsTable.columnModel.title3")); // NOI18N revResultsTable.getColumnModel().getColumn(3).setHeaderValue(org.openide.util.NbBundle.getMessage(PrimerResultFrame.class, "PrimerResultFrame.fwdResultsTable.columnModel.title4")); // NOI18N revResultsTable.getColumnModel().getColumn(4).setHeaderValue(org.openide.util.NbBundle.getMessage(PrimerResultFrame.class, "PrimerResultFrame.revResultsTable.columnModel.title4")); // NOI18N saveAllButton.setText(org.openide.util.NbBundle.getMessage(PrimerResultFrame.class, "PrimerResultFrame.saveAllButton.text")); // NOI18N saveAllButton.setToolTipText(org.openide.util.NbBundle.getMessage(PrimerResultFrame.class, "PrimerResultFrame.saveAllButton.toolTipText")); // NOI18N saveAllButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { saveAllButtonActionPerformed(evt); } }); csvButton.setText(org.openide.util.NbBundle.getMessage(PrimerResultFrame.class, "PrimerResultFrame.csvButton.text")); // NOI18N csvButton.setToolTipText(org.openide.util.NbBundle.getMessage(PrimerResultFrame.class, "PrimerResultFrame.csvButton.toolTipText")); // NOI18N csvButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { csvButtonActionPerformed(evt); } }); closeButton.setText(org.openide.util.NbBundle.getMessage(PrimerResultFrame.class, "PrimerResultFrame.closeButton.text")); // NOI18N closeButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { closeButtonActionPerformed(evt); } }); fwdResultsTable.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { {null, null, null, null, null}, {null, null, null, null, null}, {null, null, null, null, null}, {null, null, null, null, null}, {null, null, null, null, null}, {null, null, null, null, null} }, new String [] { "Fwd Seq", "Length", "Delta G", "GC%", "Tm" } )); fwdResultsTable.setFillsViewportHeight(true); fwdResultsTable.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); fwdResultsTable.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { fwdResultsTableMouseClicked(evt); } }); jScrollPane2.setViewportView(fwdResultsTable); fwdResultsTable.getColumnModel().getColumn(0).setHeaderValue(org.openide.util.NbBundle.getMessage(PrimerResultFrame.class, "PrimerResultFrame.fwdResultsTable.columnModel.title0")); // NOI18N fwdResultsTable.getColumnModel().getColumn(1).setHeaderValue(org.openide.util.NbBundle.getMessage(PrimerResultFrame.class, "PrimerResultFrame.fwdResultsTable.columnModel.title2")); // NOI18N fwdResultsTable.getColumnModel().getColumn(2).setHeaderValue(org.openide.util.NbBundle.getMessage(PrimerResultFrame.class, "PrimerResultFrame.fwdResultsTable.columnModel.title3")); // NOI18N fwdResultsTable.getColumnModel().getColumn(3).setHeaderValue(org.openide.util.NbBundle.getMessage(PrimerResultFrame.class, "PrimerResultFrame.fwdResultsTable.columnModel.title4")); // NOI18N fwdResultsTable.getColumnModel().getColumn(4).setHeaderValue(org.openide.util.NbBundle.getMessage(PrimerResultFrame.class, "PrimerResultFrame.fwdResultsTable.columnModel.title4_1")); // NOI18N tmDifferenceLabel.setText(org.openide.util.NbBundle.getMessage(PrimerResultFrame.class, "PrimerResultFrame.tmDifferenceLabel.text")); // NOI18N lengthDifferenceLabel.setText(org.openide.util.NbBundle.getMessage(PrimerResultFrame.class, "PrimerResultFrame.lengthDifferenceLabel.text")); // NOI18N deltaGDifferenceLabel.setText(org.openide.util.NbBundle.getMessage(PrimerResultFrame.class, "PrimerResultFrame.deltaGDifferenceLabel.text")); // NOI18N jLabel1.setText(org.openide.util.NbBundle.getMessage(PrimerResultFrame.class, "PrimerResultFrame.jLabel1.text")); // NOI18N jLabel2.setText(org.openide.util.NbBundle.getMessage(PrimerResultFrame.class, "PrimerResultFrame.jLabel2.text")); // NOI18N jScrollPane3.setHorizontalScrollBar(null); fwdSequenceTextField.setColumns(20); fwdSequenceTextField.setEditable(false); fwdSequenceTextField.setLineWrap(true); fwdSequenceTextField.setRows(5); jScrollPane3.setViewportView(fwdSequenceTextField); jScrollPane4.setHorizontalScrollBar(null); revSequenceTextField.setColumns(20); revSequenceTextField.setEditable(false); revSequenceTextField.setLineWrap(true); revSequenceTextField.setRows(5); jScrollPane4.setViewportView(revSequenceTextField); dimerTextArea.setColumns(20); dimerTextArea.setEditable(false); dimerTextArea.setFont(new java.awt.Font("Monospaced", 0, 14)); // NOI18N dimerTextArea.setRows(5); jScrollPane6.setViewportView(dimerTextArea); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(jScrollPane6, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 708, Short.MAX_VALUE) .addComponent(tmDifferenceLabel, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 137, javax.swing.GroupLayout.PREFERRED_SIZE) .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(deltaGDifferenceLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 137, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(lengthDifferenceLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 137, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(297, 297, 297) .addComponent(closeButton) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(csvButton) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(saveAllButton)) .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 336, Short.MAX_VALUE) .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup() .addGap(6, 6, 6) .addComponent(jLabel1)) .addComponent(jScrollPane3, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 336, Short.MAX_VALUE)) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addGap(24, 24, 24) .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 336, Short.MAX_VALUE) .addGap(12, 12, 12)) .addGroup(layout.createSequentialGroup() .addGap(24, 24, 24) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 336, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jScrollPane4, javax.swing.GroupLayout.DEFAULT_SIZE, 336, Short.MAX_VALUE)) .addGap(12, 12, 12))))) .addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 138, Short.MAX_VALUE) .addComponent(jScrollPane1, 0, 0, Short.MAX_VALUE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel1) .addComponent(jLabel2)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 53, Short.MAX_VALUE)) .addGroup(layout.createSequentialGroup() .addGap(24, 24, 24) .addComponent(jScrollPane4, javax.swing.GroupLayout.DEFAULT_SIZE, 53, Short.MAX_VALUE))) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addGroup(layout.createSequentialGroup() .addComponent(tmDifferenceLabel) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(lengthDifferenceLabel) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(deltaGDifferenceLabel)) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(csvButton) .addComponent(saveAllButton) .addComponent(closeButton))) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jScrollPane6, javax.swing.GroupLayout.DEFAULT_SIZE, 211, Short.MAX_VALUE) .addContainerGap()) ); pack(); }// </editor-fold>//GEN-END:initComponents private void csvButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_csvButtonActionPerformed // TODO add your handling code here: }//GEN-LAST:event_csvButtonActionPerformed private void closeButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_closeButtonActionPerformed this.dispose(); }//GEN-LAST:event_closeButtonActionPerformed private void fwdResultsTableMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_fwdResultsTableMouseClicked int fwdIndex = fwdResultsTable.getSelectedRow(); int revIndex = revResultsTable.getSelectedRow(); if (fwdIndex > -1 && revIndex > -1) { lengthDifferenceLabel.setText("Length Diff: " + Math.abs(((String) fwdTableModel[fwdIndex][0]).length() - ((String) revTableModel[revIndex][0]).length())); tmDifferenceLabel.setText("Tm Diff: " + Math.abs(((Double) fwdTableModel[fwdIndex][4]) - ((Double) revTableModel[revIndex][4]))); deltaGDifferenceLabel.setText("Delta G Diff: " + Math.abs(((Double) fwdTableModel[fwdIndex][2]) - ((Double) revTableModel[revIndex][2]))); fwdSequenceTextField.setText(((String) fwdTableModel[fwdIndex][0])); revSequenceTextField.setText(((String) revTableModel[revIndex][0])); dimerTextArea.setText("forward Sequence: " + fwdTableModel[fwdIndex][0] + "\n" + "reverse Sequence: " + revTableModel[revIndex][0] + "\nForward Delta G: " + fwdTableModel[fwdIndex][2] + "\nReverse delta g: " + revTableModel[revIndex][2]); String results = _controller.checkForDimers((String) fwdTableModel[fwdIndex][0], (String) revTableModel[revIndex][0], (Double) fwdTableModel[fwdIndex][2], (Double) revTableModel[revIndex][2]); dimerTextArea.setText(results); if (results.contains("Warning:")) { dimerTextArea.setBackground(Color.pink); } } }//GEN-LAST:event_fwdResultsTableMouseClicked private void revResultsTableMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_revResultsTableMouseClicked int fwdIndex = fwdResultsTable.getSelectedRow(); int revIndex = revResultsTable.getSelectedRow(); if (fwdIndex > -1 && revIndex > -1) { lengthDifferenceLabel.setText("Length Diff: " + Math.abs(((String) fwdTableModel[fwdIndex][0]).length() - ((String) revTableModel[revIndex][0]).length())); tmDifferenceLabel.setText("Tm Diff: " + Math.abs(((Double) fwdTableModel[fwdIndex][4]) - ((Double) revTableModel[revIndex][4]))); deltaGDifferenceLabel.setText("Delta G Diff: " + Math.abs(((Double) fwdTableModel[fwdIndex][2]) - ((Double) revTableModel[revIndex][2]))); fwdSequenceTextField.setText(((String) fwdTableModel[fwdIndex][0])); revSequenceTextField.setText(((String) revTableModel[revIndex][0])); dimerTextArea.setText("forward Sequence: " + fwdTableModel[fwdIndex][0] + "\n" + "reverse Sequence: " + revTableModel[revIndex][0] + "\nForward Delta G: " + fwdTableModel[fwdIndex][2] + "\nReverse delta g: " + revTableModel[revIndex][2]); String results = _controller.checkForDimers((String) fwdTableModel[fwdIndex][0], (String) revTableModel[revIndex][0], (Double) fwdTableModel[fwdIndex][2], (Double) revTableModel[revIndex][2]); dimerTextArea.setText(results); if (results.contains("Warning:")) { dimerTextArea.setBackground(Color.pink); } } }//GEN-LAST:event_revResultsTableMouseClicked private void saveAllButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_saveAllButtonActionPerformed SaveFrame sf = new SaveFrame(fwdSequences,revSequences,_controller); sf.pack(); sf.setVisible(true); }//GEN-LAST:event_saveAllButtonActionPerformed /** * @param args the command line arguments */ public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new PrimerResultFrame().setVisible(true); } }); } private Object[][] fwdTableModel; private Object[][] revTableModel; private PrimerDesignController _controller; private ArrayList<String> fwdSequences; private ArrayList<String> revSequences; // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton closeButton; private javax.swing.JButton csvButton; private javax.swing.JLabel deltaGDifferenceLabel; private javax.swing.JTextArea dimerTextArea; private javax.swing.JTable fwdResultsTable; private javax.swing.JTextArea fwdSequenceTextField; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JScrollPane jScrollPane2; private javax.swing.JScrollPane jScrollPane3; private javax.swing.JScrollPane jScrollPane4; private javax.swing.JScrollPane jScrollPane6; private javax.swing.JLabel lengthDifferenceLabel; private javax.swing.JTable revResultsTable; private javax.swing.JTextArea revSequenceTextField; private javax.swing.JButton saveAllButton; private javax.swing.JLabel tmDifferenceLabel; // End of variables declaration//GEN-END:variables }