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