⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 encryptionkeysetuppanel.java

📁 Java version of ABC/HR comparator v0.5. by schnofler. Runs on Sun JRE 1.5 or later
💻 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 + -