Commit 9288d112 by Graydon Hoare Committed by Graydon Hoare

ToggleButtonModel.java: Remove dead class.

2004-02-09  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"

From-SVN: r77686
parent feec8922
2004-02-09 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-11 Michael Koch <konqueror@gmx.de>
* java/net/DatagramSocket.java
......
......@@ -1287,16 +1287,18 @@ javax/swing/border/TitledBorder.java \
javax/swing/GrayFilter.java \
javax/swing/AbstractAction.java \
javax/swing/AbstractButton.java \
javax/swing/plaf/basic/BasicButtonListener.java \
javax/swing/plaf/basic/BasicButtonUI.java \
javax/swing/plaf/basic/BasicCheckBoxUI.java \
javax/swing/plaf/basic/BasicDefaults.java \
javax/swing/plaf/basic/BasicGraphicsUtils.java \
javax/swing/plaf/basic/BasicLabelUI.java \
javax/swing/plaf/basic/BasicListUI.java \
javax/swing/plaf/basic/BasicOptionPaneUI.java \
javax/swing/plaf/basic/BasicPanelUI.java \
javax/swing/plaf/basic/BasicRootPaneUI.java \
javax/swing/plaf/basic/BasicRadioButtonUI.java \
javax/swing/plaf/basic/BasicScrollPaneUI.java \
javax/swing/plaf/basic/BasicSliderUI.java \
javax/swing/plaf/basic/BasicSplitPaneDivider.java \
javax/swing/plaf/basic/BasicSplitPaneUI.java \
javax/swing/plaf/basic/BasicTabbedPaneUI.java \
......@@ -1416,7 +1418,6 @@ javax/swing/Scrollable.java \
javax/swing/SwingConstants.java \
javax/swing/SwingUtilities.java \
javax/swing/Timer.java \
javax/swing/ToggleButtonModel.java \
javax/swing/UIDefaults.java \
javax/swing/UIManager.java \
javax/swing/UnsupportedLookAndFeelException.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 ();
}
......
......@@ -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();
}
......
......@@ -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
......@@ -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);
}
......@@ -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,
......@@ -279,14 +290,13 @@ public class DefaultButtonModel implements ButtonModel, Serializable
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);
}
}
/**
......
......@@ -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()
......
......@@ -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()
......
......@@ -765,7 +765,15 @@ public abstract class JComponent extends Container implements Serializable
{
im = createImage (r.width, r.height);
g2 = im.getGraphics ();
g2.clearRect (0, 0, r.width, r.height);
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)
......
......@@ -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; }
......
......@@ -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;
}
......
......@@ -148,7 +148,7 @@ public class JLabel extends JComponent implements Accessible, SwingConstants
{ return text; }
public String getUIClassID()
{ return "JLabel"; }
{ return "LabelUI"; }
public int getVerticalAlignment()
{
......
......@@ -212,7 +212,7 @@ public class JList extends JComponent implements Accessible, Scrollable
public String getUIClassID()
{
return "JList";
return "ListUI";
}
......
......@@ -161,7 +161,7 @@ public class JOptionPane extends JComponent
{ return val; }
public String getUIClassID()
{ return "JOptionPane"; }
{ return "OptionPaneUI"; }
public void setUI(OptionPaneUI ui) {
......
......@@ -85,7 +85,7 @@ public class JPanel extends JComponent implements Accessible
}
public String getUIClassID()
{ return "JPanel"; }
{ return "PanelUI"; }
public void setUI(PanelUI ui) {
......
......@@ -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
......
......@@ -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()
......
......@@ -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();
......
......@@ -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()
......
......@@ -102,7 +102,7 @@ public class JTabbedPane extends JComponent implements Accessible, SwingConstant
}
public String getUIClassID()
{ return "JTabbedPane"; }
{ return "TabbedPaneUI"; }
public void setUI(TabbedPaneUI ui) {
......
......@@ -44,6 +44,24 @@ import javax.swing.plaf.ButtonUI;
public class JToggleButton extends AbstractButton implements Accessible
{
public class ToggleButtonModel extends DefaultButtonModel
{
public void setPressed(boolean b)
{
if (! isEnabled())
return;
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);
......@@ -73,9 +91,8 @@ public class JToggleButton extends AbstractButton implements Accessible
{
super(text, icon);
// Create the model
hori_align = LEADING;
setModel(new ToggleButtonModel());
model.setSelected(selected);
}
......@@ -90,7 +107,7 @@ public class JToggleButton extends AbstractButton implements Accessible
public String getUIClassID()
{
//Returns a string that specifies the name of the L&F class that renders this component.
return "JToggleButton";
return "ToggleButtonUI";
}
protected String paramString()
......
......@@ -83,7 +83,7 @@ public class JTree extends JComponent implements Scrollable, Accessible
public String getUIClassID()
{
return "JTree";
return "TreeUI";
}
......
......@@ -69,7 +69,7 @@ public class JViewport extends JComponent
public String getUIClassID()
{
return "JViewport";
return "ViewportUI";
}
public void updateUI()
......
......@@ -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)
......@@ -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.
......
......@@ -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)
*/
......
......@@ -38,81 +38,27 @@ 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)
public Icon getDefaultIcon()
{
Dimension size = b.getSize();
g.setColor(pressedBackgroundColor);
g.fillRect(1,1,size.width-2, size.height-2);
UIDefaults defaults = UIManager.getLookAndFeelDefaults();
return defaults.getIcon("CheckBox.icon");
}
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 void installUI(final JComponent c) {
super.installUI(c);
}
}
......
......@@ -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
......@@ -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",
......
......@@ -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();
......
......@@ -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 == ?
protected Icon icon;
public static ComponentUI createUI(final JComponent c) {
return new BasicRadioButtonUI();
}
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)
public BasicRadioButtonUI()
{
icon = getDefaultIcon();
}
protected void paintIcon(Graphics g,
JComponent c,
Rectangle iconRect)
public void installUI(final JComponent c) {
super.installUI(c);
if (c instanceof AbstractButton)
{
AbstractButton b = (AbstractButton) c;
b.setIcon(icon);
}
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)
public Icon getDefaultIcon()
{
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);
UIDefaults defaults = UIManager.getLookAndFeelDefaults();
return defaults.getIcon("RadioButton.icon");
}
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);
}
}
......
......@@ -51,71 +51,6 @@ 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);
}
}
......
......@@ -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;
......
......@@ -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()
{
......
......@@ -316,12 +316,24 @@ JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_clearRect
(JNIEnv *env, jobject obj, jint x, jint y, jint width, jint height)
{
struct graphics *g;
GdkGCValues saved;
g = (struct graphics *) NSA_GET_PTR (env, obj);
gdk_threads_enter ();
if (GDK_IS_WINDOW (g->drawable))
{
gdk_window_clear_area ((GdkWindow *)g->drawable,
x + g->x_offset, y + g->y_offset, width, height);
}
else
{
gdk_gc_get_values (g->gc, &saved);
gdk_gc_set_foreground (g->gc, &(saved.background));
gdk_draw_rectangle (g->drawable, g->gc, TRUE,
x + g->x_offset, y + g->y_offset, width, height);
gdk_gc_set_foreground (g->gc, &(saved.foreground));
}
gdk_threads_leave ();
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment