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

📄 loadconfigaction.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.*;
import guiutils.OrFileFilter;
import guiutils.SimpleFileChooser;
import guiutils.SimpleFileFilter;
import guiutils.SwingWorker;
import jlfgr.GraphicsRepository;
import org.jdom.Document;

import javax.swing.*;
import javax.swing.filechooser.FileFilter;
import java.awt.event.ActionEvent;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;

class LoadConfigAction extends AbstractAction {
	private static final FileFilter FILE_FILTER;
	private static final ConfigIOModule[] IO_MODULES;

	private final ProjectFrame frame;
	private final WaitMessageDialog waitDialog;

	public LoadConfigAction(ProjectFrame frame) {
		super("Open ABC/HR Config...",GraphicsRepository.getToolbarIcon("general/Open16.gif"));
		this.putValue(Action.SHORT_DESCRIPTION,"Start new ABC/HR test from configuration file.");
		this.frame=frame;
		waitDialog=new WaitMessageDialog(frame,"Please Wait");
		waitDialog.setText("Loading Samples");
	}

	public void actionPerformed(ActionEvent e) {
		File f=SimpleFileChooser.openFile(frame,FILE_FILTER,true);
		if(f==null){return;}
		FileInputStream stream=null;
		try {
			stream=new FileInputStream(f);
		} catch(Exception ex) {
			JOptionPane.showMessageDialog(frame,"File "+f+" does not exist\n" +
				"or could not be opened for reading","Error",JOptionPane.ERROR_MESSAGE);
			return;
		}
		try {
			RawTestConfig.setRelativePathInput(f.getParentFile());
			Document doc=null;
			for(int i=0;i<IO_MODULES.length;i++) {
				if(f.getName().endsWith('.'+IO_MODULES[i].getExtension())) {
					doc=IO_MODULES[i].getConfigIO().readConfig(stream);
					break;
				}
			}
			stream.close();
			final Document doc1=doc;
			if(!frame.closeProject()){return;}
			final SwingWorker worker=new SwingWorker() {
				public Object construct() {
					try {
						final TestProject project=ProjectLoader.load(doc1);
						frame.load(project);
					} catch(ParseException e1) {
						return e1;
					}
					return null;
				}

				public void finished() {
					waitDialog.setVisible(false);
				}
			};
			worker.start();
			waitDialog.show();
			ParseException ex;
			if((ex=(ParseException)worker.get())!=null){throw ex;}
		} catch(IOException ex) {
			JOptionPane.showMessageDialog(frame,ex.getMessage(),"Error",JOptionPane.ERROR_MESSAGE);
			return;
		} catch(ParseException e1) {
			JOptionPane.showMessageDialog(frame,"Config file could not be loaded.\n"+e1.getMessage(),"Error",JOptionPane.ERROR_MESSAGE);
			return;
		} finally {
			//waitDialog.hide();
			if(stream!=null){try{stream.close();}catch(Exception ex){}}
		}
	}

	static {
		IO_MODULES=ConfigIOManager.getInstance().getModules();
		FileFilter[] fileFilters=new FileFilter[IO_MODULES.length];
		StringBuffer extensions=new StringBuffer();
		for(int i=0;i<IO_MODULES.length;i++) {
			fileFilters[i]=new SimpleFileFilter('.'+IO_MODULES[i].getExtension(),IO_MODULES[i].getDescription());
			if(i>0){extensions.append(", ");}
			extensions.append('.');
			extensions.append(IO_MODULES[i].getExtension());
		}
		FILE_FILTER=new OrFileFilter(fileFilters,"Config files ("+extensions+')');
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -