GNU Classpath (0.18) | ||
Frames | No Frames |
1: /* JButton.java -- 2: Copyright (C) 2002, 2004, 2005 Free Software Foundation, Inc. 3: 4: This file is part of GNU Classpath. 5: 6: GNU Classpath is free software; you can redistribute it and/or modify 7: it under the terms of the GNU General Public License as published by 8: the Free Software Foundation; either version 2, or (at your option) 9: any later version. 10: 11: GNU Classpath is distributed in the hope that it will be useful, but 12: WITHOUT ANY WARRANTY; without even the implied warranty of 13: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14: General Public License for more details. 15: 16: You should have received a copy of the GNU General Public License 17: along with GNU Classpath; see the file COPYING. If not, write to the 18: Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 19: 02110-1301 USA. 20: 21: Linking this library statically or dynamically with other modules is 22: making a combined work based on this library. Thus, the terms and 23: conditions of the GNU General Public License cover the whole 24: combination. 25: 26: As a special exception, the copyright holders of this library give you 27: permission to link this library with independent modules to produce an 28: executable, regardless of the license terms of these independent 29: modules, and to copy and distribute the resulting executable under 30: terms of your choice, provided that you also meet, for each linked 31: independent module, the terms and conditions of the license of that 32: module. An independent module is a module which is not derived from 33: or based on this library. If you modify this library, you may extend 34: this exception to your version of the library, but you are not 35: obligated to do so. If you do not wish to do so, delete this 36: exception statement from your version. */ 37: 38: package javax.swing; 39: 40: import javax.accessibility.Accessible; 41: import javax.accessibility.AccessibleContext; 42: import javax.accessibility.AccessibleRole; 43: import javax.swing.plaf.ButtonUI; 44: 45: 46: /** 47: * A general purpose push button. <code>JButton</code>s can display a label, 48: * an {@link Icon} or both. 49: * 50: * @author Ronald Veldema (rveldema@cs.vu.nl) 51: */ 52: public class JButton extends AbstractButton 53: implements Accessible 54: { 55: 56: /** 57: * Accessibility support for JButtons. 58: */ 59: protected class AccessibleJButton 60: extends AbstractButton.AccessibleAbstractButton 61: { 62: /** 63: * Returns the accessible role that this component represents. 64: * This is {@link AccessibleRole#PUSH_BUTTON} for <code>JButton</code>s. 65: * 66: * @return the accessible role that this component represents 67: */ 68: public AccessibleRole getAccessibleRole() 69: { 70: return AccessibleRole.PUSH_BUTTON; 71: } 72: } 73: 74: private static final long serialVersionUID = -1907255238954382202L; 75: boolean def; 76: boolean is_def; 77: 78: /** The AccessibleContext for this JButton. */ 79: AccessibleJButton accessibleContext; 80: 81: public JButton() 82: { 83: this(null, null); 84: } 85: 86: public JButton(Action a) 87: { 88: this(); 89: setAction(a); 90: } 91: 92: public JButton(Icon icon) 93: { 94: this(null, icon); 95: } 96: 97: public JButton(String text) 98: { 99: this(text, null); 100: } 101: 102: public JButton(String text, Icon icon) 103: { 104: super(); 105: init(text, icon); 106: setModel(new DefaultButtonModel()); 107: } 108: 109: public Object[] getSelectedObjects() 110: { 111: return null; 112: } 113: 114: protected void configurePropertiesFromAction(Action a) 115: { 116: // Factory method which sets the AbstractButton's properties according to 117: // values from the Action instance. 118: super.configurePropertiesFromAction(a); 119: } 120: 121: public AccessibleContext getAccessibleContext() 122: { 123: if (accessibleContext == null) 124: accessibleContext = new AccessibleJButton(); 125: return accessibleContext; 126: } 127: 128: public String getUIClassID() 129: { 130: // Returns a string that specifies the name of the L&F class that renders 131: // this component. 132: return "ButtonUI"; 133: } 134: 135: public boolean isDefaultButton() 136: { 137: // Returns whether or not this button is the default button on the 138: // RootPane. 139: return is_def; 140: } 141: 142: public boolean isDefaultCapable() 143: { 144: // Returns whether or not this button is capable of being the default 145: // button on the RootPane. 146: return def; 147: } 148: 149: protected String paramString() 150: { 151: String superParam = super.paramString(); 152: 153: // 41 is the maximum number of chars which may be needed. 154: StringBuffer sb = new StringBuffer(41); 155: sb.append(",defaultButton=").append(is_def); 156: sb.append(",defaultCapable=").append(def); 157: 158: return superParam + sb.toString(); 159: } 160: 161: /** 162: * Overrides JComponent.removeNotify to check if this button is currently 163: * set as the default button on the RootPane, and if so, sets the RootPane's 164: * default button to null to ensure the RootPane doesn't hold onto an invalid 165: * button reference. 166: */ 167: public void removeNotify() 168: { 169: } 170: 171: public void setDefaultCapable(boolean defaultCapable) 172: { 173: def = defaultCapable; 174: } 175: 176: public void updateUI() 177: { 178: setUI((ButtonUI) UIManager.getUI(this)); 179: } 180: }
GNU Classpath (0.18) |