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

📄 saveconfigaction.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.ConfigIOModule;
import abchr.ConfigIOManager;
import abchr.RawTestConfig;
import guiutils.FlexibleGridLayout;
import guiutils.SimpleFileChooser;
import guiutils.SimpleFileFilter;
import jlfgr.GraphicsRepository;
import org.jdom.Document;

import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.filechooser.FileFilter;
import java.awt.event.ActionEvent;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

class SaveConfigAction extends AbstractAction {
	private static SimpleFileChooser configFileChooser;
	private static boolean useRelativePaths=true;
	private static final ConfigIOModule[] IO_MODULES;
	private static FileFilter[] fileFilters;

	private TestSetupDialog parent;

	public SaveConfigAction(TestSetupDialog parent) {
		super("Save Test Config",GraphicsRepository.getToolbarIcon("general/Save16.gif"));
		this.putValue(Action.SHORT_DESCRIPTION,"Saves the current configuration");
		this.parent=parent;
	}

	public void actionPerformed(ActionEvent e) {
		initFileChooser();
		if(parent.isEncryptionActive()) {
			for(int i=0;i<IO_MODULES.length;i++) {
				if(!IO_MODULES[i].isReadable()){configFileChooser.setFileFilter(fileFilters[i]);break;}
			}
		} else {
			for(int i=0;i<IO_MODULES.length;i++) {
				if(IO_MODULES[i].isReadable()){configFileChooser.setFileFilter(fileFilters[i]);break;}
			}
		}
		File f=configFileChooser.saveFile(parent);
		if(f==null){return;}
		FileOutputStream stream=null;
		RawTestConfig.setRelativePathOutput(useRelativePaths?f.getParentFile():null);
		try {
			stream=new FileOutputStream(f);
		} catch(FileNotFoundException e1) {
			JOptionPane.showMessageDialog(parent,"The file "+f+" could not be opened.","Error",JOptionPane.ERROR_MESSAGE);
			return;
		}
		try {
			Document doc=parent.getXML();
			FileFilter fileFilter=configFileChooser.getFileFilter();
			for(int i=0;i<IO_MODULES.length;i++) {
				if(((SimpleFileFilter)fileFilter).getExtension().equals('.'+IO_MODULES[i].getExtension())) {
					IO_MODULES[i].getConfigIO().writeConfig(stream,doc);
					break;
				}
			}
		} catch(IOException e1) {
			e1.printStackTrace();
			JOptionPane.showMessageDialog(parent,"File could not be saved: \n"+e1.getMessage(),"Error",JOptionPane.ERROR_MESSAGE);
		} finally {
			try{stream.close();}catch(Exception ex){}
		}
	}

	private static void initFileChooser() {
		if(configFileChooser!=null){return;}
		configFileChooser=new SimpleFileChooser();
		JPanel accessoryPanel=new JPanel(new FlexibleGridLayout(2,2,5,0,true));
		JCheckBox relativePathsCheckBox=new JCheckBox("",true);
		relativePathsCheckBox.addChangeListener(new ChangeListener() {
			public void stateChanged(ChangeEvent e){useRelativePaths=((JCheckBox)e.getSource()).isSelected();}
		});
		accessoryPanel.add(relativePathsCheckBox);
		accessoryPanel.add(new JLabel("Use relative paths"));
		accessoryPanel.add(new JComponent(){});
		accessoryPanel.add(new JLabel("in config file"));
		configFileChooser.setAccessory(accessoryPanel);
		configFileChooser.setAcceptAllFileFilterUsed(false);
		ConfigIOModule[] modules=ConfigIOManager.getInstance().getModules();
		fileFilters=new FileFilter[modules.length];
		for(int i=0;i<modules.length;i++) {
			fileFilters[i]=new SimpleFileFilter('.'+modules[i].getExtension(),modules[i].getDescription()+" (*."+modules[i].getExtension()+')');
			configFileChooser.addChoosableFileFilter(fileFilters[i]);
		}
	}

	static{IO_MODULES=ConfigIOManager.getInstance().getModules();}
}

⌨️ 快捷键说明

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