package org.freeplane.plugin.workspace.actions; import java.awt.event.ActionEvent; import java.io.File; import javax.swing.JFileChooser; import org.freeplane.core.ui.components.UITools; import org.freeplane.features.link.LinkController; import org.freeplane.features.link.mindmapmode.MLinkController; import org.freeplane.plugin.workspace.WorkspaceUtils; import org.freeplane.plugin.workspace.model.AWorkspaceTreeNode; import org.freeplane.plugin.workspace.nodes.AFolderNode; import org.freeplane.plugin.workspace.nodes.FolderLinkNode; import org.freeplane.plugin.workspace.nodes.WorkspaceRoot; @Deprecated public class NodeNewDirectoryLinkAction extends AWorkspaceAction { private static final long serialVersionUID = 1L; public NodeNewDirectoryLinkAction() { super("workspace.action.node.new.directory"); } /** * @param targetNode * @param file */ private void makeNewDirectoryLink(AWorkspaceTreeNode targetNode, File file) { if(file == null) { return; } JFileChooser fileChooser = new JFileChooser(); fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); fileChooser.setSelectedFile(file); int retVal = fileChooser.showOpenDialog(UITools.getFrame()); if (retVal == JFileChooser.APPROVE_OPTION) { File path = fileChooser.getSelectedFile(); if (path != null) { FolderLinkNode node = new FolderLinkNode(); String name = path.getName(); node.setName(name == null ? "directory" : name); node.setPath(MLinkController.toLinkTypeDependantURI(WorkspaceUtils.getWorkspaceBaseFile(), path, LinkController.LINK_RELATIVE_TO_WORKSPACE)); WorkspaceUtils.getModel().addNodeTo(node, targetNode); WorkspaceUtils.saveCurrentConfiguration(); node.refresh(); } } targetNode.refresh(); } public void actionPerformed(final ActionEvent e) { AWorkspaceTreeNode targetNode = getNodeFromActionEvent(e); if(targetNode == null) { targetNode = (AWorkspaceTreeNode) WorkspaceUtils.getModel().getRoot(); } if(targetNode instanceof AFolderNode) { File file = WorkspaceUtils.resolveURI(((AFolderNode) targetNode).getPath() == null ? WorkspaceUtils.getProfileBaseURI() : ((AFolderNode) targetNode).getPath()); makeNewDirectoryLink(targetNode, file); } else if(targetNode instanceof WorkspaceRoot) { File file = WorkspaceUtils.getWorkspaceBaseFile(); makeNewDirectoryLink(targetNode, file); } } }