📄 decryptresultsaction.java
字号:
package abchr.gui;
import abchr.ResultIO;
import abchr.ScrambledResultIO;
import abchr.XMLResultIO;
import guiutils.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
class DecryptResultsAction extends AbstractAction {
private static class DecryptDialog extends JDialog {
private JTextField keyFileTextField=new JTextField(20);
private FileList fileList;
public DecryptDialog(Frame owner) {
super(owner,"Decrypt Result Files",true);
JPanel centerPanel=new JPanel(new FlexibleGridLayout(2,3,5,5,true));
centerPanel.setBorder(BorderFactory.createEmptyBorder(5,5,0,0));
centerPanel.add(new JLabel("Key File:"));
centerPanel.add(keyFileTextField);
JFileChooser fileChooser=new SimpleFileChooser(new SimpleFileFilter(".key","Key files (*.key)"));
centerPanel.add(new TextFieldBrowseButton(owner,fileChooser,keyFileTextField,false));
fileChooser=new SimpleFileChooser(new SimpleFileFilter(".erf","Encrypted Results Files (*.erf)"));
fileList=new FileList(fileChooser);
JLabel label=new JLabel("Results Files:");
label.setVerticalAlignment(JLabel.TOP);
centerPanel.add(label);
centerPanel.add(fileList);
JPanel bottomPanel=new JPanel(new LineLayout(LineLayout.CENTER));
bottomPanel.setBorder(BorderFactory.createEmptyBorder(5,5,5,0));
JButton decryptButton=new JButton("Decrypt");
decryptButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e){decrypt();}
});
bottomPanel.add(decryptButton);
Container contentPane=this.getContentPane();
contentPane.setLayout(new BorderLayout());
contentPane.add(centerPanel,BorderLayout.CENTER);
contentPane.add(bottomPanel,BorderLayout.SOUTH);
}
private void decrypt() {
try {
File[] files=fileList.getFiles();
ScrambledResultIO srio=new ScrambledResultIO();
srio.readKey(new File(keyFileTextField.getText()));
ResultIO rio=new XMLResultIO();
for(int i=0;i<files.length;i++) {
}
InputStream input;
for(int i=0;i<files.length;i++) {
input=new BufferedInputStream(new FileInputStream(files[i]));
FileOutputStream out=new FileOutputStream(files[i].getPath().substring(0,files[i].getPath().lastIndexOf('.'))+"_decrypted.txt");
rio.writeConfig(out,srio.readConfig(input));
out.flush();
out.close();
}
fileList.clear();
} catch(IOException e) {
JOptionPane.showMessageDialog(DecryptDialog.this,e.getMessage(),"Error",JOptionPane.ERROR_MESSAGE);
e.printStackTrace();
}
}
public void show() {
Dimension size=this.getContentPane().getPreferredSize();
Window owner=getOwner();
Insets in=owner.getInsets();
this.setSize(size.width+in.left+in.right+10,size.height+in.top+in.bottom+10);
this.setLocation(owner.getX()+(owner.getWidth()-this.getWidth())/2,owner.getY()+(owner.getHeight()-this.getHeight())/2);
super.show();
}
}
private DecryptDialog dialog=null;
private Frame owner;
public DecryptResultsAction(Frame owner) {
super("Decrypt Test Results...");
this.owner=owner;
}
public void actionPerformed(ActionEvent e) {
lazyInit();
dialog.show();
}
private void lazyInit() {
if(dialog==null){dialog=new DecryptDialog(owner);}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -