/*
* This file is part of the OSMembrane project.
* More informations under www.osmembrane.de
*
* The project is licensed under the GNU GENERAL PUBLIC LICENSE 3.0.
* for more details about the license see http://www.osmembrane.de/license/
*
* Source: $HeadURL$ ($Revision$)
* Last changed: $Date$
*/
package de.osmembrane.controller.actions;
import java.awt.event.ActionEvent;
import java.io.File;
import javax.swing.AbstractAction;
import javax.swing.JFileChooser;
import de.osmembrane.controller.events.ContainingEvent;
import de.osmembrane.model.ModelProxy;
import de.osmembrane.model.pipeline.AbstractParameter;
import de.osmembrane.model.settings.SettingType;
/**
* Action to edit a parameter which is a file path and therefore open the file
* path dialog. Receives a {@link ContainingEvent}.
*
* @author tobias_kuhn
*
*/
public class EditFilePropertyAction extends AbstractAction {
private static final long serialVersionUID = 1481319711002406388L;
/**
* Creates a new {@link EditFilePropertyAction}
*/
public EditFilePropertyAction() {
}
@Override
public void actionPerformed(ActionEvent e) {
ContainingEvent ce = (ContainingEvent) e;
AbstractParameter ap = (AbstractParameter) ce.getContained();
String wd = (String) ModelProxy.getInstance().getSettings()
.getValue(SettingType.DEFAULT_WORKING_DIRECTORY);
if (wd.length() == 0) {
wd = null;
}
JFileChooser fileChooser = new JFileChooser(wd);
String value = ap.getValue();
if ((value == null) || (value.isEmpty())) {
value = ".";
}
fileChooser.setSelectedFile(new File(value));
if (fileChooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
String path = fileChooser.getSelectedFile().getAbsolutePath();
if (wd != null) {
path = new File(wd).toURI().relativize(new File(path).toURI())
.getPath();
}
ap.setValue(path);
}
}
}