/** * author: Marcel Genzmehr * 10.11.2011 */ package org.freeplane.plugin.workspace.actions; import java.awt.event.ActionEvent; import javax.swing.JOptionPane; import javax.swing.tree.TreePath; import org.freeplane.core.ui.components.UITools; import org.freeplane.core.util.TextUtils; import org.freeplane.plugin.workspace.components.menu.CheckEnableOnPopup; import org.freeplane.plugin.workspace.model.AWorkspaceTreeNode; import org.freeplane.plugin.workspace.nodes.DefaultFileNode; @CheckEnableOnPopup public class NodeRemoveAction extends AWorkspaceAction { public static final String KEY = "workspace.action.node.remove"; private static final long serialVersionUID = -8965412338727545850L; /*********************************************************************************** * CONSTRUCTORS **********************************************************************************/ public NodeRemoveAction() { super(KEY); } /*********************************************************************************** * METHODS **********************************************************************************/ public void setEnabledFor(AWorkspaceTreeNode node, TreePath[] selectedPaths) { if(node.isSystem() || !node.isTransferable() || node instanceof DefaultFileNode) { setEnabled(false); } else{ setEnabled(); } } /*********************************************************************************** * REQUIRED METHODS FOR INTERFACES **********************************************************************************/ public void actionPerformed(ActionEvent e) { AWorkspaceTreeNode[] targetNodes = getSelectedNodes(e); if(targetNodes.length <= 0) { return; } String question = "the selected nodes"; if(targetNodes.length == 1) { question = targetNodes[0].getName(); } int option = JOptionPane.showConfirmDialog( UITools.getFrame() ,TextUtils.format("workspace.action.node.remove.confirm.text", question) ,TextUtils.getRawText("workspace.action.node.remove.confirm.title") ,JOptionPane.YES_NO_OPTION ,JOptionPane.QUESTION_MESSAGE ); if(option == JOptionPane.YES_OPTION) { for (AWorkspaceTreeNode targetNode : targetNodes) { AWorkspaceTreeNode parent = targetNode.getParent(); if(targetNode instanceof DefaultFileNode) { //WORKSPACE - info: used in case of key events ((DefaultFileNode) targetNode).delete(); } else { targetNode.getModel().removeNodeFromParent(targetNode); } if(parent != null) { parent.refresh(); } } } } }