Insight into something.
 
 
/*
 * MainFrame.java
 *
 * Created on Jul 30, 2011, 12:05:21 AM
 */
package gui;
import java.awt.Color;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.regex.Pattern;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
/**
 * Customizes the FileChooser to only look for .txt files.
 */
class TextFilter extends javax.swing.filechooser.FileFilter {
    /**
     * Makes the FileChooser only view folders or .txt documents.
     *
     * @param file
     *
     * @return
     */
    @Override
    public boolean accept(File file) {
        return file.isDirectory() || file.getAbsolutePath().endsWith(".txt");
    }
    /**
     * Changes what is displayed so the user knows what she is looking at.
     *
     * @return The String that you want as the "label"
     */
    @Override
    public String getDescription() {
        return "Text documents (*.txt)";
    }
}
/**
 *
 * @author Nicholas Guthrie
 */
public class MainFrame extends javax.swing.JFrame {
    private static char cbc[] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};
    int init[];
    String encrypted_message;
    String decrypted_message;
    String Checksum;
    /** Creates new form MainFrame */
    public MainFrame() {
        initComponents();
    }
    private int Search(char c) {
        for (int i = 0; i < 26; i++) {
            if (MainFrame.cbc[i] == c) {
                return i;
            }
        }
        return -1;
    }
    /** 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")
    // //GEN-BEGIN:initComponents
    private void initComponents() {
        buttonGroup_mode = new javax.swing.ButtonGroup();
        buttonGroup_checksum = new javax.swing.ButtonGroup();
        jFileChooser = new javax.swing.JFileChooser();
        jDialog_error = new javax.swing.JDialog();
        jScrollPane2 = new javax.swing.JScrollPane();
        jTextArea1 = new javax.swing.JTextArea();
        jPanel1 = new javax.swing.JPanel();
        jPanel3 = new javax.swing.JPanel();
        jPanel4 = new javax.swing.JPanel();
        jLabel4 = new javax.swing.JLabel();
        jScrollPane_plain = new javax.swing.JScrollPane();
        jEditorPane_plain = new javax.swing.JEditorPane();
        jPanel5 = new javax.swing.JPanel();
        jLabel5 = new javax.swing.JLabel();
        jScrollPane3 = new javax.swing.JScrollPane();
        jEditorPane_encrypted = new javax.swing.JEditorPane();
        jPanel2 = new javax.swing.JPanel();
        jLabel3 = new javax.swing.JLabel();
        jTextField_init = new javax.swing.JTextField();
        jLabel1 = new javax.swing.JLabel();
        jTextField_key = new javax.swing.JTextField();
        jPanel7 = new javax.swing.JPanel();
        jRadioButton_encrypt = new javax.swing.JRadioButton();
        jRadioButton_decrypt = new javax.swing.JRadioButton();
        jPanel8 = new javax.swing.JPanel();
        jRadioButton_no = new javax.swing.JRadioButton();
        jRadioButton_yes = new javax.swing.JRadioButton();
        jTextField_checksum = new javax.swing.JTextField();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTextPane_instructions = new javax.swing.JTextPane();
        jMenuBar1 = new javax.swing.JMenuBar();
        jMenu1 = new javax.swing.JMenu();
        jMenuItem1 = new javax.swing.JMenuItem();
        jMenuItem2 = new javax.swing.JMenuItem();
        jMenuItem4 = new javax.swing.JMenuItem();
        jMenu2 = new javax.swing.JMenu();
        jMenuItem3 = new javax.swing.JMenuItem();
        jFileChooser.setFileFilter(new TextFilter());
        jFileChooser.setForeground(java.awt.Color.black);
        jDialog_error.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        jDialog_error.setTitle("Invalid Input");
        jDialog_error.setAlwaysOnTop(true);
        jDialog_error.setBackground(java.awt.Color.gray);
        jDialog_error.setResizable(false);
        jTextArea1.setColumns(20);
        jTextArea1.setRows(5);
        jTextArea1.setText("Input that is not alphanumeric has been detected.\nAll input has been erased been reset.\n\nValid input can be:\nA B C D E F G H I J K L M N O P Q R S T U V W X Y Z\na b c d e f g h i j k l m n o p q r s t u v w x y z");
        jScrollPane2.setViewportView(jTextArea1);
        javax.swing.GroupLayout jDialog_errorLayout = new javax.swing.GroupLayout(jDialog_error.getContentPane());
        jDialog_error.getContentPane().setLayout(jDialog_errorLayout);
        jDialog_errorLayout.setHorizontalGroup(
            jDialog_errorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jDialog_errorLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 418, Short.MAX_VALUE)
                .addContainerGap())
        );
        jDialog_errorLayout.setVerticalGroup(
            jDialog_errorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jDialog_errorLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 126, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setForeground(java.awt.Color.darkGray);
        setResizable(false);
        jPanel1.setBackground(java.awt.Color.black);
        jPanel3.setBackground(java.awt.Color.darkGray);
        jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Encryption / Decryption", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Consolas", 1, 14), java.awt.Color.orange)); // NOI18N
        jPanel4.setBackground(java.awt.Color.darkGray);
        jPanel4.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));
        jLabel4.setFont(new java.awt.Font("Consolas", 1, 12));
        jLabel4.setForeground(java.awt.Color.green);
        jLabel4.setText("Plain Text");
        jScrollPane_plain.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
        jScrollPane_plain.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
        jEditorPane_plain.setBackground(java.awt.Color.lightGray);
        jEditorPane_plain.setFont(new java.awt.Font("Consolas", 0, 13));
        jEditorPane_plain.setAutoscrolls(false);
        jEditorPane_plain.setDisabledTextColor(new java.awt.Color(255, 255, 255));
        jEditorPane_plain.setEnabled(false);
        jEditorPane_plain.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyReleased(java.awt.event.KeyEvent evt) {
                jEditorPane_plainKeyReleased(evt);
            }
        });
        jScrollPane_plain.setViewportView(jEditorPane_plain);
        javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4);
        jPanel4.setLayout(jPanel4Layout);
        jPanel4Layout.setHorizontalGroup(
            jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel4Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jScrollPane_plain, javax.swing.GroupLayout.DEFAULT_SIZE, 757, Short.MAX_VALUE)
                    .addComponent(jLabel4))
                .addContainerGap())
        );
        jPanel4Layout.setVerticalGroup(
            jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel4Layout.createSequentialGroup()
                .addComponent(jLabel4)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jScrollPane_plain, javax.swing.GroupLayout.DEFAULT_SIZE, 126, Short.MAX_VALUE)
                .addContainerGap())
        );
        jPanel5.setBackground(java.awt.Color.darkGray);
        jPanel5.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));
        jLabel5.setFont(new java.awt.Font("Consolas", 1, 12));
        jLabel5.setForeground(java.awt.Color.green);
        jLabel5.setText("Encrypted Text");
        jScrollPane3.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
        jScrollPane3.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
        jEditorPane_encrypted.setBackground(java.awt.Color.lightGray);
        jEditorPane_encrypted.setEditable(false);
        jEditorPane_encrypted.setFont(new java.awt.Font("Consolas", 0, 13));
        jEditorPane_encrypted.setForeground(new java.awt.Color(255, 255, 255));
        jEditorPane_encrypted.setAutoscrolls(false);
        jEditorPane_encrypted.setDisabledTextColor(new java.awt.Color(255, 255, 255));
        jEditorPane_encrypted.setEnabled(false);
        jEditorPane_encrypted.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyReleased(java.awt.event.KeyEvent evt) {
                jEditorPane_encryptedKeyReleased(evt);
            }
        });
        jScrollPane3.setViewportView(jEditorPane_encrypted);
        javax.swing.GroupLayout jPanel5Layout = new javax.swing.GroupLayout(jPanel5);
        jPanel5.setLayout(jPanel5Layout);
        jPanel5Layout.setHorizontalGroup(
            jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel5Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 759, Short.MAX_VALUE)
                    .addComponent(jLabel5))
                .addContainerGap())
        );
        jPanel5Layout.setVerticalGroup(
            jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel5Layout.createSequentialGroup()
                .addComponent(jLabel5)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 128, Short.MAX_VALUE)
                .addContainerGap())
        );
        jPanel2.setBackground(java.awt.Color.darkGray);
        jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Enter Keys", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Consolas", 1, 12), java.awt.Color.green)); // NOI18N
        jLabel3.setFont(new java.awt.Font("Consolas", 1, 12));
        jLabel3.setForeground(java.awt.Color.green);
        jLabel3.setText("INIT:");
        jTextField_init.setBackground(java.awt.Color.cyan);
        jTextField_init.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyReleased(java.awt.event.KeyEvent evt) {
                jTextField_initKeyReleased(evt);
            }
        });
        jLabel1.setFont(new java.awt.Font("Consolas", 1, 12));
        jLabel1.setForeground(java.awt.Color.green);
        jLabel1.setText("Key:");
        jTextField_key.setBackground(java.awt.Color.cyan);
        jTextField_key.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyReleased(java.awt.event.KeyEvent evt) {
                jTextField_keyKeyReleased(evt);
            }
        });
        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addComponent(jLabel3)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jTextField_init, javax.swing.GroupLayout.PREFERRED_SIZE, 81, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jLabel1)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jTextField_key, javax.swing.GroupLayout.PREFERRED_SIZE, 29, javax.swing.GroupLayout.PREFERRED_SIZE))
        );
        jPanel2Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jTextField_init, jTextField_key});
        jPanel2Layout.setVerticalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                .addComponent(jLabel3)
                .addComponent(jTextField_init, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addComponent(jLabel1)
                .addComponent(jTextField_key, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
        );
        jPanel7.setBackground(java.awt.Color.darkGray);
        jPanel7.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Select Mode:", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Consolas", 1, 12), java.awt.Color.green)); // NOI18N
        jRadioButton_encrypt.setBackground(java.awt.Color.darkGray);
        buttonGroup_mode.add(jRadioButton_encrypt);
        jRadioButton_encrypt.setForeground(java.awt.Color.cyan);
        jRadioButton_encrypt.setText("Encryption");
        jRadioButton_encrypt.addChangeListener(new javax.swing.event.ChangeListener() {
            public void stateChanged(javax.swing.event.ChangeEvent evt) {
                jRadioButton_encryptStateChanged(evt);
            }
        });
        jRadioButton_encrypt.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jRadioButton_encryptActionPerformed(evt);
            }
        });
        jRadioButton_encrypt.addPropertyChangeListener(new java.beans.PropertyChangeListener() {
            public void propertyChange(java.beans.PropertyChangeEvent evt) {
                jRadioButton_encryptPropertyChange(evt);
            }
        });
        jRadioButton_decrypt.setBackground(java.awt.Color.darkGray);
        buttonGroup_mode.add(jRadioButton_decrypt);
        jRadioButton_decrypt.setForeground(java.awt.Color.cyan);
        jRadioButton_decrypt.setText("Decryption");
        jRadioButton_decrypt.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jRadioButton_decryptActionPerformed(evt);
            }
        });
        javax.swing.GroupLayout jPanel7Layout = new javax.swing.GroupLayout(jPanel7);
        jPanel7.setLayout(jPanel7Layout);
        jPanel7Layout.setHorizontalGroup(
            jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel7Layout.createSequentialGroup()
                .addComponent(jRadioButton_encrypt)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(jRadioButton_decrypt)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        jPanel7Layout.setVerticalGroup(
            jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel7Layout.createSequentialGroup()
                .addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jRadioButton_encrypt)
                    .addComponent(jRadioButton_decrypt))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        jPanel8.setBackground(java.awt.Color.darkGray);
        jPanel8.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Use Check Sum?", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Consolas", 1, 12), java.awt.Color.green)); // NOI18N
        jRadioButton_no.setBackground(java.awt.Color.darkGray);
        buttonGroup_checksum.add(jRadioButton_no);
        jRadioButton_no.setForeground(java.awt.Color.cyan);
        jRadioButton_no.setText("No");
        jRadioButton_no.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jRadioButton_noActionPerformed(evt);
            }
        });
        jRadioButton_yes.setBackground(java.awt.Color.darkGray);
        buttonGroup_checksum.add(jRadioButton_yes);
        jRadioButton_yes.setForeground(java.awt.Color.cyan);
        jRadioButton_yes.setText("Yes");
        jRadioButton_yes.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jRadioButton_yesActionPerformed(evt);
            }
        });
        javax.swing.GroupLayout jPanel8Layout = new javax.swing.GroupLayout(jPanel8);
        jPanel8.setLayout(jPanel8Layout);
        jPanel8Layout.setHorizontalGroup(
            jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel8Layout.createSequentialGroup()
                .addContainerGap(10, Short.MAX_VALUE)
                .addComponent(jRadioButton_no)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(jRadioButton_yes)
                .addContainerGap())
        );
        jPanel8Layout.setVerticalGroup(
            jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel8Layout.createSequentialGroup()
                .addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jRadioButton_yes)
                    .addComponent(jRadioButton_no))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        jTextField_checksum.setBackground(java.awt.Color.darkGray);
        jTextField_checksum.setEditable(false);
        jTextField_checksum.setFont(new java.awt.Font("Consolas", 0, 12));
        jTextField_checksum.setForeground(java.awt.Color.red);
        jTextField_checksum.setHorizontalAlignment(javax.swing.JTextField.CENTER);
        jTextField_checksum.setText("Inactive");
        jTextField_checksum.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Checksum Status", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Consolas", 1, 14), java.awt.Color.green)); // NOI18N
        javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
        jPanel3.setLayout(jPanel3Layout);
        jPanel3Layout.setHorizontalGroup(
            jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel5, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            .addComponent(jPanel4, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            .addGroup(jPanel3Layout.createSequentialGroup()
                .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jPanel7, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jPanel8, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jTextField_checksum, javax.swing.GroupLayout.DEFAULT_SIZE, 220, Short.MAX_VALUE)
                .addContainerGap())
        );
        jPanel3Layout.setVerticalGroup(
            jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel3Layout.createSequentialGroup()
                .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                        .addComponent(jPanel8, javax.swing.GroupLayout.Alignment.LEADING, 0, 47, Short.MAX_VALUE)
                        .addComponent(jPanel7, javax.swing.GroupLayout.Alignment.LEADING, 0, 47, Short.MAX_VALUE)
                        .addComponent(jPanel2, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 47, Short.MAX_VALUE))
                    .addComponent(jTextField_checksum, javax.swing.GroupLayout.PREFERRED_SIZE, 47, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jPanel4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jPanel5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
        );
        jPanel3Layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {jPanel4, jPanel5});
        jScrollPane1.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER);
        jTextPane_instructions.setBackground(new java.awt.Color(153, 153, 0));
        jTextPane_instructions.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Instructions", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Consolas", 1, 14), java.awt.Color.white)); // NOI18N
        jTextPane_instructions.setEditable(false);
        jTextPane_instructions.setFont(new java.awt.Font("Tahoma", 0, 12));
        jTextPane_instructions.setForeground(new java.awt.Color(255, 255, 255));
        jScrollPane1.setViewportView(jTextPane_instructions);
        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 795, Short.MAX_VALUE))
                .addContainerGap())
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 120, Short.MAX_VALUE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap())
        );
        jMenuBar1.setBackground(new java.awt.Color(0, 255, 204));
        jMenu1.setText("File");
        jMenuItem1.setText("Open Encrypted File");
        jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem1ActionPerformed(evt);
            }
        });
        jMenu1.add(jMenuItem1);
        jMenuItem2.setText("Save Encrypted File");
        jMenuItem2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem2ActionPerformed(evt);
            }
        });
        jMenu1.add(jMenuItem2);
        jMenuItem4.setText("Quit");
        jMenuItem4.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem4ActionPerformed(evt);
            }
        });
        jMenu1.add(jMenuItem4);
        jMenuBar1.add(jMenu1);
        jMenu2.setText("Edit");
        jMenuItem3.setText("Clear All");
        jMenuItem3.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem3ActionPerformed(evt);
            }
        });
        jMenu2.add(jMenuItem3);
        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)
            .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        pack();
    }//  //GEN-END:initComponents
    private void jTextField_initKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jTextField_initKeyReleased
        jTextField_init.setText(verify(jTextField_init.getText()));
        if (jTextField_init.getText().length() > 4) {
            jTextField_init.setText(jTextField_init.getText().substring(0, 4));
        }
        if (jTextField_init.getText().length() == 4 && jTextField_key.getText().length() == 4) {
            if (jEditorPane_plain != null || jEditorPane_encrypted != null) {
                set_mode();
            }
        }
    }//GEN-LAST:event_jTextField_initKeyReleased
    private void jTextField_keyKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jTextField_keyKeyReleased
        jTextField_key.setText(verify(jTextField_key.getText()));
        if (jTextField_key.getText().length() > 4) {
            jTextField_key.setText(jTextField_key.getText().substring(0, 4));
        }
        if (jTextField_init.getText().length() == 4 && jTextField_key.getText().length() == 4) {
            if (jEditorPane_plain != null || jEditorPane_encrypted != null) {
                set_mode();
            }
        }
    }//GEN-LAST:event_jTextField_keyKeyReleased
    private void jRadioButton_encryptActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jRadioButton_encryptActionPerformed
        set_mode();
    }//GEN-LAST:event_jRadioButton_encryptActionPerformed
    private void jRadioButton_decryptActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jRadioButton_decryptActionPerformed
        //jButton_convert.setText("Decrypt");
        //jButton_convert.setEnabled(true);
        set_mode();
    }//GEN-LAST:event_jRadioButton_decryptActionPerformed
    private int Decrypt() {
        String out = new String();
        String message = "    Message:";
        String encrypted = "   Encrypted:";
        String key = "Subtract Key:";
        String result = "      Result:";
        String vigenere = "    Vigenere:";
        String end_result = "     Message: ";
        String plain = "  Plain Text:";
        String send = "   Encrypted:";
        encrypted_message = new String();
        decrypted_message = new String();
        char c_cipher[] = new char[150];
        char c_init[] = jTextField_init.getText().toCharArray();
        char c_key[] = jTextField_key.getText().toCharArray();
        int i_init[] = new int[4];
        int next_init[] = new int[4];
        int i_key[] = new int[4];
        for (int i = 0; i < 4; i++) {
            next_init[i] = Search(c_init[i]);
            i_key[i] = Search(c_key[i]);
        }
        encrypted_message = verify(jEditorPane_encrypted.getText());
        if (encrypted_message == null) {
            return -1;
        }
        c_cipher = encrypted_message.toCharArray();
        int size = encrypted_message.length();
        if (jRadioButton_yes.isSelected()) {
            size -= 4;
        }
        int counter = 0;
        int k = 0;
        for (int i = 0; i < size; i++) {
            int pos = Search(c_cipher[i]);
            //Store Init
            i_init[counter] = next_init[counter];
            next_init[counter] = pos;
            if (pos >= 0) {
                if (counter == 0) {
                    plain = plain.concat("\t[");
                    encrypted = encrypted.concat("\t[");
                    vigenere = vigenere.concat("\t[");
                    key = key.concat("\t[");
                    result = result.concat("\t[");
                    message = message.concat("\t[");
                    send = send.concat("\t[");
                    end_result = end_result.concat("\t[");
                }
                //Original Message
                plain = plain.concat(" " + MainFrame.cbc[pos]);
                encrypted = encrypted.concat(" " + pos);
                //Subtract Key
                key = key.concat(" " + i_key[counter % 4]);
                pos = (pos - i_key[counter % 4]) % 26;
                if (pos < 0) {
                    pos += 26;
                }
                result = result.concat(" " + pos);
                //Subtract Init
                vigenere = vigenere.concat(" " + i_init[counter % 4]);
                pos = (pos - i_init[counter % 4]) % 26;
                if (pos < 0) {
                    pos += 26;
                }
                end_result = end_result.concat(" " + pos);
                send = send.concat(" " + MainFrame.cbc[pos]);
                decrypted_message = decrypted_message.concat("" + MainFrame.cbc[pos]);
                counter++;
                if (counter == 4) {
                    plain = plain.concat("]");
                    message = message.concat("]");
                    //add = add.concat("]");
                    result = result.concat("]");
                    key = key.concat("]");
                    vigenere = vigenere.concat("]");
                    encrypted = encrypted.concat("]");
                    send = send.concat("]");
                    end_result = end_result.concat("]");
                    counter = 0;
                    k++;
                    if (k == 5) {
                        k = 0;
                        out = out.concat(plain + "\n" + encrypted + "\n" + key + "\n" + result + "\n" + vigenere + "\n" + end_result + "\n" + send + "\n\n");
                        message = "    Message:";
                        encrypted = "   Encrypted:";
                        key = "Subtract Key:";
                        result = "      Result:";
                        vigenere = "    Vigenere:";
                        end_result = "     Message: ";
                        plain = "  Plain Text:";
                        send = "   Encrypted:";
                    }
                }
            }
        }
        out = out.concat(plain + "\n" + encrypted + "\n" + key + "\n" + result + "\n" + vigenere + "\n" + end_result + "\n" + send + "\n\n");
        if (jRadioButton_yes.isSelected()) {
            char msg[] = encrypted_message.toCharArray();
            int i_checksum[] = new int[4];
            String s_checksum = "[";
            if (encrypted_message.length() > 4) {
                for (int i = 0; i < encrypted_message.length(); i++) {
                    i_checksum[i % 4] = (i_checksum[i % 4] + Search(msg[i])) % 26;
                }
                for (int i = 0; i < 4; i++) {
                    s_checksum = s_checksum.concat(" " + i_checksum[i]);
                }
                s_checksum = s_checksum.concat("]");
                if (i_checksum[0] == 0 && i_checksum[1] == 0 && i_checksum[2] == 0 && i_checksum[3] == 0) {
                    jTextField_checksum.setForeground(Color.green);
                    s_checksum = s_checksum.concat(" - Valid");
                } else {
                    jTextField_checksum.setForeground(Color.red);
                    s_checksum = s_checksum.concat(" - Invalid");
                }
                jTextField_checksum.setText(s_checksum);
            }
        }
        jEditorPane_plain.setText("" + out);
        jEditorPane_plain.setCaretPosition(0);
        return 0;
    }
    private int Encrypt() {
        String out = new String();
        String plain = "   Plain:";
        String message = "  Message:";
        String add = "      Add:";
        String result = "   Result:";
        String key = "      Key:";
        String vigenere = " Vigenere:";
        String encrypted = "Encrypted:";
        String send = "Encrypted:";
        encrypted_message = new String();
        decrypted_message = new String();
        char c_cipher[] = new char[150];
        char c_init[] = jTextField_init.getText().toCharArray();
        char c_key[] = jTextField_key.getText().toCharArray();
        int i_init[] = new int[4];
        int i_key[] = new int[4];
        try {
            for (int i = 0;
                    i < 4; i++) {
                i_init[i] = Search(c_init[i]);
                i_key[i] = Search(c_key[i]);
            }
        } catch (ArrayIndexOutOfBoundsException ex) {
            return -1;
        }
        //collect and verify input
        decrypted_message = verify(jEditorPane_plain.getText());
        if (decrypted_message == null) {
            return -1;
        }
        //add Zs to input
        while (decrypted_message.length() % 4 != 0) {
            decrypted_message = decrypted_message.concat("Z");
        }
        c_cipher = decrypted_message.toCharArray();
        int counter = 0;
        int k = 0;
        for (int i = 0; i < decrypted_message.length(); i++) {
            int pos = Search(c_cipher[i]);
            if (pos >= 0) {
                if (counter == 0) {
                    plain = plain.concat("\t[");
                    message = message.concat("\t[");
                    add = add.concat("\t[");
                    result = result.concat("\t[");
                    key = key.concat("\t[");
                    vigenere = vigenere.concat("\t[");
                    encrypted = encrypted.concat("\t[");
                    send = send.concat("\t[");
                }
                plain = plain.concat(" " + MainFrame.cbc[pos]);
                message = message.concat(" " + pos);
                add = add.concat(" " + i_init[counter % 4]);
                pos = (pos + i_init[counter % 4]) % 26;
                result = result.concat(" " + pos);
                key = key.concat(" " + i_key[counter % 4]);
                i_init[counter % 4] = pos = (pos + i_key[counter % 4]) % 26;
                vigenere = vigenere.concat(" " + pos);
                send = send.concat(" " + MainFrame.cbc[pos]);
                encrypted_message = encrypted_message.concat("" + MainFrame.cbc[pos]);
                counter++;
                if (counter == 4) {
                    plain = plain.concat("]");
                    message = message.concat("]");
                    add = add.concat("]");
                    result = result.concat("]");
                    key = key.concat("]");
                    vigenere = vigenere.concat("]");
                    encrypted = encrypted.concat("]");
                    send = send.concat("]");
                    counter = 0;
                    k++;
                    if (k == 5) {
                        out = out.concat(plain + "\n" + message + "\n" + add + "\n" + result + "\n" + key + "\n" + vigenere + "\n" + send + "\n\n");
                        k = 0;
                        plain = "    Plain:";
                        message = "  Message:";
                        add = "      Add:";
                        result = "   Result:";
                        key = "      Key:";
                        vigenere = " Vigenere:";
                        encrypted = "Encrypted:";
                        send = "Encrypted:";
                    }
                }
            }
        }
        out = out.concat(plain + "\n" + message + "\n" + add + "\n" + result + "\n" + key + "\n" + vigenere + "\n" + send);
        if (jRadioButton_yes.isSelected()) {
            char msg[] = encrypted_message.toCharArray();
            int i_checksum[] = {0, 0, 0, 0};
            String numbers = new String();
            String characters = new String();
            numbers = characters = "[";
            int pos = 0;
            for (int i = 0; i < encrypted_message.length(); i++) {
                char c = msg[i];
                int val = Search(c);
                if (val >= 0) {
                    i_checksum[pos % 4] = (i_checksum[pos % 4] + val) % 26;
                    pos++;
                }
            }
            for (int i = 0; i < 4; i++) {
                i_checksum[i] = (26 - i_checksum[i]) % 26;
                numbers = numbers.concat(" " + i_checksum[i]);
                Checksum = Checksum.concat("" + MainFrame.cbc[i_checksum[i]]);
                characters = characters.concat(" " + MainFrame.cbc[i_checksum[i]]);
                encrypted_message = encrypted_message.concat("" + MainFrame.cbc[i_checksum[i]]);
            }
            characters = characters.concat("]");
            numbers = numbers.concat("]");
            out = out.concat("\t" + characters);
            jTextField_checksum.setText(numbers);
        }
        jEditorPane_encrypted.setText(" " + out);
        jEditorPane_encrypted.setCaretPosition(0);
        return 0;
    }
    private void jEditorPane_plainKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jEditorPane_plainKeyReleased
        jEditorPane_plain.setText(jEditorPane_plain.getText().toUpperCase());
        Encrypt();
    }//GEN-LAST:event_jEditorPane_plainKeyReleased
    private void jEditorPane_encryptedKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jEditorPane_encryptedKeyReleased
        jEditorPane_encrypted.setText(jEditorPane_encrypted.getText().toUpperCase());
        Decrypt();
    }//GEN-LAST:event_jEditorPane_encryptedKeyReleased
    private void jRadioButton_encryptStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_jRadioButton_encryptStateChanged
    }//GEN-LAST:event_jRadioButton_encryptStateChanged
    private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem1ActionPerformed
        try {
            Open_File();
        } catch (IOException ex) {
            Logger.getLogger(MainFrame.class.getName()).log(Level.SEVERE, null, ex);
        }
    }//GEN-LAST:event_jMenuItem1ActionPerformed
    private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem2ActionPerformed
        /**
         * Allows a user to (Save As) the contents of the Text Editor to a file.
         */
        File output;
        int option = jFileChooser.showSaveDialog(this);
        if (option == JFileChooser.APPROVE_OPTION) {
            if (jFileChooser.getSelectedFile() != null) {
                output = jFileChooser.getSelectedFile();
                //check if the file extension is correct
                if (!output.getName().endsWith(".txt")) {
                    output = new File(output.getAbsolutePath() + ".txt");
                }
                try {
                    BufferedWriter out = null;
                    out = new BufferedWriter(new FileWriter(output));
                    out.write(jTextField_key.getText() + " ");
                    out.write(jTextField_init.getText() + " ");
                    out.write(encrypted_message);
                    out.close();
                } catch (IOException ex) {
                    Logger.getLogger(MainFrame.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        }
    }//GEN-LAST:event_jMenuItem2ActionPerformed
    private void jRadioButton_encryptPropertyChange(java.beans.PropertyChangeEvent evt) {//GEN-FIRST:event_jRadioButton_encryptPropertyChange
        set_mode();
    }//GEN-LAST:event_jRadioButton_encryptPropertyChange
    private void jRadioButton_yesActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jRadioButton_yesActionPerformed
        jTextField_checksum.setForeground(Color.green);
        jTextField_checksum.setText("Activated");
        set_mode();
    }//GEN-LAST:event_jRadioButton_yesActionPerformed
    private void jRadioButton_noActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jRadioButton_noActionPerformed
        jTextField_checksum.setText("Inactive");
        jTextField_checksum.setForeground(Color.red);
        set_mode();
    }//GEN-LAST:event_jRadioButton_noActionPerformed
    private void jMenuItem3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem3ActionPerformed
        clear_all();
    }//GEN-LAST:event_jMenuItem3ActionPerformed
    private void jMenuItem4ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem4ActionPerformed
        System.exit(0);
    }//GEN-LAST:event_jMenuItem4ActionPerformed
    /**
     * Attempts to open a file.
     */
    private int Open_File() throws IOException {
        int returnVal = jFileChooser.showOpenDialog(this);
        if (returnVal == JFileChooser.APPROVE_OPTION) {
            jRadioButton_decrypt.setSelected(true);
            File file = jFileChooser.getSelectedFile();
            FileReader input = new FileReader(file.getAbsolutePath());
            char t_init[] = new char[4];
            char t_key[] = new char[4];
            char text[] = new char[104];
            char foo[] = new char[1];
            String new_init = new String();
            String new_key = new String();
            String new_text = new String();
            input.read(t_key, 0, 4);
            input.read(foo, 0, 1);
            input.read(t_init, 0, 4);
            input.read(foo, 0, 1);
            input.read(text, 0, 104);
            int size = text.toString().length();
            String test;
            for (int i = 0; i < 4; i++) {
                test = verify("" + t_init[i]);
                if (test != null) {
                    new_init = new_init.concat(test);
                } else {
                    return -1;
                }
                test = verify("" + t_key[i]);
                if (test != null) {
                    new_key = new_key.concat(test);
                } else {
                    return -1;
                }
            }
            for (int i = 0; i < text.length; i++) {
                if (Search(text[i]) != -1) {
                    new_text = new_text.concat("" + text[i]);
                }
            }
            jTextField_init.setText(new_init.toString());
            jTextField_key.setText(new_key.toString());
            jEditorPane_encrypted.setText(new_text);
            encrypted_message = verify(new_text);
            set_mode();
        }
        return 0;
    }
    private void clear_all() {
        encrypted_message = decrypted_message = null;
        jEditorPane_encrypted.setText("");
        jEditorPane_plain.setText("");
        jTextField_init.setText("");
        jTextField_key.setText("");
        buttonGroup_checksum.clearSelection();
        buttonGroup_mode.clearSelection();
        jTextField_checksum.setText("Inactive");
        jTextField_init.requestFocusInWindow();
        set_mode();
    }
    void set_mode() {
        if (jRadioButton_encrypt.isSelected()) {
            jEditorPane_plain.setEnabled(true);
            jEditorPane_plain.setBackground(new Color(0, 204, 204));
            jEditorPane_encrypted.setEnabled(false);
            jEditorPane_encrypted.setBackground(Color.lightGray);
            jEditorPane_encrypted.setText("");
            try {
                jEditorPane_plain.setText(decrypted_message);
                Encrypt();
            } catch (NullPointerException e) {
                jEditorPane_plain.setText("");
            }
            jEditorPane_plain.requestFocusInWindow();
        } else if (jRadioButton_decrypt.isSelected()) {
            jEditorPane_encrypted.setBackground(new Color(0, 204, 204));
            jEditorPane_encrypted.setEnabled(true);
            jEditorPane_encrypted.setEditable(true);
            jEditorPane_plain.setEnabled(false);
            jEditorPane_plain.setBackground(Color.lightGray);
            jEditorPane_plain.setText("");
            try {
                jEditorPane_encrypted.setText(encrypted_message);
                Decrypt();
            } catch (NullPointerException e) {
                jEditorPane_encrypted.setText("");
            }
            jEditorPane_encrypted.requestFocusInWindow();
        } else {
            jEditorPane_encrypted.setBackground(Color.lightGray);
            jEditorPane_encrypted.setEnabled(false);
            jEditorPane_encrypted.setEditable(false);
            jEditorPane_plain.setEnabled(false);
            jEditorPane_plain.setBackground(Color.lightGray);
            jEditorPane_plain.setText("");
            jEditorPane_encrypted.setText("");
            jTextField_init.requestFocusInWindow();
        }
    }
    private String verify(String unverified) {
        unverified = unverified.toUpperCase();
        char data[] = unverified.toCharArray();
        for (int i = 0; i < unverified.length(); i++) {
            if (Search(data[i]) == -1) {
                //custom title, error icon
                String error_msg = "Input that is not alphanumeric has been detected.\n"
                        + "All input has been reset. Please verify your input.\n"
                        + "Valid input can be:\n"
                        + " A B C D E F G H I J K L M N O P Q R S T U V W X Y Z\n"
                        + " a b c d e f g h i j k l m n o p q r s t u v w x y z\n";
                JOptionPane.showMessageDialog(jDialog_error, error_msg,
                        "Invalid Input", JOptionPane.ERROR_MESSAGE);
                clear_all();
                return null;
            }
        }
        return unverified;
    }
    /**
     * @param args the command line arguments
     */
    private void initialize() {
        this.setVisible(true);
        this.init = new int[4];
        Checksum = new String();
        this.jRadioButton_no.setSelected(true);
        String instructions = new String();
        instructions = ("1.) Enter 4 letter (capital only) cipher (Init).\n"
                + "2.) Enter 4 letter (capital only) key.\n"
                + "3.) Select either encryption or decryption mode.\n"
                + "4.) Choose to use a checksum or not.\n"
                + "5.) Enter text to either encrypt or decrypt.\n");
        this.jTextPane_instructions.setText(instructions);
    }
    public static void main(String[] args) {
        MainFrame window = new MainFrame();
        window.initialize();
    }
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.ButtonGroup buttonGroup_checksum;
    private javax.swing.ButtonGroup buttonGroup_mode;
    private javax.swing.JDialog jDialog_error;
    private javax.swing.JEditorPane jEditorPane_encrypted;
    private javax.swing.JEditorPane jEditorPane_plain;
    private javax.swing.JFileChooser jFileChooser;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JMenu jMenu1;
    private javax.swing.JMenu jMenu2;
    private javax.swing.JMenuBar jMenuBar1;
    private javax.swing.JMenuItem jMenuItem1;
    private javax.swing.JMenuItem jMenuItem2;
    private javax.swing.JMenuItem jMenuItem3;
    private javax.swing.JMenuItem jMenuItem4;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JPanel jPanel3;
    private javax.swing.JPanel jPanel4;
    private javax.swing.JPanel jPanel5;
    private javax.swing.JPanel jPanel7;
    private javax.swing.JPanel jPanel8;
    private javax.swing.JRadioButton jRadioButton_decrypt;
    private javax.swing.JRadioButton jRadioButton_encrypt;
    private javax.swing.JRadioButton jRadioButton_no;
    private javax.swing.JRadioButton jRadioButton_yes;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JScrollPane jScrollPane3;
    private javax.swing.JScrollPane jScrollPane_plain;
    private javax.swing.JTextArea jTextArea1;
    private javax.swing.JTextField jTextField_checksum;
    private javax.swing.JTextField jTextField_init;
    private javax.swing.JTextField jTextField_key;
    private javax.swing.JTextPane jTextPane_instructions;
    // End of variables declaration//GEN-END:variables
}
[/java]