package org.freeplane.plugin.workspace.actions;
import java.awt.event.ActionEvent;
import java.io.File;
import javax.swing.JOptionPane;
import org.freeplane.core.ui.EnabledAction;
import org.freeplane.core.ui.components.UITools;
import org.freeplane.core.util.TextUtils;
import org.freeplane.plugin.workspace.WorkspaceController;
import org.freeplane.plugin.workspace.WorkspaceUtils;
import org.freeplane.plugin.workspace.model.AWorkspaceTreeNode;
import org.freeplane.plugin.workspace.nodes.DefaultFileNode;
import org.freeplane.plugin.workspace.nodes.LinkTypeFileNode;
@EnabledAction(checkOnPopup = true)
public class FileNodeDeleteAction extends AWorkspaceAction {
/**
*
*/
private static final long serialVersionUID = 1L;
public FileNodeDeleteAction() {
super("workspace.action.file.delete");
}
/***********************************************************************************
* METHODS
**********************************************************************************/
public void setEnabledFor(AWorkspaceTreeNode node) {
if(node.isSystem()|| !node.isTransferable() || (!(node instanceof DefaultFileNode) && !(node instanceof LinkTypeFileNode))) {
setEnabled(false);
}
else{
setEnabled();
}
}
/***********************************************************************************
* REQUIRED METHODS FOR INTERFACES
**********************************************************************************/
public void actionPerformed(final ActionEvent e) {
AWorkspaceTreeNode node = this.getNodeFromActionEvent(e);
int yesorno = JOptionPane.showConfirmDialog(UITools.getFrame(),
TextUtils.format("workspace.action.file.delete.confirm.text", node.getName()),
TextUtils.getText("workspace.action.file.delete.confirm.title"),
JOptionPane.YES_NO_OPTION);
if (yesorno == JOptionPane.OK_OPTION) {
deleteFile(node);
}
WorkspaceUtils.saveCurrentConfiguration();
}
private void deleteFile(final AWorkspaceTreeNode node) {
if (node instanceof DefaultFileNode) {
((DefaultFileNode) node).delete();
}
else if (node instanceof LinkTypeFileNode) {
File file = WorkspaceUtils.resolveURI(((LinkTypeFileNode) node).getLinkPath());
if(file != null) {
if(!file.delete()) {
//show message?
}
}
}
WorkspaceUtils.getModel().removeNodeFromParent(node);
WorkspaceController.getController().refreshWorkspace();
}
}