Newer
Older
AlgebraicDataflowArchitectureModel / AlgebraicDataflowArchitectureModel / src / application / actions / OpenAction.java
Shohei Yamagiwa 19 days ago 1 KB Format files
package application.actions;

import application.ApplicationWindow;
import application.editor.Editor;

import javax.swing.*;
import javax.swing.filechooser.FileFilter;
import javax.swing.filechooser.FileNameExtensionFilter;
import java.awt.event.ActionEvent;
import java.io.File;

public class OpenAction extends AbstractSystemAction {
	
	private static final long serialVersionUID = -8290761032629599683L;
	
	private String lastDir = null;
	
	public OpenAction(ApplicationWindow frame) {
		super("Open...", frame);
	}
	
	@Override
	public void actionPerformed(ActionEvent e) {
		Editor editor = frame.getEditor();
		if (editor == null) {
			return;
		}
		String wd = (lastDir != null) ? lastDir : System.getProperty("user.dir");
		
		JFileChooser fc = buildFileChooser(wd);
		int option = fc.showDialog(null, "Open Model File");
		if (option == JFileChooser.APPROVE_OPTION) {
			lastDir = fc.getSelectedFile().getParent();
			editor.open(fc.getSelectedFile());
			frame.setTitle(ApplicationWindow.title + " - " + fc.getSelectedFile().getAbsolutePath());
		}
	}
	
	private static JFileChooser buildFileChooser(String wd) {
		JFileChooser fc = new JFileChooser(wd);
		
		FileFilter model = new FileNameExtensionFilter("model", "model");
		FileFilter dtram = new FileNameExtensionFilter("dtram", "dtram");
		
		// Adds file filter for supported file format
		FileFilter defaultFilter = new FileFilter() {
			public boolean accept(File file) {
				String lowerCase = file.getName().toLowerCase();
				return lowerCase.endsWith(".model");
			}
			
			@Override
			public String getDescription() {
				return null;
			}
		};
		
		fc.addChoosableFileFilter(defaultFilter);
		fc.addChoosableFileFilter(model);
		fc.addChoosableFileFilter(dtram);
		return fc;
	}
}