From 9288d1120423d9743dd6b4c419f201c4749122f6 Mon Sep 17 00:00:00 2001 From: Graydon Hoare Date: Thu, 12 Feb 2004 00:17:26 +0000 Subject: ToggleButtonModel.java: Remove dead class. 2004-02-09 Graydon Hoare * javax/swing/ToggleButtonModel.java: Remove dead class. * javax/swing/plaf/basic/BasicDefaults.java: Remove dead class. * javax/swing/plaf/basic/BasicButtonListener.java: New class. * javax/swing/plaf/basic/BasicRootPaneUI.java: New class. * Makefile.am: Update for new and removed files. * Makefile.in: Regenerate. * gnu/java/awt/peer/gtk/GdkGraphics2D.java: Initialize default hints. * javax/swing/AbstractButton.java (AbstractButton): Initialize fields correctly in ctor. * javax/swing/JCheckbox.java (JCheckBox): Override painting flags. * javax/swing/DefaultButtonModel.java: Conform to sun. * javax/swing/JComponent.java (paint): Fill with background color if available. (processComponentKeyEvent) (processFocusEvent) (processKeyEvent) (processMouseMotionEvent): Remove event-consuming empty methods. (getUIClassID): Return "ComponentUI" not "JComponent" * javax/swing/JFrame.java: Remove some debugging chatter. (JFrame): Subscribe to window events. * javax/swing/JRadioButton.java (JRadioButton): Override painting flags. * javax/swing/JRootPane.java (JRootPane): Set background from UIDefaults. * javax/swing/JToggleButton.java (ToggleButtonModel): New inner class. (JToggleButton): Override layout alighment. * javax/swing/SwingUtilities.java: (getLocalBounds): Return width and height, not x and y. (calculateInnerArea): Use local bounds, not bounds. (layoutCompoundLabel): Provide overridden form. (layoutCompoundLabel): Correct bugs. * javax/swing/UIDefaults.java: Correct comment. * javax/swing/plaf/basic/BasicButtonUI.java: Move most logic into defaults, external listener. (paintIcon): Implement icon painting. (paint): Fix state painting to conform to changes in model. * javax/swing/plaf/basic/BasicCheckBoxUI.java: Remove most dead/wrong methods. (getDefaultIcon): Return defaults.getIcon("CheckBox.icon"). * javax/swing/plaf/basic/BasicIconFactory.java: (DummyIcon): New class. (getMenuItemCheckIcon) (getMenuItemArrowIcon) (getMenuArrowIcon) (getCheckBoxMenuItemIcon) (getRadioButtonMenuItemIcon) (createEmptyFrameIcon): Return DummyIcons, not null. (getCheckBoxIcon): Implement an icon that looks like sun's. (getRadioButtonIcon): Implement an icon that looks like sun's. * javax/swing/plaf/basic/BasicLookAndFeel.java (initComponentDefaults): Fix impossible values, add some missing. * javax/swing/plaf/basic/BasicPanelUI.java (gap): Remove field. * javax/swing/plaf/basic/BasicRadioButtonUI.java: Remove most dead/wrong methods. (icon): New field. (getDefaultIcon): New method. * javax/swing/plaf/basic/BasicToggleButtonUI.java: Remove most dead/wrong methods. * javax/swing/plaf/metal/MetalLookAndFeel.java (getDefaults): Return super.getDefaults(), not BasicDefaults. * jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics.c (Java_gnu_java_awt_peer_gtk_GdkGraphics_clearRect): Implement "clearing" as drawing, when on pixmap drawables. * javax/swing/JButton.java (getUIClassID): * javax/swing/JCheckBox.java (getUIClassID): * javax/swing/JEditorPane.java (getUIClassID): * javax/swing/JLabel.java (getUIClassID): * javax/swing/JList.java (getUIClassID): * javax/swing/JOptionPane.java (getUIClassID): * javax/swing/JPanel.java (getUIClassID): * javax/swing/JPasswordField.java (uiClassID): * javax/swing/JRadioButton.java (getUIClassID): * javax/swing/JRootPane.java (getUIClassID): * javax/swing/JScrollPane.java (getUIClassID): * javax/swing/JTabbedPane.java (getUIClassID): * javax/swing/JToggleButton.java (getUIClassID): * javax/swing/JTree.java (getUIClassID): * javax/swing/JViewport.java (getUIClassID): * javax/swing/text/JTextComponent.java (getUIClassID): Return "fooUI" not "Jfoo" From-SVN: r77686 --- libjava/javax/swing/DefaultButtonModel.java | 94 ++++++++++++++++------------- 1 file changed, 52 insertions(+), 42 deletions(-) (limited to 'libjava/javax/swing/DefaultButtonModel.java') diff --git a/libjava/javax/swing/DefaultButtonModel.java b/libjava/javax/swing/DefaultButtonModel.java index 1997e6a..edffc39 100644 --- a/libjava/javax/swing/DefaultButtonModel.java +++ b/libjava/javax/swing/DefaultButtonModel.java @@ -55,15 +55,23 @@ import javax.swing.event.EventListenerList; * button. The concrete button type holding this state may be a a "toggle" * button (checkbox, radio button) or a "push" button (menu button, button). * - * Any change to the model's properties will trigger the firing of a - * ChangeEvent. + * If the model is disabled, only the "selected" property can be changed. + * An attempt to change the "armed", "rollover" or "pressed" properties + * while the model is disabled will be blocked. * - * Any change to the "pressed" property will trigger the firing of an - * ItemEvent in addition to ChangeEvent. + * Any successful (non-blocked) change to the model's properties will + * trigger the firing of a ChangeEvent. * - * Any change which causes the enabled, armed and pressed properties to - * simultaneously become true will trigger the firing of an - * ActionEvent in addition to the ChangeEvent. + * Any change to the "selected" property will trigger the firing of an + * ItemEvent in addition to ChangeEvent. This is true whether the model is + * enabled or not. + * + * One other state change is special: the transition from "enabled, armed + * and pressd" to "enabled, armed and not-pressed". This is considered the + * "trailing edge" of a successful mouse click, and therefore fires an + * ActionEvent in addition to a ChangeEvent. + * + * In all other respects this class is just a container of boolean flags. * * @author Graydon Hoare (graydon&064;redhat.com) */ @@ -80,9 +88,9 @@ public class DefaultButtonModel implements ButtonModel, Serializable be pressed or selected unless they are enabled. */ static int ENABLED = 2; - /** State constant indicating that the button has been fully - pressed. This usually happens when a user has released the mouse over a - previously "armed" button. */ + /** State constant indicating that the user is holding down the button. + When this transitions from true to false, an ActionEvent may be fired, + depending on the value of the "armed" property.*/ static int PRESSED = 4; /** State constant indicating that the mouse is currently positioned over @@ -108,8 +116,8 @@ public class DefaultButtonModel implements ButtonModel, Serializable /** The group this model belongs to. Only one button in a group may be selected at any given time. */ - ButtonGroup group; - + ButtonGroup group; + /** The key code (one of {@link java.awt.event.KeyEvent} VK_*) used to press this button via a keyboard interface. */ int mnemonic; @@ -120,7 +128,8 @@ public class DefaultButtonModel implements ButtonModel, Serializable public DefaultButtonModel() { - stateMask = 0; + stateMask = ENABLED; + mnemonic = java.awt.event.KeyEvent.VK_UNDEFINED; listenerList = new EventListenerList(); changeEvent = new ChangeEvent(this); } @@ -143,10 +152,10 @@ public class DefaultButtonModel implements ButtonModel, Serializable * @param l The listener to add */ public void addActionListener(ActionListener l) - { + { listenerList.add(ActionListener.class, l); - } - + } + /** * Remove an ActionListener to the model. Usually only called to * unsubscribe an AbstractButton's listener to the model. @@ -262,13 +271,15 @@ public class DefaultButtonModel implements ButtonModel, Serializable if (oldstate == newstate) return; + if ((stateflag != SELECTED) + && (stateflag != ENABLED) + && (stateMask & ENABLED) == 0) + return; + stateMask = newstate; fireStateChanged(changeEvent); - if ((newstate & ENABLED) == 0) - return; - if ((oldstate & SELECTED) == 0 && (newstate & SELECTED) == SELECTED) fireItemStateChanged(new ItemEvent(this, ItemEvent.ITEM_STATE_CHANGED, @@ -278,27 +289,26 @@ public class DefaultButtonModel implements ButtonModel, Serializable && (newstate & SELECTED) == 0) fireItemStateChanged(new ItemEvent(this, ItemEvent.ITEM_STATE_CHANGED, null, ItemEvent.DESELECTED)); - - else if ((newstate & ARMED) == ARMED - && (newstate & PRESSED) == PRESSED) - { + + else if (((oldstate & ARMED) == ARMED && (oldstate & PRESSED) == PRESSED) + && + ((newstate & ARMED) == ARMED && (newstate & PRESSED) == 0)) + { fireActionPerformed(new ActionEvent(this, ActionEvent.ACTION_PERFORMED, actionCommand)); - stateMask = stateMask & ~(PRESSED | ARMED); - } - + } } - + /** * Get the value of the model's "armed" property. * * @return The current "armed" property */ public boolean isArmed() - { + { return (stateMask & ARMED) == ARMED; - } - + } + /** * Set the value of the model's "armed" property. * @@ -396,7 +406,7 @@ public class DefaultButtonModel implements ButtonModel, Serializable * @return The current "mnemonic" property */ public int getMnemonic() - { + { return mnemonic; } @@ -406,14 +416,14 @@ public class DefaultButtonModel implements ButtonModel, Serializable * @param key The new "mnemonic" property */ public void setMnemonic(int key) - { + { if (mnemonic != key) - { + { mnemonic = key; fireStateChanged(changeEvent); - } + } } - + /** * Set the value of the model's "actionCommand" property. This property * is used as the "command" property of the {@link ActionEvent} fired @@ -422,14 +432,14 @@ public class DefaultButtonModel implements ButtonModel, Serializable * @param s The new "actionCommand" property. */ public void setActionCommand(String s) - { + { if (actionCommand != s) { actionCommand = s; fireStateChanged(changeEvent); - } - } - + } + } + /** * Set the value of the model's "actionCommand" property. This property * is used as the "command" property of the {@link ActionEvent} fired @@ -438,7 +448,7 @@ public class DefaultButtonModel implements ButtonModel, Serializable * @return The current "actionCommand" property */ public String getActionCommand() - { + { return actionCommand; } @@ -456,6 +466,6 @@ public class DefaultButtonModel implements ButtonModel, Serializable { group = g; fireStateChanged(changeEvent); - } - } + } + } } -- cgit v1.1