package org.docear.plugin.core.workspace.actions; import java.awt.event.ActionEvent; import java.io.File; import javax.swing.tree.TreePath; import org.docear.plugin.core.workspace.model.DocearWorkspaceProject; import org.docear.plugin.core.workspace.node.FolderTypeLibraryNode; import org.freeplane.core.ui.EnabledAction; import org.freeplane.plugin.workspace.URIUtils; import org.freeplane.plugin.workspace.WorkspaceController; import org.freeplane.plugin.workspace.actions.NodeOpenLocationAction; import org.freeplane.plugin.workspace.components.menu.CheckEnableOnPopup; import org.freeplane.plugin.workspace.model.AWorkspaceTreeNode; import org.freeplane.plugin.workspace.model.project.AWorkspaceProject; @CheckEnableOnPopup @EnabledAction(checkOnNodeChange=true) public class DocearLibraryOpenLocation extends NodeOpenLocationAction { private static final long serialVersionUID = 1L; public DocearLibraryOpenLocation() { super(); } @Override public void setEnabledFor(AWorkspaceTreeNode node, TreePath[] selectedPaths) { if(node != null && node instanceof FolderTypeLibraryNode) { AWorkspaceProject project = WorkspaceController.getSelectedProject(node); File f = URIUtils.getAbsoluteFile(((DocearWorkspaceProject)project).getProjectLibraryPath()); setEnabled(f.exists()); } else { super.setEnabledFor(node, selectedPaths); } } public void actionPerformed(ActionEvent event) { AWorkspaceTreeNode targetNode = getNodeFromActionEvent(event); if(targetNode != null && targetNode instanceof FolderTypeLibraryNode) { AWorkspaceProject project = getProjectFromActionEvent(event); this.openFolder(URIUtils.getAbsoluteFile(((DocearWorkspaceProject)project).getProjectLibraryPath())); } else { super.actionPerformed(event); } } }