/*
* 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
}