1 package org.columba.addressbook.gui.action; 19 20 import java.awt.event.ActionEvent ; 21 22 import javax.swing.event.ListSelectionEvent ; 23 import javax.swing.event.TreeSelectionEvent ; 24 import javax.swing.event.TreeSelectionListener ; 25 import javax.swing.tree.TreePath ; 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 48 public class RemoveCardAction extends DefaultTableAction implements 49 TreeSelectionListener { 50 public RemoveCardAction(IFrameMediator frameController) { 51 super(frameController, AddressbookResourceLoader.getString("menu", 52 "mainframe", "menu_file_remove")); 53 54 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 putValue(SMALL_ICON, ImageLoader.getSmallIcon(IconKeys.EDIT_DELETE)); 63 putValue(LARGE_ICON, ImageLoader.getIcon(IconKeys.EDIT_DELETE)); 64 65 66 setEnabled(false); 67 68 ((AddressbookFrameMediator) frameMediator) 70 .addTreeSelectionListener(this); 71 } 72 73 76 public void actionPerformed(ActionEvent 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 String [] uids = mediator.getTable().getUids(); 92 93 AbstractFolder folder = (AbstractFolder) mediator.getTree() 95 .getSelectedFolder(); 96 97 for (int i = 0; i < uids.length; i++) { 99 try { 100 folder.remove(uids[i]); 101 } catch (Exception e) { 102 if (Logging.DEBUG) 103 e.printStackTrace(); 104 105 ErrorDialog.createDialog(e.getMessage(), e); 106 } 107 } 108 109 if (folder instanceof IGroupFolder) 110 mediator.getTree().setSelectedFolder(folder); 112 } else { 113 115 AbstractFolder folder = (AbstractFolder) mediator.getTree() 117 .getSelectedFolder(); 118 119 AddressbookTreeNode parent = (AddressbookTreeNode) folder 121 .getParent(); 122 123 mediator.getTree().setSelectedFolder((AbstractFolder) parent); 124 125 folder.removeFromParent(); 127 128 AddressbookTreeModel.getInstance() 130 .nodeStructureChanged(parent); 131 132 133 } 134 } 135 136 141 public void valueChanged(ListSelectionEvent event) { 142 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 156 Object [] 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 e) { 170 TreePath 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 180 AddressbookTreeNode treeNode = null; 181 if (path != null) { 183 treeNode = (AddressbookTreeNode) path.getLastPathComponent(); 184 } 185 186 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 |