01: package net.sourceforge.squirrel_sql.fw.gui.action;
02:
03: /*
04: * Copyright (C) 2001-2004 Colin Bell
05: * colbell@users.sourceforge.net
06: *
07: * This library is free software; you can redistribute it and/or
08: * modify it under the terms of the GNU Lesser General Public
09: * License as published by the Free Software Foundation; either
10: * version 2.1 of the License, or (at your option) any later version.
11: *
12: * This library is distributed in the hope that it will be useful,
13: * but WITHOUT ANY WARRANTY; without even the implied warranty of
14: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15: * Lesser General Public License for more details.
16: *
17: * You should have received a copy of the GNU Lesser General Public
18: * License along with this library; if not, write to the Free Software
19: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20: */
21: import java.awt.Component;
22: import java.awt.Frame;
23: import java.awt.event.ActionEvent;
24:
25: import javax.swing.AbstractAction;
26: import javax.swing.Icon;
27: import javax.swing.JPopupMenu;
28:
29: /**
30: * This is the base class for all <TT>Action</TT> classes.
31: *
32: * @author <A HREF="mailto:colbell@users.sourceforge.net">Colin Bell</A>
33: */
34: public abstract class BaseAction extends AbstractAction {
35: /** Names of properties stored in action. */
36: public interface IBaseActionPropertyNames {
37: String DISABLED_ICON = "squirrelDisabledIcon";
38: String ROLLOVER_ICON = "squirrelRolloverIcon";
39: }
40:
41: /**
42: * Default ctor.
43: */
44: protected BaseAction() {
45: super ();
46: }
47:
48: /**
49: * Ctor specifying the title.
50: *
51: * @param title Title for this action.
52: */
53: protected BaseAction(String title) {
54: super (title);
55: }
56:
57: /**
58: * Ctor specifying the title and icon.
59: *
60: * @param title Title for this action.
61: * @param icon Icon for this action.
62: */
63: protected BaseAction(String title, Icon icon) {
64: super (title, icon);
65: }
66:
67: /**
68: * Return the <TT>Frame</TT> object associated with the passed event.<P>
69: *
70: * @param evt <TT>ActionEvent</TT> to find frame for.
71: *
72: * @return <TT>Frame</TT> or <TT>null</TT> if none found.
73: */
74: protected Frame getParentFrame(ActionEvent evt) {
75: Frame parent = null;
76: if (evt != null) {
77: final Object src = evt.getSource();
78: if (src instanceof Component) {
79: Component comp = (Component) src;
80: while (comp != null && parent == null) {
81: if (comp instanceof Frame) {
82: parent = (Frame) comp;
83: } else if (comp instanceof JPopupMenu) {
84: comp = ((JPopupMenu) comp).getInvoker();
85: } else {
86: comp = comp.getParent();
87: }
88: }
89: }
90: }
91: return parent;
92: }
93: }
|