KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > columba > addressbook > gui > action > RemoveCardAction


1 // The contents of this file are subject to the Mozilla Public License Version
2
// 1.1
3
//(the "License"); you may not use this file except in compliance with the
4
//License. You may obtain a copy of the License at http://www.mozilla.org/MPL/
5
//
6
//Software distributed under the License is distributed on an "AS IS" basis,
7
//WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
8
//for the specific language governing rights and
9
//limitations under the License.
10
//
11
//The Original Code is "The Columba Project"
12
//
13
//The Initial Developers of the Original Code are Frederik Dietz and Timo
14
// Stich.
15
//Portions created by Frederik Dietz and Timo Stich are Copyright (C) 2003.
16
//
17
//All Rights Reserved.
18
package org.columba.addressbook.gui.action;
19
20 import java.awt.event.ActionEvent JavaDoc;
21
22 import javax.swing.event.ListSelectionEvent JavaDoc;
23 import javax.swing.event.TreeSelectionEvent JavaDoc;
24 import javax.swing.event.TreeSelectionListener JavaDoc;
25 import javax.swing.tree.TreePath JavaDoc;
26
27 import org.columba.addressbook.folder.AbstractFolder;
28 import org.columba.addressbook.folder.AddressbookTreeNode;
29 import org.columba.addressbook.folder.IGroupFolder;
30 import org.columba.addressbook.gui.focus.FocusManager;
31 import org.columba.addressbook.gui.focus.FocusOwner;
32 import org.columba.addressbook.gui.frame.AddressbookFrameMediator;
33 import org.columba.addressbook.gui.table.TableController;
34 import org.columba.addressbook.gui.tree.AddressbookTreeModel;
35 import org.columba.addressbook.gui.tree.TreeController;
36 import org.columba.addressbook.util.AddressbookResourceLoader;
37 import org.columba.api.gui.frame.IFrameMediator;
38 import org.columba.core.gui.dialog.ErrorDialog;
39 import org.columba.core.logging.Logging;
40 import org.columba.core.resourceloader.IconKeys;
41 import org.columba.core.resourceloader.ImageLoader;
42
43 /**
44  * Delete selected contact or group item.
45  *
46  * @author fdietz
47  */

48 public class RemoveCardAction extends DefaultTableAction implements
49         TreeSelectionListener JavaDoc {
50     public RemoveCardAction(IFrameMediator frameController) {
51         super(frameController, AddressbookResourceLoader.getString("menu",
52                 "mainframe", "menu_file_remove"));
53
54         // tooltip text
55
putValue(SHORT_DESCRIPTION, AddressbookResourceLoader.getString("menu",
56                 "mainframe", "menu_file_remove_tooltip").replaceAll("&", ""));
57
58         putValue(TOOLBAR_NAME, AddressbookResourceLoader.getString("menu",
59                 "mainframe", "menu_file_remove_toolbar"));
60
61         // icons
62
putValue(SMALL_ICON, ImageLoader.getSmallIcon(IconKeys.EDIT_DELETE));
63         putValue(LARGE_ICON, ImageLoader.getIcon(IconKeys.EDIT_DELETE));
64
65
66         setEnabled(false);
67
68         // register interest on tree selection changes
69
((AddressbookFrameMediator) frameMediator)
70                 .addTreeSelectionListener(this);
71     }
72
73     /**
74      * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
75      */

76     public void actionPerformed(ActionEvent JavaDoc evt) {
77         AddressbookFrameMediator mediator = (AddressbookFrameMediator) frameMediator;
78
79         FocusOwner focusOwner = FocusManager.getInstance().getCurrentOwner();
80
81         TableController table = ((AddressbookFrameMediator) frameMediator)
82                 .getTable();
83
84         boolean tableHasFocus = false;
85         if (table.equals(focusOwner))
86             tableHasFocus = true;
87
88         if (tableHasFocus) {
89
90             // get selected contact/group card
91
String JavaDoc[] uids = mediator.getTable().getUids();
92
93             // get selected folder
94
AbstractFolder folder = (AbstractFolder) mediator.getTree()
95                     .getSelectedFolder();
96
97             // remove contacts/group cards from folder
98
for (int i = 0; i < uids.length; i++) {
99                 try {
100                     folder.remove(uids[i]);
101                 } catch (Exception JavaDoc e) {
102                     if (Logging.DEBUG)
103                         e.printStackTrace();
104
105                     ErrorDialog.createDialog(e.getMessage(), e);
106                 }
107             }
108
109             if (folder instanceof IGroupFolder)
110                 // re-select folder
111
mediator.getTree().setSelectedFolder(folder);
112         } else {
113             // tree has focus
114

115             // get selected folder
116
AbstractFolder folder = (AbstractFolder) mediator.getTree()
117                     .getSelectedFolder();
118
119             // get parent
120
AddressbookTreeNode parent = (AddressbookTreeNode) folder
121                     .getParent();
122
123             mediator.getTree().setSelectedFolder((AbstractFolder) parent);
124             
125             // remove folder from parent
126
folder.removeFromParent();
127
128             // notify model
129
AddressbookTreeModel.getInstance()
130                     .nodeStructureChanged(parent);
131
132             
133         }
134     }
135
136     /**
137      * Enable or disable action on selection change.
138      *
139      * @see javax.swing.event.ListSelectionListener#valueChanged(javax.swing.event.ListSelectionEvent)
140      */

141     public void valueChanged(ListSelectionEvent JavaDoc event) {
142         // return if selection change is in flux
143
if (event.getValueIsAdjusting()) {
144             return;
145         }
146
147         FocusOwner focusOwner = FocusManager.getInstance().getCurrentOwner();
148
149         TableController table = ((AddressbookFrameMediator) frameMediator)
150                 .getTable();
151
152         if (table.equals(focusOwner)) {
153
154             // table has focus
155

156             Object JavaDoc[] uids = ((AddressbookFrameMediator) frameMediator)
157                     .getTable().getUids();
158
159             if (uids.length > 0) {
160                 setEnabled(true);
161                 return;
162             }
163         }
164
165         setEnabled(false);
166
167     }
168
169     public void valueChanged(TreeSelectionEvent JavaDoc e) {
170         TreePath JavaDoc path = e.getNewLeadSelectionPath();
171
172         FocusOwner focusOwner = FocusManager.getInstance().getCurrentOwner();
173
174         TreeController tree = ((AddressbookFrameMediator) frameMediator)
175                 .getTree();
176
177         if (tree.equals(focusOwner)) {
178             // tree has focus
179

180             AddressbookTreeNode treeNode = null;
181             // remember last selected folder treenode
182
if (path != null) {
183                 treeNode = (AddressbookTreeNode) path.getLastPathComponent();
184             }
185
186             // enable, if more than zero treenodes selected
187
if ((path != null) && (treeNode instanceof IGroupFolder)) {
188                 setEnabled(true);
189             } else
190                 setEnabled(false);
191
192         } else
193
194             setEnabled(false);
195     }
196 }
Popular Tags