package org.clothocad.tool.primerdesigner; import java.awt.Color; import java.util.ArrayList; import java.util.HashMap; import javax.swing.JFrame; import javax.swing.JTextField; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import javax.swing.text.BadLocationException; import javax.swing.text.DefaultHighlighter.DefaultHighlightPainter; import javax.swing.text.Highlighter; import org.clothocore.api.core.Collector; import org.clothocore.api.data.ObjLink; import org.clothocore.api.data.ObjType; import org.openide.util.Exceptions; import org.openide.windows.TopComponent; /* * To change this template, choose Tools | Templates * and open the template in the editor. */ /* * DesignFrame.java * * Created on Jul 5, 2011, 5:06:34 PM */ /** * View for PrimerDesignController * @author Jenhan Tao */ public class DesignFrame extends javax.swing.JFrame { /** Creates new form DesignFrame */ public DesignFrame() { initComponents(); } public DesignFrame(String s) { initComponents(); sequenceTextField.setText(s); sequenceTextField.setCaretPosition(0); endLabel.setText(Integer.toString(s.length())); _controller = new PrimerDesignController(this); ArrayList<ObjLink> featureList = Collector.getAllLinksOf(ObjType.FEATURE); insertComboBox1.removeAllItems(); insertComboBox2.removeAllItems(); insertComboBox1.addItem("none"); insertComboBox2.addItem("none"); for (ObjLink ol : featureList) { insertComboBox1.addItem(ol.name); insertComboBox2.addItem(ol.name); } insertComboBox1.setSize(50, 28); insertComboBox2.setSize(50, 28); sequenceTextField.getDocument().addDocumentListener(new PrimerDesignerListener(this)); } /** 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() { generateButton = new javax.swing.JButton(); cancelButton = new javax.swing.JButton(); insertComboBox2 = new javax.swing.JComboBox(); insertComboBox1 = new javax.swing.JComboBox(); spacerTextField1 = new javax.swing.JTextField(); spacerTextField2 = new javax.swing.JTextField(); backgroundPanel = new javax.swing.JPanel(); sequenceTextField = new javax.swing.JTextField(); navigatorPanel = new javax.swing.JPanel(); jLabel2 = new javax.swing.JLabel(); jLabel3 = new javax.swing.JLabel(); jLabel4 = new javax.swing.JLabel(); jLabel5 = new javax.swing.JLabel(); positionLabel = new javax.swing.JLabel(); startLabel = new javax.swing.JLabel(); endLabel = new javax.swing.JLabel(); jLabel7 = new javax.swing.JLabel(); tmTextField = new javax.swing.JTextField(); jLabel8 = new javax.swing.JLabel(); lengthTextField = new javax.swing.JTextField(); statusLabel = new javax.swing.JLabel(); reCheckButton = new javax.swing.JButton(); jMenuBar1 = new javax.swing.JMenuBar(); jMenu1 = new javax.swing.JMenu(); loadSequenceMenuItem = new javax.swing.JMenuItem(); jMenuItem1 = new javax.swing.JMenuItem(); jMenu2 = new javax.swing.JMenu(); switchViewMenuItem = new javax.swing.JMenuItem(); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); setTitle(org.openide.util.NbBundle.getMessage(DesignFrame.class, "DesignFrame.title")); // NOI18N generateButton.setText(org.openide.util.NbBundle.getMessage(DesignFrame.class, "DesignFrame.generateButton.text")); // NOI18N generateButton.setMaximumSize(new java.awt.Dimension(140, 30)); generateButton.setMinimumSize(new java.awt.Dimension(140, 30)); generateButton.setPreferredSize(new java.awt.Dimension(140, 30)); generateButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { generateButtonActionPerformed(evt); } }); cancelButton.setText(org.openide.util.NbBundle.getMessage(DesignFrame.class, "DesignFrame.cancelButton.text")); // NOI18N cancelButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { cancelButtonActionPerformed(evt); } }); insertComboBox2.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); insertComboBox2.setToolTipText(org.openide.util.NbBundle.getMessage(DesignFrame.class, "DesignFrame.insertComboBox2.toolTipText")); // NOI18N insertComboBox2.setMaximumSize(new java.awt.Dimension(50, 28)); insertComboBox2.setMinimumSize(new java.awt.Dimension(50, 28)); insertComboBox2.setPreferredSize(new java.awt.Dimension(50, 28)); insertComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); insertComboBox1.setToolTipText(org.openide.util.NbBundle.getMessage(DesignFrame.class, "DesignFrame.insertComboBox1.toolTipText")); // NOI18N insertComboBox1.setMaximumSize(new java.awt.Dimension(50, 28)); insertComboBox1.setMinimumSize(new java.awt.Dimension(50, 28)); insertComboBox1.setPreferredSize(new java.awt.Dimension(50, 28)); spacerTextField1.setText(org.openide.util.NbBundle.getMessage(DesignFrame.class, "DesignFrame.spacerTextField1.text")); // NOI18N spacerTextField1.setToolTipText(org.openide.util.NbBundle.getMessage(DesignFrame.class, "DesignFrame.spacerTextField1.toolTipText")); // NOI18N spacerTextField1.addMouseListener(new java.awt.event.MouseAdapter() { public void mousePressed(java.awt.event.MouseEvent evt) { spacerTextField1MousePressed(evt); } }); spacerTextField1.addKeyListener(new java.awt.event.KeyAdapter() { public void keyTyped(java.awt.event.KeyEvent evt) { spacerTextField1KeyTyped(evt); } public void keyPressed(java.awt.event.KeyEvent evt) { spacerTextField1KeyPressed(evt); } }); spacerTextField2.setText(org.openide.util.NbBundle.getMessage(DesignFrame.class, "DesignFrame.spacerTextField2.text")); // NOI18N spacerTextField2.setToolTipText(org.openide.util.NbBundle.getMessage(DesignFrame.class, "DesignFrame.spacerTextField2.toolTipText")); // NOI18N spacerTextField2.addKeyListener(new java.awt.event.KeyAdapter() { public void keyTyped(java.awt.event.KeyEvent evt) { spacerTextField2KeyTyped(evt); } public void keyPressed(java.awt.event.KeyEvent evt) { spacerTextField2KeyPressed(evt); } }); sequenceTextField.setText(org.openide.util.NbBundle.getMessage(DesignFrame.class, "DesignFrame.sequenceTextField.text")); // NOI18N sequenceTextField.setMaximumSize(new java.awt.Dimension(200, 30)); sequenceTextField.setMinimumSize(new java.awt.Dimension(100, 30)); sequenceTextField.setPreferredSize(new java.awt.Dimension(200, 30)); sequenceTextField.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { sequenceTextFieldMouseClicked(evt); } }); sequenceTextField.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { sequenceTextFieldActionPerformed(evt); } }); sequenceTextField.addKeyListener(new java.awt.event.KeyAdapter() { public void keyTyped(java.awt.event.KeyEvent evt) { sequenceTextFieldKeyTyped(evt); } public void keyPressed(java.awt.event.KeyEvent evt) { sequenceTextFieldKeyPressed(evt); } }); navigatorPanel.setBackground(java.awt.Color.gray); navigatorPanel.setBorder(javax.swing.BorderFactory.createEtchedBorder()); navigatorPanel.setForeground(java.awt.Color.gray); navigatorPanel.setToolTipText(org.openide.util.NbBundle.getMessage(DesignFrame.class, "DesignFrame.navigatorPanel.toolTipText")); // NOI18N navigatorPanel.setMaximumSize(new java.awt.Dimension(200, 30)); navigatorPanel.setMinimumSize(new java.awt.Dimension(100, 30)); navigatorPanel.setPreferredSize(new java.awt.Dimension(200, 30)); navigatorPanel.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { navigatorPanelMouseClicked(evt); } public void mouseEntered(java.awt.event.MouseEvent evt) { navigatorPanelMouseEntered(evt); } }); navigatorPanel.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() { public void mouseMoved(java.awt.event.MouseEvent evt) { navigatorPanelMouseMoved(evt); } }); javax.swing.GroupLayout navigatorPanelLayout = new javax.swing.GroupLayout(navigatorPanel); navigatorPanel.setLayout(navigatorPanelLayout); navigatorPanelLayout.setHorizontalGroup( navigatorPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 513, Short.MAX_VALUE) ); navigatorPanelLayout.setVerticalGroup( navigatorPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 26, Short.MAX_VALUE) ); javax.swing.GroupLayout backgroundPanelLayout = new javax.swing.GroupLayout(backgroundPanel); backgroundPanel.setLayout(backgroundPanelLayout); backgroundPanelLayout.setHorizontalGroup( backgroundPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(backgroundPanelLayout.createSequentialGroup() .addContainerGap() .addGroup(backgroundPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(navigatorPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 517, Short.MAX_VALUE) .addComponent(sequenceTextField, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 517, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap()) ); backgroundPanelLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {navigatorPanel, sequenceTextField}); backgroundPanelLayout.setVerticalGroup( backgroundPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(backgroundPanelLayout.createSequentialGroup() .addComponent(navigatorPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(sequenceTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap()) ); backgroundPanelLayout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {navigatorPanel, sequenceTextField}); jLabel2.setText(org.openide.util.NbBundle.getMessage(DesignFrame.class, "DesignFrame.jLabel2.text")); // NOI18N jLabel3.setText(org.openide.util.NbBundle.getMessage(DesignFrame.class, "DesignFrame.jLabel3.text")); // NOI18N jLabel4.setText(org.openide.util.NbBundle.getMessage(DesignFrame.class, "DesignFrame.jLabel4.text")); // NOI18N jLabel5.setText(org.openide.util.NbBundle.getMessage(DesignFrame.class, "DesignFrame.jLabel5.text")); // NOI18N positionLabel.setText(org.openide.util.NbBundle.getMessage(DesignFrame.class, "DesignFrame.positionLabel.text")); // NOI18N startLabel.setText(org.openide.util.NbBundle.getMessage(DesignFrame.class, "DesignFrame.startLabel.text")); // NOI18N startLabel.setMaximumSize(new java.awt.Dimension(40, 30)); startLabel.setMinimumSize(new java.awt.Dimension(40, 30)); endLabel.setText(org.openide.util.NbBundle.getMessage(DesignFrame.class, "DesignFrame.endLabel.text")); // NOI18N endLabel.setMaximumSize(new java.awt.Dimension(40, 30)); endLabel.setMinimumSize(new java.awt.Dimension(40, 30)); jLabel7.setText(org.openide.util.NbBundle.getMessage(DesignFrame.class, "DesignFrame.jLabel7.text")); // NOI18N jLabel7.setEnabled(false); tmTextField.setText(org.openide.util.NbBundle.getMessage(DesignFrame.class, "DesignFrame.tmTextField.text")); // NOI18N tmTextField.setToolTipText(org.openide.util.NbBundle.getMessage(DesignFrame.class, "DesignFrame.tmTextField.toolTipText")); // NOI18N tmTextField.setEnabled(false); tmTextField.setMinimumSize(new java.awt.Dimension(35, 28)); tmTextField.setPreferredSize(new java.awt.Dimension(35, 28)); tmTextField.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { tmTextFieldActionPerformed(evt); } }); tmTextField.addKeyListener(new java.awt.event.KeyAdapter() { public void keyTyped(java.awt.event.KeyEvent evt) { tmTextFieldKeyTyped(evt); } }); jLabel8.setText(org.openide.util.NbBundle.getMessage(DesignFrame.class, "DesignFrame.jLabel8.text")); // NOI18N lengthTextField.setText(org.openide.util.NbBundle.getMessage(DesignFrame.class, "DesignFrame.lengthTextField.text")); // NOI18N lengthTextField.setToolTipText(org.openide.util.NbBundle.getMessage(DesignFrame.class, "DesignFrame.lengthTextField.toolTipText")); // NOI18N lengthTextField.setMinimumSize(new java.awt.Dimension(35, 28)); lengthTextField.setPreferredSize(new java.awt.Dimension(35, 28)); lengthTextField.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { lengthTextFieldActionPerformed(evt); } }); lengthTextField.addKeyListener(new java.awt.event.KeyAdapter() { public void keyTyped(java.awt.event.KeyEvent evt) { lengthTextFieldKeyTyped(evt); } }); statusLabel.setText(org.openide.util.NbBundle.getMessage(DesignFrame.class, "DesignFrame.statusLabel.text")); // NOI18N reCheckButton.setText(org.openide.util.NbBundle.getMessage(DesignFrame.class, "DesignFrame.reCheckButton.text")); // NOI18N reCheckButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { reCheckButtonActionPerformed(evt); } }); jMenu1.setText(org.openide.util.NbBundle.getMessage(DesignFrame.class, "DesignFrame.jMenu1.text")); // NOI18N loadSequenceMenuItem.setText(org.openide.util.NbBundle.getMessage(DesignFrame.class, "DesignFrame.loadSequenceMenuItem.text")); // NOI18N loadSequenceMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { loadSequenceMenuItemActionPerformed(evt); } }); jMenu1.add(loadSequenceMenuItem); jMenuItem1.setText(org.openide.util.NbBundle.getMessage(DesignFrame.class, "DesignFrame.jMenuItem1.text")); // NOI18N jMenuItem1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jMenuItem1ActionPerformed(evt); } }); jMenu1.add(jMenuItem1); jMenuBar1.add(jMenu1); jMenu2.setText(org.openide.util.NbBundle.getMessage(DesignFrame.class, "DesignFrame.jMenu2.text")); // NOI18N switchViewMenuItem.setText(org.openide.util.NbBundle.getMessage(DesignFrame.class, "DesignFrame.switchViewMenuItem.text")); // NOI18N switchViewMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { switchViewMenuItemActionPerformed(evt); } }); jMenu2.add(switchViewMenuItem); jMenuBar1.add(jMenu2); setJMenuBar(jMenuBar1); 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.LEADING) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(spacerTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 74, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel5) .addGroup(layout.createSequentialGroup() .addComponent(jLabel7) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(tmTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE))) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel4) .addComponent(insertComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, 138, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(insertComboBox2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel2)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel3) .addComponent(spacerTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, 98, javax.swing.GroupLayout.PREFERRED_SIZE))) .addGroup(layout.createSequentialGroup() .addComponent(jLabel8) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(lengthTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(reCheckButton) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(generateButton, javax.swing.GroupLayout.PREFERRED_SIZE, 134, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(cancelButton))) .addContainerGap()) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addComponent(statusLabel, javax.swing.GroupLayout.DEFAULT_SIZE, 85, Short.MAX_VALUE) .addGap(497, 497, 497)) .addGroup(layout.createSequentialGroup() .addGap(14, 14, 14) .addComponent(startLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(187, 187, 187) .addComponent(positionLabel) .addGap(199, 199, 199) .addComponent(endLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(88, Short.MAX_VALUE)) .addGroup(layout.createSequentialGroup() .addComponent(backgroundPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap()))) ); layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {spacerTextField1, spacerTextField2}); layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {insertComboBox1, insertComboBox2}); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(startLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(positionLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 18, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(endLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(backgroundPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel5) .addComponent(jLabel4)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(spacerTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(insertComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) .addGroup(layout.createSequentialGroup() .addComponent(jLabel2) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(insertComboBox2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(spacerTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) .addGroup(layout.createSequentialGroup() .addComponent(jLabel3) .addGap(34, 34, 34))) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel7) .addComponent(tmTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel8) .addComponent(lengthTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(statusLabel)) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(reCheckButton) .addComponent(generateButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(cancelButton))) .addContainerGap(24, Short.MAX_VALUE)) ); layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {insertComboBox1, insertComboBox2}); layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {spacerTextField1, spacerTextField2}); layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {cancelButton, generateButton, reCheckButton}); pack(); }// </editor-fold>//GEN-END:initComponents public PrimerDesignController getController() { return _controller; } public void updateLabels() { endLabel.setText("" + sequenceTextField.getText().length()); } private void generateButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_generateButtonActionPerformed statusLabel.setText("Status: Generating primers...."); String seq = sequenceTextField.getText(); reLocations = _controller.checkForRESites(); Double tm; int length; if (!this.checkRESites()) { try { tm = Double.parseDouble(tmTextField.getText()); } catch (NumberFormatException e) { statusLabel.setText("Warning: invalid target melting temperature"); return; } try { length = Integer.parseInt(lengthTextField.getText()); } catch (NumberFormatException e) { statusLabel.setText("Warning: invalid target primer length"); return; } String insert1 = (String) insertComboBox1.getSelectedItem(); String insert2 = (String) insertComboBox2.getSelectedItem(); String spacer1 = spacerTextField1.getText().toUpperCase(); String spacer2 = spacerTextField2.getText().toUpperCase(); _controller.generatePrimers(seq, tm, length, insert1, insert2, spacer1, spacer2); statusLabel.setText("Primers calculated"); } else { statusLabel.setText("Restriction sites found"); return; } // if (reLocations == null) { // try { // tm = Double.parseDouble(tmTextField.getText()); // } catch (NumberFormatException e) { // statusLabel.setText("Warning: invalid target melting temperature"); // return; // } // try { // length = Integer.parseInt(lengthTextField.getText()); // } catch (NumberFormatException e) { // statusLabel.setText("Warning: invalid target primer length"); // return; // } // String insert1 = (String) insertComboBox1.getSelectedItem(); // String insert2 = (String) insertComboBox2.getSelectedItem(); // String spacer1 = spacerTextField1.getText().toUpperCase(); // String spacer2 = spacerTextField2.getText().toUpperCase(); // _controller.generatePrimers(seq, tm, length, insert1, insert2, spacer1, spacer2); // } else { // Highlighter h = sequenceTextField.getHighlighter(); // DefaultHighlightPainter painter = new javax.swing.text.DefaultHighlighter.DefaultHighlightPainter(Color.RED); // java.awt.Graphics g = navigatorPanel.getGraphics().create(); // g.setColor(Color.RED); // h.removeAllHighlights(); // for (Integer i : reLocations.keySet()) { // try { // h.addHighlight(i, reLocations.get(i), painter); // Double placement = new Double(i / sequenceTextField.getText().length()); // placement = Math.floor(placement * navigatorPanel.getWidth()); // g.fillRect(placement.intValue(), 0, 3, navigatorPanel.getHeight()); // } catch (BadLocationException ex) { // Exceptions.printStackTrace(ex); // } // } // g.dispose(); // } }//GEN-LAST:event_generateButtonActionPerformed private boolean checkRESites() { // reLocations = _controller.checkForRESites(); if (reLocations != null) { Highlighter h = sequenceTextField.getHighlighter(); DefaultHighlightPainter painter = new javax.swing.text.DefaultHighlighter.DefaultHighlightPainter(Color.RED); java.awt.Graphics g = navigatorPanel.getGraphics().create(); g.setColor(Color.RED); h.removeAllHighlights(); for (Integer i : reLocations.keySet()) { try { h.addHighlight(i, reLocations.get(i), painter); Double placement = new Double(i / sequenceTextField.getText().length()); placement = Math.floor(placement * navigatorPanel.getWidth()); g.fillRect(placement.intValue(), 0, 3, navigatorPanel.getHeight()); } catch (BadLocationException ex) { Exceptions.printStackTrace(ex); } } g.dispose(); return true; } else { return false; } } /** * Retrieves the text in sequence text field * @return */ public String getText() { return sequenceTextField.getText(); } public JTextField getSequenceTextField() { return sequenceTextField; } /** * returns value in Tm text field * @return */ public Double getTm() { Double.parseDouble(tmTextField.getText()); return null; } private void sequenceTextFieldActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_sequenceTextFieldActionPerformed }//GEN-LAST:event_sequenceTextFieldActionPerformed private void navigatorPanelMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_navigatorPanelMouseClicked Double width = new Double(navigatorPanel.getWidth()); Double position = new Double(evt.getX()); int sequenceLength = sequenceTextField.getText().length(); Double newPosition = position / width * sequenceLength; positionLabel.setText("Position: " + newPosition.intValue()); if (newPosition < sequenceLength) { sequenceTextField.setCaretPosition(newPosition.intValue()); } if (sequenceTextField.getText().length() > 0) { java.awt.Graphics g = navigatorPanel.getGraphics().create(); g.clearRect(0, 0, navigatorPanel.getWidth(), navigatorPanel.getWidth()); g.setColor(Color.GREEN); Double placement = sequenceTextField.getCaretPosition() / (sequenceTextField.getText().length() + 0.0); placement = Math.floor(placement * navigatorPanel.getWidth()); g.fillRect(placement.intValue(), 0, 3, navigatorPanel.getHeight()); g.dispose(); // if (reLocations != null) { // g.setColor(Color.red); // for (Integer i : reLocations.keySet()) { // placement = new Double(i / sequenceTextField.getText().length()); // placement = Math.floor(placement * navigatorPanel.getWidth()); // g.fillRect(placement.intValue(), 0, 3, navigatorPanel.getHeight()); // // } // } // // g.dispose(); this.checkRESites(); positionLabel.setText("Position: " + sequenceTextField.getCaretPosition()); } }//GEN-LAST:event_navigatorPanelMouseClicked private void tmTextFieldActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_tmTextFieldActionPerformed // TODO add your handling code here: }//GEN-LAST:event_tmTextFieldActionPerformed private void cancelButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cancelButtonActionPerformed _controller.close(); }//GEN-LAST:event_cancelButtonActionPerformed private void lengthTextFieldActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_lengthTextFieldActionPerformed }//GEN-LAST:event_lengthTextFieldActionPerformed private void navigatorPanelMouseEntered(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_navigatorPanelMouseEntered }//GEN-LAST:event_navigatorPanelMouseEntered private void navigatorPanelMouseMoved(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_navigatorPanelMouseMoved }//GEN-LAST:event_navigatorPanelMouseMoved private void sequenceTextFieldMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_sequenceTextFieldMouseClicked if (sequenceTextField.getText().length() > 0) { java.awt.Graphics g = navigatorPanel.getGraphics().create(); g.clearRect(0, 0, navigatorPanel.getWidth(), navigatorPanel.getWidth()); g.setColor(Color.GREEN); Double placement = sequenceTextField.getCaretPosition() / (sequenceTextField.getText().length() + 0.0); placement = Math.floor(placement * navigatorPanel.getWidth()); g.fillRect(placement.intValue(), 0, 3, navigatorPanel.getHeight()); checkRESites(); // if (reLocations != null) { // g.setColor(Color.red); // for (Integer i : reLocations.keySet()) { // placement = new Double(i / sequenceTextField.getText().length()); // placement = Math.floor(placement * navigatorPanel.getWidth()); // g.fillRect(placement.intValue(), 0, 3, navigatorPanel.getHeight()); // // } // } g.dispose(); } positionLabel.setText("Position: "+sequenceTextField.getCaretPosition()); }//GEN-LAST:event_sequenceTextFieldMouseClicked private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem1ActionPerformed _controller.close(); }//GEN-LAST:event_jMenuItem1ActionPerformed private void switchViewMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_switchViewMenuItemActionPerformed _controller.switchViews(); }//GEN-LAST:event_switchViewMenuItemActionPerformed private void reCheckButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_reCheckButtonActionPerformed String seq = sequenceTextField.getText(); reLocations = _controller.checkForRESites(); if (reLocations == null) { statusLabel.setText("No restriction sites found"); return; } else { // Highlighter h = sequenceTextField.getHighlighter(); // DefaultHighlightPainter painter = new javax.swing.text.DefaultHighlighter.DefaultHighlightPainter(Color.RED); // java.awt.Graphics g = navigatorPanel.getGraphics().create(); // g.clearRect(0, 0, navigatorPanel.getWidth(), navigatorPanel.getHeight()); // g.setColor(Color.RED); // h.removeAllHighlights(); // for (Integer i : reLocations.keySet()) { // try { // h.addHighlight(i, reLocations.get(i), painter); // Double placement = new Double(i / sequenceTextField.getText().length()); // placement = Math.floor(placement * navigatorPanel.getWidth()); // g.fillRect(placement.intValue(), 0, 3, navigatorPanel.getHeight()); // } catch (BadLocationException ex) { // Exceptions.printStackTrace(ex); // } // } checkRESites(); statusLabel.setText("Restriction sites found"); // g.dispose(); } }//GEN-LAST:event_reCheckButtonActionPerformed private void sequenceTextFieldKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_sequenceTextFieldKeyPressed positionLabel.setText("Position: " + sequenceTextField.getCaretPosition()); if (sequenceTextField.getText().length() > 0) { java.awt.Graphics g = navigatorPanel.getGraphics().create(); g.clearRect(0, 0, navigatorPanel.getWidth(), navigatorPanel.getWidth()); g.setColor(Color.GREEN); Double placement = sequenceTextField.getCaretPosition() / (sequenceTextField.getText().length() + 0.0); placement = Math.floor(placement * navigatorPanel.getWidth()); g.fillRect(placement.intValue(), 0, 3, navigatorPanel.getHeight()); checkRESites(); g.dispose(); } _controller.validateKeyPressed(evt); }//GEN-LAST:event_sequenceTextFieldKeyPressed private void spacerTextField1MousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_spacerTextField1MousePressed }//GEN-LAST:event_spacerTextField1MousePressed private void spacerTextField2KeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_spacerTextField2KeyPressed _controller.validateKeyPressed(evt); }//GEN-LAST:event_spacerTextField2KeyPressed private void spacerTextField1KeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_spacerTextField1KeyPressed _controller.validateKeyPressed(evt); }//GEN-LAST:event_spacerTextField1KeyPressed private void spacerTextField1KeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_spacerTextField1KeyTyped _controller.validateKeyTyped(evt); }//GEN-LAST:event_spacerTextField1KeyTyped private void spacerTextField2KeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_spacerTextField2KeyTyped _controller.validateKeyTyped(evt); }//GEN-LAST:event_spacerTextField2KeyTyped private void sequenceTextFieldKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_sequenceTextFieldKeyTyped positionLabel.setText("Position: " + sequenceTextField.getCaretPosition()); _controller.validateKeyTyped(evt); }//GEN-LAST:event_sequenceTextFieldKeyTyped private void tmTextFieldKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_tmTextFieldKeyTyped _controller.validateNumTyped(evt); }//GEN-LAST:event_tmTextFieldKeyTyped private void lengthTextFieldKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_lengthTextFieldKeyTyped _controller.validateNumTyped(evt); }//GEN-LAST:event_lengthTextFieldKeyTyped private void loadSequenceMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_loadSequenceMenuItemActionPerformed _controller.loadSequence(); }//GEN-LAST:event_loadSequenceMenuItemActionPerformed /** * @param args the command line arguments */ public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new DesignFrame().setVisible(true); } }); } private HashMap<Integer, Integer> reLocations; private PrimerDesignController _controller; // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JPanel backgroundPanel; private javax.swing.JButton cancelButton; private javax.swing.JLabel endLabel; private javax.swing.JButton generateButton; private javax.swing.JComboBox insertComboBox1; private javax.swing.JComboBox insertComboBox2; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5; private javax.swing.JLabel jLabel7; private javax.swing.JLabel jLabel8; private javax.swing.JMenu jMenu1; private javax.swing.JMenu jMenu2; private javax.swing.JMenuBar jMenuBar1; private javax.swing.JMenuItem jMenuItem1; private javax.swing.JTextField lengthTextField; private javax.swing.JMenuItem loadSequenceMenuItem; private javax.swing.JPanel navigatorPanel; private javax.swing.JLabel positionLabel; private javax.swing.JButton reCheckButton; private javax.swing.JTextField sequenceTextField; private javax.swing.JTextField spacerTextField1; private javax.swing.JTextField spacerTextField2; private javax.swing.JLabel startLabel; private javax.swing.JLabel statusLabel; private javax.swing.JMenuItem switchViewMenuItem; private javax.swing.JTextField tmTextField; // End of variables declaration//GEN-END:variables }