summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Koch <konqueror@gmx.de>2004-02-14 21:42:56 +0000
committerMichael Koch <konqueror@gmx.de>2004-02-14 21:42:56 +0000
commit03bb9cf84bd9426a18f47338a4a3d9f4101c72c8 (patch)
tree015a047c2eed1700c869764a2cb540f45c3ce885
parent0869851f5c8a27ed15022a79bb66cfb0f2733bc8 (diff)
downloadclasspath-03bb9cf84bd9426a18f47338a4a3d9f4101c72c8.tar.gz
2004-02-14 Graydon Hoare <graydon@redhat.com>
* 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"
-rw-r--r--ChangeLog87
-rw-r--r--gnu/java/awt/peer/gtk/GdkGraphics2D.java4
-rw-r--r--javax/swing/AbstractButton.java18
-rw-r--r--javax/swing/DefaultButtonModel.java94
-rw-r--r--javax/swing/JButton.java2
-rw-r--r--javax/swing/JCheckBox.java4
-rw-r--r--javax/swing/JComponent.java38
-rw-r--r--javax/swing/JEditorPane.java2
-rw-r--r--javax/swing/JFrame.java6
-rw-r--r--javax/swing/JLabel.java2
-rw-r--r--javax/swing/JList.java2
-rw-r--r--javax/swing/JOptionPane.java2
-rw-r--r--javax/swing/JPanel.java2
-rw-r--r--javax/swing/JPasswordField.java2
-rw-r--r--javax/swing/JRadioButton.java4
-rw-r--r--javax/swing/JRootPane.java5
-rw-r--r--javax/swing/JScrollPane.java2
-rw-r--r--javax/swing/JTabbedPane.java4
-rw-r--r--javax/swing/JToggleButton.java111
-rw-r--r--javax/swing/JTree.java2
-rw-r--r--javax/swing/JViewport.java2
-rw-r--r--javax/swing/SwingUtilities.java162
-rw-r--r--javax/swing/UIDefaults.java2
-rw-r--r--javax/swing/plaf/basic/BasicButtonListener.java188
-rw-r--r--javax/swing/plaf/basic/BasicButtonUI.java402
-rw-r--r--javax/swing/plaf/basic/BasicCheckBoxUI.java88
-rw-r--r--javax/swing/plaf/basic/BasicDefaults.java126
-rw-r--r--javax/swing/plaf/basic/BasicIconFactory.java140
-rw-r--r--javax/swing/plaf/basic/BasicLookAndFeel.java27
-rw-r--r--javax/swing/plaf/basic/BasicPanelUI.java4
-rw-r--r--javax/swing/plaf/basic/BasicRadioButtonUI.java130
-rw-r--r--javax/swing/plaf/basic/BasicRootPaneUI.java (renamed from javax/swing/ToggleButtonModel.java)28
-rw-r--r--javax/swing/plaf/basic/BasicToggleButtonUI.java67
-rw-r--r--javax/swing/plaf/metal/MetalLookAndFeel.java3
-rw-r--r--javax/swing/text/JTextComponent.java2
35 files changed, 970 insertions, 794 deletions
diff --git a/ChangeLog b/ChangeLog
index 75c64872d..170151f67 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,90 @@
+2004-02-14 Graydon Hoare <graydon@redhat.com>
+
+ * 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"
+
2004-02-14 Michael Koch <konqueror@gmx.de>
* native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkEmbeddedWindowPeer.c:
diff --git a/gnu/java/awt/peer/gtk/GdkGraphics2D.java b/gnu/java/awt/peer/gtk/GdkGraphics2D.java
index 72164292d..e985696d9 100644
--- a/gnu/java/awt/peer/gtk/GdkGraphics2D.java
+++ b/gnu/java/awt/peer/gtk/GdkGraphics2D.java
@@ -158,7 +158,7 @@ public class GdkGraphics2D extends Graphics2D
setFont (new Font("SansSerif", Font.PLAIN, 12));
setTransform (new AffineTransform ());
setStroke (new BasicStroke ());
- setRenderingHints (new HashMap ());
+ setRenderingHints (getDefaultHints());
stateStack = new Stack();
}
@@ -174,7 +174,7 @@ public class GdkGraphics2D extends Graphics2D
setFont (new Font("SansSerif", Font.PLAIN, 12));
setTransform (new AffineTransform ());
setStroke (new BasicStroke ());
- setRenderingHints (new HashMap ());
+ setRenderingHints (getDefaultHints());
stateStack = new Stack ();
}
diff --git a/javax/swing/AbstractButton.java b/javax/swing/AbstractButton.java
index e9751fa78..12244b313 100644
--- a/javax/swing/AbstractButton.java
+++ b/javax/swing/AbstractButton.java
@@ -186,19 +186,19 @@ public abstract class AbstractButton extends JComponent
String text;
/** The vertical alignment of the button's text and icon. */
- int vert_align = CENTER;
+ int vert_align;
/** The horizontal alignment of the button's text and icon. */
- int hori_align = CENTER;
+ int hori_align;
/** The horizontal position of the button's text relative to its icon. */
- int hori_text_pos = CENTER;
+ int hori_text_pos;
/** The vertical position of the button's text relative to its icon. */
- int vert_text_pos = CENTER;
+ int vert_text_pos;
/** Whether or not the button paints its border. */
- boolean paint_border = true;
+ boolean paint_border;
/** Whether or not the button paints its focus state. */
boolean paint_focus;
@@ -487,8 +487,16 @@ public abstract class AbstractButton extends JComponent
model.addChangeListener(changeListener);
model.addItemListener(itemListener);
+ hori_align = CENTER;
+ hori_text_pos = TRAILING;
+ vert_align = CENTER;
+ vert_text_pos = CENTER;
+ paint_border = true;
+ content_area_filled = true;
+
setAlignmentX(LEFT_ALIGNMENT);
setAlignmentY(CENTER_ALIGNMENT);
+
addFocusListener(new ButtonFocusListener());
updateUI();
}
diff --git a/javax/swing/DefaultButtonModel.java b/javax/swing/DefaultButtonModel.java
index 1997e6a1f..edffc39d6 100644
--- a/javax/swing/DefaultButtonModel.java
+++ b/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 <code>true</code> 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);
- }
- }
+ }
+ }
}
diff --git a/javax/swing/JButton.java b/javax/swing/JButton.java
index b3db389a7..4ec9fd19c 100644
--- a/javax/swing/JButton.java
+++ b/javax/swing/JButton.java
@@ -98,7 +98,7 @@ public class JButton extends AbstractButton implements Accessible
public String getUIClassID()
{
//Returns a string that specifies the name of the L&F class that renders this component.
- return "JButton";
+ return "ButtonUI";
}
public boolean isDefaultButton()
diff --git a/javax/swing/JCheckBox.java b/javax/swing/JCheckBox.java
index 4d2cee7e0..b1a484d9a 100644
--- a/javax/swing/JCheckBox.java
+++ b/javax/swing/JCheckBox.java
@@ -70,6 +70,8 @@ public class JCheckBox extends JToggleButton
public JCheckBox(String text, Icon icon)
{
super(text, icon);
+ paint_border = false;
+ content_area_filled = false;
}
@@ -82,7 +84,7 @@ public class JCheckBox extends JToggleButton
public String getUIClassID()
{
//Returns a string that specifies the name of the L&F class that renders this component.
- return "JCheckBox";
+ return "CheckBoxUI";
}
protected String paramString()
diff --git a/javax/swing/JComponent.java b/javax/swing/JComponent.java
index fa4195197..afe5700d1 100644
--- a/javax/swing/JComponent.java
+++ b/javax/swing/JComponent.java
@@ -763,9 +763,17 @@ public abstract class JComponent extends Container implements Serializable
if (use_double_buffer)
{
- im = createImage (r.width, r.height);
- g2 = im.getGraphics ();
- g2.clearRect (0, 0, r.width, r.height);
+ im = createImage (r.width, r.height);
+ g2 = im.getGraphics ();
+ if (this.getBackground() != null)
+ {
+ Color save = g2.getColor();
+ g2.setColor(this.getBackground());
+ g2.fillRect (0, 0, r.width, r.height);
+ g2.setColor(save);
+ }
+ else
+ g2.clearRect(0, 0, r.width, r.height);
}
paintBorder(g2);
@@ -837,28 +845,6 @@ public abstract class JComponent extends Container implements Serializable
// Returns a string representation of this JComponent.
return "JComponent";
}
- protected void processComponentKeyEvent(KeyEvent e)
- {
- // Process any key events that the component itself recognizes.
- //System.out.println("COMP_KEY-EVENT: " + e);
- }
- protected void processFocusEvent(FocusEvent e)
- {
- // Processes focus events occurring on this component by dispatching them to any registered FocusListener objects.
- //System.out.println("FOCUS_EVENT: " + e);
- }
-
- protected void processKeyEvent(KeyEvent e)
- {
- // Override processKeyEvent to process events protected
- //System.out.println("KEY-EVENT: " + e);
- }
-
- public void processMouseMotionEvent(MouseEvent e)
- {
- // Processes mouse motion events occurring on this component by dispatching them to any registered MouseMotionListener objects.
- //System.out.println("COMP_MOUSE-EVENT: " + e + ", MEMORY = " + Runtime.getRuntime().freeMemory());
- }
public void registerKeyboardAction(ActionListener anAction,
KeyStroke aKeyStroke,
@@ -1044,7 +1030,7 @@ public abstract class JComponent extends Container implements Serializable
public String getUIClassID()
{
/// Return the UIDefaults key used to look up the name of the swing.
- return "JComponent";
+ return "ComponentUI";
}
protected void setUI(ComponentUI newUI)
diff --git a/javax/swing/JEditorPane.java b/javax/swing/JEditorPane.java
index 273ed899e..4722e1e1e 100644
--- a/javax/swing/JEditorPane.java
+++ b/javax/swing/JEditorPane.java
@@ -137,7 +137,7 @@ public class JEditorPane extends JTextComponent
{ return super.getText(); }
public String getUIClassID()
- { return "JEditorPane"; }
+ { return "EditorPaneUI"; }
public boolean isFocusCycleRoot()
{ return focus_root; }
diff --git a/javax/swing/JFrame.java b/javax/swing/JFrame.java
index cc93a87b6..864f6bae4 100644
--- a/javax/swing/JFrame.java
+++ b/javax/swing/JFrame.java
@@ -38,6 +38,7 @@ exception statement from your version. */
package javax.swing;
+import java.awt.AWTEvent;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Container;
@@ -105,6 +106,7 @@ public class JFrame extends Frame
protected void frameInit()
{
super.setLayout(new BorderLayout(1, 1));
+ enableEvents(AWTEvent.WINDOW_EVENT_MASK);
getRootPane(); // will do set/create
}
@@ -201,9 +203,7 @@ public class JFrame extends Frame
protected void processWindowEvent(WindowEvent e)
{
- // System.out.println("PROCESS_WIN_EV-1: " + e);
super.processWindowEvent(e);
- // System.out.println("PROCESS_WIN_EV-2: " + e);
switch (e.getID())
{
case WindowEvent.WINDOW_CLOSING:
@@ -212,13 +212,11 @@ public class JFrame extends Frame
{
case EXIT_ON_CLOSE:
{
- System.out.println("user requested exit on close");
System.exit(1);
break;
}
case DISPOSE_ON_CLOSE:
{
- System.out.println("user requested dispose on close");
dispose();
break;
}
diff --git a/javax/swing/JLabel.java b/javax/swing/JLabel.java
index 227fe644e..2d1c440ca 100644
--- a/javax/swing/JLabel.java
+++ b/javax/swing/JLabel.java
@@ -148,7 +148,7 @@ public class JLabel extends JComponent implements Accessible, SwingConstants
{ return text; }
public String getUIClassID()
- { return "JLabel"; }
+ { return "LabelUI"; }
public int getVerticalAlignment()
{
diff --git a/javax/swing/JList.java b/javax/swing/JList.java
index 792a0f2b6..f87ce6201 100644
--- a/javax/swing/JList.java
+++ b/javax/swing/JList.java
@@ -212,7 +212,7 @@ public class JList extends JComponent implements Accessible, Scrollable
public String getUIClassID()
{
- return "JList";
+ return "ListUI";
}
diff --git a/javax/swing/JOptionPane.java b/javax/swing/JOptionPane.java
index 5dc10c7dc..2992d2441 100644
--- a/javax/swing/JOptionPane.java
+++ b/javax/swing/JOptionPane.java
@@ -161,7 +161,7 @@ public class JOptionPane extends JComponent
{ return val; }
public String getUIClassID()
- { return "JOptionPane"; }
+ { return "OptionPaneUI"; }
public void setUI(OptionPaneUI ui) {
diff --git a/javax/swing/JPanel.java b/javax/swing/JPanel.java
index 1916793ea..29abffc6c 100644
--- a/javax/swing/JPanel.java
+++ b/javax/swing/JPanel.java
@@ -85,7 +85,7 @@ public class JPanel extends JComponent implements Accessible
}
public String getUIClassID()
- { return "JPanel"; }
+ { return "PanelUI"; }
public void setUI(PanelUI ui) {
diff --git a/javax/swing/JPasswordField.java b/javax/swing/JPasswordField.java
index 7e60004d7..a67f33caf 100644
--- a/javax/swing/JPasswordField.java
+++ b/javax/swing/JPasswordField.java
@@ -102,7 +102,7 @@ public class JPasswordField extends JTextField {
/**
* uiClassID
*/
- private static final String uiClassID = "PasswordFIeldUI";
+ private static final String uiClassID = "PasswordFieldUI";
/**
* echoChar. Default is 0
diff --git a/javax/swing/JRadioButton.java b/javax/swing/JRadioButton.java
index 14bfcebb1..0f6573000 100644
--- a/javax/swing/JRadioButton.java
+++ b/javax/swing/JRadioButton.java
@@ -65,6 +65,8 @@ public class JRadioButton extends JToggleButton
public JRadioButton(String text, Icon icon)
{
super(text, icon);
+ paint_border = false;
+ content_area_filled = false;
}
@@ -77,7 +79,7 @@ public class JRadioButton extends JToggleButton
public String getUIClassID()
{
//Returns a string that specifies the name of the L&F class that renders this component.
- return "JRadioButton";
+ return "RadioButtonUI";
}
protected String paramString()
diff --git a/javax/swing/JRootPane.java b/javax/swing/JRootPane.java
index ccab07c13..e7ec0bf80 100644
--- a/javax/swing/JRootPane.java
+++ b/javax/swing/JRootPane.java
@@ -75,7 +75,6 @@ public class JRootPane extends JComponent
public Dimension preferredLayoutSize ( Container c )
{
Dimension p = super.preferredLayoutSize(c);
- System.out.println(" PREF-SIZE from RootLayout = " + p);
return p;
}
}
@@ -97,7 +96,7 @@ public class JRootPane extends JComponent
/********************************************************/
public String getUIClassID()
- { return "JPanel"; }
+ { return "RootPaneUI"; }
void setJMenuBar(JMenuBar m)
@@ -169,7 +168,7 @@ public class JRootPane extends JComponent
JRootPane()
{
setLayout(createRootLayout());
-
+ setBackground(UIManager.getColor("control"));
getGlassPane();
getLayeredPane();
getContentPane();
diff --git a/javax/swing/JScrollPane.java b/javax/swing/JScrollPane.java
index 33cdba127..6a63be5f2 100644
--- a/javax/swing/JScrollPane.java
+++ b/javax/swing/JScrollPane.java
@@ -86,7 +86,7 @@ public class JScrollPane extends JComponent implements Accessible, ScrollPaneCon
public String getUIClassID()
{
//Returns a string that specifies the name of the L&F class that renders this component.
- return "JScrollPane";
+ return "ScrollPaneUI";
}
public JViewport getViewport()
diff --git a/javax/swing/JTabbedPane.java b/javax/swing/JTabbedPane.java
index 9264a76e9..a4ea931c1 100644
--- a/javax/swing/JTabbedPane.java
+++ b/javax/swing/JTabbedPane.java
@@ -65,6 +65,8 @@ public class JTabbedPane extends JComponent implements Accessible, SwingConstant
this.descr = descr;
}
}
+
+ private static final long serialVersionUID = 1614381073220130939L;
private Vector tabs = new Vector();
@@ -102,7 +104,7 @@ public class JTabbedPane extends JComponent implements Accessible, SwingConstant
}
public String getUIClassID()
- { return "JTabbedPane"; }
+ { return "TabbedPaneUI"; }
public void setUI(TabbedPaneUI ui) {
diff --git a/javax/swing/JToggleButton.java b/javax/swing/JToggleButton.java
index 1b05f3190..297bbc929 100644
--- a/javax/swing/JToggleButton.java
+++ b/javax/swing/JToggleButton.java
@@ -44,66 +44,83 @@ import javax.swing.plaf.ButtonUI;
public class JToggleButton extends AbstractButton implements Accessible
{
- public JToggleButton()
- {
- this(null, null);
- }
- public JToggleButton(Action a)
- {
- this();
- setAction(a);
- }
- public JToggleButton(Icon icon)
- {
- this(null, icon);
- }
-
- public JToggleButton(String text)
+ public class ToggleButtonModel extends DefaultButtonModel
+ {
+ public void setPressed(boolean b)
{
- this(text, null);
- }
+ if (! isEnabled())
+ return;
- public JToggleButton(String text, Icon icon)
- {
- this(text, icon, false);
+ super.setPressed(b);
+
+ // setPressed(false) == mouse release on us,
+ // if we were armed, we flip the selected state.
+ if (!b && isArmed())
+ setSelected(! isSelected());
}
+ }
+
+
+ public JToggleButton()
+ {
+ this(null, null);
+ }
+ public JToggleButton(Action a)
+ {
+ this();
+ setAction(a);
+ }
+
+ public JToggleButton(Icon icon)
+ {
+ this(null, icon);
+ }
+
+ public JToggleButton(String text)
+ {
+ this(text, null);
+ }
+
+ public JToggleButton(String text, Icon icon)
+ {
+ this(text, icon, false);
+ }
- public JToggleButton (String text, Icon icon, boolean selected)
- {
- super(text, icon);
+ public JToggleButton (String text, Icon icon, boolean selected)
+ {
+ super(text, icon);
- // Create the model
- setModel(new ToggleButtonModel());
-
- model.setSelected(selected);
- }
+ hori_align = LEADING;
+ setModel(new ToggleButtonModel());
+ model.setSelected(selected);
+ }
- public AccessibleContext getAccessibleContext()
- {
- //Gets the AccessibleContext associated with this JToggleButton.
- return null;
- }
+ public AccessibleContext getAccessibleContext()
+ {
+ //Gets the AccessibleContext associated with this JToggleButton.
+ return null;
+ }
- public String getUIClassID()
- {
- //Returns a string that specifies the name of the L&F class that renders this component.
- return "JToggleButton";
- }
+ public String getUIClassID()
+ {
+ //Returns a string that specifies the name of the L&F class that renders this component.
+ return "ToggleButtonUI";
+ }
- protected String paramString()
- {
- return "JToggleButton";
- }
+ protected String paramString()
+ {
+ return "JToggleButton";
+ }
- public void updateUI()
- {
- ButtonUI b = (ButtonUI)UIManager.getUI(this);
- setUI(b);
- }
+ public void updateUI()
+ {
+ ButtonUI b = (ButtonUI)UIManager.getUI(this);
+ setUI(b);
+ }
}
diff --git a/javax/swing/JTree.java b/javax/swing/JTree.java
index 432612db8..bdf519b91 100644
--- a/javax/swing/JTree.java
+++ b/javax/swing/JTree.java
@@ -83,7 +83,7 @@ public class JTree extends JComponent implements Scrollable, Accessible
public String getUIClassID()
{
- return "JTree";
+ return "TreeUI";
}
diff --git a/javax/swing/JViewport.java b/javax/swing/JViewport.java
index 43ed91e68..18365bcf9 100644
--- a/javax/swing/JViewport.java
+++ b/javax/swing/JViewport.java
@@ -69,7 +69,7 @@ public class JViewport extends JComponent
public String getUIClassID()
{
- return "JViewport";
+ return "ViewportUI";
}
public void updateUI()
diff --git a/javax/swing/SwingUtilities.java b/javax/swing/SwingUtilities.java
index e226919eb..590c3032f 100644
--- a/javax/swing/SwingUtilities.java
+++ b/javax/swing/SwingUtilities.java
@@ -95,7 +95,9 @@ public class SwingUtilities implements SwingConstants
/**
* Calculates the portion of the component's bounds which is inside the
* component's border insets. This area is usually the area a component
- * should confine its painting to.
+ * should confine its painting to. The coordinates are returned in terms
+ * of the <em>component's</em> coordinate system, where (0,0) is the
+ * upper left corner of the component's bounds.
*
* @param c The component to measure the bounds of
* @param r A Rectangle to store the return value in, or
@@ -108,7 +110,8 @@ public class SwingUtilities implements SwingConstants
*/
public static Rectangle calculateInnerArea(JComponent c, Rectangle r)
{
- return calculateInsetArea(c.getBounds(), c.getInsets(), r);
+ Rectangle b = getLocalBounds(c);
+ return calculateInsetArea(b, c.getInsets(), r);
}
/**
@@ -123,7 +126,7 @@ public class SwingUtilities implements SwingConstants
public static Rectangle getLocalBounds(Component aComponent)
{
Rectangle bounds = aComponent.getBounds();
- return new Rectangle(0, 0, bounds.x, bounds.y);
+ return new Rectangle(0, 0, bounds.width, bounds.height);
}
/**
@@ -460,6 +463,7 @@ public class SwingUtilities implements SwingConstants
((JComponent)comp).updateUI();
}
+
/**
* <p>Layout a "compound label" consisting of a text string and an icon
* which is to be placed near the rendered text. Once the text and icon
@@ -472,9 +476,10 @@ public class SwingUtilities implements SwingConstants
*
* <p>The position values control where the text is placed relative to
* the icon. The horizontal position value should be one of the constants
- * <code>LEFT</code>, <code>RIGHT</code> or <code>CENTER</code>. The
- * vertical position value should be one fo the constants
- * <code>TOP</code>, <code>BOTTOM</code>, <code>CENTER</code>.</p>
+ * <code>LEADING</code>, <code>TRAILING</code>, <code>LEFT</code>,
+ * <code>RIGHT</code> or <code>CENTER</code>. The vertical position value
+ * should be one fo the constants <code>TOP</code>, <code>BOTTOM</code>
+ * or <code>CENTER</code>.</p>
*
* <p>The text-icon gap value controls the number of pixels between the
* icon and the text.</p>
@@ -488,12 +493,12 @@ public class SwingUtilities implements SwingConstants
* <code>CENTER</code>.</p>
*
* <p>If the <code>LEADING</code> or <code>TRAILING</code> constants are
- * given for horizontal alignment, they are interpreted relative to the
- * provided component's orientation property, a constant in the {@link
- * java.awt.ComponentOrientation} class. For example, if the component's
- * orientation is <code>LEFT_TO_RIGHT</code>, then the
- * <code>LEADING</code> alignment is a synonym for <code>LEFT</code> and
- * the <code>TRAILING</code> alignment is a synonym for
+ * given for horizontal alignment or horizontal text position, they are
+ * interpreted relative to the provided component's orientation property,
+ * a constant in the {@link java.awt.ComponentOrientation} class. For
+ * example, if the component's orientation is <code>LEFT_TO_RIGHT</code>,
+ * then the <code>LEADING</code> value is a synonym for <code>LEFT</code>
+ * and the <code>TRAILING</code> value is a synonym for
* <code>RIGHT</code></p>
*
* <p>If the text and icon are equal to or larger than the view
@@ -523,6 +528,7 @@ public class SwingUtilities implements SwingConstants
* @return The string of characters, possibly truncated with an elipsis,
* which is laid out in this label
*/
+
public static String layoutCompoundLabel(JComponent c,
FontMetrics fm,
String text,
@@ -537,6 +543,119 @@ public class SwingUtilities implements SwingConstants
int textIconGap)
{
+ // Fix up the orientation-based horizontal positions.
+
+ if (horizontalTextPosition == LEADING)
+ {
+ if (c.getComponentOrientation() == ComponentOrientation.RIGHT_TO_LEFT)
+ horizontalTextPosition = RIGHT;
+ else
+ horizontalTextPosition = LEFT;
+ }
+ else if (horizontalTextPosition == TRAILING)
+ {
+ if (c.getComponentOrientation() == ComponentOrientation.RIGHT_TO_LEFT)
+ horizontalTextPosition = LEFT;
+ else
+ horizontalTextPosition = RIGHT;
+ }
+
+ // Fix up the orientation-based alignments.
+
+ if (horizontalAlignment == LEADING)
+ {
+ if (c.getComponentOrientation() == ComponentOrientation.RIGHT_TO_LEFT)
+ horizontalAlignment = RIGHT;
+ else
+ horizontalAlignment = LEFT;
+ }
+ else if (horizontalAlignment == TRAILING)
+ {
+ if (c.getComponentOrientation() == ComponentOrientation.RIGHT_TO_LEFT)
+ horizontalAlignment = LEFT;
+ else
+ horizontalAlignment = RIGHT;
+ }
+
+ return layoutCompoundLabel(fm, text, icon,
+ verticalAlignment,
+ horizontalAlignment,
+ verticalTextPosition,
+ horizontalTextPosition,
+ viewR, iconR, textR, textIconGap);
+ }
+
+ /**
+ * <p>Layout a "compound label" consisting of a text string and an icon
+ * which is to be placed near the rendered text. Once the text and icon
+ * are laid out, the text rectangle and icon rectangle parameters are
+ * altered to store the calculated positions.</p>
+ *
+ * <p>The size of the text is calculated from the provided font metrics
+ * object. This object should be the metrics of the font you intend to
+ * paint the label with.</p>
+ *
+ * <p>The position values control where the text is placed relative to
+ * the icon. The horizontal position value should be one of the constants
+ * <code>LEFT</code>, <code>RIGHT</code> or <code>CENTER</code>. The
+ * vertical position value should be one fo the constants
+ * <code>TOP</code>, <code>BOTTOM</code> or <code>CENTER</code>.</p>
+ *
+ * <p>The text-icon gap value controls the number of pixels between the
+ * icon and the text.</p>
+ *
+ * <p>The alignment values control where the text and icon are placed, as
+ * a combined unit, within the view rectangle. The horizontal alignment
+ * value should be one of the constants <code>LEFT</code>, <code>RIGHT</code> or
+ * <code>CENTER</code>. The vertical alignment valus should be one of the
+ * constants <code>TOP</code>, <code>BOTTOM</code> or
+ * <code>CENTER</code>.</p>
+ *
+ * <p>If the text and icon are equal to or larger than the view
+ * rectangle, the horizontal and vertical alignment values have no
+ * affect.</p>
+ *
+ * <p>Note that this method does <em>not</em> know how to deal with
+ * horizontal alignments or positions given as <code>LEADING</code> or
+ * <code>TRAILING</code> values. Use the other overloaded variant of this
+ * method if you wish to use such values.
+ *
+ * @param fm The font metrics used to measure the text
+ * @param text The text to place in the compound label
+ * @param icon The icon to place next to the text
+ * @param verticalAlignment The vertical alignment of the label relative
+ * to its component
+ * @param horizontalAlignment The horizontal alignment of the label
+ * relative to its component
+ * @param verticalTextPosition The vertical position of the label's text
+ * relative to its icon
+ * @param horizontalTextPosition The horizontal position of the label's
+ * text relative to its icon
+ * @param viewR The view rectangle, specifying the area which layout is
+ * constrained to
+ * @param iconR A rectangle which is modified to hold the laid-out
+ * position of the icon
+ * @param textR A rectangle which is modified to hold the laid-out
+ * position of the text
+ * @param textIconGap The distance between text and icon
+ *
+ * @return The string of characters, possibly truncated with an elipsis,
+ * which is laid out in this label
+ */
+
+ public static String layoutCompoundLabel(FontMetrics fm,
+ String text,
+ Icon icon,
+ int verticalAlignment,
+ int horizontalAlignment,
+ int verticalTextPosition,
+ int horizontalTextPosition,
+ Rectangle viewR,
+ Rectangle iconR,
+ Rectangle textR,
+ int textIconGap)
+ {
+
// Work out basic height and width.
if (icon == null)
@@ -545,7 +664,7 @@ public class SwingUtilities implements SwingConstants
iconR.width = 0;
iconR.height = 0;
}
- else
+ else
{
iconR.width = icon.getIconWidth();
iconR.height = icon.getIconWidth();
@@ -591,23 +710,6 @@ public class SwingUtilities implements SwingConstants
break;
}
- // Fix up the orientation-based alignments.
-
- if (horizontalAlignment == LEADING)
- {
- if (c.getComponentOrientation() == ComponentOrientation.LEFT_TO_RIGHT)
- horizontalAlignment = LEFT;
- else if (c.getComponentOrientation() == ComponentOrientation.RIGHT_TO_LEFT)
- horizontalAlignment = RIGHT;
- }
- else if (horizontalAlignment == TRAILING)
- {
- if (c.getComponentOrientation() == ComponentOrientation.LEFT_TO_RIGHT)
- horizontalAlignment = RIGHT;
- else if (c.getComponentOrientation() == ComponentOrientation.RIGHT_TO_LEFT)
- horizontalAlignment = LEFT;
- }
-
// The two rectangles are laid out correctly now, but only assuming
// that their upper left corner is at (0,0). If we have any alignment other
// than TOP and LEFT, we need to adjust them.
diff --git a/javax/swing/UIDefaults.java b/javax/swing/UIDefaults.java
index 9b91d10f5..722f922e1 100644
--- a/javax/swing/UIDefaults.java
+++ b/javax/swing/UIDefaults.java
@@ -61,7 +61,7 @@ import javax.swing.plaf.ComponentUI;
/**
* UIDefaults is a database where all settings and interface bindings are
* stored into. An PLAF implementation fills one of these (see for example
- * plaf/basic/BasicDefaults.java) with "JButton" -> new BasicButtonUI().
+ * plaf/basic/BasicLookAndFeel.java) with "ButtonUI" -> new BasicButtonUI().
*
* @author Ronald Veldema (rveldema@cs.vu.nl)
*/
diff --git a/javax/swing/plaf/basic/BasicButtonListener.java b/javax/swing/plaf/basic/BasicButtonListener.java
new file mode 100644
index 000000000..393ba3727
--- /dev/null
+++ b/javax/swing/plaf/basic/BasicButtonListener.java
@@ -0,0 +1,188 @@
+/* BasicButtonListener.java
+ Copyright (C) 2004 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package javax.swing.plaf.basic;
+
+import java.awt.event.FocusEvent;
+import java.awt.event.FocusListener;
+import java.awt.event.InputEvent;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
+import java.awt.event.MouseMotionListener;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import javax.swing.AbstractButton;
+import javax.swing.ButtonModel;
+import javax.swing.UIDefaults;
+import javax.swing.UIManager;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+import javax.swing.JComponent;
+
+public class BasicButtonListener
+ implements MouseListener, MouseMotionListener, FocusListener,
+ ChangeListener, PropertyChangeListener
+{
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ }
+ protected void checkOpacity(AbstractButton b)
+ {
+ }
+ public void focusGained(FocusEvent e)
+ {
+ }
+
+ public void focusLost(FocusEvent e)
+ {
+ if (e.getSource() instanceof AbstractButton)
+ {
+ AbstractButton button = (AbstractButton) e.getSource();
+ ButtonModel model = button.getModel();
+ model.setArmed(false);
+ }
+ }
+ public void installKeyboardActions(JComponent c)
+ {
+ }
+ public void uninstallKeyboardActions(JComponent c)
+ {
+ }
+ public void stateChanged(ChangeEvent e)
+ {
+ }
+ public void mouseMoved(MouseEvent e)
+ {
+ System.err.println("button got mouse move");
+ }
+ public void mouseDragged(MouseEvent e)
+ {
+ System.err.println("button got mouse drag");
+ }
+ public void mouseClicked(MouseEvent e)
+ {
+ System.err.println("button got mouse click");
+ }
+
+ /**
+ * Accept a mouse press event and arm the button.
+ *
+ * @param e The mouse press event to accept
+ */
+ public void mousePressed(MouseEvent e)
+ {
+ if (e.getSource() instanceof AbstractButton)
+ {
+ AbstractButton button = (AbstractButton) e.getSource();
+ ButtonModel model = button.getModel();
+ if ((e.getModifiers() & InputEvent.BUTTON1_MASK) != 0)
+ {
+ // It is important that these transitions happen in this order.
+ model.setArmed(true);
+ model.setPressed(true);
+ }
+ }
+ }
+
+
+ /**
+ * Accept a mouse release event and set the button's
+ * "pressed" property to <code>true</code>, if the model
+ * is armed. If the model is not armed, ignore the event.
+ *
+ * @param e The mouse release event to accept
+ */
+ public void mouseReleased(MouseEvent e)
+ {
+ if (e.getSource() instanceof AbstractButton)
+ {
+ AbstractButton button = (AbstractButton) e.getSource();
+ ButtonModel model = button.getModel();
+ if ((e.getModifiers() & InputEvent.BUTTON1_MASK) != 0)
+ {
+ // It is important that these transitions happen in this order.
+ model.setPressed(false);
+ model.setArmed(false);
+ }
+ }
+ }
+
+
+ /**
+ * Accept a mouse enter event and set the button's "rollover" property to
+ * <code>true</code>, if the button's "rolloverEnabled" property is
+ * <code>true</code>. If the button is currently armed and the mouse
+ * button is not held down, this enter event will also disarm the model.
+ *
+ * @param e The mouse enter event to accept
+ */
+ public void mouseEntered(MouseEvent e)
+ {
+ if (e.getSource() instanceof AbstractButton)
+ {
+ AbstractButton button = (AbstractButton) e.getSource();
+ ButtonModel model = button.getModel();
+ if (button.isRolloverEnabled())
+ model.setRollover(true);
+
+ if (model.isPressed()
+ && (e.getModifiers() & InputEvent.BUTTON1_MASK) != 0)
+ model.setArmed(true);
+ else
+ model.setArmed(false);
+ }
+ }
+
+ /**
+ * Accept a mouse exit event and set the button's model's "rollover"
+ * property to <code>false</code>, if it's "rolloverEnabled" property is
+ * <code>true</code>. Also disarm the button.
+ *
+ * @param e The mouse exit event to accept
+ */
+ public void mouseExited(MouseEvent e)
+ {
+ if (e.getSource() instanceof AbstractButton)
+ {
+ AbstractButton button = (AbstractButton) e.getSource();
+ ButtonModel model = button.getModel();
+ if (button.isRolloverEnabled())
+ model.setRollover(false);
+ model.setArmed(false);
+ }
+ }
+}
diff --git a/javax/swing/plaf/basic/BasicButtonUI.java b/javax/swing/plaf/basic/BasicButtonUI.java
index 3bcff944d..7d59fc246 100644
--- a/javax/swing/plaf/basic/BasicButtonUI.java
+++ b/javax/swing/plaf/basic/BasicButtonUI.java
@@ -47,14 +47,20 @@ import java.awt.Graphics2D;
import java.awt.Stroke;
import java.awt.Insets;
import java.awt.Rectangle;
+import java.awt.event.FocusListener;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent;
import java.awt.event.InputEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.AbstractButton;
+import javax.swing.ButtonModel;
+import javax.swing.Icon;
import javax.swing.JComponent;
import javax.swing.SwingUtilities;
+import javax.swing.UIDefaults;
+import javax.swing.UIManager;
+import javax.swing.event.MouseInputListener;
import javax.swing.plaf.ButtonUI;
import javax.swing.plaf.ComponentUI;
@@ -62,21 +68,11 @@ public class BasicButtonUI extends ButtonUI
{
/** A constant used to pad out elements in the button's layout and
preferred size calculations. */
- int gap = 3;
+ int defaultTextIconGap = 3;
- /** The color that text will be painted when the button is enabled */
- Color textColor;
-
- /** The color that text will be painted when the button is disabled */
- Color disabledTextColor;
-
- /** The color that the button's background will be painted when the
- button is pressed. */
- Color pressedBackgroundColor;
-
- /** The color that the button's background will be painted when the
- button is not pressed. */
- Color normalBackgroundColor;
+ /** A constant added to the defaultTextIconGap to adjust the text
+ within this particular button. */
+ int defaultTextShiftOffset = 0;
/**
* Factory method to create an instance of BasicButtonUI for a given
@@ -86,125 +82,65 @@ public class BasicButtonUI extends ButtonUI
*
* @return A new UI capable of drawing the component
*/
- public static ComponentUI createUI(final JComponent c)
- {
- return new BasicButtonUI();
- }
+ public static ComponentUI createUI(final JComponent c)
+ {
+ return new BasicButtonUI();
+ }
- /**
- * Helper class which listens to a button's focus events and disarms the
- * button's model when focus is lost.
- */
- private static class FocusUIListener extends FocusAdapter
+ public int getDefaultTextIconGap(AbstractButton b)
{
- /** Button to listen to focus events from */
- AbstractButton button;
-
- /**
- * Creates a new FocusUIListener object.
- *
- * @param b The button to listen to
- */
- FocusUIListener(AbstractButton b)
- {
- button = b;
- }
-
- /**
- * Called when the button loses focus.
- *
- * @param event The loss of focus event.
- */
- public void focusLost(FocusEvent event)
- {
- // System.err.println("ButtonUI :: lost focus -- disarming");
- button.getModel().setArmed(false);
- }
+ return defaultTextIconGap;
}
- /**
- * A helper class which interprets mouse events as
- * state changes to the button's underlying model.
- */
- private static class ButtonUIListener extends MouseAdapter
+ protected void installDefaults(AbstractButton b)
+ {
+ UIDefaults defaults = UIManager.getLookAndFeelDefaults();
+ b.setForeground(defaults.getColor("Button.foreground"));
+ b.setBackground(defaults.getColor("Button.background"));
+ b.setMargin(defaults.getInsets("Button.margin"));
+ b.setBorder(defaults.getBorder("Button.border"));
+ }
+
+ protected void uninstallDefaults(AbstractButton b)
+ {
+ b.setForeground(null);
+ b.setBackground(null);
+ b.setBorder(null);
+ b.setMargin(null);
+ }
+
+ protected BasicButtonListener listener;
+
+ protected BasicButtonListener createButtonListener(AbstractButton b)
+ {
+ return new BasicButtonListener();
+ }
+
+ public void installListeners(AbstractButton b)
+ {
+ listener = createButtonListener(b);
+ b.addChangeListener(listener);
+ b.addPropertyChangeListener(listener);
+ b.addFocusListener(listener);
+ b.addMouseListener(listener);
+ b.addMouseMotionListener(listener);
+ }
+
+ public void uninstallListeners(AbstractButton b)
+ {
+ b.removeChangeListener(listener);
+ b.removePropertyChangeListener(listener);
+ b.removeFocusListener(listener);
+ b.removeMouseListener(listener);
+ b.removeMouseMotionListener(listener);
+ }
+
+ protected void installKeyboardActions(AbstractButton b)
+ {
+ }
+
+ protected void uninstallKeyboardActions(AbstractButton b)
{
- /** The button to change the model of */
- AbstractButton button;
-
- /**
- * Creates a new ButtonUIListener object.
- *
- * @param b The button to change the model of
- */
- public ButtonUIListener(AbstractButton b)
- {
- button = b;
- }
-
- /**
- * Accept a mouse press event and arm the button's model.
- *
- * @param e The mouse press event to accept
- */
- public void mousePressed(MouseEvent e)
- {
- // System.err.println("ButtonUI :: mouse pressed");
- if ((e.getModifiers() & InputEvent.BUTTON1_MASK) != 0)
- {
- // System.err.println("ButtonUI :: arming");
- button.getModel().setArmed(true);
- }
- }
-
- /**
- * Accept a mouse enter event and set the button's model's
- * "rollover" property to <code>true</code>. If the button's
- * model is currently armed and the mouse button is not held
- * down, this enter event will also disarm the model.
- *
- * @param e The mouse enter event to accept
- */
- public void mouseEntered(MouseEvent e)
- {
- // System.err.println("ButtonUI :: mouse entered");
- // System.err.println("ButtonUI :: rolling over");
- button.getModel().setRollover(true);
- if (button.getModel().isArmed()
- && (e.getModifiers() & InputEvent.BUTTON1_MASK) == 0)
- {
- // System.err.println("ButtonUI :: no button pressed -- disarming");
- button.getModel().setArmed(false);
- }
- }
-
- /**
- * Accept a mouse exit event and set the button's model's
- * "rollover" property to <code>false</code>.
- *
- * @param e The mouse exit event to accept
- */
- public void mouseExited(MouseEvent e)
- {
- // System.err.println("ButtonUI :: mouse exited");
- button.getModel().setRollover(false);
- }
-
- /**
- * Accept a mouse release event and set the button's model's
- * "pressed" property to <code>true</code>, if the model
- * is armed. If the model is not armed, ignore the event.
- *
- * @param e The mouse release event to accept
- */
- public void mouseReleased(MouseEvent e)
- {
- // System.err.println("ButtonUI :: mouse released");
- if (button.getModel().isArmed()
- && (e.getModifiers() & InputEvent.BUTTON1_MASK) != 0)
- {
- button.getModel().setPressed(true);
- }
- }
}
/**
@@ -215,22 +151,16 @@ public class BasicButtonUI extends ButtonUI
*
* @param c The component to install the UI into
*/
- public void installUI(final JComponent c)
- {
- super.installUI(c);
-
- textColor = new Color(0,0,0);
- disabledTextColor = new Color(130, 130, 130);
- pressedBackgroundColor = new Color(150,150,150);
- pressedBackgroundColor = new Color(150,150,150);
- normalBackgroundColor = new Color(192,192,192);
-
- // this tells the border (if we have one) how to paint.
- c.setBackground(normalBackgroundColor);
- ((AbstractButton)c).setMargin (new Insets(10,10,10,10));
-
- c.addMouseListener(new ButtonUIListener((AbstractButton) c));
- c.addFocusListener(new FocusUIListener((AbstractButton) c));
+ public void installUI(final JComponent c)
+ {
+ super.installUI(c);
+ if (c instanceof AbstractButton)
+ {
+ AbstractButton b = (AbstractButton) c;
+ installDefaults(b);
+ installListeners(b);
+ installKeyboardActions(b);
+ }
}
/**
@@ -241,13 +171,45 @@ public class BasicButtonUI extends ButtonUI
*
* @return The preferred dimensions of the component
*/
- public Dimension getPreferredSize(JComponent c)
- {
- AbstractButton b = (AbstractButton)c;
- Dimension d = BasicGraphicsUtils.getPreferredButtonSize(b, gap);
- return d;
- }
-
+ public Dimension getPreferredSize(JComponent c)
+ {
+ AbstractButton b = (AbstractButton)c;
+ Dimension d =
+ BasicGraphicsUtils.getPreferredButtonSize
+ (b, defaultTextIconGap + defaultTextShiftOffset);
+ return d;
+ }
+
+ static private Icon currentIcon(AbstractButton b)
+ {
+ Icon i = b.getIcon();
+ ButtonModel model = b.getModel();
+
+ if (model.isPressed() && b.getPressedIcon() != null)
+ i = b.getPressedIcon();
+
+ else if (model.isRollover())
+ {
+ if (b.isSelected() && b.getRolloverSelectedIcon() != null)
+ i = b.getRolloverSelectedIcon();
+ else if (b.getRolloverIcon() != null)
+ i = b.getRolloverIcon();
+ }
+
+ else if (b.isSelected())
+ {
+ if (b.isEnabled() && b.getSelectedIcon() != null)
+ i = b.getSelectedIcon();
+ else if (b.getDisabledSelectedIcon() != null)
+ i = b.getDisabledSelectedIcon();
+ }
+
+ else if (! b.isEnabled() && b.getDisabledIcon() != null)
+ i = b.getDisabledIcon();
+
+ return i;
+ }
+
/**
* Paint the component, which is an {@link AbstractButton}, according to
* its current state.
@@ -255,52 +217,42 @@ public class BasicButtonUI extends ButtonUI
* @param g The graphics context to paint with
* @param c The component to paint the state of
*/
- public void paint(Graphics g, JComponent c)
- {
- AbstractButton b = (AbstractButton) c;
+ public void paint(Graphics g, JComponent c)
+ {
+ AbstractButton b = (AbstractButton) c;
- Rectangle tr = new Rectangle();
- Rectangle ir = new Rectangle();
- Rectangle vr = new Rectangle();
+ Rectangle tr = new Rectangle();
+ Rectangle ir = new Rectangle();
+ Rectangle vr = new Rectangle();
Rectangle br = new Rectangle();
- Font f = c.getFont();
-
- g.setFont(f);
-
- FontMetrics fm = g.getFontMetrics(f);
-
- Insets border = b.getInsets();
- Insets margin = b.getMargin();
-
- br.x = border.left;
- br.y = border.top;
- br.width = b.getWidth() - (border.right + border.left);
- br.height = b.getHeight() - (border.top + border.bottom);
-
- vr.x = br.x + margin.left;
- vr.y = br.y + margin.top;
- vr.width = br.width - (margin.right + margin.left);
- vr.height = br.height - (margin.top + margin.bottom);
-
- String text = SwingUtilities.layoutCompoundLabel(c, fm, b.getText(),
- b.getIcon(),
- b.getVerticalAlignment(),
- b.getHorizontalAlignment(),
- b.getVerticalTextPosition(),
- b.getHorizontalTextPosition(),
- vr, ir, tr, gap);
-
- if ((b.getModel().isRollover() && b.getModel().isArmed())
- || b.getModel().isSelected())
+ Font f = c.getFont();
+
+ g.setFont(f);
+
+ SwingUtilities.calculateInnerArea(b, br);
+ SwingUtilities.calculateInsetArea(br, b.getMargin(), vr);
+ String text = SwingUtilities.layoutCompoundLabel(c, g.getFontMetrics(f),
+ b.getText(),
+ currentIcon(b),
+ b.getVerticalAlignment(),
+ b.getHorizontalAlignment(),
+ b.getVerticalTextPosition(),
+ b.getHorizontalTextPosition(),
+ vr, ir, tr,
+ defaultTextIconGap
+ + defaultTextShiftOffset);
+
+ if ((b.getModel().isArmed() && b.getModel().isPressed())
+ || b.isSelected())
paintButtonPressed(g, br, c);
- else
+ else
paintButtonNormal(g, br, c);
- paintIcon(g, c, ir);
- paintText(g, c, tr, b.getText());
- paintFocus(g, c, vr, tr, ir);
- }
+ paintIcon(g, c, ir);
+ paintText(g, c, tr, b.getText());
+ paintFocus(g, c, vr, tr, ir);
+ }
/**
* Paint any focus decoration this {@link JComponent} might have. The
@@ -322,7 +274,7 @@ public class BasicButtonUI extends ButtonUI
{
AbstractButton b = (AbstractButton) c;
if (b.hasFocus() && b.isFocusPainted())
- {
+ {
Graphics2D g2 = (Graphics2D) g;
Stroke saved_stroke = g2.getStroke();
Color saved_color = g2.getColor();
@@ -340,7 +292,7 @@ public class BasicButtonUI extends ButtonUI
g2.setStroke(saved_stroke);
g2.setColor(saved_color);
}
- }
+ }
/**
* Paint the icon for this component. Depending on the state of the
@@ -352,15 +304,17 @@ public class BasicButtonUI extends ButtonUI
* @param iconRect Rectangle in which the icon should be painted
*/
protected void paintIcon(Graphics g, JComponent c, Rectangle iconRect)
- {
- AbstractButton b = (AbstractButton) c;
- if (b.getIcon() != null)
- {
- int x = iconRect.x;
- int y = iconRect.y;
- b.getIcon().paintIcon(c, g, x, y);
- }
- }
+ {
+ AbstractButton b = (AbstractButton) c;
+ Icon i = currentIcon(b);
+
+ if (i != null)
+ {
+ int x = iconRect.x;
+ int y = iconRect.y;
+ i.paintIcon(c, g, x, y);
+ }
+ }
/**
* Paints the background area of an {@link AbstractButton} in the pressed
@@ -372,12 +326,13 @@ public class BasicButtonUI extends ButtonUI
* @param b The component to paint the state of
*/
protected void paintButtonPressed(Graphics g, Rectangle area, JComponent b)
- {
- Dimension size = b.getSize();
-
- g.setColor(pressedBackgroundColor);
- g.fillRect(area.x, area.y, area.width, area.height);
- }
+ {
+ if (((AbstractButton)b).isContentAreaFilled())
+ {
+ g.setColor(b.getBackground().darker());
+ g.fillRect(area.x, area.y, area.width, area.height);
+ }
+ }
/**
* Paints the background area of an {@link AbstractButton} in the normal,
@@ -389,11 +344,13 @@ public class BasicButtonUI extends ButtonUI
* @param b The component to paint the state of
*/
protected void paintButtonNormal(Graphics g, Rectangle area, JComponent b)
- {
- Dimension size = b.getSize();
- g.setColor(normalBackgroundColor);
- g.fillRect(area.x, area.y, area.width, area.height);
- }
+ {
+ if (((AbstractButton)b).isContentAreaFilled())
+ {
+ g.setColor(b.getBackground());
+ g.fillRect(area.x, area.y, area.width, area.height);
+ }
+ }
/**
* Paints the "text" property of an {@link AbstractButton}, using the
@@ -405,15 +362,14 @@ public class BasicButtonUI extends ButtonUI
* @param text The text to paint
*/
protected void paintText(Graphics g, JComponent c, Rectangle textRect,
- String text)
- {
- Font f = c.getFont();
- g.setFont(f);
- FontMetrics fm = g.getFontMetrics(f);
- g.setColor(c.isEnabled() ? textColor : disabledTextColor);
- BasicGraphicsUtils.drawString(g, text,
- 0,
- textRect.x,
+ String text)
+ {
+ Font f = c.getFont();
+ g.setFont(f);
+ FontMetrics fm = g.getFontMetrics(f);
+ g.setColor(c.getForeground());
+ BasicGraphicsUtils.drawString(g, text, 0,
+ textRect.x,
textRect.y + fm.getAscent());
- }
+ }
}
diff --git a/javax/swing/plaf/basic/BasicCheckBoxUI.java b/javax/swing/plaf/basic/BasicCheckBoxUI.java
index 32eb1285e..0efc7ab35 100644
--- a/javax/swing/plaf/basic/BasicCheckBoxUI.java
+++ b/javax/swing/plaf/basic/BasicCheckBoxUI.java
@@ -38,82 +38,28 @@ exception statement from your version. */
package javax.swing.plaf.basic;
-import java.awt.Component;
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.awt.Rectangle;
-import javax.swing.AbstractButton;
+import javax.swing.Icon;
import javax.swing.JComponent;
+import javax.swing.UIDefaults;
+import javax.swing.UIManager;
import javax.swing.plaf.ComponentUI;
public class BasicCheckBoxUI extends BasicRadioButtonUI
{
- public static ComponentUI createUI(final JComponent c) {
- return new BasicCheckBoxUI();
- }
-
-
- public void installUI(final JComponent c) {
- super.installUI(c);
- }
-
- public Dimension getPreferredSize(JComponent c)
- {
- AbstractButton b = (AbstractButton)c;
- Dimension d = BasicGraphicsUtils.getPreferredButtonSize(b, gap);
- //System.out.println("^^^^^^^^^^^^^^^^^^^^^^ BASIC-PREF="+d + ",T="+b.text);
- return d;
- }
-
- protected void paintFocus(Graphics g,
- JComponent c,
- Rectangle vr,
- Rectangle tr,
- Rectangle ir)
- {
- }
-
- protected void paintIcon(Graphics g,
- JComponent c,
- Rectangle iconRect)
- {
- }
-
- protected void paintButtonPressed(Graphics g,
- JComponent b)
- {
- Dimension size = b.getSize();
-
- g.setColor(pressedBackgroundColor);
- g.fillRect(1,1,size.width-2, size.height-2);
-
- }
-
- protected void paintButtonNormal(Graphics g,
- JComponent b)
- {
- Dimension size = b.getSize();
-
- g.setColor(normalBackgroundColor);
- g.fillRect(1,1,size.width-2, size.height-2);
-
- }
- protected void paintText(Graphics g,
- JComponent c,
- Rectangle textRect,
- String text)
- {
- // AbstractButton b = (AbstractButton) c;
-
- // System.out.println("drawing string: " + text + ", at:" + textRect);
-
- g.setColor(textColor);
- BasicGraphicsUtils.drawString(g,
- text,
- 0,
- textRect.x,
- textRect.y);
- }
+
+ public static ComponentUI createUI(final JComponent c) {
+ return new BasicCheckBoxUI();
+ }
+
+ public Icon getDefaultIcon()
+ {
+ UIDefaults defaults = UIManager.getLookAndFeelDefaults();
+ return defaults.getIcon("CheckBox.icon");
+ }
+
+ public void installUI(final JComponent c) {
+ super.installUI(c);
+ }
}
diff --git a/javax/swing/plaf/basic/BasicDefaults.java b/javax/swing/plaf/basic/BasicDefaults.java
deleted file mode 100644
index 6b06187b4..000000000
--- a/javax/swing/plaf/basic/BasicDefaults.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/* BasicDefaults.java
- Copyright (C) 2002 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-02111-1307 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.basic;
-
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.Graphics;
-import java.awt.Insets;
-import javax.swing.UIDefaults;
-import javax.swing.border.MatteBorder;
-
-class BasicBorder extends MatteBorder
-{
- static Color BtnPointClr = new Color( 180, 180, 180);
-
- BasicBorder()
- {
- super(5,5,5,5, Color.black);
- }
-
- public void paintBorder(Component c,
- Graphics g,
- int x,
- int y,
- int width,
- int height)
- {
- // System.out.println("PAINT-------------------------------------------BORDER");
-
- if (g != null)
- {
- g.setColor( BtnPointClr);
- g.draw3DRect( 0, 0, width-1, height-1, true);
- }
- }
- }
-
-class PanelBorder extends MatteBorder
-{
- PanelBorder()
- {
- super(5,5,5,5, Color.black);
- }
-
- public void paintBorder(Component c,
- Graphics g,
- int x,
- int y,
- int width,
- int height)
- {
- // System.out.println("PAINT-------------------------------------------BORDER");
- super.paintBorder(c, g, x, y, width, height);
- }
- }
-
-public class BasicDefaults extends UIDefaults
-{
- public BasicDefaults()
- {
- // System.out.println("BasicDefaults !!!!!!!!!!!!!!!!!!!!!!!!!");
- put("JButton", "javax.swing.plaf.basic.BasicButtonUI");
- put("JLabel", "javax.swing.plaf.basic.BasicLabelUI");
-
- put("JPanel", "javax.swing.plaf.basic.BasicPanelUI");
- put("JCheckBox", "javax.swing.plaf.basic.BasicCheckBoxUI");
- put("JRadioButton", "javax.swing.plaf.basic.BasicRadioButtonUI");
- put("JToggleButton", "javax.swing.plaf.basic.BasicToggleButtonUI");
- put("JOptionPane", "javax.swing.plaf.basic.BasicOptionPaneUI");
- put("JList", "javax.swing.plaf.basic.BasicListUI");
- put("JTree", "javax.swing.plaf.basic.BasicTreeUI");
- put("JTextComponent", "javax.swing.plaf.basic.BasicTextUI");
- put("JTabbedPane", "javax.swing.plaf.basic.BasicTabbedPaneUI");
- put("JScrollPane", "javax.swing.plaf.basic.BasicScrollPaneUI");
- put("JViewport", "javax.swing.plaf.basic.BasicViewportUI");
-
- put("JButton.border", "javax.swing.plaf.basic.BasicBorder");
- put("JPanel.border", "javax.swing.plaf.basic.PanelBorder");
-
- put("JToggleButton.border", "javax.swing.plaf.basic.PanelBorder");
- put("JCheckBox.border", "javax.swing.plaf.basic.PanelBorder");
- put("JRadioButton.border", "javax.swing.plaf.basic.PanelBorder");
-
- put("AbstractUndoableEdit.undoText", "Undo");
- put("AbstractUndoableEdit.redoText", "Redo");
- }
-
-}
-
-
diff --git a/javax/swing/plaf/basic/BasicIconFactory.java b/javax/swing/plaf/basic/BasicIconFactory.java
index 3a8adf3bf..39e86b6fb 100644
--- a/javax/swing/plaf/basic/BasicIconFactory.java
+++ b/javax/swing/plaf/basic/BasicIconFactory.java
@@ -39,7 +39,14 @@ exception statement from your version. */
package javax.swing.plaf.basic;
import java.io.Serializable;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Graphics;
+import java.awt.Polygon;
+import javax.swing.AbstractButton;
import javax.swing.Icon;
+import javax.swing.UIDefaults;
+import javax.swing.UIManager;
/**
* STUBBED
*/
@@ -47,39 +54,156 @@ public class BasicIconFactory implements Serializable
{
static final long serialVersionUID = 5605588811185324383L;
+ static private class DummyIcon
+ implements Icon
+ {
+ public int getIconHeight() { return 10; }
+ public int getIconWidth() { return 10; }
+ public void paintIcon(Component c, Graphics g, int x, int y)
+ {
+ Color save = g.getColor();
+ g.setColor(c.getForeground());
+ g.drawRect(x, y, 10, 10);
+ g.setColor(save);
+ }
+ }
+
+
public BasicIconFactory()
{
}
public static Icon getMenuItemCheckIcon()
{
- return null;
+ return new DummyIcon();
}
public static Icon getMenuItemArrowIcon()
{
- return null;
+ return new DummyIcon();
}
public static Icon getMenuArrowIcon()
{
- return null;
+ return new DummyIcon();
}
+
public static Icon getCheckBoxIcon()
{
- return null;
+ return new Icon()
+ {
+ public int getIconHeight()
+ {
+ return 10;
+ }
+ public int getIconWidth()
+ {
+ return 10;
+ }
+ public void paintIcon(Component c, Graphics g, int x, int y)
+ {
+ if (c instanceof AbstractButton)
+ {
+ UIDefaults defaults;
+ defaults = UIManager.getLookAndFeelDefaults();
+ Color hi = defaults.getColor("CheckBox.highlight");
+ Color low = defaults.getColor("CheckBox.darkShadow");
+ Color sel = defaults.getColor("CheckBox.foreground");
+ Color dim = defaults.getColor("CheckBox.shadow");
+ Polygon check = new Polygon(new int[] {x+3, x+3, x+8},
+ new int[] {y+5, y+9, y+3}, 3);
+ AbstractButton b = (AbstractButton) c;
+ Color saved = g.getColor();
+ if (b.isEnabled())
+ {
+ g.setColor(low);
+ g.drawRect(x, y, 10, 10);
+ g.setColor(hi);
+ g.drawRect(x+1, y+1, 10, 10);
+ if (b.isSelected())
+ {
+ g.setColor(sel);
+ if (b.isSelected())
+ {
+ g.drawLine(x+3, y+5, x+3, y+8);
+ g.drawLine(x+4, y+5, x+4, y+8);
+ g.drawLine(x+3, y+8, x+8, y+3);
+ g.drawLine(x+4, y+8, x+8, y+3);
+ }
+ }
+ }
+ else
+ {
+ g.setColor(hi);
+ g.drawRect(x, y, 10, 10);
+ if (b.isSelected())
+ {
+ g.drawLine(x+3, y+5, x+3, y+9);
+ g.drawLine(x+3, y+9, x+8, y+3);
+ }
+ }
+ g.setColor(saved);
+ }
+ }
+ };
}
+
public static Icon getRadioButtonIcon()
{
- return null;
+ return new Icon()
+ {
+ public int getIconHeight()
+ {
+ return 12;
+ }
+ public int getIconWidth()
+ {
+ return 12;
+ }
+ public void paintIcon(Component c, Graphics g, int x, int y)
+ {
+ UIDefaults defaults;
+ defaults = UIManager.getLookAndFeelDefaults();
+ Color hi = defaults.getColor("RadioButton.highlight");
+ Color low = defaults.getColor("RadioButton.darkShadow");
+ Color sel = defaults.getColor("RadioButton.foreground");
+ Color dim = defaults.getColor("RadioButton.shadow");
+
+ if (c instanceof AbstractButton)
+ {
+ AbstractButton b = (AbstractButton) c;
+ Color saved = g.getColor();
+ if (b.isEnabled())
+ {
+ g.setColor(low);
+ g.drawOval(x, y, 12, 12);
+ g.setColor(hi);
+ g.drawOval(x+1, y+1, 12, 12);
+ if (b.isSelected())
+ {
+ g.setColor(sel);
+ g.fillOval(x+4, y+4, 6, 6);
+ }
+ }
+ else
+ {
+ g.setColor(hi);
+ g.drawOval(x, y, 12, 12);
+ if (b.isSelected())
+ g.fillOval(x+4, y+4, 6, 6);
+ }
+ g.setColor(saved);
+ }
+ }
+ };
}
public static Icon getCheckBoxMenuItemIcon()
{
- return null;
+ return new DummyIcon();
}
public static Icon getRadioButtonMenuItemIcon()
{
- return null;
+ return new DummyIcon();
}
public static Icon createEmptyFrameIcon()
{
- return null;
+ return new DummyIcon();
}
} // class BasicIconFactory
diff --git a/javax/swing/plaf/basic/BasicLookAndFeel.java b/javax/swing/plaf/basic/BasicLookAndFeel.java
index ff73edbc8..901ea516e 100644
--- a/javax/swing/plaf/basic/BasicLookAndFeel.java
+++ b/javax/swing/plaf/basic/BasicLookAndFeel.java
@@ -227,29 +227,40 @@ public abstract class BasicLookAndFeel extends LookAndFeel
{
Object[] uiDefaults;
uiDefaults = new Object[] {
+
+ "AbstractUndoableEdit.undoText", "Undo",
+ "AbstractUndoableEdit.redoText", "Redo",
+
"Button.background", new ColorUIResource(Color.lightGray),
- "Button.border", new BorderUIResource.CompoundBorderUIResource(null,
- null),
+ "Button.border", BorderUIResource.getEtchedBorderUIResource(),
+ "Button.darkShadow", new ColorUIResource(Color.darkGray),
"Button.focusInputMap", new UIDefaults.LazyInputMap(new Object[] {
"SPACE", "pressed",
"released SPACE", "released"
}),
"Button.font", new FontUIResource("Dialog", Font.PLAIN, 12),
"Button.foreground", new ColorUIResource(Color.black),
+ "Button.highlight", new ColorUIResource(Color.white),
+ "Button.light", new ColorUIResource(Color.lightGray.brighter()),
"Button.margin", new InsetsUIResource(2, 14, 2, 14),
+ "Button.shadow", new ColorUIResource(Color.gray),
"Button.textIconGap", new Integer(4),
"Button.textShiftOffset", new Integer(0),
"CheckBox.background", new ColorUIResource(Color.lightGray),
"CheckBox.border", new BorderUIResource.CompoundBorderUIResource(null,
null),
+ "CheckBox.darkShadow", new ColorUIResource(Color.darkGray),
"CheckBox.focusInputMap", new UIDefaults.LazyInputMap(new Object[] {
"SPACE", "pressed",
"released SPACE", "released"
}),
"CheckBox.font", new FontUIResource("Dialog", Font.PLAIN, 12),
"CheckBox.foreground", new ColorUIResource(Color.black),
+ "CheckBox.highlight", new ColorUIResource(Color.white),
"CheckBox.icon", BasicIconFactory.getCheckBoxIcon(),
+ "CheckBox.light", new ColorUIResource(Color.lightGray.brighter()),
"CheckBox.margin",new InsetsUIResource(2, 2, 2, 2),
+ "CheckBox.shadow", new ColorUIResource(Color.gray),
"CheckBox.textIconGap", new Integer(4),
"CheckBox.textShiftOffset", new Integer(0),
"CheckBoxMenuItem.acceleratorFont", new FontUIResource("Dialog",
@@ -540,7 +551,7 @@ public abstract class BasicLookAndFeel extends LookAndFeel
"PopupMenu.font", new FontUIResource("Dialog", Font.PLAIN, 12),
"PopupMenu.foreground", new ColorUIResource(Color.black),
"ProgressBar.background", new ColorUIResource(Color.lightGray),
- "ProgressBar.border", new BorderUIResource.LineBorderUIResource(null),
+ "ProgressBar.border", new BorderUIResource.LineBorderUIResource(Color.darkGray),
"ProgressBar.cellLength", new Integer(1),
"ProgressBar.cellSpacing", new Integer(0),
"ProgressBar.font", new FontUIResource("Dialog", Font.PLAIN, 12),
@@ -550,14 +561,18 @@ public abstract class BasicLookAndFeel extends LookAndFeel
"RadioButton.background", new ColorUIResource(Color.lightGray),
"RadioButton.border", new BorderUIResource.CompoundBorderUIResource(null,
null),
+ "RadioButton.darkShadow", new ColorUIResource(Color.darkGray),
"RadioButton.focusInputMap", new UIDefaults.LazyInputMap(new Object[] {
"SPACE", "pressed",
"released SPACE", "released"
}),
"RadioButton.font", new FontUIResource("Dialog", Font.PLAIN, 12),
"RadioButton.foreground", new ColorUIResource(Color.black),
+ "RadioButton.highlight", new ColorUIResource(Color.white),
"RadioButton.icon", BasicIconFactory.getRadioButtonIcon(),
+ "RadioButton.light", new ColorUIResource(Color.lightGray.brighter()),
"RadioButton.margin", new InsetsUIResource(2, 2, 2, 2),
+ "RadioButton.shadow", new ColorUIResource(Color.gray),
"RadioButton.textIconGap", new Integer(4),
"RadioButton.textShiftOffset", new Integer(0),
"RadioButtonMenuItem.acceleratorFont", new FontUIResource("Dialog",
@@ -742,7 +757,7 @@ public abstract class BasicLookAndFeel extends LookAndFeel
"Table.background", new ColorUIResource(Color.white),
"Table.focusCellBackground", new ColorUIResource(Color.white),
"Table.focusCellForeground", new ColorUIResource(Color.black),
- "Table.focusCellHighlightBorder", new BorderUIResource.LineBorderUIResource(null),
+ "Table.focusCellHighlightBorder", new BorderUIResource.LineBorderUIResource(Color.white),
"Table.font", new FontUIResource("Dialog", Font.PLAIN, 12),
"Table.foreground", new ColorUIResource(Color.black),
"Table.gridColor", new ColorUIResource(Color.gray),
@@ -849,7 +864,7 @@ public abstract class BasicLookAndFeel extends LookAndFeel
"ToolBar.foreground", new ColorUIResource(Color.black),
"ToolBar.separatorSize", new DimensionUIResource(10, 10),
"ToolTip.background", new ColorUIResource(Color.white),
- "ToolTip.border", new BorderUIResource.LineBorderUIResource(null),
+ "ToolTip.border", new BorderUIResource.LineBorderUIResource(Color.lightGray),
"ToolTip.font", new FontUIResource("SansSerif", Font.PLAIN, 12),
"ToolTip.foreground", new ColorUIResource(Color.black),
"Tree.ancestorInputMap", new UIDefaults.LazyInputMap(new Object[] {
@@ -860,7 +875,7 @@ public abstract class BasicLookAndFeel extends LookAndFeel
// XXX Don't use gif
"Tree.closedIcon", new IconUIResource(new ImageIcon("icons/TreeClosed.gif")),
"Tree.drawsFocusBorderAroundIcon", Boolean.FALSE,
- "Tree.editorBorder", new BorderUIResource.LineBorderUIResource(null),
+ "Tree.editorBorder", new BorderUIResource.LineBorderUIResource(Color.lightGray),
"Tree.focusInputMap", new UIDefaults.LazyInputMap(new Object[] {
"shift PAGE_DOWN", "scrollDownExtendSelection",
"PAGE_DOWN", "scrollDownChangeSelection",
diff --git a/javax/swing/plaf/basic/BasicPanelUI.java b/javax/swing/plaf/basic/BasicPanelUI.java
index f4e1f5e05..7e72d730d 100644
--- a/javax/swing/plaf/basic/BasicPanelUI.java
+++ b/javax/swing/plaf/basic/BasicPanelUI.java
@@ -44,8 +44,6 @@ import javax.swing.plaf.PanelUI;
public class BasicPanelUI extends PanelUI
{
- int gap = 3;
-
public static ComponentUI createUI(JComponent x)
{
return new BasicPanelUI();
@@ -53,6 +51,6 @@ public class BasicPanelUI extends PanelUI
public void installUI(JComponent c)
{
- super.installUI(c);
+ super.installUI(c);
}
}
diff --git a/javax/swing/plaf/basic/BasicRadioButtonUI.java b/javax/swing/plaf/basic/BasicRadioButtonUI.java
index edf357edc..15d2e7af9 100644
--- a/javax/swing/plaf/basic/BasicRadioButtonUI.java
+++ b/javax/swing/plaf/basic/BasicRadioButtonUI.java
@@ -38,116 +38,42 @@ exception statement from your version. */
package javax.swing.plaf.basic;
-import java.awt.Color;
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.awt.Rectangle;
import javax.swing.AbstractButton;
+import javax.swing.Icon;
import javax.swing.JComponent;
+import javax.swing.UIDefaults;
+import javax.swing.UIManager;
import javax.swing.plaf.ComponentUI;
public class BasicRadioButtonUI extends BasicToggleButtonUI
{
- int large_circle_width = 20;
- int circle_width = large_circle_width - 8; // FIXME: sun == ?
-
- public static ComponentUI createUI(final JComponent c) {
- return new BasicRadioButtonUI();
- }
+ protected Icon icon;
+
+ public static ComponentUI createUI(final JComponent c) {
+ return new BasicRadioButtonUI();
+ }
+
+ public BasicRadioButtonUI()
+ {
+ icon = getDefaultIcon();
+ }
+
+ public void installUI(final JComponent c) {
+ super.installUI(c);
+ if (c instanceof AbstractButton)
+ {
+ AbstractButton b = (AbstractButton) c;
+ b.setIcon(icon);
+ }
+ }
+
+ public Icon getDefaultIcon()
+ {
+ UIDefaults defaults = UIManager.getLookAndFeelDefaults();
+ return defaults.getIcon("RadioButton.icon");
+ }
- public void installUI(final JComponent c) {
- super.installUI(c);
- }
-
- public Dimension getPreferredSize(JComponent c)
- {
- AbstractButton b = (AbstractButton)c;
- Dimension d = BasicGraphicsUtils.getPreferredButtonSize(b, gap);
-
- // and add a little something for the circles:
-
- d.width += large_circle_width;
- d.height = Math.max(large_circle_width, d.height);
-
- //System.out.println("^^^^^^^^^^^^^^^^^^^^^^ BASIC-PREF="+d + ",T="+b.text);
- return d;
- }
-
- protected void paintFocus(Graphics g,
- JComponent c,
- Rectangle vr,
- Rectangle tr,
- Rectangle ir)
- {
- }
-
- protected void paintIcon(Graphics g,
- JComponent c,
- Rectangle iconRect)
- {
- }
-
- protected void paintButtonPressed(Graphics g,
- JComponent b)
- {
- Dimension size = b.getSize();
-
- paintButtonNormal(g, b);
-
- int x = gap;
- int y = gap;
-
- int diffp = 2;
- int diff = 3;
-
- g.setColor(textColor);
- g.fillArc(x+diffp, y+diffp,
- circle_width-diff, circle_width-diff,
- 0, 360);
- }
-
- protected void paintButtonNormal(Graphics g,
- JComponent c)
- {
- AbstractButton b = (AbstractButton) c;
-
- Dimension size = b.getSize();
-
- g.setColor(normalBackgroundColor);
- g.fillRect(1,1,size.width-2, size.height-2);
-
- int x = gap;
- int y = gap;
-
- g.setColor(pressedBackgroundColor);
- g.drawArc(x, y,
- circle_width, circle_width,
- 0, 360);
-
- g.setColor(new Color(255,255,255));
- g.drawArc(x, y,
- circle_width+1, circle_width+1,
- 145, 160);
- }
-
- protected void paintText(Graphics g,
- JComponent c,
- Rectangle textRect,
- String text)
- {
- // AbstractButton b = (AbstractButton) c;
-
- //System.out.println("drawing string: " + text + ", " + c.isEnabled());
-
- g.setColor(c.isEnabled() ? textColor : disabledTextColor);
-
- BasicGraphicsUtils.drawString(g,
- text,
- 0,
- textRect.x + circle_width + gap,
- textRect.y);
- }
}
diff --git a/javax/swing/ToggleButtonModel.java b/javax/swing/plaf/basic/BasicRootPaneUI.java
index 4954604f8..70829d10f 100644
--- a/javax/swing/ToggleButtonModel.java
+++ b/javax/swing/plaf/basic/BasicRootPaneUI.java
@@ -1,4 +1,4 @@
-/* ToggleButtonModel.java --
+/* BasicPanelUI.java
Copyright (C) 2002 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -36,20 +36,22 @@ obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
-package javax.swing;
+package javax.swing.plaf.basic;
-public class ToggleButtonModel extends DefaultButtonModel
+import javax.swing.*;
+import javax.swing.plaf.*;
+import java.awt.*;
+
+
+public class BasicRootPaneUI extends RootPaneUI
{
- public void setPressed(boolean b)
+ public static ComponentUI createUI(JComponent x)
+ {
+ return new BasicRootPaneUI();
+ }
+
+ public void installUI(JComponent c)
{
- if (! isEnabled())
- return;
-
- if (! b)
- {
- return;
- }
-
- setSelected(b);
+ super.installUI(c);
}
}
diff --git a/javax/swing/plaf/basic/BasicToggleButtonUI.java b/javax/swing/plaf/basic/BasicToggleButtonUI.java
index f18d85c72..c6b3bdb06 100644
--- a/javax/swing/plaf/basic/BasicToggleButtonUI.java
+++ b/javax/swing/plaf/basic/BasicToggleButtonUI.java
@@ -50,72 +50,7 @@ public class BasicToggleButtonUI extends BasicButtonUI
public static ComponentUI createUI(final JComponent c) {
return new BasicToggleButtonUI();
- }
-
-
- public void installUI(final JComponent c) {
- super.installUI(c);
- }
-
- public Dimension getPreferredSize(JComponent c)
- {
- AbstractButton b = (AbstractButton)c;
- Dimension d = BasicGraphicsUtils.getPreferredButtonSize(b, gap);
-
- //System.out.println("^^^^^^^^^^^^^^^^^^^^^^ BASIC-PREF="+d + ",T="+b.text);
- return d;
- }
-
- protected void paintFocus(Graphics g,
- JComponent c,
- Rectangle vr,
- Rectangle tr,
- Rectangle ir)
- {
- }
-
- protected void paintIcon(Graphics g,
- JComponent c,
- Rectangle iconRect)
- {
- }
-
- protected void paintButtonPressed(Graphics g,
- JComponent b)
- {
- Dimension size = b.getSize();
-
- g.setColor(pressedBackgroundColor);
- g.fillRect(1,1,size.width-2, size.height-2);
-
- }
-
- protected void paintButtonNormal(Graphics g,
- JComponent b)
- {
- Dimension size = b.getSize();
-
- g.setColor(normalBackgroundColor);
- g.fillRect(1,1,size.width-2, size.height-2);
-
- }
- protected void paintText(Graphics g,
- JComponent c,
- Rectangle textRect,
- String text)
- {
- // AbstractButton b = (AbstractButton) c;
-
- // System.out.println("drawing string: " + text + ", at:" + textRect);
-
- g.setColor(textColor);
-
- BasicGraphicsUtils.drawString(g,
- text,
- 0,
- textRect.x,
- textRect.y);
- }
+ }
}
diff --git a/javax/swing/plaf/metal/MetalLookAndFeel.java b/javax/swing/plaf/metal/MetalLookAndFeel.java
index 075c0b213..20becaf7e 100644
--- a/javax/swing/plaf/metal/MetalLookAndFeel.java
+++ b/javax/swing/plaf/metal/MetalLookAndFeel.java
@@ -40,7 +40,6 @@ exception statement from your version. */
package javax.swing.plaf.metal;
import javax.swing.UIDefaults;
-import javax.swing.plaf.basic.BasicDefaults;
import javax.swing.plaf.basic.BasicLookAndFeel;
public class MetalLookAndFeel extends BasicLookAndFeel
@@ -61,7 +60,7 @@ public class MetalLookAndFeel extends BasicLookAndFeel
public UIDefaults getDefaults()
{
if (LAF_defaults == null)
- LAF_defaults = new BasicDefaults();
+ LAF_defaults = super.getDefaults();
// Returns the default values for this look and feel.
return LAF_defaults;
diff --git a/javax/swing/text/JTextComponent.java b/javax/swing/text/JTextComponent.java
index e53b20f2f..e112cb42c 100644
--- a/javax/swing/text/JTextComponent.java
+++ b/javax/swing/text/JTextComponent.java
@@ -406,7 +406,7 @@ public abstract class JTextComponent extends JComponent
public String getUIClassID()
{
// Returns a string that specifies the name of the l&f class that renders this component.
- return "JTextComponent";
+ return "TextComponentUI";
}
public int getVerticalAlignment()
{