001 /*
002 * $Id: UIAction.java 1846 2007-03-16 21:38:13Z rbair $
003 *
004 * Copyright 2004 Sun Microsystems, Inc., 4150 Network Circle,
005 * Santa Clara, California 95054, U.S.A. All rights reserved.
006 *
007 * This library is free software; you can redistribute it and/or
008 * modify it under the terms of the GNU Lesser General Public
009 * License as published by the Free Software Foundation; either
010 * version 2.1 of the License, or (at your option) any later version.
011 *
012 * This library is distributed in the hope that it will be useful,
013 * but WITHOUT ANY WARRANTY; without even the implied warranty of
014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
015 * Lesser General Public License for more details.
016 *
017 * You should have received a copy of the GNU Lesser General Public
018 * License along with this library; if not, write to the Free Software
019 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
020 */
021
022 package org.jdesktop.swingx;
023
024 import javax.swing.*;
025 import java.beans.PropertyChangeListener;
026
027 /**
028 * UIAction is the basis of all of basic's action classes that are used in
029 * an ActionMap. Subclasses need to override <code>actionPerformed</code>.
030 * <p>
031 * A typical subclass will look like:
032 * <pre>
033 * private static class Actions extends UIAction {
034 * Actions(String name) {
035 * super(name);
036 * }
037 *
038 * public void actionPerformed(ActionEvent ae) {
039 * if (getName() == "selectAll") {
040 * selectAll();
041 * }
042 * else if (getName() == "cancelEditing") {
043 * cancelEditing();
044 * }
045 * }
046 * }
047 * </pre>
048 * <p>
049 * Subclasses that wish to conditionalize the enabled state should override
050 * <code>isEnabled(Component)</code>, and be aware that the passed in
051 * <code>Component</code> may be null.
052 * <p>
053 * This is based on sun.swing.UIAction in J2SE 1.5
054 *
055 * @see javax.swing.Action
056 * @author Scott Violet
057 */
058 public abstract class UIAction implements Action {
059 private String name;
060
061 public UIAction(String name) {
062 this.name = name;
063 }
064
065 public final String getName() {
066 return name;
067 }
068
069 public Object getValue(String key) {
070 return NAME.equals(key) ? name : null;
071 }
072
073 // UIAction is not mutable, this does nothing.
074 public void putValue(String key, Object value) {
075 }
076
077 // UIAction is not mutable, this does nothing.
078 public void setEnabled(boolean b) {
079 }
080
081 /**
082 * Cover method for <code>isEnabled(null)</code>.
083 */
084 public final boolean isEnabled() {
085 return isEnabled(null);
086 }
087
088 /**
089 * Subclasses that need to conditionalize the enabled state should
090 * override this. Be aware that <code>sender</code> may be null.
091 *
092 * @param sender Widget enabled state is being asked for, may be null.
093 */
094 public boolean isEnabled(Object sender) {
095 return true;
096 }
097
098 // UIAction is not mutable, this does nothing.
099 public void addPropertyChangeListener(PropertyChangeListener listener) {
100 }
101
102 // UIAction is not mutable, this does nothing.
103 public void removePropertyChangeListener(PropertyChangeListener listener) {
104 }
105 }