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

📄 decryptresultsaction.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.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 + -