/* * ClothoSequenceJPanel.java * * Created on June 6, 2009, 1:32 PM */ package org.clothocore.util.panels; import java.awt.event.KeyEvent; /** * * @author Nade */ public class ClothoSequenceJPanel extends javax.swing.JPanel { /** Creates new form ClothoSequenceJPanel */ public ClothoSequenceJPanel() { initComponents(); } /** 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(); sequenceTextPane = new javax.swing.JTextPane(); sequenceTextPane.setFont(new java.awt.Font("Courier New", 0, 11)); sequenceTextPane.setDragEnabled(true); sequenceTextPane.setMargin(new java.awt.Insets(0, 0, 0, 0)); sequenceTextPane.addKeyListener(new java.awt.event.KeyAdapter() { public void keyPressed(java.awt.event.KeyEvent evt) { sequenceTextPaneKeyPressed(evt); } public void keyReleased(java.awt.event.KeyEvent evt) { sequenceTextPanekeyReleasedJTextPane(evt); } public void keyTyped(java.awt.event.KeyEvent evt) { sequenceTextPanekeyTyped(evt); } }); jScrollPane1.setViewportView(sequenceTextPane); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 444, Short.MAX_VALUE) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 333, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(37, Short.MAX_VALUE)) ); }// </editor-fold>//GEN-END:initComponents private void sequenceTextPaneKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_sequenceTextPaneKeyPressed validateKeyPressed(evt); }//GEN-LAST:event_sequenceTextPaneKeyPressed private void sequenceTextPanekeyReleasedJTextPane(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_sequenceTextPanekeyReleasedJTextPane //this function is here as well as keyTyped since key typed seems to count string length //in textPane before the key is release i.e. it does not count the latest addition validateKeyReleased(evt); }//GEN-LAST:event_sequenceTextPanekeyReleasedJTextPane private void sequenceTextPanekeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_sequenceTextPanekeyTyped validateKeyTyped(evt); }//GEN-LAST:event_sequenceTextPanekeyTyped /** * Consumes enter and tab. * @param evt */ public void validateKeyPressed(KeyEvent evt) { // Commented out these lines: don't know if it is required for debugging still //if (evt.getKeyCode() == KeyEvent.VK_ENTER) { // System.out.println("Caret at: " + _sequenceview.get_TextArea().getCaretPosition()); // System.out.println(_highlightData); //} if (evt.getKeyCode() == KeyEvent.VK_ENTER || evt.getKeyCode() == KeyEvent.VK_TAB) { evt.consume(); } if (evt.getKeyCode() == KeyEvent.VK_BACK_SPACE) { } if (evt.getKeyCode() == KeyEvent.VK_DELETE) { } } public void validateKeyReleased(KeyEvent evt) { } /** * Used to validate key strokes. If key is invalid (i.e. not a * A, G, C, T/U, etc.) then the event will be consumed * @param evt KeyEvent */ public void validateKeyTyped(KeyEvent evt) { char lo; char hi; if (_dnaType) { lo = 't'; hi = 'T'; } else { lo = 'u'; hi = 'U'; } if (_allowDegeneracy == false && (evt.getKeyChar() != 'a' && evt.getKeyChar() != 'A' && evt.getKeyChar() != 'g' && evt.getKeyChar() != 'G' && evt.getKeyChar() != lo && evt.getKeyChar() != hi && evt.getKeyChar() != 'c' && evt.getKeyChar() != 'C') ) evt.consume(); if (_allowDegeneracy == true && (evt.getKeyChar() != 'a' && evt.getKeyChar() != 'A' && evt.getKeyChar() != 'g' && evt.getKeyChar() != 'G' && evt.getKeyChar() != lo && evt.getKeyChar() != hi && evt.getKeyChar() != 'c' && evt.getKeyChar() != 'C' && evt.getKeyChar() != 'r' && evt.getKeyChar() != 'R' && evt.getKeyChar() != 'y' && evt.getKeyChar() != 'Y' && evt.getKeyChar() != 'm' && evt.getKeyChar() != 'M' && evt.getKeyChar() != 'k' && evt.getKeyChar() != 'K' && evt.getKeyChar() != 'w' && evt.getKeyChar() != 'W' && evt.getKeyChar() != 's' && evt.getKeyChar() != 'S' && evt.getKeyChar() != 'b' && evt.getKeyChar() != 'B' && evt.getKeyChar() != 'd' && evt.getKeyChar() != 'D' && evt.getKeyChar() != 'h' && evt.getKeyChar() != 'H' && evt.getKeyChar() != 'v' && evt.getKeyChar() != 'V' && evt.getKeyChar() != 'n' && evt.getKeyChar() != 'N') ) evt.consume(); if (!_keyTypedAtLeastOnce) { _keyTypedAtLeastOnce = true; } } private boolean _allowDegeneracy; private boolean _dnaType; private boolean _keyTypedAtLeastOnce; // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JScrollPane jScrollPane1; private javax.swing.JTextPane sequenceTextPane; // End of variables declaration//GEN-END:variables }