package edu.mbl.jif.imaging.nav.dirtree;
import java.awt.Point;
import java.awt.event.*;
import java.io.File;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import javax.swing.*;
import javax.swing.tree.*;
// TODO: Not Used
@SuppressWarnings("serial")
public class PopupMenuCell extends JPopupMenu {
private JTree tree;
private DefaultTreeModel treeModel;
private DefaultMutableTreeNode lastSelNode, curNode;
private JMenuItem menuItem;
private boolean cut;
public PopupMenuCell() {
add(menuItem = new JMenuItem("Rename"));
menuItem.setIcon(new ImageIcon("edit.png"));
menuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
String str = curNode.toString();
str = str.substring(str.lastIndexOf("\\") + 1, str.length());
if (JOptionPane.showConfirmDialog(tree, "Rename " + str, "Rename",
JOptionPane.ERROR_MESSAGE)
== JOptionPane.YES_OPTION) {
String reply = JOptionPane.showInputDialog(null, "Rename " + str);
if (reply != "" && reply != null) {
str = curNode.toString();
str = str.substring(0, str.lastIndexOf("\\"));
((File) curNode.getUserObject()).renameTo(new File(str + "\\" + reply));
curNode.setUserObject(new File(str + "\\" + reply));
}
}
}
});
add(menuItem = new JMenuItem("Delete"));
menuItem.setIcon(new ImageIcon("delete.png"));
menuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
if (JOptionPane.showConfirmDialog(tree, "Delete " + curNode, "Delete File",
JOptionPane.ERROR_MESSAGE) == JOptionPane.YES_OPTION) {
if (((File) curNode.getUserObject()).isFile()) {
((File) curNode.getUserObject()).delete();
} else {
DelDir((File) curNode.getUserObject());
}
treeModel = (DefaultTreeModel) tree.getModel();
treeModel.removeNodeFromParent(curNode);
}
}
});
addSeparator();
add(menuItem = new JMenuItem("Cut"));
menuItem.setIcon(new ImageIcon("cut.png"));
menuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
lastSelNode = curNode;
cut = true;
}
});
add(menuItem = new JMenuItem("Copy"));
menuItem.setIcon(new ImageIcon("copy.png"));
menuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
lastSelNode = curNode;
cut = false;
}
});
add(menuItem = new JMenuItem("Paste"));
menuItem.setIcon(new ImageIcon("paste.png"));
menuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
String str = lastSelNode.toString();
str = str.substring(str.lastIndexOf("\\") + 1, str.length());
ExecutorService threadExecutor = Executors.newFixedThreadPool(1);
threadExecutor.execute
(new CopyDialog((File) lastSelNode.getUserObject(),
new File(curNode.toString() + "\\" + str), cut));
threadExecutor.shutdown();
DefaultTreeModel treeModel = (DefaultTreeModel) tree.getModel();
DefaultMutableTreeNode newNode = new DefaultMutableTreeNode(new File(
((MutableTreeNode) tree.getLastSelectedPathComponent()).toString() + "\\" + str));
if (lastSelNode.getChildCount() != 0) {
newNode.add(new DefaultMutableTreeNode("**"));
}
treeModel.insertNodeInto(newNode, (MutableTreeNode) tree.getLastSelectedPathComponent(), 0);
if (cut) {
treeModel.removeNodeFromParent(lastSelNode);
}
tree.repaint();
}
});
}
public void show(JTree comp, Point p, DefaultMutableTreeNode node) {
if (comp != null & p != null & node != null) {
curNode = node;
tree = comp;
show(comp, p.x, p.y);
if (lastSelNode != null & ((File) node.getUserObject()).isDirectory()) {
if (!lastSelNode.isNodeDescendant(curNode)) {
menuItem.setEnabled(true);
}
} else {
menuItem.setEnabled(false);
}
}
}
public static void DelDir(File dir) {
if (dir.isDirectory()) {
File[] files = dir.listFiles();
for (int i = 0; i < files.length; i++) {
if (files[i].isDirectory()) {
DelDir(files[i]);
files[i].delete();
} else {
files[i].delete();
}
}
dir.delete();
}
if (dir.exists()) {
DelDir(dir);
}
}
}