1 package org.columba.addressbook.gui.focus; 17 18 import java.awt.event.FocusEvent ; 19 import java.awt.event.FocusListener ; 20 import java.util.HashMap ; 21 import java.util.List ; 22 import java.util.Map ; 23 import java.util.Vector ; 24 25 import org.columba.core.gui.action.AbstractColumbaAction; 26 27 44 public class FocusManager implements FocusListener { 45 48 List list; 49 50 53 Map map; 54 55 58 AbstractColumbaAction cutAction; 59 60 AbstractColumbaAction copyAction; 61 62 AbstractColumbaAction pasteAction; 63 64 AbstractColumbaAction deleteAction; 65 66 AbstractColumbaAction selectAllAction; 67 68 AbstractColumbaAction undoAction; 69 70 AbstractColumbaAction redoAction; 71 72 75 FocusOwner current = null; 76 77 80 FocusOwner last = null; 81 82 private static FocusManager instance = new FocusManager(); 83 84 public FocusManager() { 85 list = new Vector (); 86 map = new HashMap (); 87 } 88 89 public static FocusManager getInstance() { 90 return instance; 91 } 92 93 99 public void registerComponent(FocusOwner c) { 100 list.add(c); 101 102 map.put(c.getComponent(), c); 104 105 c.getComponent().addFocusListener(this); 106 } 107 108 115 public FocusOwner getCurrentOwner() { 116 if (current != null) { 117 return current; 118 } 119 120 if (last != null) { 121 return last; 122 } 123 124 return null; 125 } 126 127 133 public void updateActions() { 134 } 137 138 144 protected void enableActions(FocusOwner o) { 145 if (o == null) { 146 cutAction.setEnabled(false); 149 copyAction.setEnabled(false); 150 pasteAction.setEnabled(false); 151 deleteAction.setEnabled(false); 152 undoAction.setEnabled(false); 153 redoAction.setEnabled(false); 154 selectAllAction.setEnabled(false); 155 156 return; 157 } 158 159 cutAction.setEnabled(o.isCutActionEnabled()); 160 copyAction.setEnabled(o.isCopyActionEnabled()); 161 pasteAction.setEnabled(o.isPasteActionEnabled()); 162 deleteAction.setEnabled(o.isDeleteActionEnabled()); 163 undoAction.setEnabled(o.isUndoActionEnabled()); 164 redoAction.setEnabled(o.isRedoActionEnabled()); 165 selectAllAction.setEnabled(o.isSelectAllActionEnabled()); 166 } 167 168 172 public void focusGained(FocusEvent event) { 173 current = (FocusOwner) map.get(event.getSource()); 174 175 updateActions(); 176 } 177 178 181 public void focusLost(FocusEvent event) { 182 184 last = current; 185 186 current = null; 187 188 updateActions(); 190 } 191 192 196 public void cut() { 197 getCurrentOwner().cut(); 198 199 enableActions(getCurrentOwner()); 200 } 201 202 206 public void copy() { 207 getCurrentOwner().copy(); 208 209 enableActions(getCurrentOwner()); 210 } 211 212 216 public void paste() { 217 getCurrentOwner().paste(); 218 219 enableActions(getCurrentOwner()); 220 } 221 222 226 public void delete() { 227 getCurrentOwner().delete(); 228 229 enableActions(getCurrentOwner()); 230 } 231 232 236 public void redo() { 237 getCurrentOwner().redo(); 238 enableActions(getCurrentOwner()); 239 } 240 241 245 public void undo() { 246 getCurrentOwner().undo(); 247 enableActions(getCurrentOwner()); 248 } 249 250 254 public void selectAll() { 255 getCurrentOwner().selectAll(); 256 enableActions(getCurrentOwner()); 257 } 258 259 260 263 public void setCopyAction(AbstractColumbaAction action) { 264 copyAction = action; 265 } 266 267 270 public void setCutAction(AbstractColumbaAction action) { 271 cutAction = action; 272 } 273 274 277 public void setDeleteAction(AbstractColumbaAction action) { 278 deleteAction = action; 279 } 280 281 284 public void setPasteAction(AbstractColumbaAction action) { 285 pasteAction = action; 286 } 287 288 291 public void setRedoAction(AbstractColumbaAction action) { 292 redoAction = action; 293 } 294 295 298 public void setSelectAllAction(AbstractColumbaAction action) { 299 selectAllAction = action; 300 } 301 302 305 public void setUndoAction(AbstractColumbaAction action) { 306 undoAction = action; 307 } 308 } | Popular Tags |