KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > SnowMailClient > view > folders > AddNewFolderAction


1 package SnowMailClient.view.folders;
2
3 import snow.utils.gui.FileIcon;
4 import snow.utils.gui.Icons;
5 import SnowMailClient.model.folders.*;
6 import SnowMailClient.SnowMailClientApp;
7 import SnowMailClient.Language.Language;
8
9 import java.awt.*;
10 import java.awt.event.*;
11 import javax.swing.*;
12 import javax.swing.event.*;
13 import javax.swing.tree.*;
14
15 public class AddNewFolderAction extends AbstractAction implements TreeSelectionListener
16 {
17
18   JTree tree;
19   FolderTreeNode parentNode;
20
21   public AddNewFolderAction( FolderTreeNode parentNode, JTree tree)
22   {
23     super(Language.translate("Create new folder in %",parentNode.getFolderName()));
24     FileIcon fic = new FileIcon(true, 15);
25     fic.setType(FileIcon.IconColor.System);
26     putValue(AbstractAction.SMALL_ICON, fic);
27
28     this.tree = tree;
29     this.parentNode = parentNode;
30
31     tree.getSelectionModel().addTreeSelectionListener(this);
32   } // Constructor
33

34   public void valueChanged(TreeSelectionEvent e)
35   {
36     this.setEnabled( tree.getSelectionCount()==1 );
37   }
38
39   public void actionPerformed(ActionEvent e)
40   {
41     try
42     {
43       TreePath selectionPath = tree.getSelectionPath();
44       if(selectionPath!=null)
45       {
46         FolderTreeNode parentNode = (FolderTreeNode) selectionPath.getLastPathComponent();
47
48         // ask for name
49
String JavaDoc newFolderName = JOptionPane.showInputDialog(tree, Language.translate("Enter the new folder name"));
50         if(newFolderName!=null && newFolderName.trim().length()>0)
51         {
52           newFolderName = newFolderName.trim();
53           if(parentNode.hasChild(newFolderName))
54           {
55              throw new Exception JavaDoc(Language.translate("Folder % alredy exists", newFolderName));
56           }
57           FolderTreeNode newNode = new FolderTreeNode(newFolderName, parentNode);
58           tree.setSelectionPath(new TreePath(newNode.getPath()));
59           // ### ugly
60
tree.updateUI();
61         }
62       }
63     }
64     catch(Exception JavaDoc e2)
65     {
66       JOptionPane.showMessageDialog(tree, Language.translate("Error")+":"+e2.getMessage(),
67         Language.translate("Cannot create new folder"),
68          JOptionPane.ERROR_MESSAGE);
69     }
70   }
71
72 } // AddNewFolderAction
Popular Tags