/*
OTP4U 0.9.3 - One Time Pad for you
Copyright (C) 2003 Pierre Blanc
Pierre Blanc: blanc_teutoburgo@yahoo.it
http://www.teutoburgo.tk
http://www.teutoburgo.tk/java/otp4u.html
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
or go to http://www.gnu.org/copyleft/gpl.html
gui package by Karl Dinwiddie, Takitez http://www.takitez.com
Created on July 5, 2003, 7:17 AM
*/
package tk.teutoburgo.otp4u.gui;
import java.awt.*;
import java.io.*;
import tk.teutoburgo.otp4u.application.OTP4U;
/**
*
* @author Karl Dinwiddie
*/
public class OTP4UGUI
extends javax.
swing.
JFrame implements Runner.
RunListener,
Runnable {
private static final File SETTINGS_FILE
= new File("otpsettings");
private Runner runner;
private Runner getRunner() {
if (runner == null) {
runner = new Runner(this);
}
return runner;
}
public void execute() {
synchronized(getRunner()) {
new Thread(getRunner
()).
start();
}
}
public void run() {
synchronized(getRunner()) {
try {
getRunner().wait();
System.
out.
println("dumping..");
msgTA.append(getRunner().otp4u.mp.flushLog());
}
}
}
private void byeBye() {
saveSettings();
}
private final void saveSettings() {
if ((configFile != null) && configFile.exists()) try{
Util.
saveStringToFile(configFile.
getCanonicalPath(), SETTINGS_FILE
);
handleThrowable(ex);
}
}
private final void setConfigFile
(File file
) {
if (file == null) {
log("No file was selected.");
return;
}
configFile = file;
OTP4U.setConfigFile(configFile);
try {
lblConfigFile.setText(configFile.getCanonicalPath());
configTA.
setText(Util.
getStringFromFile(configFile
));
handleThrowable(ex);
}
}
private final void loadSettings() {
if (SETTINGS_FILE.exists()) {
try {
setConfigFile
(new File(br.
readLine()));
br.close();
fr.close();
handleThrowable(ex);
}
} else {
System.
out.
println("points at "+ff
);
setConfigFile(ff);
}
}
/** Creates new form OTP4UGUI */
public OTP4UGUI() {
initComponents();
setSize(700, 600);
setLocation
(Util.
centerInScreen(getSize
()));
loadSettings();
}
/** 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.
*/
private void initComponents() {//GEN-BEGIN:initComponents
jPanel2
= new javax.
swing.
JPanel();
jPanel3
= new javax.
swing.
JPanel();
jPanel9
= new javax.
swing.
JPanel();
btnSelectFile
= new javax.
swing.
JButton();
jPanel8
= new javax.
swing.
JPanel();
btnEncrypt
= new javax.
swing.
JButton();
btnDecrypt
= new javax.
swing.
JButton();
btnClear
= new javax.
swing.
JButton();
btnHelp
= new javax.
swing.
JButton();
btnGuiHelp
= new javax.
swing.
JButton();
btnExit
= new javax.
swing.
JButton();
jPanel4
= new javax.
swing.
JPanel();
jPanel1
= new javax.
swing.
JPanel();
jPanel5
= new javax.
swing.
JPanel();
jPanel7
= new javax.
swing.
JPanel();
jPanelSouth
= new javax.
swing.
JPanel();
btnSelectConfig
= new javax.
swing.
JButton();
btnSaveConfig
= new javax.
swing.
JButton();
lblConfigFile
= new javax.
swing.
JLabel();
jPanel6
= new javax.
swing.
JPanel();
jLabel2
= new javax.
swing.
JLabel();
jLabel3
= new javax.
swing.
JLabel();
jLabel4
= new javax.
swing.
JLabel();
jLabel5
= new javax.
swing.
JLabel();
jLabel6
= new javax.
swing.
JLabel();
jLabel7
= new javax.
swing.
JLabel();
btnGenerate
= new javax.
swing.
JButton("New entropy");
btnGK4K0
= new javax.
swing.
JButton("K4K0");
btnRandom
= new javax.
swing.
JButton("Random");
btnPublic
= new javax.
swing.
JButton("Public");
btnMix
= new javax.
swing.
JButton("Mix");
btnSeparate
= new javax.
swing.
JButton("Separate");
setTitle("OTP4U 0.9.3");
public void windowClosing
(java.
awt.
event.
WindowEvent evt
) {
exitForm(evt);
}
});
btnSelectFile.setMnemonic('f');
btnSelectFile.setText("File");
public void actionPerformed
(java.
awt.
event.
ActionEvent evt
) {
btnSelectFileActionPerformed(evt);
}
});
jPanel9.add(btnSelectFile);
targetFileTF.setColumns(40);
public void actionPerformed
(java.
awt.
event.
ActionEvent evt
) {
targetFileTFActionPerformed(evt);
}
});
jPanel9.add(targetFileTF);
jPanel3.add(jPanel9);
btnMix.setMnemonic('m');
btnMix.setText("Mix");
btnMix.setToolTipText("Use mixed mode");
public void actionPerformed
(java.
awt.
event.
ActionEvent evt
) {
btnMixActionPerformed(evt);
}
});
btnSeparate.setMnemonic('s');
btnSeparate.setText("Separate");
btnSeparate.setToolTipText("Separate key from ciphertext (mixed mode)");
public void actionPerformed
(java.
awt.
event.
ActionEvent evt
) {
btnSeparateActionPerformed(evt);
}
});
btnEncrypt.setMnemonic('e');
btnEncrypt.setText("Encrypt");
// btnEncrypt.setToolTipText("Run the OTP4U program");
public void actionPerformed
(java.
awt.
event.
ActionEvent evt
) {
btnEncryptActionPerformed(evt);
}
});
jPanel8.add(btnEncrypt);
btnDecrypt.setMnemonic('d');
btnDecrypt.setText("Decrypt");
public void actionPerformed
(java.
awt.
event.
ActionEvent evt
) {
btnDecryptActionPerformed(evt);
}
});
jPanel8.add(btnDecrypt);
jPanel8.add(btnMix);
jPanel8.add(btnSeparate);
btnClear.setMnemonic('c');
btnClear.setText("Clear");
btnClear.setToolTipText("Clears the log below");
public void actionPerformed
(java.
awt.
event.
ActionEvent evt
) {
btnClearActionPerformed(evt);
}
});
jPanel8.add(btnClear);
btnHelp.setMnemonic('h');
btnHelp.setText("Help");
public void actionPerformed
(java.
awt.
event.
ActionEvent evt
) {
btnHelpActionPerformed(evt);
}
});
jPanel8.add(btnHelp);
btnGuiHelp.setMnemonic('g');
btnGuiHelp.setText("Gui Help");
public void actionPerformed
(java.
awt.
event.
ActionEvent evt
) {
btnGuiHelpActionPerformed(evt);
}
});
jPanel8.add(btnGuiHelp);
btnExit.setMnemonic('x');
btnExit.setText("Exit");
btnExit.setToolTipText("Just like closing the window.");
public void actionPerformed
(java.
awt.
event.
ActionEvent evt
) {
btnExitActionPerformed(evt);
}
});
jPanel8.add(btnExit);
jPanel3.add(jPanel8);
jScrollPane1.setViewportView(msgTA);
jPanel4.add(jScrollPane1);
jTabbedPane1.addTab("Console", jPanel2);
btnSelectConfig.setText("Select Configuration");
btnSelectConfig.
addActionListener(new java.
awt.
event.
ActionListener() {
public void actionPerformed
(java.
awt.
event.
ActionEvent evt
) {
btnSelectConfigActionPerformed(evt);
}
});
jPanel7.add(btnSelectConfig);
btnSaveConfig.setText("Save");
public void actionPerformed
(java.
awt.
event.
ActionEvent evt
) {
btnSaveConfigActionPerformed(evt);
}
});
jPanel7.add(btnSaveConfig);
jPanel5.add(jPanel7);
lblConfigFile.
setFont(new java.
awt.
Font("Dialog", 0, 12
));
lblConfigFile.setText("No config file selected");
jPanel5.add(lblConfigFile);
jScrollPane2.setViewportView(configTA);
btnGenerate.setToolTipText("Generate new entropy source");
public void actionPerformed
(java.
awt.
event.
ActionEvent evt
) {
btnGenerateActionPerformed(evt);
}
});
btnGK4K0.setToolTipText("Generate K4K0");
public void actionPerformed
(java.
awt.
event.
ActionEvent evt
) {
btnGK4K0ActionPerformed(evt);
}
});
btnPublic.setToolTipText("Generate public and private keys");
public void actionPerformed
(java.
awt.
event.
ActionEvent evt
) {
btnPublicActionPerformed(evt);
}
});
btnRandom.setToolTipText("Get private key from public key");
public void actionPerformed
(java.
awt.
event.
ActionEvent evt
) {
btnRandomActionPerformed(evt);
}
});
jPanelSouth.add(btnGK4K0);
jPanelSouth.add(btnGenerate);
jPanelSouth.add(btnPublic);
jPanelSouth.add(btnRandom);
jTabbedPane1.addTab("Configure", jPanel1);
jPanel6.setLayout(null);
jLabel2.
setForeground((java.
awt.
Color) javax.
swing.
UIManager.
getDefaults().
get("Button.darkShadow"));
jLabel2.setText("GUI by Karl Dinwiddie, Takitez.com");
jPanel6.add(jLabel2);
jLabel2.setBounds(70, 220, 240, 30);
jLabel3.
setFont(new java.
awt.
Font("Dialog", 1, 18
));
jLabel3.
setForeground(new java.
awt.
Color(102, 0, 51
));
jLabel3.setText(" OTP4U 0.9.3 - One Time Pad for you");
jPanel6.add(jLabel3);
jLabel3.setBounds(20, 50, 490, 30);
jLabel4.setText("Copyright (C) 2003 Pierre Blanc ");
jPanel6.add(jLabel4);
jLabel4.setBounds(70, 90, 270, 30);
jLabel5.setText("e-mail: blanc_teutoburgo@yahoo.it");
jPanel6.add(jLabel5);
jLabel5.setBounds(70, 120, 410, 20);
jLabel6.setText("http://www.teutoburgo.tk");
jPanel6.add(jLabel6);
jLabel6.setBounds(70, 160, 290, 16);
jLabel7.setText("http://www.teutoburgo.tk/java/otp4u.html");
jPanel6.add(jLabel7);
jLabel7.setBounds(70, 180, 230, 20);
jTabbedPane1.addTab("About OTP4U", jPanel6);
getContentPane
().
add(jTabbedPane1, java.
awt.
BorderLayout.
CENTER);
pack();
}//GEN-END:initComponents
private void targetFileTFActionPerformed
(java.
awt.
event.
ActionEvent evt
) {//GEN-FIRST:event_targetFileTFActionPerformed
// Add your handling code here:
}//GEN-LAST:event_targetFileTFActionPerformed
private void btnSelectFileActionPerformed
(java.
awt.
event.
ActionEvent evt
) {//GEN-FIRST:event_btnSelectFileActionPerformed
try {
targetFileTF.
setText(Util.
getFileFromUser("Please select file").
getCanonicalPath());
handleThrowable(ex);
}
}//GEN-LAST:event_btnSelectFileActionPerformed
private void btnDecryptActionPerformed
(java.
awt.
event.
ActionEvent evt
) {//GEN-FIRST:event_btnDecryptActionPerformed
if(!targetFileTF.getText().equals("")){
getRunner().setNextAction(Runner.DO_DECRYPT);
execute();
} else
msgTA.append("Please select a file.\n");
}//GEN-LAST:event_btnDecryptActionPerformed
private void btnHelpActionPerformed
(java.
awt.
event.
ActionEvent evt
) {//GEN-FIRST:event_btnHelpActionPerformed
getRunner().otp4u.mp.printHelp();
msgTA.setText(getRunner().otp4u.mp.flushLog());
}//GEN-LAST:event_btnHelpActionPerformed
private void btnGuiHelpActionPerformed
(java.
awt.
event.
ActionEvent evt
) {//GEN-FIRST:event_btnGuiHelpActionPerformed
getRunner().otp4u.mp.printHelpGUI();
msgTA.setText(getRunner().otp4u.mp.flushLog());
}//GEN-LAST:event_btnGuiHelpActionPerformed
private void btnExitActionPerformed
(java.
awt.
event.
ActionEvent evt
) {//GEN-FIRST:event_btnExitActionPerformed
byeBye();
}//GEN-LAST:event_btnExitActionPerformed
private void btnClearActionPerformed
(java.
awt.
event.
ActionEvent evt
) {//GEN-FIRST:event_btnClearActionPerformed
msgTA.setText("");
}//GEN-LAST:event_btnClearActionPerformed
private void btnSelectConfigActionPerformed
(java.
awt.
event.
ActionEvent evt
) {//GEN-FIRST:event_btnSelectConfigActionPerformed
setConfigFile
(Util.
getFileFromUser("Please select config file"));
}//GEN-LAST:event_btnSelectConfigActionPerformed
private void btnSaveConfigActionPerformed
(java.
awt.
event.
ActionEvent evt
) {//GEN-FIRST:event_btnSaveConfigActionPerformed
if (configFile == null) {
log("Configuration file was never selected.");
} else {
try {
Util.
saveStringToFile(configTA.
getText(), configFile
);
saveSettings();
handleThrowable(ex);
}
}
}//GEN-LAST:event_btnSaveConfigActionPerformed
private void btnEncryptActionPerformed
(java.
awt.
event.
ActionEvent evt
) {//GEN-FIRST:event_btnEncryptActionPerformed
if(!targetFileTF.getText().equals("")){
getRunner().setNextAction(Runner.DO_ENCRYPT);
execute();
} else
msgTA.append("Please select a file.\n");
}//GEN-LAST:event_btnEncryptActionPerformed
private void btnGenerateActionPerformed
(java.
awt.
event.
ActionEvent evt
) {//GEN-FIRST:event_btnExitActionPerformed
getRunner().setNextAction(Runner.GENERATE);
execute();
}//GEN-LAST:event_btnExitActionPerformed
private void btnGK4K0ActionPerformed
(java.
awt.
event.
ActionEvent evt
) {//GEN-FIRST:event_btnExitActionPerformed
getRunner().setNextAction(Runner.GK4K0);
execute();
}//GEN-LAST:event_btnExitActionPerformed
private void btnPublicActionPerformed
(java.
awt.
event.
ActionEvent evt
) {//GEN-FIRST:event_btnExitActionPerformed
getRunner().setNextAction(Runner.PUBLIC);
execute();
}//GEN-LAST:event_btnExitActionPerformed
private void btnRandomActionPerformed
(java.
awt.
event.
ActionEvent evt
) {//GEN-FIRST:event_btnExitActionPerformed
getRunner().setNextAction(Runner.RANDOM);
execute();
}//GEN-LAST:event_btnExitActionPerformed
private void btnMixActionPerformed
(java.
awt.
event.
ActionEvent evt
) {//GEN-FIRST:event_btnExitActionPerformed
if(!targetFileTF.getText().equals("")){
getRunner().setNextAction(Runner.MIX);
execute();
} else
msgTA.append("Please specify the name of the ciphertext file for the mixing.\n");
}//GEN-LAST:event_btnExitActionPerformed
private void btnSeparateActionPerformed
(java.
awt.
event.
ActionEvent evt
) {//GEN-FIRST:event_btnExitActionPerformed
getRunner().setNextAction(Runner.SEPARATE);
execute();
}//GEN-LAST:event_btnExitActionPerformed
/** Exit the Application */
private void exitForm
(java.
awt.
event.
WindowEvent evt
) {//GEN-FIRST:event_exitForm
byeBye();
}//GEN-LAST:event_exitForm
/**
* @param args the command line arguments
*/
public static void main
(String args
[]) {
new OTP4UGUI().show();
}
msgTA.append(msg+"\n");
}
t.printStackTrace(pw);
log(sw.getBuffer().toString());
}
public File getConfigFile
() {
return configFile;
}
public File getTargetFile
() {
return new File(targetFileTF.
getText());
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.
swing.
JLabel jLabel4
;
private javax.
swing.
JLabel lblConfigFile
;
private javax.
swing.
JButton btnExit
;
private javax.
swing.
JButton btnSelectFile
;
private javax.
swing.
JButton btnDecrypt
;
private javax.
swing.
JPanel jPanel4
;
private javax.
swing.
JButton btnEncrypt
;
private javax.
swing.
JLabel jLabel3
;
private javax.
swing.
JButton btnClear
;
private javax.
swing.
JPanel jPanel3
;
private javax.
swing.
JLabel jLabel2
;
private javax.
swing.
JButton btnGuiHelp
;
private javax.
swing.
JButton btnSelectConfig
;
private javax.
swing.
JPanel jPanel2
;
private javax.
swing.
JPanel jPanel5
;
private javax.
swing.
JPanel jPanel8
;
private javax.
swing.
JLabel jLabel7
;
private javax.
swing.
JPanel jPanel7
;
private javax.
swing.
JPanel jPanel1
;
private javax.
swing.
JPanel jPanel6
;
private javax.
swing.
JButton btnSaveConfig
;
private javax.
swing.
JLabel jLabel6
;
private javax.
swing.
JPanel jPanel9
;
private javax.
swing.
JLabel jLabel5
;
private javax.
swing.
JButton btnHelp
;
// End of variables declaration//GEN-END:variables
private javax.
swing.
JButton btnGenerate, btnGK4K0
;
private javax.
swing.
JButton btnRandom, btnPublic, btnMix, btnSeparate
;
private javax.
swing.
JPanel jPanelSouth
;
}