/**
* author: Marcel Genzmehr
* 11.11.2011
*/
package org.freeplane.plugin.workspace.actions;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.io.File;
import java.net.URI;
import javax.swing.JFileChooser;
import org.freeplane.core.ui.components.UITools;
import org.freeplane.plugin.workspace.URIUtils;
import org.freeplane.plugin.workspace.WorkspaceController;
import org.freeplane.plugin.workspace.model.AWorkspaceTreeNode;
import org.freeplane.plugin.workspace.model.project.AWorkspaceProject;
import org.freeplane.plugin.workspace.nodes.AFolderNode;
import org.freeplane.plugin.workspace.nodes.LinkTypeFileNode;
/**
*
*/
public class NodeNewLinkAction extends AWorkspaceAction {
private static final long serialVersionUID = -2738773226743524919L;
/***********************************************************************************
* CONSTRUCTORS
**********************************************************************************/
public NodeNewLinkAction() {
super("workspace.action.node.new.link");
}
/***********************************************************************************
* METHODS
**********************************************************************************/
/***********************************************************************************
* REQUIRED METHODS FOR INTERFACES
**********************************************************************************/
public void actionPerformed(ActionEvent e) {
AWorkspaceTreeNode targetNode = null;
if(e == null || getRootPopupMenu((Component) e.getSource()) == null) {
targetNode = WorkspaceController.getSelectedProject().getModel().getRoot();
}
else {
targetNode = getNodeFromActionEvent(e);
}
if(targetNode == null) {
return;
}
AWorkspaceProject project = WorkspaceController.getSelectedProject(targetNode);
if(targetNode instanceof AFolderNode) {
JFileChooser chooser = new JFileChooser(URIUtils.getAbsoluteFile(((AFolderNode) targetNode).getPath() == null ? WorkspaceController.getSelectedProject().getProjectHome() : ((AFolderNode) targetNode).getPath()));
chooser.setMultiSelectionEnabled(false);
int response = chooser.showOpenDialog(UITools.getFrame());
if(response == JFileChooser.APPROVE_OPTION) {
File file = chooser.getSelectedFile();
if(file != null) {
LinkTypeFileNode node = new LinkTypeFileNode();
node.setName(file.getName());
URI path = chooser.getSelectedFile().toURI();
if (path == null) {
return;
}
URI uri = project.getRelativeURI(path);
if(uri == null) {
node.setLinkURI(path);
}
else {
node.setLinkURI(uri);
}
targetNode.getModel().addNodeTo(node, targetNode);
targetNode.refresh();
targetNode.getModel().requestSave();
}
}
}
}
}