📄 encryptionkeysetuppanel.java
字号:
package abchr.gui;
import abchr.EncryptionKeyModule;
import abchr.crypto.ElGamalPrivateKey;
import guiutils.*;
import jlfgr.GraphicsRepository;
import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
public class EncryptionKeySetupPanel extends JPanel {
private EncryptionKeyModule encryptionKeyModule=new EncryptionKeyModule(null);
private SimpleFileChooser keyFileChooser=new SimpleFileChooser(new SimpleFileFilter(".key","Key files (*.key)"));
private JCheckBox encryptionCheckBox=new JCheckBox("Use encryption");
private JTextField keyFileTextField=new JTextField(15);
private ElGamalPrivateKey key=null;
private ComponentGroup group;
public EncryptionKeySetupPanel() {
this.setLayout(new LineLayout(LineLayout.LEFT_ALIGN,true));
this.add(encryptionCheckBox);
keyFileTextField.setEditable(false);
this.add(keyFileTextField);
final AbstractBrowseButton keyFileBrowseButton=new AbstractBrowseButton(this,keyFileChooser,false) {
protected void addFiles(File[] files) {
try {
FileInputStream stream=new FileInputStream(files[0]);
ObjectInputStream objectIn=new ObjectInputStream(stream);
key=(ElGamalPrivateKey)objectIn.readObject();
} catch(IOException e) {
JOptionPane.showMessageDialog(EncryptionKeySetupPanel.this,"Could not open key file","Error",JOptionPane.ERROR_MESSAGE);
return;
} catch(ClassNotFoundException e) {
JOptionPane.showMessageDialog(EncryptionKeySetupPanel.this,"Could not open key file","Error",JOptionPane.ERROR_MESSAGE);
return;
} catch(ClassCastException e) {
JOptionPane.showMessageDialog(EncryptionKeySetupPanel.this,"Could not open key file","Error",JOptionPane.ERROR_MESSAGE);
return;
}
encryptionKeyModule.setEncryptionKey(key.makePublicKey());
keyFileTextField.setText(files[0].getAbsolutePath());
}
};
this.add(keyFileBrowseButton);
final JButton newKeyFileButton=new JButton(GraphicsRepository.getToolbarIcon("general/New16.gif"));
newKeyFileButton.setMargin(new Insets(2,2,2,2));
newKeyFileButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
File f=keyFileChooser.saveFile(EncryptionKeySetupPanel.this);
if(f==null){return;}
ElGamalPrivateKey newKey=ElGamalPrivateKey.makeKey();
try {
FileOutputStream stream=new FileOutputStream(f);
ObjectOutputStream objectOut=new ObjectOutputStream(stream);
objectOut.writeObject(newKey);
objectOut.close();
} catch(IOException ex) {
JOptionPane.showMessageDialog(EncryptionKeySetupPanel.this,"Could not save key file","Error",JOptionPane.ERROR_MESSAGE);
return;
}
key=newKey;
encryptionKeyModule.setEncryptionKey(key.makePublicKey());
keyFileTextField.setText(f.getAbsolutePath());
}
});
this.add(newKeyFileButton);
group=new ComponentGroup();
group.add(keyFileTextField);
group.add(keyFileBrowseButton);
group.add(newKeyFileButton);
group.setEnabled(false);
encryptionCheckBox.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
encryptionKeyModule.setEncryptionKey(encryptionCheckBox.isSelected() && key!=null?key.makePublicKey():null);
group.setEnabled(encryptionCheckBox.isSelected());
}
});
}
public void setModel(EncryptionKeyModule encryptionKeyModule) {
this.encryptionKeyModule=encryptionKeyModule;
if(encryptionKeyModule.getEncryptionKey()==null) {
encryptionCheckBox.setSelected(false);
group.setEnabled(encryptionCheckBox.isSelected());
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -