changeset 244:ec3bbc3f675a

Merge
author mlapshin
date Wed, 14 May 2008 07:53:12 -0700
parents 5bcff22d837d c1e547a4c0ef
children 8767ccc53b42 e733eea7d585
files src/share/classes/com/sun/java/swing/plaf/gtk/GTKLookAndFeel.java src/share/classes/com/sun/java/swing/plaf/motif/MotifLookAndFeel.java src/share/classes/java/awt/Component.java src/share/classes/javax/swing/AbstractButton.java src/share/classes/javax/swing/JTabbedPane.java src/share/classes/javax/swing/plaf/basic/BasicLookAndFeel.java
diffstat 203 files changed, 6813 insertions(+), 1731 deletions(-) [+]
line wrap: on
line diff
--- a/src/share/classes/com/sun/imageio/plugins/gif/GIFImageReader.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/com/sun/imageio/plugins/gif/GIFImageReader.java	Wed May 14 07:53:12 2008 -0700
@@ -504,7 +504,7 @@
             }
 
             // Found position of metadata for image 0
-            imageStartPosition.add(new Long(stream.getStreamPosition()));
+            imageStartPosition.add(Long.valueOf(stream.getStreamPosition()));
         } catch (IOException e) {
             throw new IIOException("I/O error reading header!", e);
         }
--- a/src/share/classes/com/sun/imageio/plugins/gif/GIFWritableImageMetadata.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/com/sun/imageio/plugins/gif/GIFWritableImageMetadata.java	Wed May 14 07:53:12 2008 -0700
@@ -98,7 +98,7 @@
         try {
             return data.getBytes("ISO-8859-1");
         } catch (UnsupportedEncodingException e) {
-            return (new String("")).getBytes();
+            return "".getBytes();
         }
     }
 
--- a/src/share/classes/com/sun/java/swing/plaf/gtk/GTKColorChooserPanel.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/com/sun/java/swing/plaf/gtk/GTKColorChooserPanel.java	Wed May 14 07:53:12 2008 -0700
@@ -328,7 +328,7 @@
         setHSB(hue, saturation, brightness);
         if (update) {
             settingColor = true;
-            hueSpinner.setValue(new Integer((int)(hue * 360)));
+            hueSpinner.setValue(Integer.valueOf((int)(hue * 360)));
             settingColor = false;
         }
     }
@@ -376,8 +376,8 @@
         setHSB(hue, s, b);
         if (update) {
             settingColor = true;
-            saturationSpinner.setValue(new Integer((int)(s * 255)));
-            valueSpinner.setValue(new Integer((int)(b * 255)));
+            saturationSpinner.setValue(Integer.valueOf((int)(s * 255)));
+            valueSpinner.setValue(Integer.valueOf((int)(b * 255)));
             settingColor = false;
         }
     }
@@ -391,9 +391,9 @@
         setColor(color, false, true, true);
 
         settingColor = true;
-        hueSpinner.setValue(new Integer((int)(hue * 360)));
-        saturationSpinner.setValue(new Integer((int)(saturation * 255)));
-        valueSpinner.setValue(new Integer((int)(brightness * 255)));
+        hueSpinner.setValue(Integer.valueOf((int)(hue * 360)));
+        saturationSpinner.setValue(Integer.valueOf((int)(saturation * 255)));
+        valueSpinner.setValue(Integer.valueOf((int)(brightness * 255)));
         settingColor = false;
     }
 
@@ -409,9 +409,9 @@
         setColor(color, false, false, true);
 
         settingColor = true;
-        redSpinner.setValue(new Integer(color.getRed()));
-        greenSpinner.setValue(new Integer(color.getGreen()));
-        blueSpinner.setValue(new Integer(color.getBlue()));
+        redSpinner.setValue(Integer.valueOf(color.getRed()));
+        greenSpinner.setValue(Integer.valueOf(color.getGreen()));
+        blueSpinner.setValue(Integer.valueOf(color.getBlue()));
         settingColor = false;
     }
 
@@ -454,13 +454,13 @@
         colorNameTF.setText("#" + hexString.substring(1));
 
         if (updateSpinners) {
-            redSpinner.setValue(new Integer(color.getRed()));
-            greenSpinner.setValue(new Integer(color.getGreen()));
-            blueSpinner.setValue(new Integer(color.getBlue()));
+            redSpinner.setValue(Integer.valueOf(color.getRed()));
+            greenSpinner.setValue(Integer.valueOf(color.getGreen()));
+            blueSpinner.setValue(Integer.valueOf(color.getBlue()));
 
-            hueSpinner.setValue(new Integer((int)(hue * 360)));
-            saturationSpinner.setValue(new Integer((int)(saturation * 255)));
-            valueSpinner.setValue(new Integer((int)(brightness * 255)));
+            hueSpinner.setValue(Integer.valueOf((int)(hue * 360)));
+            saturationSpinner.setValue(Integer.valueOf((int)(saturation * 255)));
+            valueSpinner.setValue(Integer.valueOf((int)(brightness * 255)));
         }
         settingColor = false;
     }
--- a/src/share/classes/com/sun/java/swing/plaf/gtk/GTKLookAndFeel.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/com/sun/java/swing/plaf/gtk/GTKLookAndFeel.java	Wed May 14 07:53:12 2008 -0700
@@ -336,7 +336,7 @@
         // populate the table with the values from basic.
         super.initComponentDefaults(table);
 
-        Integer zero =  new Integer(0);
+        Integer zero =  Integer.valueOf(0);
         Object zeroBorder = new sun.swing.SwingLazyValue(
             "javax.swing.plaf.BorderUIResource$EmptyBorderUIResource",
             new Object[] {zero, zero, zero, zero});
@@ -371,7 +371,7 @@
         int vProgWidth  =  22 - (progXThickness * 2);
         int vProgHeight =  80 - (progYThickness * 2);
 
-        Integer caretBlinkRate = new Integer(500);
+        Integer caretBlinkRate = Integer.valueOf(500);
         Insets zeroInsets = new InsetsUIResource(0, 0, 0, 0);
 
         Double defaultCaretAspectRatio = new Double(0.025);
@@ -540,7 +540,7 @@
         }
 
         Object[] defaults = new Object[] {
-            "ArrowButton.size", new Integer(13),
+            "ArrowButton.size", Integer.valueOf(13),
 
 
             "Button.defaultButtonFollowsFocus", Boolean.FALSE,
@@ -893,8 +893,8 @@
 
 
             "ScrollBar.squareButtons", Boolean.FALSE,
-            "ScrollBar.thumbHeight", new Integer(14),
-            "ScrollBar.width", new Integer(16),
+            "ScrollBar.thumbHeight", Integer.valueOf(14),
+            "ScrollBar.width", Integer.valueOf(16),
             "ScrollBar.minimumThumbSize", new Dimension(8, 8),
             "ScrollBar.maximumThumbSize", new Dimension(4096, 4096),
             "ScrollBar.allowsAbsolutePositioning", Boolean.TRUE,
@@ -954,12 +954,12 @@
 
 
             "Separator.insets", zeroInsets,
-            "Separator.thickness", new Integer(2),
+            "Separator.thickness", Integer.valueOf(2),
 
 
             "Slider.paintValue", Boolean.TRUE,
-            "Slider.thumbWidth", new Integer(30),
-            "Slider.thumbHeight", new Integer(14),
+            "Slider.thumbWidth", Integer.valueOf(30),
+            "Slider.thumbHeight", Integer.valueOf(14),
             "Slider.focusInputMap",
                     new UIDefaults.LazyInputMap(new Object[] {
                             "RIGHT", "positiveUnitIncrement",
@@ -1013,9 +1013,9 @@
                     }),
 
 
-            "SplitPane.size", new Integer(7),
-            "SplitPane.oneTouchOffset", new Integer(2),
-            "SplitPane.oneTouchButtonSize", new Integer(5),
+            "SplitPane.size", Integer.valueOf(7),
+            "SplitPane.oneTouchOffset", Integer.valueOf(2),
+            "SplitPane.oneTouchButtonSize", Integer.valueOf(5),
             "SplitPane.supportsOneTouchButtons", Boolean.FALSE,
 
 
@@ -1223,13 +1223,13 @@
 
             "ToolTip.font", new FontLazyValue(Region.TOOL_TIP),
 
-            "Tree.padding", new Integer(4),
+            "Tree.padding", Integer.valueOf(4),
             "Tree.background", tableBg,
             "Tree.drawHorizontalLines", Boolean.FALSE,
             "Tree.drawVerticalLines", Boolean.FALSE,
-            "Tree.rowHeight", new Integer(-1),
+            "Tree.rowHeight", Integer.valueOf(-1),
             "Tree.scrollsOnExpand", Boolean.FALSE,
-            "Tree.expanderSize", new Integer(10),
+            "Tree.expanderSize", Integer.valueOf(10),
             "Tree.repaintWholeRow", Boolean.TRUE,
             "Tree.closedIcon", null,
             "Tree.leafIcon", null,
@@ -1240,8 +1240,8 @@
             "Tree.collapsedIcon", new GTKStyle.GTKLazyValue(
                               "com.sun.java.swing.plaf.gtk.GTKIconFactory",
                               "getTreeCollapsedIcon"),
-            "Tree.leftChildIndent", new Integer(2),
-            "Tree.rightChildIndent", new Integer(12),
+            "Tree.leftChildIndent", Integer.valueOf(2),
+            "Tree.rightChildIndent", Integer.valueOf(12),
             "Tree.scrollsHorizontallyAndVertically", Boolean.FALSE,
             "Tree.drawsFocusBorder", Boolean.TRUE,
             "Tree.focusInputMap",
--- a/src/share/classes/com/sun/java/swing/plaf/gtk/GTKStyle.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/com/sun/java/swing/plaf/gtk/GTKStyle.java	Wed May 14 07:53:12 2008 -0700
@@ -851,7 +851,7 @@
                 int focusLineWidth = getClassSpecificIntValue(context,
                         "focus-line-width", 0);
                 if (value == null && focusLineWidth > 0) {
-                    value = new Integer(16 + 2 * focusLineWidth);
+                    value = Integer.valueOf(16 + 2 * focusLineWidth);
                 }
             }
             return value;
@@ -975,12 +975,12 @@
 
         private static void initIconTypeMap() {
             ICON_TYPE_MAP = new HashMap<String,Integer>();
-            ICON_TYPE_MAP.put("gtk-menu", new Integer(1));
-            ICON_TYPE_MAP.put("gtk-small-toolbar", new Integer(2));
-            ICON_TYPE_MAP.put("gtk-large-toolbar", new Integer(3));
-            ICON_TYPE_MAP.put("gtk-button", new Integer(4));
-            ICON_TYPE_MAP.put("gtk-dnd", new Integer(5));
-            ICON_TYPE_MAP.put("gtk-dialog", new Integer(6));
+            ICON_TYPE_MAP.put("gtk-menu", Integer.valueOf(1));
+            ICON_TYPE_MAP.put("gtk-small-toolbar", Integer.valueOf(2));
+            ICON_TYPE_MAP.put("gtk-large-toolbar", Integer.valueOf(3));
+            ICON_TYPE_MAP.put("gtk-button", Integer.valueOf(4));
+            ICON_TYPE_MAP.put("gtk-dnd", Integer.valueOf(5));
+            ICON_TYPE_MAP.put("gtk-dialog", Integer.valueOf(6));
         }
 
     }
--- a/src/share/classes/com/sun/java/swing/plaf/gtk/Metacity.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/com/sun/java/swing/plaf/gtk/Metacity.java	Wed May 14 07:53:12 2008 -0700
@@ -178,7 +178,7 @@
                         name = child.getNodeName();
                         Object value = null;
                         if ("distance".equals(name)) {
-                            value = new Integer(getIntAttr(child, "value", 0));
+                            value = Integer.valueOf(getIntAttr(child, "value", 0));
                         } else if ("border".equals(name)) {
                             value = new Insets(getIntAttr(child, "top", 0),
                                                getIntAttr(child, "left", 0),
@@ -808,7 +808,7 @@
     protected void setFrameGeometry(JComponent titlePane, Map gm) {
         this.frameGeometry = gm;
         if (getInt("top_height") == 0 && titlePane != null) {
-            gm.put("top_height", new Integer(titlePane.getHeight()));
+            gm.put("top_height", Integer.valueOf(titlePane.getHeight()));
         }
     }
 
--- a/src/share/classes/com/sun/java/swing/plaf/motif/MotifLookAndFeel.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/com/sun/java/swing/plaf/motif/MotifLookAndFeel.java	Wed May 14 07:53:12 2008 -0700
@@ -567,7 +567,7 @@
             "ProgressBar.selectionBackground", table.get("controlText"),
             "ProgressBar.border", loweredBevelBorder,
             "ProgressBar.cellLength", new Integer(6),
-            "ProgressBar.cellSpacing", new Integer(0),
+            "ProgressBar.cellSpacing", Integer.valueOf(0),
 
             // Buttons
             "Button.margin", new InsetsUIResource(2, 4, 2, 4),
@@ -859,7 +859,7 @@
             "SplitPane.background", table.get("control"),
             "SplitPane.highlight", table.get("controlHighlight"),
             "SplitPane.shadow", table.get("controlShadow"),
-            "SplitPane.dividerSize", new Integer(20),
+            "SplitPane.dividerSize", Integer.valueOf(20),
             "SplitPane.activeThumb", table.get("activeCaptionBorder"),
             "SplitPane.ancestorInputMap",
                new UIDefaults.LazyInputMap(new Object[] {
@@ -1160,7 +1160,7 @@
               }),
 
             "TextField.caretForeground", black,
-            "TextField.caretBlinkRate", new Integer(500),
+            "TextField.caretBlinkRate", Integer.valueOf(500),
             "TextField.inactiveForeground", table.get("textInactiveText"),
             "TextField.selectionBackground", table.get("textHighlight"),
             "TextField.selectionForeground", table.get("textHighlightText"),
@@ -1171,7 +1171,7 @@
             "TextField.focusInputMap", fieldInputMap,
 
             "PasswordField.caretForeground", black,
-            "PasswordField.caretBlinkRate", new Integer(500),
+            "PasswordField.caretBlinkRate", Integer.valueOf(500),
             "PasswordField.inactiveForeground", table.get("textInactiveText"),
             "PasswordField.selectionBackground", table.get("textHighlight"),
             "PasswordField.selectionForeground", table.get("textHighlightText"),
@@ -1182,7 +1182,7 @@
             "PasswordField.focusInputMap", passwordInputMap,
 
             "TextArea.caretForeground", black,
-            "TextArea.caretBlinkRate", new Integer(500),
+            "TextArea.caretBlinkRate", Integer.valueOf(500),
             "TextArea.inactiveForeground", table.get("textInactiveText"),
             "TextArea.selectionBackground", table.get("textHighlight"),
             "TextArea.selectionForeground", table.get("textHighlightText"),
@@ -1193,7 +1193,7 @@
             "TextArea.focusInputMap", multilineInputMap,
 
             "TextPane.caretForeground", black,
-            "TextPane.caretBlinkRate", new Integer(500),
+            "TextPane.caretBlinkRate", Integer.valueOf(500),
             "TextPane.inactiveForeground", table.get("textInactiveText"),
             "TextPane.selectionBackground", lightGray,
             "TextPane.selectionForeground", table.get("textHighlightText"),
@@ -1204,7 +1204,7 @@
             "TextPane.focusInputMap", multilineInputMap,
 
             "EditorPane.caretForeground", red,
-            "EditorPane.caretBlinkRate", new Integer(500),
+            "EditorPane.caretBlinkRate", Integer.valueOf(500),
             "EditorPane.inactiveForeground", table.get("textInactiveText"),
             "EditorPane.selectionBackground", lightGray,
             "EditorPane.selectionForeground", table.get("textHighlightText"),
--- a/src/share/classes/com/sun/java/swing/plaf/windows/WindowsLookAndFeel.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/com/sun/java/swing/plaf/windows/WindowsLookAndFeel.java	Wed May 14 07:53:12 2008 -0700
@@ -299,9 +299,9 @@
         initResourceBundle(table);
 
         // *** Shared Fonts
-        Integer twelve = new Integer(12);
-        Integer fontPlain = new Integer(Font.PLAIN);
-        Integer fontBold = new Integer(Font.BOLD);
+        Integer twelve = Integer.valueOf(12);
+        Integer fontPlain = Integer.valueOf(Font.PLAIN);
+        Integer fontBold = Integer.valueOf(Font.BOLD);
 
         Object dialogPlain12 = new SwingLazyValue(
                                "javax.swing.plaf.FontUIResource",
@@ -522,19 +522,19 @@
                                                        toolkit);
         Object WindowBorderWidth      = new DesktopProperty(
                                                        "win.frame.sizingBorderWidth",
-                                                       new Integer(1),
+                                                       Integer.valueOf(1),
                                                        toolkit);
         Object TitlePaneHeight        = new DesktopProperty(
                                                        "win.frame.captionHeight",
-                                                       new Integer(18),
+                                                       Integer.valueOf(18),
                                                        toolkit);
         Object TitleButtonWidth       = new DesktopProperty(
                                                        "win.frame.captionButtonWidth",
-                                                       new Integer(16),
+                                                       Integer.valueOf(16),
                                                        toolkit);
         Object TitleButtonHeight      = new DesktopProperty(
                                                        "win.frame.captionButtonHeight",
-                                                       new Integer(16),
+                                                       Integer.valueOf(16),
                                                        toolkit);
         Object InactiveTextColor      = new DesktopProperty(
                                                        "win.text.grayedTextColor",
@@ -567,7 +567,7 @@
         Object IconFont = ControlFont;
 
         Object scrollBarWidth = new DesktopProperty("win.scrollbar.width",
-                                                    new Integer(16), toolkit);
+                                                    Integer.valueOf(16), toolkit);
 
         Object menuBarHeight = new DesktopProperty("win.menu.height",
                                                    null, toolkit);
@@ -673,12 +673,12 @@
             "Button.disabledForeground", InactiveTextColor,
             "Button.disabledShadow", ControlHighlightColor,
             "Button.focus", black,
-            "Button.dashedRectGapX", new XPValue(new Integer(3), new Integer(5)),
-            "Button.dashedRectGapY", new XPValue(new Integer(3), new Integer(4)),
-            "Button.dashedRectGapWidth", new XPValue(new Integer(6), new Integer(10)),
-            "Button.dashedRectGapHeight", new XPValue(new Integer(6), new Integer(8)),
-            "Button.textShiftOffset", new XPValue(new Integer(0),
-                                                  new Integer(1)),
+            "Button.dashedRectGapX", new XPValue(Integer.valueOf(3), Integer.valueOf(5)),
+            "Button.dashedRectGapY", new XPValue(Integer.valueOf(3), Integer.valueOf(4)),
+            "Button.dashedRectGapWidth", new XPValue(Integer.valueOf(6), Integer.valueOf(10)),
+            "Button.dashedRectGapHeight", new XPValue(Integer.valueOf(6), Integer.valueOf(8)),
+            "Button.textShiftOffset", new XPValue(Integer.valueOf(0),
+                                                  Integer.valueOf(1)),
             // W2K keyboard navigation hidding.
             "Button.showMnemonics", showMnemonics,
             "Button.focusInputMap",
@@ -780,7 +780,7 @@
                }),
 
             // DesktopIcon
-            "DesktopIcon.width", new Integer(160),
+            "DesktopIcon.width", Integer.valueOf(160),
 
             "EditorPane.font", ControlFont,
             "EditorPane.background", WindowBackgroundColor,
@@ -814,9 +814,9 @@
                                                                "icons/NewFolder.gif"),
             "FileChooser.useSystemExtensionHiding", Boolean.TRUE,
 
-            "FileChooser.lookInLabelMnemonic", new Integer(KeyEvent.VK_I),
-            "FileChooser.fileNameLabelMnemonic", new Integer(KeyEvent.VK_N),
-            "FileChooser.filesOfTypeLabelMnemonic", new Integer(KeyEvent.VK_T),
+            "FileChooser.lookInLabelMnemonic", Integer.valueOf(KeyEvent.VK_I),
+            "FileChooser.fileNameLabelMnemonic", Integer.valueOf(KeyEvent.VK_N),
+            "FileChooser.filesOfTypeLabelMnemonic", Integer.valueOf(KeyEvent.VK_T),
             "FileChooser.usesSingleFilePane", Boolean.TRUE,
             "FileChooser.noPlacesBar", new DesktopProperty("win.comdlg.noPlacesBar",
                                                            Boolean.FALSE, toolkit),
@@ -1021,10 +1021,10 @@
             "Menu.selectionBackground", SelectionBackgroundColor,
             "Menu.acceleratorForeground", MenuTextColor,
             "Menu.acceleratorSelectionForeground", SelectionTextColor,
-            "Menu.menuPopupOffsetX", new Integer(0),
-            "Menu.menuPopupOffsetY", new Integer(0),
-            "Menu.submenuPopupOffsetX", new Integer(-4),
-            "Menu.submenuPopupOffsetY", new Integer(-3),
+            "Menu.menuPopupOffsetX", Integer.valueOf(0),
+            "Menu.menuPopupOffsetY", Integer.valueOf(0),
+            "Menu.submenuPopupOffsetX", Integer.valueOf(-4),
+            "Menu.submenuPopupOffsetY", Integer.valueOf(-3),
             "Menu.crossMenuMnemonic", Boolean.FALSE,
             "Menu.preserveTopLevelSelection", Boolean.TRUE,
 
@@ -1184,8 +1184,8 @@
             "ProgressBar.highlight", ControlHighlightColor,
             "ProgressBar.selectionForeground", ControlBackgroundColor,
             "ProgressBar.selectionBackground", SelectionBackgroundColor,
-            "ProgressBar.cellLength", new Integer(7),
-            "ProgressBar.cellSpacing", new Integer(2),
+            "ProgressBar.cellLength", Integer.valueOf(7),
+            "ProgressBar.cellSpacing", Integer.valueOf(2),
             "ProgressBar.indeterminateInsets", new Insets(3, 3, 3, 3),
 
             // *** RootPane.
@@ -1292,7 +1292,7 @@
             "SplitPane.highlight", ControlHighlightColor,
             "SplitPane.shadow", ControlShadowColor,
             "SplitPane.darkShadow", ControlDarkShadowColor,
-            "SplitPane.dividerSize", new Integer(5),
+            "SplitPane.dividerSize", Integer.valueOf(5),
             "SplitPane.ancestorInputMap",
                new UIDefaults.LazyInputMap(new Object[] {
                         "UP", "negativeIncrement",
@@ -1496,7 +1496,7 @@
             "ToggleButton.light", ControlLightColor,
             "ToggleButton.highlight", ControlHighlightColor,
             "ToggleButton.focus", ControlTextColor,
-            "ToggleButton.textShiftOffset", new Integer(1),
+            "ToggleButton.textShiftOffset", Integer.valueOf(1),
             "ToggleButton.focusInputMap",
               new UIDefaults.LazyInputMap(new Object[] {
                             "SPACE", "pressed",
@@ -1548,8 +1548,8 @@
             "Tree.background", WindowBackgroundColor,
             "Tree.foreground", WindowTextColor,
             "Tree.hash", gray,
-            "Tree.leftChildIndent", new Integer(8),
-            "Tree.rightChildIndent", new Integer(11),
+            "Tree.leftChildIndent", Integer.valueOf(8),
+            "Tree.rightChildIndent", Integer.valueOf(11),
             "Tree.textForeground", WindowTextColor,
             "Tree.textBackground", WindowBackgroundColor,
             "Tree.selectionForeground", SelectionTextColor,
@@ -2488,18 +2488,18 @@
         private int direction;
 
         XPDLUValue(int xpdlu, int classicdlu, int direction) {
-            super(new Integer(xpdlu), new Integer(classicdlu));
+            super(Integer.valueOf(xpdlu), Integer.valueOf(classicdlu));
             this.direction = direction;
         }
 
         public Object getXPValue(UIDefaults table) {
             int px = dluToPixels(((Integer)xpValue).intValue(), direction);
-            return new Integer(px);
+            return Integer.valueOf(px);
         }
 
         public Object getClassicValue(UIDefaults table) {
             int px = dluToPixels(((Integer)classicValue).intValue(), direction);
-            return new Integer(px);
+            return Integer.valueOf(px);
         }
     }
 
--- a/src/share/classes/java/awt/Button.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/java/awt/Button.java	Wed May 14 07:53:12 2008 -0700
@@ -597,7 +597,7 @@
         public String getAccessibleActionDescription(int i) {
             if (i == 0) {
                 // [[[PENDING:  WDW -- need to provide a localized string]]]
-                return new String("click");
+                return "click";
             } else {
                 return null;
             }
--- a/src/share/classes/java/awt/Color.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/java/awt/Color.java	Wed May 14 07:53:12 2008 -0700
@@ -51,6 +51,7 @@
  * http://www.w3.org/pub/WWW/Graphics/Color/sRGB.html
  * </A>.
  * <p>
+ * @version     10 Feb 1997
  * @author      Sami Shaio
  * @author      Arthur van Hoff
  * @see         ColorSpace
@@ -1176,23 +1177,32 @@
     }
 
     /**
-     * Creates and returns a {@link PaintContext} used to generate a solid
-     * color pattern.  This enables a <code>Color</code> object to be used
-     * as an argument to any method requiring an object implementing the
-     * {@link Paint} interface.
-     * The same <code>PaintContext</code> is returned, regardless of
-     * whether or not <code>r</code>, <code>r2d</code>,
-     * <code>xform</code>, or <code>hints</code> are <code>null</code>.
-     * @param cm the specified <code>ColorModel</code>
-     * @param r the specified {@link Rectangle}
-     * @param r2d the specified {@link Rectangle2D}
-     * @param xform the specified {@link AffineTransform}
-     * @param hints the specified {@link RenderingHints}
-     * @return a <code>PaintContext</code> that is used to generate a
-     *          solid color pattern.
+     * Creates and returns a {@link PaintContext} used to
+     * generate a solid color field pattern.
+     * See the {@link Paint#createContext specification} of the
+     * method in the {@link Paint} interface for information
+     * on null parameter handling.
+     *
+     * @param cm the preferred {@link ColorModel} which represents the most convenient
+     *           format for the caller to receive the pixel data, or {@code null}
+     *           if there is no preference.
+     * @param r the device space bounding box
+     *                     of the graphics primitive being rendered.
+     * @param r2d the user space bounding box
+     *                   of the graphics primitive being rendered.
+     * @param xform the {@link AffineTransform} from user
+     *              space into device space.
+     * @param hints the set of hints that the context object can use to
+     *              choose between rendering alternatives.
+     * @return the {@code PaintContext} for
+     *         generating color patterns.
      * @see Paint
      * @see PaintContext
-     * @see Graphics2D#setPaint
+     * @see ColorModel
+     * @see Rectangle
+     * @see Rectangle2D
+     * @see AffineTransform
+     * @see RenderingHints
      */
     public synchronized PaintContext createContext(ColorModel cm, Rectangle r,
                                                    Rectangle2D r2d,
--- a/src/share/classes/java/awt/Component.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/java/awt/Component.java	Wed May 14 07:53:12 2008 -0700
@@ -635,7 +635,9 @@
      */
     private PropertyChangeSupport changeSupport;
 
-    private transient final Object changeSupportLock = new Object();
+    // Note: this field is considered final, though readObject() prohibits
+    // initializing final fields.
+    private transient Object changeSupportLock = new Object();
     private Object getChangeSupportLock() {
         return changeSupportLock;
     }
@@ -1004,7 +1006,7 @@
 
     /**
      * Gets this component's locking object (the object that owns the thread
-     * sychronization monitor) for AWT component-tree and layout
+     * synchronization monitor) for AWT component-tree and layout
      * operations.
      * @return this component's locking object
      */
@@ -1327,12 +1329,15 @@
             KeyboardFocusManager.clearMostRecentFocusOwner(this);
             synchronized (getTreeLock()) {
                 enabled = false;
-                if (isFocusOwner()) {
+                // A disabled lw container is allowed to contain a focus owner.
+                if ((isFocusOwner() || (containsFocus() && !isLightweight())) &&
+                    KeyboardFocusManager.isAutoFocusTransferEnabled())
+                {
                     // Don't clear the global focus owner. If transferFocus
                     // fails, we want the focus to stay on the disabled
                     // Component so that keyboard traversal, et. al. still
                     // makes sense to the user.
-                    autoTransferFocus(false);
+                    transferFocus(false);
                 }
                 ComponentPeer peer = this.peer;
                 if (peer != null) {
@@ -1493,8 +1498,8 @@
             synchronized (getTreeLock()) {
                 visible = false;
                 mixOnHiding(isLightweight());
-                if (containsFocus()) {
-                    autoTransferFocus(true);
+                if (containsFocus() && KeyboardFocusManager.isAutoFocusTransferEnabled()) {
+                    transferFocus(true);
                 }
                 ComponentPeer peer = this.peer;
                 if (peer != null) {
@@ -6581,12 +6586,8 @@
         }
 
         synchronized (getTreeLock()) {
-            if (isFocusOwner()
-                && KeyboardFocusManager.isAutoFocusTransferEnabled()
-                && !nextFocusHelper())
-            {
-                KeyboardFocusManager.getCurrentKeyboardFocusManager().
-                    clearGlobalFocusOwner();
+            if (isFocusOwner() && KeyboardFocusManager.isAutoFocusTransferEnabledFor(this)) {
+                transferFocus(true);
             }
 
             if (getContainer() != null && isAddNotifyComplete) {
@@ -6721,8 +6722,8 @@
 
         firePropertyChange("focusable", oldFocusable, focusable);
         if (oldFocusable && !focusable) {
-            if (isFocusOwner()) {
-                autoTransferFocus(true);
+            if (isFocusOwner() && KeyboardFocusManager.isAutoFocusTransferEnabled()) {
+                transferFocus(true);
             }
             KeyboardFocusManager.clearMostRecentFocusOwner(this);
         }
@@ -7376,69 +7377,6 @@
         }
     }
 
-    private void autoTransferFocus(boolean clearOnFailure) {
-        Component toTest = KeyboardFocusManager.
-            getCurrentKeyboardFocusManager().getFocusOwner();
-        if (toTest != this) {
-            if (toTest != null) {
-                toTest.autoTransferFocus(clearOnFailure);
-            }
-            return;
-        }
-
-        // Check if there are pending focus requests.  We shouldn't do
-        // auto-transfer if user has already took care of this
-        // component becoming ineligible to hold focus.
-        if (!KeyboardFocusManager.isAutoFocusTransferEnabled()) {
-            return;
-        }
-
-        // the following code will execute only if this Component is the focus
-        // owner
-
-        if (!(isDisplayable() && isVisible() && isEnabled() && isFocusable())) {
-            doAutoTransfer(clearOnFailure);
-            return;
-        }
-
-        toTest = getParent();
-
-        while (toTest != null && !(toTest instanceof Window)) {
-            if (!(toTest.isDisplayable() && toTest.isVisible() &&
-                  (toTest.isEnabled() || toTest.isLightweight()))) {
-                doAutoTransfer(clearOnFailure);
-                return;
-            }
-            toTest = toTest.getParent();
-        }
-    }
-    private void doAutoTransfer(boolean clearOnFailure) {
-        if (focusLog.isLoggable(Level.FINER)) {
-            focusLog.log(Level.FINER, "this = " + this + ", clearOnFailure = " + clearOnFailure);
-        }
-        if (clearOnFailure) {
-            if (!nextFocusHelper()) {
-                if (focusLog.isLoggable(Level.FINER)) {
-                    focusLog.log(Level.FINER, "clear global focus owner");
-                }
-                KeyboardFocusManager.getCurrentKeyboardFocusManager().
-                    clearGlobalFocusOwner();
-            }
-        } else {
-            transferFocus();
-        }
-    }
-
-    /**
-     * Transfers the focus to the next component, as though this Component were
-     * the focus owner.
-     * @see       #requestFocus()
-     * @since     JDK1.1
-     */
-    public void transferFocus() {
-        nextFocus();
-    }
-
     /**
      * Returns the Container which is the focus cycle root of this Component's
      * focus traversal cycle. Each focus traversal cycle has only a single
@@ -7478,31 +7416,51 @@
         return (rootAncestor == container);
     }
 
+    Container getTraversalRoot() {
+        return getFocusCycleRootAncestor();
+    }
+
+    /**
+     * Transfers the focus to the next component, as though this Component were
+     * the focus owner.
+     * @see       #requestFocus()
+     * @since     JDK1.1
+     */
+    public void transferFocus() {
+        nextFocus();
+    }
+
     /**
      * @deprecated As of JDK version 1.1,
      * replaced by transferFocus().
      */
     @Deprecated
     public void nextFocus() {
-        nextFocusHelper();
-    }
-
-    private boolean nextFocusHelper() {
-        Component toFocus = preNextFocusHelper();
+        transferFocus(false);
+    }
+
+    boolean transferFocus(boolean clearOnFailure) {
         if (focusLog.isLoggable(Level.FINER)) {
-            focusLog.log(Level.FINER, "toFocus = " + toFocus);
-        }
-        if (isFocusOwner() && toFocus == this) {
-            return false;
-        }
-        return postNextFocusHelper(toFocus, CausedFocusEvent.Cause.TRAVERSAL_FORWARD);
-    }
-
-    Container getTraversalRoot() {
-        return getFocusCycleRootAncestor();
-    }
-
-    final Component preNextFocusHelper() {
+            focusLog.finer("clearOnFailure = " + clearOnFailure);
+        }
+        Component toFocus = getNextFocusCandidate();
+        boolean res = false;
+        if (toFocus != null && !toFocus.isFocusOwner() && toFocus != this) {
+            res = toFocus.requestFocusInWindow(CausedFocusEvent.Cause.TRAVERSAL_FORWARD);
+        }
+        if (clearOnFailure && !res) {
+            if (focusLog.isLoggable(Level.FINER)) {
+                focusLog.finer("clear global focus owner");
+            }
+            KeyboardFocusManager.getCurrentKeyboardFocusManager().clearGlobalFocusOwner();
+        }
+        if (focusLog.isLoggable(Level.FINER)) {
+            focusLog.finer("returning result: " + res);
+        }
+        return res;
+    }
+
+    final Component getNextFocusCandidate() {
         Container rootAncestor = getTraversalRoot();
         Component comp = this;
         while (rootAncestor != null &&
@@ -7514,18 +7472,19 @@
             rootAncestor = comp.getFocusCycleRootAncestor();
         }
         if (focusLog.isLoggable(Level.FINER)) {
-            focusLog.log(Level.FINER, "comp = " + comp + ", root = " + rootAncestor);
-        }
+            focusLog.finer("comp = " + comp + ", root = " + rootAncestor);
+        }
+        Component candidate = null;
         if (rootAncestor != null) {
             FocusTraversalPolicy policy = rootAncestor.getFocusTraversalPolicy();
             Component toFocus = policy.getComponentAfter(rootAncestor, comp);
             if (focusLog.isLoggable(Level.FINER)) {
-                focusLog.log(Level.FINER, "component after is " + toFocus);
+                focusLog.finer("component after is " + toFocus);
             }
             if (toFocus == null) {
                 toFocus = policy.getDefaultComponent(rootAncestor);
                 if (focusLog.isLoggable(Level.FINER)) {
-                    focusLog.log(Level.FINER, "default component is " + toFocus);
+                    focusLog.finer("default component is " + toFocus);
                 }
             }
             if (toFocus == null) {
@@ -7534,23 +7493,12 @@
                     toFocus = applet;
                 }
             }
-            return toFocus;
-        }
-        return null;
-    }
-
-    static boolean postNextFocusHelper(Component toFocus, CausedFocusEvent.Cause cause) {
-        if (toFocus != null) {
-            if (focusLog.isLoggable(Level.FINER)) {
-                focusLog.log(Level.FINER, "Next component " + toFocus);
-            }
-            boolean res = toFocus.requestFocusInWindow(cause);
-            if (focusLog.isLoggable(Level.FINER)) {
-                focusLog.log(Level.FINER, "Request focus returned " + res);
-            }
-            return res;
-        }
-        return false;
+            candidate = toFocus;
+        }
+        if (focusLog.isLoggable(Level.FINER)) {
+            focusLog.finer("Focus transfer candidate: " + candidate);
+        }
+        return candidate;
     }
 
     /**
@@ -7560,6 +7508,10 @@
      * @since     1.4
      */
     public void transferFocusBackward() {
+        transferFocusBackward(false);
+    }
+
+    boolean transferFocusBackward(boolean clearOnFailure) {
         Container rootAncestor = getTraversalRoot();
         Component comp = this;
         while (rootAncestor != null &&
@@ -7570,6 +7522,7 @@
             comp = rootAncestor;
             rootAncestor = comp.getFocusCycleRootAncestor();
         }
+        boolean res = false;
         if (rootAncestor != null) {
             FocusTraversalPolicy policy = rootAncestor.getFocusTraversalPolicy();
             Component toFocus = policy.getComponentBefore(rootAncestor, comp);
@@ -7577,9 +7530,19 @@
                 toFocus = policy.getDefaultComponent(rootAncestor);
             }
             if (toFocus != null) {
-                toFocus.requestFocusInWindow(CausedFocusEvent.Cause.TRAVERSAL_BACKWARD);
-            }
-        }
+                res = toFocus.requestFocusInWindow(CausedFocusEvent.Cause.TRAVERSAL_BACKWARD);
+            }
+        }
+        if (!res) {
+            if (focusLog.isLoggable(Level.FINER)) {
+                focusLog.finer("clear global focus owner");
+            }
+            KeyboardFocusManager.getCurrentKeyboardFocusManager().clearGlobalFocusOwner();
+        }
+        if (focusLog.isLoggable(Level.FINER)) {
+            focusLog.finer("returning result: " + res);
+        }
+        return res;
     }
 
     /**
@@ -7654,6 +7617,20 @@
         return hasFocus();
     }
 
+    /*
+     * Used to disallow auto-focus-transfer on disposal of the focus owner
+     * in the process of disposing its parent container.
+     */
+    private boolean autoFocusTransferOnDisposal = true;
+
+    void setAutoFocusTransferOnDisposal(boolean value) {
+        autoFocusTransferOnDisposal = value;
+    }
+
+    boolean isAutoFocusTransferOnDisposal() {
+        return autoFocusTransferOnDisposal;
+    }
+
     /**
      * Adds the specified popup menu to the component.
      * @param     popup the popup menu to be added to the component.
@@ -8315,6 +8292,8 @@
     private void readObject(ObjectInputStream s)
       throws ClassNotFoundException, IOException
     {
+        changeSupportLock = new Object();
+
         s.defaultReadObject();
 
         appContext = AppContext.getAppContext();
--- a/src/share/classes/java/awt/Container.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/java/awt/Container.java	Wed May 14 07:53:12 2008 -0700
@@ -2660,9 +2660,26 @@
         synchronized (getTreeLock()) {
             int ncomponents = this.ncomponents;
             Component component[] = this.component;
-            for (int i = ncomponents-1 ; i >= 0 ; i--) {
-                if( component[i] != null )
-                component[i].removeNotify();
+            for (int i = ncomponents - 1; i >= 0; i--) {
+                if( component[i] != null ) {
+                    // Fix for 6607170.
+                    // We want to suppress focus change on disposal
+                    // of the focused component. But because of focus
+                    // is asynchronous, we should suppress focus change
+                    // on every component in case it receives native focus
+                    // in the process of disposal.
+                    component[i].setAutoFocusTransferOnDisposal(false);
+                    component[i].removeNotify();
+                    component[i].setAutoFocusTransferOnDisposal(true);
+                }
+            }
+            // If some of the children had focus before disposal then it still has.
+            // Auto-transfer focus to the next (or previous) component if auto-transfer
+            // is enabled.
+            if (containsFocus() && KeyboardFocusManager.isAutoFocusTransferEnabledFor(this)) {
+                if (!transferFocus(false)) {
+                    transferFocusBackward(true);
+                }
             }
             if ( dispatcher != null ) {
                 dispatcher.dispose();
--- a/src/share/classes/java/awt/DefaultKeyboardFocusManager.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/java/awt/DefaultKeyboardFocusManager.java	Wed May 14 07:53:12 2008 -0700
@@ -155,12 +155,13 @@
                                    boolean clearOnFailure)
     {
         if (toFocus != vetoedComponent && toFocus.isShowing() && toFocus.isFocusable() &&
-            toFocus.requestFocus(false, CausedFocusEvent.Cause.ROLLBACK)) {
+            toFocus.requestFocus(false, CausedFocusEvent.Cause.ROLLBACK))
+        {
             return true;
         } else {
-            Component nextFocus = toFocus.preNextFocusHelper();
-            if (nextFocus != vetoedComponent
-                && Component.postNextFocusHelper(nextFocus, CausedFocusEvent.Cause.ROLLBACK))
+            Component nextFocus = toFocus.getNextFocusCandidate();
+            if (nextFocus != null && nextFocus != vetoedComponent &&
+                nextFocus.requestFocusInWindow(CausedFocusEvent.Cause.ROLLBACK))
             {
                 return true;
             } else if (clearOnFailure) {
@@ -504,9 +505,16 @@
                 {
                     // we should not accept focus on such component, so reject it.
                     dequeueKeyEvents(-1, newFocusOwner);
-                    if (KeyboardFocusManager.isAutoFocusTransferEnabled())
-                    {
-                        restoreFocus(fe, newFocusedWindow);
+                    if (KeyboardFocusManager.isAutoFocusTransferEnabled()) {
+                        // If FOCUS_GAINED is for a disposed component (however
+                        // it shouldn't happen) its toplevel parent is null. In this
+                        // case we have to try to restore focus in the current focused
+                        // window (for the details: 6607170).
+                        if (newFocusedWindow == null) {
+                            restoreFocus(fe, currentFocusedWindow);
+                        } else {
+                            restoreFocus(fe, newFocusedWindow);
+                        }
                     }
                     break;
                 }
@@ -1078,6 +1086,9 @@
                     focusNextComponent(focusedComponent);
                 }
                 return;
+            } else if (e.getID() == KeyEvent.KEY_PRESSED) {
+                // Fix for 6637607: consumeNextKeyTyped should be reset.
+                consumeNextKeyTyped = false;
             }
 
             toTest = focusedComponent.getFocusTraversalKeys(
--- a/src/share/classes/java/awt/GradientPaint.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/java/awt/GradientPaint.java	Wed May 14 07:53:12 2008 -0700
@@ -53,6 +53,7 @@
  *
  * @see Paint
  * @see Graphics2D#setPaint
+ * @version 10 Feb 1997
  */
 
 public class GradientPaint implements Paint {
@@ -223,19 +224,32 @@
     }
 
     /**
-     * Creates and returns a context used to generate the color pattern.
-     * @param cm {@link ColorModel} that receives
-     * the <code>Paint</code> data. This is used only as a hint.
-     * @param deviceBounds the device space bounding box of the
-     * graphics primitive being rendered
-     * @param userBounds the user space bounding box of the
-     * graphics primitive being rendered
+     * Creates and returns a {@link PaintContext} used to
+     * generate a linear color gradient pattern.
+     * See the {@link Paint#createContext specification} of the
+     * method in the {@link Paint} interface for information
+     * on null parameter handling.
+     *
+     * @param cm the preferred {@link ColorModel} which represents the most convenient
+     *           format for the caller to receive the pixel data, or {@code null}
+     *           if there is no preference.
+     * @param deviceBounds the device space bounding box
+     *                     of the graphics primitive being rendered.
+     * @param userBounds the user space bounding box
+     *                   of the graphics primitive being rendered.
      * @param xform the {@link AffineTransform} from user
-     *     space into device space
-     * @param hints the hints that the context object uses to choose
-     * between rendering alternatives
-     * @return the {@link PaintContext} that generates color patterns.
+     *              space into device space.
+     * @param hints the set of hints that the context object can use to
+     *              choose between rendering alternatives.
+     * @return the {@code PaintContext} for
+     *         generating color patterns.
+     * @see Paint
      * @see PaintContext
+     * @see ColorModel
+     * @see Rectangle
+     * @see Rectangle2D
+     * @see AffineTransform
+     * @see RenderingHints
      */
     public PaintContext createContext(ColorModel cm,
                                       Rectangle deviceBounds,
--- a/src/share/classes/java/awt/KeyboardFocusManager.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/java/awt/KeyboardFocusManager.java	Wed May 14 07:53:12 2008 -0700
@@ -2578,6 +2578,10 @@
         }
     }
 
+    static boolean isAutoFocusTransferEnabledFor(Component comp) {
+        return isAutoFocusTransferEnabled() && comp.isAutoFocusTransferOnDisposal();
+    }
+
     /*
      * Used to process exceptions in dispatching focus event (in focusLost/focusGained callbacks).
      * @param ex previously caught exception that may be processed right here, or null
--- a/src/share/classes/java/awt/LinearGradientPaint.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/java/awt/LinearGradientPaint.java	Wed May 14 07:53:12 2008 -0700
@@ -296,7 +296,32 @@
     }
 
     /**
-     * {@inheritDoc}
+     * Creates and returns a {@link PaintContext} used to
+     * generate a linear color gradient pattern.
+     * See the {@link Paint#createContext specification} of the
+     * method in the {@link Paint} interface for information
+     * on null parameter handling.
+     *
+     * @param cm the preferred {@link ColorModel} which represents the most convenient
+     *           format for the caller to receive the pixel data, or {@code null}
+     *           if there is no preference.
+     * @param deviceBounds the device space bounding box
+     *                     of the graphics primitive being rendered.
+     * @param userBounds the user space bounding box
+     *                   of the graphics primitive being rendered.
+     * @param transform the {@link AffineTransform} from user
+     *              space into device space.
+     * @param hints the set of hints that the context object can use to
+     *              choose between rendering alternatives.
+     * @return the {@code PaintContext} for
+     *         generating color patterns.
+     * @see Paint
+     * @see PaintContext
+     * @see ColorModel
+     * @see Rectangle
+     * @see Rectangle2D
+     * @see AffineTransform
+     * @see RenderingHints
      */
     public PaintContext createContext(ColorModel cm,
                                       Rectangle deviceBounds,
--- a/src/share/classes/java/awt/MenuItem.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/java/awt/MenuItem.java	Wed May 14 07:53:12 2008 -0700
@@ -847,7 +847,7 @@
         public String getAccessibleActionDescription(int i) {
             if (i == 0) {
                 // [[[PENDING:  WDW -- need to provide a localized string]]]
-                return new String("click");
+                return "click";
             } else {
                 return null;
             }
--- a/src/share/classes/java/awt/Paint.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/java/awt/Paint.java	Wed May 14 07:53:12 2008 -0700
@@ -46,42 +46,58 @@
  * @see GradientPaint
  * @see TexturePaint
  * @see Graphics2D#setPaint
+ * @version 1.36, 06/05/07
  */
 
 public interface Paint extends Transparency {
     /**
      * Creates and returns a {@link PaintContext} used to
      * generate the color pattern.
-     * Since the ColorModel argument to createContext is only a
-     * hint, implementations of Paint should accept a null argument
-     * for ColorModel.  Note that if the application does not
-     * prefer a specific ColorModel, the null ColorModel argument
-     * will give the Paint implementation full leeway in using the
-     * most efficient ColorModel it prefers for its raster processing.
-     * <p>
-     * Since the API documentation was not specific about this in
-     * releases before 1.4, there may be implementations of
-     * <code>Paint</code> that do not accept a null
-     * <code>ColorModel</code> argument.
-     * If a developer is writing code which passes a null
-     * <code>ColorModel</code> argument to the
-     * <code>createContext</code> method of <code>Paint</code>
-     * objects from arbitrary sources it would be wise to code defensively
-     * by manufacturing a non-null <code>ColorModel</code> for those
-     * objects which throw a <code>NullPointerException</code>.
-     * @param cm the {@link ColorModel} that receives the
-     * <code>Paint</code> data. This is used only as a hint.
+     * The arguments to this method convey additional information
+     * about the rendering operation that may be
+     * used or ignored on various implementations of the {@code Paint} interface.
+     * A caller must pass non-{@code null} values for all of the arguments
+     * except for the {@code ColorModel} argument which may be {@code null} to
+     * indicate that no specific {@code ColorModel} type is preferred.
+     * Implementations of the {@code Paint} interface are allowed to use or ignore
+     * any of the arguments as makes sense for their function, and are
+     * not constrained to use the specified {@code ColorModel} for the returned
+     * {@code PaintContext}, even if it is not {@code null}.
+     * Implementations are allowed to throw {@code NullPointerException} for
+     * any {@code null} argument other than the {@code ColorModel} argument,
+     * but are not required to do so.
+     *
+     * @param cm the preferred {@link ColorModel} which represents the most convenient
+     *           format for the caller to receive the pixel data, or {@code null}
+     *           if there is no preference.
      * @param deviceBounds the device space bounding box
-     *                     of the graphics primitive being rendered
+     *                     of the graphics primitive being rendered.
+     *                     Implementations of the {@code Paint} interface
+     *                     are allowed to throw {@code NullPointerException}
+     *                     for a {@code null} {@code deviceBounds}.
      * @param userBounds the user space bounding box
-     *                     of the graphics primitive being rendered
+     *                   of the graphics primitive being rendered.
+     *                     Implementations of the {@code Paint} interface
+     *                     are allowed to throw {@code NullPointerException}
+     *                     for a {@code null} {@code userBounds}.
      * @param xform the {@link AffineTransform} from user
-     *      space into device space
-     * @param hints the hint that the context object uses to
-     *              choose between rendering alternatives
-     * @return the <code>PaintContext</code> for
-     *              generating color patterns
+     *              space into device space.
+     *                     Implementations of the {@code Paint} interface
+     *                     are allowed to throw {@code NullPointerException}
+     *                     for a {@code null} {@code xform}.
+     * @param hints the set of hints that the context object can use to
+     *              choose between rendering alternatives.
+     *                     Implementations of the {@code Paint} interface
+     *                     are allowed to throw {@code NullPointerException}
+     *                     for a {@code null} {@code hints}.
+     * @return the {@code PaintContext} for
+     *         generating color patterns.
      * @see PaintContext
+     * @see ColorModel
+     * @see Rectangle
+     * @see Rectangle2D
+     * @see AffineTransform
+     * @see RenderingHints
      */
     public PaintContext createContext(ColorModel cm,
                                       Rectangle deviceBounds,
--- a/src/share/classes/java/awt/RadialGradientPaint.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/java/awt/RadialGradientPaint.java	Wed May 14 07:53:12 2008 -0700
@@ -543,7 +543,31 @@
     }
 
     /**
-     * {@inheritDoc}
+     * Creates and returns a {@link PaintContext} used to
+     * generate a circular radial color gradient pattern.
+     * See the description of the {@link Paint#createContext createContext} method
+     * for information on null parameter handling.
+     *
+     * @param cm the preferred {@link ColorModel} which represents the most convenient
+     *           format for the caller to receive the pixel data, or {@code null}
+     *           if there is no preference.
+     * @param deviceBounds the device space bounding box
+     *                     of the graphics primitive being rendered.
+     * @param userBounds the user space bounding box
+     *                   of the graphics primitive being rendered.
+     * @param transform the {@link AffineTransform} from user
+     *              space into device space.
+     * @param hints the set of hints that the context object can use to
+     *              choose between rendering alternatives.
+     * @return the {@code PaintContext} for
+     *         generating color patterns.
+     * @see Paint
+     * @see PaintContext
+     * @see ColorModel
+     * @see Rectangle
+     * @see Rectangle2D
+     * @see AffineTransform
+     * @see RenderingHints
      */
     public PaintContext createContext(ColorModel cm,
                                       Rectangle deviceBounds,
--- a/src/share/classes/java/awt/TexturePaint.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/java/awt/TexturePaint.java	Wed May 14 07:53:12 2008 -0700
@@ -45,6 +45,7 @@
  * replicated <code>Rectangle2D</code>.
  * @see Paint
  * @see Graphics2D#setPaint
+ * @version 1.48, 06/05/07
  */
 
 public class TexturePaint implements Paint {
@@ -93,20 +94,32 @@
     }
 
     /**
-     * Creates and returns a context used to generate the color pattern.
-     * @param cm the {@link ColorModel} that receives the
-     * <code>Paint</code> data. This is used only as a hint.
-     * @param deviceBounds the device space bounding box of the graphics
-     * primitive being rendered
-     * @param userBounds the user space bounding box of the graphics
-     * primitive being rendered
-     * @param xform the {@link AffineTransform} from user space
-     *          into device space
-     * @param hints a {@link RenderingHints} object that can be used to
-     *          specify how the pattern is ultimately rendered
-     * @return the {@link PaintContext} used for generating color
-     *          patterns.
+     * Creates and returns a {@link PaintContext} used to
+     * generate a tiled image pattern.
+     * See the {@link Paint#createContext specification} of the
+     * method in the {@link Paint} interface for information
+     * on null parameter handling.
+     *
+     * @param cm the preferred {@link ColorModel} which represents the most convenient
+     *           format for the caller to receive the pixel data, or {@code null}
+     *           if there is no preference.
+     * @param deviceBounds the device space bounding box
+     *                     of the graphics primitive being rendered.
+     * @param userBounds the user space bounding box
+     *                   of the graphics primitive being rendered.
+     * @param xform the {@link AffineTransform} from user
+     *              space into device space.
+     * @param hints the set of hints that the context object can use to
+     *              choose between rendering alternatives.
+     * @return the {@code PaintContext} for
+     *         generating color patterns.
+     * @see Paint
      * @see PaintContext
+     * @see ColorModel
+     * @see Rectangle
+     * @see Rectangle2D
+     * @see AffineTransform
+     * @see RenderingHints
      */
     public PaintContext createContext(ColorModel cm,
                                       Rectangle deviceBounds,
--- a/src/share/classes/java/awt/datatransfer/SystemFlavorMap.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/java/awt/datatransfer/SystemFlavorMap.java	Wed May 14 07:53:12 2008 -0700
@@ -298,7 +298,7 @@
                     while (continueLine(line)) {
                         String nextLine = in.readLine();
                         if (nextLine == null) {
-                            nextLine = new String("");
+                            nextLine = "";
                         }
                         String loppedLine =
                             line.substring(0, line.length() - 1);
@@ -313,7 +313,7 @@
                         }
                         nextLine = nextLine.substring(startIndex,
                                                       nextLine.length());
-                        line = new String(loppedLine+nextLine);
+                        line = loppedLine+nextLine;
                     }
 
                     // Find start of key
--- a/src/share/classes/java/awt/dnd/DragGestureEvent.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/java/awt/dnd/DragGestureEvent.java	Wed May 14 07:53:12 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1998-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1998-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -55,9 +55,19 @@
  * platform dependent drag initiating gesture has occurred
  * on the <code>Component</code> that it is tracking.
  *
+ * The {@code action} field of any {@code DragGestureEvent} instance should take one of the following
+ * values:
+ * <ul>
+ * <li> {@code DnDConstants.ACTION_COPY}
+ * <li> {@code DnDConstants.ACTION_MOVE}
+ * <li> {@code DnDConstants.ACTION_LINK}
+ * </ul>
+ * Assigning the value different from listed above will cause an unspecified behavior.
+ *
  * @see java.awt.dnd.DragGestureRecognizer
  * @see java.awt.dnd.DragGestureListener
  * @see java.awt.dnd.DragSource
+ * @see java.awt.dnd.DnDConstants
  */
 
 public class DragGestureEvent extends EventObject {
@@ -65,19 +75,25 @@
     private static final long serialVersionUID = 9080172649166731306L;
 
     /**
-     * Constructs a <code>DragGestureEvent</code> given the
-     * <code>DragGestureRecognizer</code> firing this event,
-     * an <code>int</code> representing
-     * the user's preferred action, a <code>Point</code>
-     * indicating the origin of the drag, and a <code>List</code>
-     * of events that comprise the gesture.
+     * Constructs a <code>DragGestureEvent</code> object given by the
+     * <code>DragGestureRecognizer</code> instance firing this event,
+     * an {@code act} parameter representing
+     * the user's preferred action, an {@code ori} parameter
+     * indicating the origin of the drag, and a {@code List} of
+     * events that comprise the gesture({@code evs} parameter).
      * <P>
      * @param dgr The <code>DragGestureRecognizer</code> firing this event
-     * @param act The the user's preferred action
+     * @param act The user's preferred action.
+     *            For information on allowable values, see
+     *            the class description for {@link DragGestureEvent}
      * @param ori The origin of the drag
      * @param evs The <code>List</code> of events that comprise the gesture
      * <P>
-     * @throws IllegalArgumentException if input parameters are {@code null}
+     * @throws IllegalArgumentException if any parameter equals {@code null}
+     * @throws IllegalArgumentException if the act parameter does not comply with
+     *                                  the values given in the class
+     *                                  description for {@link DragGestureEvent}
+     * @see java.awt.dnd.DnDConstants
      */
 
     public DragGestureEvent(DragGestureRecognizer dgr, int act, Point ori,
--- a/src/share/classes/java/awt/dnd/DropTargetEvent.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/java/awt/dnd/DropTargetEvent.java	Wed May 14 07:53:12 2008 -0700
@@ -45,10 +45,13 @@
     private static final long serialVersionUID = 2821229066521922993L;
 
     /**
-     * Construct a <code>DropTargetEvent</code> with
-     * a specified <code>DropTargetContext</code>.
+     * Construct a <code>DropTargetEvent</code> object with
+     * the specified <code>DropTargetContext</code>.
      * <P>
-     * @param dtc the <code>DropTargetContext</code>
+     * @param dtc The <code>DropTargetContext</code>
+     * @throws NullPointerException if {@code dtc} equals {@code null}.
+     * @see #getSource()
+     * @see #getDropTargetContext()
      */
 
     public DropTargetEvent(DropTargetContext dtc) {
--- a/src/share/classes/java/awt/event/ActionEvent.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/java/awt/event/ActionEvent.java	Wed May 14 07:53:12 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1996-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1996-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -45,6 +45,10 @@
  * is therefore spared the details of processing individual mouse movements
  * and mouse clicks, and can instead process a "meaningful" (semantic)
  * event like "button pressed".
+ * <p>
+ * An unspecified behavior will be caused if the {@code id} parameter
+ * of any particular {@code ActionEvent} instance is not
+ * in the range from {@code ACTION_FIRST} to {@code ACTION_LAST}.
  *
  * @see ActionListener
  * @see <a href="http://java.sun.com/docs/books/tutorial/post1.0/ui/eventmodel.html">Tutorial: Java 1.1 Event Model</a>
@@ -134,18 +138,22 @@
     /**
      * Constructs an <code>ActionEvent</code> object.
      * <p>
-     * Note that passing in an invalid <code>id</code> results in
-     * unspecified behavior. This method throws an
+     * This method throws an
      * <code>IllegalArgumentException</code> if <code>source</code>
      * is <code>null</code>.
      * A <code>null</code> <code>command</code> string is legal,
      * but not recommended.
      *
-     * @param source  the object that originated the event
-     * @param id      an integer that identifies the event
-     * @param command a string that may specify a command (possibly one
+     * @param source  The object that originated the event
+     * @param id      An integer that identifies the event.
+     *                     For information on allowable values, see
+     *                     the class description for {@link ActionEvent}
+     * @param command A string that may specify a command (possibly one
      *                of several) associated with the event
      * @throws IllegalArgumentException if <code>source</code> is null
+     * @see #getSource()
+     * @see #getID()
+     * @see #getActionCommand()
      */
     public ActionEvent(Object source, int id, String command) {
         this(source, id, command, 0);
@@ -154,19 +162,27 @@
     /**
      * Constructs an <code>ActionEvent</code> object with modifier keys.
      * <p>
-     * Note that passing in an invalid <code>id</code> results in
-     * unspecified behavior. This method throws an
+     * This method throws an
      * <code>IllegalArgumentException</code> if <code>source</code>
      * is <code>null</code>.
      * A <code>null</code> <code>command</code> string is legal,
      * but not recommended.
      *
-     * @param source    the object that originated the event
-     * @param id        an integer that identifies the event
-     * @param command   a string that may specify a command (possibly one
-     *                  of several) associated with the event
-     * @param modifiers the modifier keys held down during this action
+     * @param source  The object that originated the event
+     * @param id      An integer that identifies the event.
+     *                     For information on allowable values, see
+     *                     the class description for {@link ActionEvent}
+     * @param command A string that may specify a command (possibly one
+     *                of several) associated with the event
+     * @param modifiers The modifier keys down during event
+     *                  (shift, ctrl, alt, meta).
+     *                  Passing negative parameter is not recommended.
+     *                  Zero value means that no modifiers were passed
      * @throws IllegalArgumentException if <code>source</code> is null
+     * @see #getSource()
+     * @see #getID()
+     * @see #getActionCommand()
+     * @see #getModifiers()
      */
     public ActionEvent(Object source, int id, String command, int modifiers) {
         this(source, id, command, 0, modifiers);
@@ -176,20 +192,31 @@
      * Constructs an <code>ActionEvent</code> object with the specified
      * modifier keys and timestamp.
      * <p>
-     * Note that passing in an invalid <code>id</code> results in
-     * unspecified behavior. This method throws an
+     * This method throws an
      * <code>IllegalArgumentException</code> if <code>source</code>
      * is <code>null</code>.
      * A <code>null</code> <code>command</code> string is legal,
      * but not recommended.
      *
-     * @param source    the object that originated the event
-     * @param id        an integer that identifies the event
-     * @param command   a string that may specify a command (possibly one
-     *                  of several) associated with the event
-     * @param when      the time the event occurred
-     * @param modifiers the modifier keys held down during this action
+     * @param source    The object that originated the event
+     * @param id      An integer that identifies the event.
+     *                     For information on allowable values, see
+     *                     the class description for {@link ActionEvent}
+     * @param command A string that may specify a command (possibly one
+     *                of several) associated with the event
+     * @param modifiers The modifier keys down during event
+     *                  (shift, ctrl, alt, meta).
+     *                  Passing negative parameter is not recommended.
+     *                  Zero value means that no modifiers were passed
+     * @param when   A long that gives the time the event occurred.
+     *               Passing negative or zero value
+     *               is not recommended
      * @throws IllegalArgumentException if <code>source</code> is null
+     * @see #getSource()
+     * @see #getID()
+     * @see #getActionCommand()
+     * @see #getModifiers()
+     * @see #getWhen()
      *
      * @since 1.4
      */
--- a/src/share/classes/java/awt/event/AdjustmentEvent.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/java/awt/event/AdjustmentEvent.java	Wed May 14 07:53:12 2008 -0700
@@ -29,7 +29,25 @@
 import java.awt.AWTEvent;
 
 /**
- * The adjustment event emitted by Adjustable objects.
+ * The adjustment event emitted by Adjustable objects like
+ * {@link java.awt.Scrollbar} and {@link java.awt.ScrollPane}.
+ * When the user changes the value of the scrolling component,
+ * it receives an instance of {@code AdjustmentEvent}.
+ * <p>
+ * An unspecified behavior will be caused if the {@code id} parameter
+ * of any particular {@code AdjustmentEvent} instance is not
+ * in the range from {@code ADJUSTMENT_FIRST} to {@code ADJUSTMENT_LAST}.
+ * <p>
+ * The {@code type} of any {@code AdjustmentEvent} instance takes one of the following
+ * values:
+ *                     <ul>
+ *                     <li> {@code UNIT_INCREMENT}
+ *                     <li> {@code UNIT_DECREMENT}
+ *                     <li> {@code BLOCK_INCREMENT}
+ *                     <li> {@code BLOCK_DECREMENT}
+ *                     <li> {@code TRACK}
+ *                     </ul>
+ * Assigning the value different from listed above will cause an unspecified behavior.
  * @see java.awt.Adjustable
  * @see AdjustmentListener
  *
@@ -130,17 +148,24 @@
      * Constructs an <code>AdjustmentEvent</code> object with the
      * specified <code>Adjustable</code> source, event type,
      * adjustment type, and value.
-     * <p>Note that passing in an invalid <code>id</code> results in
-     * unspecified behavior.  This method throws an
+     * <p> This method throws an
      * <code>IllegalArgumentException</code> if <code>source</code>
      * is <code>null</code>.
      *
-     * @param source the <code>Adjustable</code> object where the
+     * @param source The <code>Adjustable</code> object where the
      *               event originated
-     * @param id     the event type
-     * @param type   the adjustment type
-     * @param value  the current value of the adjustment
+     * @param id     An integer indicating the type of event.
+     *                     For information on allowable values, see
+     *                     the class description for {@link AdjustmentEvent}
+     * @param type   An integer indicating the adjustment type.
+     *                     For information on allowable values, see
+     *                     the class description for {@link AdjustmentEvent}
+     * @param value  The current value of the adjustment
      * @throws IllegalArgumentException if <code>source</code> is null
+     * @see #getSource()
+     * @see #getID()
+     * @see #getAdjustmentType()
+     * @see #getValue()
      */
     public AdjustmentEvent(Adjustable source, int id, int type, int value) {
         this(source, id, type, value, false);
@@ -149,22 +174,29 @@
     /**
      * Constructs an <code>AdjustmentEvent</code> object with the
      * specified Adjustable source, event type, adjustment type, and value.
-     * <p>Note that passing in an invalid <code>id</code> results in
-     * unspecified behavior.  This method throws an
+     * <p> This method throws an
      * <code>IllegalArgumentException</code> if <code>source</code>
      * is <code>null</code>.
-
      *
-     * @param source the <code>Adjustable</code> object where the
+     * @param source The <code>Adjustable</code> object where the
      *               event originated
-     * @param id     the event type
-     * @param type   the adjustment type
-     * @param value  the current value of the adjustment
-     * @param isAdjusting <code>true</code> if the event is one
+     * @param id     An integer indicating the type of event.
+     *                     For information on allowable values, see
+     *                     the class description for {@link AdjustmentEvent}
+     * @param type   An integer indicating the adjustment type.
+     *                     For information on allowable values, see
+     *                     the class description for {@link AdjustmentEvent}
+     * @param value  The current value of the adjustment
+     * @param isAdjusting A boolean that equals <code>true</code> if the event is one
      *               of a series of multiple adjusting events,
      *               otherwise <code>false</code>
      * @throws IllegalArgumentException if <code>source</code> is null
      * @since 1.4
+     * @see #getSource()
+     * @see #getID()
+     * @see #getAdjustmentType()
+     * @see #getValue()
+     * @see #getValueIsAdjusting()
      */
     public AdjustmentEvent(Adjustable source, int id, int type, int value, boolean isAdjusting) {
         super(source, id);
--- a/src/share/classes/java/awt/event/ComponentEvent.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/java/awt/event/ComponentEvent.java	Wed May 14 07:53:12 2008 -0700
@@ -52,6 +52,10 @@
  * (<code>ComponentAdapter</code> objects implement the
  * <code>ComponentListener</code> interface.) Each such listener object
  * gets this <code>ComponentEvent</code> when the event occurs.
+ * <p>
+ * An unspecified behavior will be caused if the {@code id} parameter
+ * of any particular {@code ComponentEvent} instance is not
+ * in the range from {@code COMPONENT_FIRST} to {@code COMPONENT_LAST}.
  *
  * @see ComponentAdapter
  * @see ComponentListener
@@ -99,14 +103,17 @@
 
     /**
      * Constructs a <code>ComponentEvent</code> object.
-     * <p>Note that passing in an invalid <code>id</code> results in
-     * unspecified behavior. This method throws an
+     * <p> This method throws an
      * <code>IllegalArgumentException</code> if <code>source</code>
      * is <code>null</code>.
      *
-     * @param source the <code>Component</code> that originated the event
-     * @param id     an integer indicating the type of event
+     * @param source The <code>Component</code> that originated the event
+     * @param id     An integer indicating the type of event.
+     *                     For information on allowable values, see
+     *                     the class description for {@link ComponentEvent}
      * @throws IllegalArgumentException if <code>source</code> is null
+     * @see #getComponent()
+     * @see #getID()
      */
     public ComponentEvent(Component source, int id) {
         super(source, id);
--- a/src/share/classes/java/awt/event/ContainerEvent.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/java/awt/event/ContainerEvent.java	Wed May 14 07:53:12 2008 -0700
@@ -45,6 +45,10 @@
  * (<code>ContainerAdapter</code> objects implement the
  * <code>ContainerListener</code> interface.) Each such listener object
  * gets this <code>ContainerEvent</code> when the event occurs.
+ * <p>
+ * An unspecified behavior will be caused if the {@code id} parameter
+ * of any particular {@code ContainerEvent} instance is not
+ * in the range from {@code CONTAINER_FIRST} to {@code CONTAINER_LAST}.
  *
  * @see ContainerAdapter
  * @see ContainerListener
@@ -92,16 +96,20 @@
 
     /**
      * Constructs a <code>ContainerEvent</code> object.
-     * <p>Note that passing in an invalid <code>id</code> results in
-     * unspecified behavior. This method throws an
+     * <p> This method throws an
      * <code>IllegalArgumentException</code> if <code>source</code>
      * is <code>null</code>.
      *
-     * @param source the <code>Component</code> object (container)
+     * @param source The <code>Component</code> object (container)
      *               that originated the event
-     * @param id     an integer indicating the type of event
+     * @param id     An integer indicating the type of event.
+     *                     For information on allowable values, see
+     *                     the class description for {@link ContainerEvent}
      * @param child  the component that was added or removed
      * @throws IllegalArgumentException if <code>source</code> is null
+     * @see #getContainer()
+     * @see #getID()
+     * @see #getChild()
      */
     public ContainerEvent(Component source, int id, Component child) {
         super(source, id);
--- a/src/share/classes/java/awt/event/FocusEvent.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/java/awt/event/FocusEvent.java	Wed May 14 07:53:12 2008 -0700
@@ -50,6 +50,10 @@
  * reactivated. Both permanent and temporary focus events are delivered using
  * the FOCUS_GAINED and FOCUS_LOST event ids; the level may be distinguished in
  * the event using the isTemporary() method.
+ * <p>
+ * An unspecified behavior will be caused if the {@code id} parameter
+ * of any particular {@code FocusEvent} instance is not
+ * in the range from {@code FOCUS_FIRST} to {@code FOCUS_LAST}.
  *
  * @see FocusAdapter
  * @see FocusListener
@@ -121,18 +125,23 @@
      * application, with a Java application in a different VM,
      * or with no other <code>Component</code>, then the opposite
      * <code>Component</code> is <code>null</code>.
-     * <p>Note that passing in an invalid <code>id</code> results in
-     * unspecified behavior. This method throws an
+     * <p> This method throws an
      * <code>IllegalArgumentException</code> if <code>source</code>
      * is <code>null</code>.
      *
-     * @param source     the <code>Component</code> that originated the event
-     * @param id         <code>FOCUS_GAINED</code> or <code>FOCUS_LOST</code>
-     * @param temporary  <code>true</code> if the focus change is temporary;
+     * @param source     The <code>Component</code> that originated the event
+     * @param id         An integer indicating the type of event.
+     *                     For information on allowable values, see
+     *                     the class description for {@link FocusEvent}
+     * @param temporary  Equals <code>true</code> if the focus change is temporary;
      *                   <code>false</code> otherwise
-     * @param opposite   the other Component involved in the focus change,
+     * @param opposite   The other Component involved in the focus change,
      *                   or <code>null</code>
-     * @throws IllegalArgumentException if <code>source</code> is null
+     * @throws IllegalArgumentException if <code>source</code> equals {@code null}
+     * @see #getSource()
+     * @see #getID()
+     * @see #isTemporary()
+     * @see #getOppositeComponent()
      * @since 1.4
      */
     public FocusEvent(Component source, int id, boolean temporary,
@@ -145,16 +154,20 @@
     /**
      * Constructs a <code>FocusEvent</code> object and identifies
      * whether or not the change is temporary.
-     * <p>Note that passing in an invalid <code>id</code> results in
-     * unspecified behavior. This method throws an
+     * <p> This method throws an
      * <code>IllegalArgumentException</code> if <code>source</code>
      * is <code>null</code>.
      *
-     * @param source    the <code>Component</code> that originated the event
-     * @param id        an integer indicating the type of event
-     * @param temporary <code>true</code> if the focus change is temporary;
+     * @param source    The <code>Component</code> that originated the event
+     * @param id        An integer indicating the type of event.
+     *                     For information on allowable values, see
+     *                     the class description for {@link FocusEvent}
+     * @param temporary Equals <code>true</code> if the focus change is temporary;
      *                  <code>false</code> otherwise
-     * @throws IllegalArgumentException if <code>source</code> is null
+     * @throws IllegalArgumentException if <code>source</code> equals {@code null}
+     * @see #getSource()
+     * @see #getID()
+     * @see #isTemporary()
      */
     public FocusEvent(Component source, int id, boolean temporary) {
         this(source, id, temporary, null);
@@ -163,14 +176,17 @@
     /**
      * Constructs a <code>FocusEvent</code> object and identifies it
      * as a permanent change in focus.
-     * <p>Note that passing in an invalid <code>id</code> results in
-     * unspecified behavior. This method throws an
+     * <p> This method throws an
      * <code>IllegalArgumentException</code> if <code>source</code>
      * is <code>null</code>.
      *
-     * @param source    the <code>Component</code> that originated the event
-     * @param id        an integer indicating the type of event
-     * @throws IllegalArgumentException if <code>source</code> is null
+     * @param source    The <code>Component</code> that originated the event
+     * @param id        An integer indicating the type of event.
+     *                     For information on allowable values, see
+     *                     the class description for {@link FocusEvent}
+     * @throws IllegalArgumentException if <code>source</code> equals {@code null}
+     * @see #getSource()
+     * @see #getID()
      */
     public FocusEvent(Component source, int id) {
         this(source, id, false);
--- a/src/share/classes/java/awt/event/HierarchyEvent.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/java/awt/event/HierarchyEvent.java	Wed May 14 07:53:12 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1999-2004 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1999-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -31,7 +31,7 @@
 
 /**
  * An event which indicates a change to the <code>Component</code>
- * hierarchy to which a <code>Component</code> belongs.
+ * hierarchy to which <code>Component</code> belongs.
  * <ul>
  * <li>Hierarchy Change Events (HierarchyListener)
  *     <ul>
@@ -58,16 +58,30 @@
  * Container is added, removed, moved, or resized, and passed down the
  * hierarchy. It is also generated by a Component object when that object's
  * <code>addNotify</code>, <code>removeNotify</code>, <code>show</code>, or
- * <code>hide</code> method is called. ANCESTOR_MOVED and ANCESTOR_RESIZED
+ * <code>hide</code> method is called. The {@code ANCESTOR_MOVED} and
+ * {@code ANCESTOR_RESIZED}
  * events are dispatched to every <code>HierarchyBoundsListener</code> or
  * <code>HierarchyBoundsAdapter</code> object which registered to receive
  * such events using the Component's <code>addHierarchyBoundsListener</code>
  * method. (<code>HierarchyBoundsAdapter</code> objects implement the <code>
- * HierarchyBoundsListener</code> interface.) HIERARCHY_CHANGED events are
+ * HierarchyBoundsListener</code> interface.) The {@code HIERARCHY_CHANGED} events are
  * dispatched to every <code>HierarchyListener</code> object which registered
  * to receive such events using the Component's <code>addHierarchyListener
  * </code> method. Each such listener object gets this <code>HierarchyEvent
  * </code> when the event occurs.
+ * <p>
+ * An unspecified behavior will be caused if the {@code id} parameter
+ * of any particular {@code HierarchyEvent} instance is not
+ * in the range from {@code HIERARCHY_FIRST} to {@code HIERARCHY_LAST}.
+ * <br>
+ * The {@code changeFlags} parameter of any {@code HierarchyEvent} instance takes one of the following
+ * values:
+ * <ul>
+ * <li> {@code HierarchyEvent.PARENT_CHANGED}
+ * <li> {@code HierarchyEvent.DISPLAYABILITY_CHANGED}
+ * <li> {@code HierarchyEvent.SHOWING_CHANGED}
+ * </ul>
+ * Assigning the value different from listed above will cause unspecified behavior.
  *
  * @author      David Mendenhall
  * @see         HierarchyListener
@@ -108,20 +122,20 @@
     public static final int HIERARCHY_LAST = ANCESTOR_RESIZED;
 
     /**
-     * Indicates that the <code>HIERARCHY_CHANGED</code> event
+     * A change flag indicates that the <code>HIERARCHY_CHANGED</code> event
      * was generated by a reparenting operation.
      */
     public static final int PARENT_CHANGED = 0x1;
 
     /**
-     * Indicates that the <code>HIERARCHY_CHANGED</code> event
-     * was generated due to a change in the displayability
-     * of the hierarchy.  To discern the
-     * current displayability of the hierarchy, call
-     * <code>Component.isDisplayable</code>. Displayability changes occur
-     * in response to explicit or implicit calls to
+     * A change flag indicates that the <code>HIERARCHY_CHANGED</code> event
+     * was generated due to the changing of the hierarchy displayability.
+     * To discern the
+     * current displayability of the hierarchy, call the
+     * <code>Component.isDisplayable</code> method. Displayability changes occur
+     * in response to explicit or implicit calls of the
      * <code>Component.addNotify</code> and
-     * <code>Component.removeNotify</code>.
+     * <code>Component.removeNotify</code> methods.
      *
      * @see java.awt.Component#isDisplayable()
      * @see java.awt.Component#addNotify()
@@ -130,15 +144,15 @@
     public static final int DISPLAYABILITY_CHANGED = 0x2;
 
     /**
-     * Indicates that the <code>HIERARCHY_CHANGED</code> event
-     * was generated due to a change in the showing state
-     * of the hierarchy. To discern the
-     * current showing state of the hierarchy, call
-     * <code>Component.isShowing</code>. Showing state changes occur
+     * A change flag indicates that the <code>HIERARCHY_CHANGED</code> event
+     * was generated due to the changing of the hierarchy showing state.
+     * To discern the
+     * current showing state of the hierarchy, call the
+     * <code>Component.isShowing</code> method. Showing state changes occur
      * when either the displayability or visibility of the
      * hierarchy occurs. Visibility changes occur in response to explicit
-     * or implicit calls to <code>Component.show</code> and
-     * <code>Component.hide</code>.
+     * or implicit calls of the <code>Component.show</code> and
+     * <code>Component.hide</code> methods.
      *
      * @see java.awt.Component#isShowing()
      * @see java.awt.Component#addNotify()
@@ -155,20 +169,26 @@
     /**
      * Constructs an <code>HierarchyEvent</code> object to identify a
      * change in the <code>Component</code> hierarchy.
-     * <p>Note that passing in an invalid <code>id</code> results in
-     * unspecified behavior. This method throws an
+     * <p>This method throws an
      * <code>IllegalArgumentException</code> if <code>source</code>
      * is <code>null</code>.
      *
-     * @param source          the <code>Component</code> object that
+     * @param source          The <code>Component</code> object that
      *                        originated the event
-     * @param id              an integer indicating the type of event
-     * @param changed         the <code>Component</code> at the top of
+     * @param id              An integer indicating the type of event.
+     *                        For information on allowable values, see
+     *                        the class description for {@link HierarchyEvent}
+     * @param changed         The <code>Component</code> at the top of
      *                        the hierarchy which was changed
-     * @param changedParent   the parent of <code>changed</code>; this
+     * @param changedParent   The parent of the <code>changed</code> component.
+     *                        This
      *                        may be the parent before or after the
      *                        change, depending on the type of change
-     * @throws IllegalArgumentException if <code>source</code> is null
+     * @throws IllegalArgumentException if <code>source</code> is {@code null}
+     * @see #getSource()
+     * @see #getID()
+     * @see #getChanged()
+     * @see #getChangedParent()
      */
     public HierarchyEvent(Component source, int id, Component changed,
                           Container changedParent) {
@@ -180,23 +200,32 @@
     /**
      * Constructs an <code>HierarchyEvent</code> object to identify
      * a change in the <code>Component</code> hierarchy.
-     * <p>Note that passing in an invalid <code>id</code> results in
-     * unspecified behavior. This method throws an
+     * <p> This method throws an
      * <code>IllegalArgumentException</code> if <code>source</code>
      * is <code>null</code>.
      *
-     * @param source          the <code>Component</code> object that
+     * @param source          The <code>Component</code> object that
      *                        originated the event
-     * @param id              an integer indicating the type of event
-     * @param changed         the <code>Component</code> at the top
+     * @param id              An integer indicating the type of event.
+     *                        For information on allowable values, see
+     *                        the class description for {@link HierarchyEvent}
+     * @param changed         The <code>Component</code> at the top
      *                        of the hierarchy which was changed
-     * @param changedParent   the parent of <code>changed</code>; this
+     * @param changedParent   The parent of the <code>changed</code> component.
+     *                        This
      *                        may be the parent before or after the
      *                        change, depending on the type of change
-     * @param changeFlags     a bitmask which indicates the type(s) of
-     *                        <code>HIERARCHY_CHANGED</code> events
-     *                        represented in this event object
+     * @param changeFlags     A bitmask which indicates the type(s) of
+     *                        the <code>HIERARCHY_CHANGED</code> events
+     *                        represented in this event object.
+     *                        For information on allowable values, see
+     *                        the class description for {@link HierarchyEvent}
      * @throws IllegalArgumentException if <code>source</code> is null
+     * @see #getSource()
+     * @see #getID()
+     * @see #getChanged()
+     * @see #getChangedParent()
+     * @see #getChangeFlags()
      */
     public HierarchyEvent(Component source, int id, Component changed,
                           Container changedParent, long changeFlags) {
--- a/src/share/classes/java/awt/event/InputEvent.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/java/awt/event/InputEvent.java	Wed May 14 07:53:12 2008 -0700
@@ -208,17 +208,32 @@
     /**
      * Constructs an InputEvent object with the specified source component,
      * modifiers, and type.
-     * <p>Note that passing in an invalid <code>id</code> results in
-     * unspecified behavior. This method throws an
+     * <p> This method throws an
      * <code>IllegalArgumentException</code> if <code>source</code>
      * is <code>null</code>.
      *
      * @param source the object where the event originated
-     * @param id the event type
-     * @param when the time the event occurred
-     * @param modifiers represents the modifier keys and mouse buttons down
-     *                  while the event occurred
+     * @param id           the integer that identifies the event type.
+     *                     It is allowed to pass as parameter any value that
+     *                     allowed for some subclass of {@code InputEvent} class.
+     *                     Passing in the value different from those values result
+     *                     in unspecified behavior
+     * @param when         a long int that gives the time the event occurred.
+     *                     Passing negative or zero value
+     *                     is not recommended
+     * @param modifiers    the modifier keys down during event (e.g. shift, ctrl,
+     *                     alt, meta)
+     *                     Passing negative parameter is not recommended.
+     *                     Zero value means no modifiers.
+     *                     Either extended _DOWN_MASK or old _MASK modifiers
+     *                     should be used, but both models should not be mixed
+     *                     in one event. Use of the extended modifiers is
+     *                     preferred
      * @throws IllegalArgumentException if <code>source</code> is null
+     * @see #getSource()
+     * @see #getID()
+     * @see #getWhen()
+     * @see #getModifiers()
      */
     InputEvent(Component source, int id, long when, int modifiers) {
         super(source, id);
@@ -285,7 +300,8 @@
     }
 
     /**
-     * Returns the timestamp of when this event occurred.
+     * Returns the difference in milliseconds between the timestamp of when this event occurred and
+     * midnight, January 1, 1970 UTC.
      */
     public long getWhen() {
         return when;
@@ -358,7 +374,12 @@
      * Returns a String describing the extended modifier keys and
      * mouse buttons, such as "Shift", "Button1", or "Ctrl+Shift".
      * These strings can be localized by changing the
-     * awt.properties file.
+     * <code>awt.properties</code> file.
+     * <p>
+     * Note that passing negative parameter is incorrect,
+     * and will cause the returning an unspecified string.
+     * Zero parameter means that no modifiers were passed and will
+     * cause the returning an empty string.
      *
      * @param modifiers a modifier mask describing the extended
        *                modifier keys and mouse buttons for the event
--- a/src/share/classes/java/awt/event/InvocationEvent.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/java/awt/event/InvocationEvent.java	Wed May 14 07:53:12 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1998-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1998-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -39,6 +39,10 @@
  * can use this fact to write replacement functions for <code>invokeLater
  * </code> and <code>invokeAndWait</code> without writing special-case code
  * in any <code>AWTEventListener</code> objects.
+ * <p>
+ * An unspecified behavior will be caused if the {@code id} parameter
+ * of any particular {@code InvocationEvent} instance is not
+ * in the range from {@code INVOCATION_FIRST} to {@code INVOCATION_LAST}.
  *
  * @author      Fred Ecks
  * @author      David Mendenhall
@@ -123,12 +127,13 @@
      * <p> This method throws an <code>IllegalArgumentException</code>
      * if <code>source</code> is <code>null</code>.
      *
-     * @param source    the <code>Object</code> that originated the event
-     * @param runnable  the <code>Runnable</code> whose <code>run</code>
+     * @param source    The <code>Object</code> that originated the event
+     * @param runnable  The <code>Runnable</code> whose <code>run</code>
      *                  method will be executed
      * @throws IllegalArgumentException if <code>source</code> is null
      *
-     * @see     #InvocationEvent(Object, Runnable, Object, boolean)
+     * @see #getSource()
+     * @see #InvocationEvent(Object, Runnable, Object, boolean)
      */
     public InvocationEvent(Object source, Runnable runnable) {
         this(source, runnable, null, false);
@@ -147,15 +152,15 @@
      * <p>This method throws an <code>IllegalArgumentException</code>
      * if <code>source</code> is <code>null</code>.
      *
-     * @param source            the <code>Object</code> that originated
+     * @param source            The <code>Object</code> that originated
      *                          the event
-     * @param runnable          the <code>Runnable</code> whose
+     * @param runnable          The <code>Runnable</code> whose
      *                          <code>run</code> method will be
      *                          executed
-     * @param notifier          the Object whose <code>notifyAll</code>
+     * @param notifier          The {@code Object} whose <code>notifyAll</code>
      *                          method will be called after
      *                          <code>Runnable.run</code> has returned
-     * @param catchThrowables   specifies whether <code>dispatch</code>
+     * @param catchThrowables   Specifies whether <code>dispatch</code>
      *                          should catch Throwable when executing
      *                          the <code>Runnable</code>'s <code>run</code>
      *                          method, or should instead propagate those
@@ -163,6 +168,7 @@
      *                          dispatch loop
      * @throws IllegalArgumentException if <code>source</code> is null
      *
+     * @see #getSource()
      * @see     #InvocationEvent(Object, int, Runnable, Object, boolean)
      */
     public InvocationEvent(Object source, Runnable runnable, Object notifier,
@@ -176,26 +182,29 @@
      * method when dispatched.  If notifier is non-<code>null</code>,
      * <code>notifyAll</code> will be called on it
      * immediately after <code>run</code> returns.
-     * <p>Note that passing in an invalid <code>id</code> results in
-     * unspecified behavior. This method throws an
+     * <p>This method throws an
      * <code>IllegalArgumentException</code> if <code>source</code>
      * is <code>null</code>.
      *
-     * @param source            the <code>Object</code> that originated
+     * @param source            The <code>Object</code> that originated
      *                          the event
-     * @param id                the ID for the event
-     * @param runnable          the <code>Runnable</code> whose
+     * @param id     An integer indicating the type of event.
+     *                     For information on allowable values, see
+     *                     the class description for {@link InvocationEvent}
+     * @param runnable          The <code>Runnable</code> whose
      *                          <code>run</code> method will be executed
-     * @param notifier          the <code>Object</code> whose <code>notifyAll</code>
+     * @param notifier          The <code>Object</code> whose <code>notifyAll</code>
      *                          method will be called after
      *                          <code>Runnable.run</code> has returned
-     * @param catchThrowables   specifies whether <code>dispatch</code>
+     * @param catchThrowables   Specifies whether <code>dispatch</code>
      *                          should catch Throwable when executing the
      *                          <code>Runnable</code>'s <code>run</code>
      *                          method, or should instead propagate those
      *                          Throwables to the EventDispatchThread's
      *                          dispatch loop
      * @throws IllegalArgumentException if <code>source</code> is null
+     * @see #getSource()
+     * @see #getID()
      */
     protected InvocationEvent(Object source, int id, Runnable runnable,
                               Object notifier, boolean catchThrowables) {
--- a/src/share/classes/java/awt/event/ItemEvent.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/java/awt/event/ItemEvent.java	Wed May 14 07:53:12 2008 -0700
@@ -41,6 +41,18 @@
  * spared the details of processing individual mouse movements and mouse
  * clicks, and can instead process a "meaningful" (semantic) event like
  * "item selected" or "item deselected".
+ * <p>
+ * An unspecified behavior will be caused if the {@code id} parameter
+ * of any particular {@code ItemEvent} instance is not
+ * in the range from {@code ITEM_FIRST} to {@code ITEM_LAST}.
+ * <p>
+ * The {@code stateChange} of any {@code ItemEvent} instance takes one of the following
+ * values:
+ *                     <ul>
+ *                     <li> {@code ItemEvent.SELECTED}
+ *                     <li> {@code ItemEvent.DESELECTED}
+ *                     </ul>
+ * Assigning the value different from listed above will cause an unspecified behavior.
  *
  * @author Carl Quinn
  *
@@ -101,19 +113,24 @@
 
     /**
      * Constructs an <code>ItemEvent</code> object.
-     * <p>Note that passing in an invalid <code>id</code> results in
-     * unspecified behavior. This method throws an
+     * <p> This method throws an
      * <code>IllegalArgumentException</code> if <code>source</code>
      * is <code>null</code>.
      *
-     * @param source the <code>ItemSelectable</code> object
+     * @param source The <code>ItemSelectable</code> object
      *               that originated the event
-     * @param id     an integer that identifies the event type
-     * @param item   an object -- the item affected by the event
-     * @param stateChange
-     *               an integer that indicates whether the item was
-     *               selected or deselected
+     * @param id           The integer that identifies the event type.
+     *                     For information on allowable values, see
+     *                     the class description for {@link ItemEvent}
+     * @param item   An object -- the item affected by the event
+     * @param stateChange  An integer that indicates whether the item was
+     *               selected or deselected.
+     *                     For information on allowable values, see
+     *                     the class description for {@link ItemEvent}
      * @throws IllegalArgumentException if <code>source</code> is null
+     * @see #getItemSelectable()
+     * @see #getID()
+     * @see #getStateChange()
      */
     public ItemEvent(ItemSelectable source, int id, Object item, int stateChange) {
         super(source, id);
--- a/src/share/classes/java/awt/event/KeyEvent.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/java/awt/event/KeyEvent.java	Wed May 14 07:53:12 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1996-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1996-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -128,6 +128,10 @@
  * (VK_ENTER, VK_BACK_SPACE, and VK_TAB), do not rely on the values of the VK_
  * constants.  Sun reserves the right to change these values as needed
  * to accomodate a wider range of keyboards in the future.
+ * <p>
+ * An unspecified behavior will be caused if the {@code id} parameter
+ * of any particular {@code KeyEvent} instance is not
+ * in the range from {@code KEY_FIRST} to {@code KEY_LAST}.
  *
  * @author Carl Quinn
  * @author Amy Fowler
@@ -914,27 +918,32 @@
 
     /**
      * Constructs a <code>KeyEvent</code> object.
-     * <p>Note that passing in an invalid <code>id</code> results in
-     * unspecified behavior. This method throws an
+     * <p>This method throws an
      * <code>IllegalArgumentException</code> if <code>source</code>
      * is <code>null</code>.
      *
-     * @param source    the <code>Component</code> that originated the event
-     * @param id        an integer identifying the type of event
-     * @param when      a long integer that specifies the time the event
-     *                  occurred
-     * @param modifiers the modifier keys down during event (shift, ctrl,
-     *                  alt, meta)
-     *                  Either extended _DOWN_MASK or old _MASK modifiers
-     *                  should be used, but both models should not be mixed
-     *                  in one event. Use of the extended modifiers is
-     *                  preferred.
-     * @param keyCode   the integer code for an actual key, or VK_UNDEFINED
+     * @param source    The <code>Component</code> that originated the event
+     * @param id              An integer indicating the type of event.
+     *                  For information on allowable values, see
+     *                  the class description for {@link KeyEvent}
+     * @param when      A long integer that specifies the time the event
+     *                  occurred.
+     *                     Passing negative or zero value
+     *                     is not recommended
+     * @param modifiers The modifier keys down during event (shift, ctrl,
+     *                  alt, meta).
+     *                     Passing negative value
+     *                     is not recommended.
+     *                     Zero value means that no modifiers were passed.
+     *                  Use either an extended _DOWN_MASK or old _MASK modifiers,
+     *                  however do not mix models in the one event.
+     *                  The extended modifiers are preferred for using
+     * @param keyCode   The integer code for an actual key, or VK_UNDEFINED
      *                  (for a key-typed event)
-     * @param keyChar   the Unicode character generated by this event, or
+     * @param keyChar   The Unicode character generated by this event, or
      *                  CHAR_UNDEFINED (for key-pressed and key-released
      *                  events which do not map to a valid Unicode character)
-     * @param keyLocation  identifies the key location.  The only legal
+     * @param keyLocation  Identifies the key location.  The only legal
      *        values are <code>KEY_LOCATION_UNKNOWN</code>,
      *        <code>KEY_LOCATION_STANDARD</code>, <code>KEY_LOCATION_LEFT</code>,
      *        <code>KEY_LOCATION_RIGHT</code>, and <code>KEY_LOCATION_NUMPAD</code>.
@@ -948,6 +957,13 @@
      *     or if <code>keyLocation</code> is not one of the legal
      *       values enumerated above.
      * @throws IllegalArgumentException if <code>source</code> is null
+     * @see #getSource()
+     * @see #getID()
+     * @see #getWhen()
+     * @see #getModifiers()
+     * @see #getKeyCode()
+     * @see #getKeyChar()
+     * @see #getKeyLocation()
      * @since 1.4
      */
     public KeyEvent(Component source, int id, long when, int modifiers,
@@ -982,24 +998,29 @@
 
     /**
      * Constructs a <code>KeyEvent</code> object.
-     * <p>Note that passing in an invalid <code>id</code> results in
-     * unspecified behavior. This method throws an
+     * <p> This method throws an
      * <code>IllegalArgumentException</code> if <code>source</code>
      * is <code>null</code>.
      *
-     * @param source    the <code>Component</code> that originated the event
-     * @param id        an integer identifying the type of event
-     * @param when      a long integer that specifies the time the event
-     *                  occurred
-     * @param modifiers the modifier keys down during event (shift, ctrl,
-     *                  alt, meta)
-     *                  Either extended _DOWN_MASK or old _MASK modifiers
-     *                  should be used, but both models should not be mixed
-     *                  in one event. Use of the extended modifiers is
-     *                  preferred.
-     * @param keyCode   the integer code for an actual key, or VK_UNDEFINED
+     * @param source    The <code>Component</code> that originated the event
+     * @param id              An integer indicating the type of event.
+     *                  For information on allowable values, see
+     *                  the class description for {@link KeyEvent}
+     * @param when      A long integer that specifies the time the event
+     *                  occurred.
+     *                     Passing negative or zero value
+     *                     is not recommended
+     * @param modifiers The modifier keys down during event (shift, ctrl,
+     *                  alt, meta).
+     *                     Passing negative value
+     *                     is not recommended.
+     *                     Zero value means that no modifiers were passed.
+     *                  Use either an extended _DOWN_MASK or old _MASK modifiers,
+     *                  however do not mix models in the one event.
+     *                  The extended modifiers are preferred for using
+     * @param keyCode   The integer code for an actual key, or VK_UNDEFINED
      *                  (for a key-typed event)
-     * @param keyChar   the Unicode character generated by this event, or
+     * @param keyChar   The Unicode character generated by this event, or
      *                  CHAR_UNDEFINED (for key-pressed and key-released
      *                  events which do not map to a valid Unicode character)
      * @throws IllegalArgumentException  if <code>id</code> is
@@ -1008,6 +1029,12 @@
      *     <code>KEY_TYPED</code> and <code>keyCode</code> is not
      *     <code>VK_UNDEFINED</code>
      * @throws IllegalArgumentException if <code>source</code> is null
+     * @see #getSource()
+     * @see #getID()
+     * @see #getWhen()
+     * @see #getModifiers()
+     * @see #getKeyCode()
+     * @see #getKeyChar()
      */
     public KeyEvent(Component source, int id, long when, int modifiers,
                     int keyCode, char keyChar) {
--- a/src/share/classes/java/awt/event/MouseEvent.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/java/awt/event/MouseEvent.java	Wed May 14 07:53:12 2008 -0700
@@ -159,6 +159,11 @@
  * The reported coordinates for mouse drag events are clipped to fit within the
  * bounds of the virtual device associated with the <code>Component</code>.
  * </ul>
+ * <p>
+ * An unspecified behavior will be caused if the {@code id} parameter
+ * of any particular {@code MouseEvent} instance is not
+ * in the range from {@code MOUSE_FIRST} to {@code MOUSE_LAST}-1
+ * ({@code MOUSE_WHEEL} is not acceptable).
  *
  * @author Carl Quinn
  *
@@ -418,8 +423,7 @@
      * specified source component,
      * type, modifiers, coordinates, and click count.
      * <p>
-     * Note that passing in an invalid <code>id</code> results in
-     * unspecified behavior.  Creating an invalid event (such
+     * Creating an invalid event (such
      * as by using more than one of the old _MASKs, or modifier/button
      * values which don't match) results in unspecified behavior.
      * An invocation of the form
@@ -435,28 +439,44 @@
      * <code>IllegalArgumentException</code> if <code>source</code>
      * is <code>null</code>.
      *
-     * @param source       the <code>Component</code> that originated the event
-     * @param id           the integer that identifies the event
-     * @param when         a long int that gives the time the event occurred
-     * @param modifiers    the modifier keys down during event (e.g. shift, ctrl,
+     * @param source       The <code>Component</code> that originated the event
+     * @param id              An integer indicating the type of event.
+     *                     For information on allowable values, see
+     *                     the class description for {@link MouseEvent}
+     * @param when         A long integer that gives the time the event occurred.
+     *                     Passing negative or zero value
+     *                     is not recommended
+     * @param modifiers    The modifier keys down during event (e.g. shift, ctrl,
      *                     alt, meta)
-     *                     Either extended _DOWN_MASK or old _MASK modifiers
-     *                     should be used, but both models should not be mixed
-     *                     in one event. Use of the extended modifiers is
-     *                     preferred.
-     * @param x            the horizontal x coordinate for the mouse location
-     * @param y            the vertical y coordinate for the mouse location
-     * @param clickCount   the number of mouse clicks associated with event
-     * @param popupTrigger a boolean, true if this event is a trigger for a
-     *                     popup menu
-     * @param button       which of the mouse buttons has changed state.
-     *                      <code>NOBUTTON</code>,
-     *                      <code>BUTTON1</code>,
-     *                      <code>BUTTON2</code> or
-     *                      <code>BUTTON3</code>.
+     *                     Passing negative parameter
+     *                     is not recommended.
+     *                     Zero value means that no modifiers were passed.
+     *                     Use either an extended _DOWN_MASK or old _MASK modifiers,
+     *                     however do not mix models in the one event.
+     *                     The extended modifiers are preferred for using
+     * @param x            The horizontal x coordinate for the mouse location.
+     *                       It is allowed to pass negative values
+     * @param y            The vertical y coordinate for the mouse location.
+     *                       It is allowed to pass negative values
+     * @param clickCount   The number of mouse clicks associated with event.
+     *                       Passing negative value
+     *                       is not recommended
+     * @param popupTrigger A boolean that equals {@code true} if this event
+     *                     is a trigger for a popup menu
+     * @param button       An integer that indicates, which of the mouse buttons has
+     *                     changed its state
      * @throws IllegalArgumentException if an invalid <code>button</code>
      *            value is passed in
      * @throws IllegalArgumentException if <code>source</code> is null
+     * @see #getSource()
+     * @see #getID()
+     * @see #getWhen()
+     * @see #getModifiers()
+     * @see #getX()
+     * @see #getY()
+     * @see #getClickCount()
+     * @see #isPopupTrigger()
+     * @see #getButton()
      * @since 1.4
      */
     public MouseEvent(Component source, int id, long when, int modifiers,
@@ -479,8 +499,6 @@
      * Constructs a <code>MouseEvent</code> object with the
      * specified source component,
      * type, modifiers, coordinates, and click count.
-     * <p>Note that passing in an invalid <code>id</code> results in
-     * unspecified behavior.
      * An invocation of the form
      * <tt>MouseEvent(source, id, when, modifiers, x, y, clickCount, popupTrigger)</tt>
      * behaves in exactly the same way as the invocation
@@ -493,21 +511,39 @@
      * This method throws an <code>IllegalArgumentException</code>
      * if <code>source</code> is <code>null</code>.
      *
-     * @param source       the <code>Component</code> that originated the event
-     * @param id           the integer that identifies the event
-     * @param when         a long int that gives the time the event occurred
-     * @param modifiers    the modifier keys down during event (e.g. shift, ctrl,
+     * @param source       The <code>Component</code> that originated the event
+     * @param id              An integer indicating the type of event.
+     *                     For information on allowable values, see
+     *                     the class description for {@link MouseEvent}
+     * @param when         A long integer that gives the time the event occurred.
+     *                     Passing negative or zero value
+     *                     is not recommended
+     * @param modifiers    The modifier keys down during event (e.g. shift, ctrl,
      *                     alt, meta)
-     *                     Either extended _DOWN_MASK or old _MASK modifiers
-     *                     should be used, but both models should not be mixed
-     *                     in one event. Use of the extended modifiers is
-     *                     preferred.
-     * @param x            the horizontal x coordinate for the mouse location
-     * @param y            the vertical y coordinate for the mouse location
-     * @param clickCount   the number of mouse clicks associated with event
-     * @param popupTrigger a boolean, true if this event is a trigger for a
-     *                     popup menu
+     *                     Passing negative parameter
+     *                     is not recommended.
+     *                     Zero value means that no modifiers were passed.
+     *                     Use either an extended _DOWN_MASK or old _MASK modifiers,
+     *                     however do not mix models in the one event.
+     *                     The extended modifiers are preferred for using
+     * @param x            The horizontal x coordinate for the mouse location.
+     *                       It is allowed to pass negative values
+     * @param y            The vertical y coordinate for the mouse location.
+     *                       It is allowed to pass negative values
+     * @param clickCount   The number of mouse clicks associated with event.
+     *                       Passing negative value
+     *                       is not recommended
+     * @param popupTrigger A boolean that equals {@code true} if this event
+     *                     is a trigger for a popup menu
      * @throws IllegalArgumentException if <code>source</code> is null
+     * @see #getSource()
+     * @see #getID()
+     * @see #getWhen()
+     * @see #getModifiers()
+     * @see #getX()
+     * @see #getY()
+     * @see #getClickCount()
+     * @see #isPopupTrigger()
      */
      public MouseEvent(Component source, int id, long when, int modifiers,
                       int x, int y, int clickCount, boolean popupTrigger) {
@@ -520,8 +556,7 @@
      * specified source component,
      * type, modifiers, coordinates, absolute coordinates, and click count.
      * <p>
-     * Note that passing in an invalid <code>id</code> results in
-     * unspecified behavior.  Creating an invalid event (such
+     * Creating an invalid event (such
      * as by using more than one of the old _MASKs, or modifier/button
      * values which don't match) results in unspecified behavior.
      * Even if inconsistent values for relative and absolute coordinates are
@@ -531,30 +566,50 @@
      * <code>IllegalArgumentException</code> if <code>source</code>
      * is <code>null</code>.
      *
-     * @param source       the <code>Component</code> that originated the event
-     * @param id           the integer that identifies the event
-     * @param when         a long int that gives the time the event occurred
-     * @param modifiers    the modifier keys down during event (e.g. shift, ctrl,
+     * @param source       The <code>Component</code> that originated the event
+     * @param id              An integer indicating the type of event.
+     *                     For information on allowable values, see
+     *                     the class description for {@link MouseEvent}
+     * @param when         A long integer that gives the time the event occurred.
+     *                     Passing negative or zero value
+     *                     is not recommended
+     * @param modifiers    The modifier keys down during event (e.g. shift, ctrl,
      *                     alt, meta)
-     *                     Either extended _DOWN_MASK or old _MASK modifiers
-     *                     should be used, but both models should not be mixed
-     *                     in one event. Use of the extended modifiers is
-     *                     preferred.
-     * @param x            the horizontal x coordinate for the mouse location
-     * @param y            the vertical y coordinate for the mouse location
-     * @param xAbs         the absolute horizontal x coordinate for the mouse location
-     * @param yAbs         the absolute vertical y coordinate for the mouse location
-     * @param clickCount   the number of mouse clicks associated with event
-     * @param popupTrigger a boolean, true if this event is a trigger for a
-     *                     popup menu
-     * @param button       which of the mouse buttons has changed state.
-     *                      <code>NOBUTTON</code>,
-     *                      <code>BUTTON1</code>,
-     *                      <code>BUTTON2</code> or
-     *                      <code>BUTTON3</code>.
+     *                     Passing negative parameter
+     *                     is not recommended.
+     *                     Zero value means that no modifiers were passed.
+     *                     Use either an extended _DOWN_MASK or old _MASK modifiers,
+     *                     however do not mix models in the one event.
+     *                     The extended modifiers are preferred for using
+     * @param x            The horizontal x coordinate for the mouse location.
+     *                       It is allowed to pass negative values
+     * @param y            The vertical y coordinate for the mouse location.
+     *                       It is allowed to pass negative values
+     * @param xAbs           The absolute horizontal x coordinate for the mouse location
+     *                       It is allowed to pass negative values
+     * @param yAbs           The absolute vertical y coordinate for the mouse location
+     *                       It is allowed to pass negative values
+     * @param clickCount   The number of mouse clicks associated with event.
+     *                       Passing negative value
+     *                       is not recommended
+     * @param popupTrigger A boolean that equals {@code true} if this event
+     *                     is a trigger for a popup menu
+     * @param button       An integer that indicates, which of the mouse buttons has
+     *                     changed its state
      * @throws IllegalArgumentException if an invalid <code>button</code>
      *            value is passed in
      * @throws IllegalArgumentException if <code>source</code> is null
+     * @see #getSource()
+     * @see #getID()
+     * @see #getWhen()
+     * @see #getModifiers()
+     * @see #getX()
+     * @see #getY()
+     * @see #getXOnScreen()
+     * @see #getYOnScreen()
+     * @see #getClickCount()
+     * @see #isPopupTrigger()
+     * @see #getButton()
      * @since 1.6
      */
     public MouseEvent(Component source, int id, long when, int modifiers,
@@ -675,21 +730,26 @@
     }
 
     /**
-     * Returns a <code>String</code> describing the modifier keys and
+     * Returns a <code>String</code> instance describing the modifier keys and
      * mouse buttons that were down during the event, such as "Shift",
      * or "Ctrl+Shift". These strings can be localized by changing
      * the <code>awt.properties</code> file.
      * <p>
-     * Note that <code>InputEvent.ALT_MASK</code> and
-     * <code>InputEvent.BUTTON2_MASK</code> have the same value,
-     * so the string "Alt" is returned for both modifiers.  Likewise,
-     * <code>InputEvent.META_MASK</code> and
-     * <code>InputEvent.BUTTON3_MASK</code> have the same value,
-     * so the string "Meta" is returned for both modifiers.
+     * Note that the <code>InputEvent.ALT_MASK</code> and
+     * <code>InputEvent.BUTTON2_MASK</code> have equal values,
+     * so the "Alt" string is returned for both modifiers.  Likewise,
+     * the <code>InputEvent.META_MASK</code> and
+     * <code>InputEvent.BUTTON3_MASK</code> have equal values,
+     * so the "Meta" string is returned for both modifiers.
+     * <p>
+     * Note that passing negative parameter is incorrect,
+     * and will cause the returning an unspecified string.
+     * Zero parameter means that no modifiers were passed and will
+     * cause the returning an empty string.
      *
-     * @param modifiers a modifier mask describing the modifier keys and
+     * @param modifiers A modifier mask describing the modifier keys and
      *                  mouse buttons that were down during the event
-     * @return string   a text description of the combination of modifier
+     * @return string   string text description of the combination of modifier
      *                  keys and mouse buttons that were down during the event
      * @see InputEvent#getModifiersExText(int)
      * @since 1.4
--- a/src/share/classes/java/awt/event/MouseWheelEvent.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/java/awt/event/MouseWheelEvent.java	Wed May 14 07:53:12 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2000-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
--- a/src/share/classes/java/awt/event/PaintEvent.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/java/awt/event/PaintEvent.java	Wed May 14 07:53:12 2008 -0700
@@ -36,6 +36,10 @@
  * designed to be used with the Event Listener model; programs
  * should continue to override paint/update methods in order
  * render themselves properly.
+ * <p>
+ * An unspecified behavior will be caused if the {@code id} parameter
+ * of any particular {@code PaintEvent} instance is not
+ * in the range from {@code PAINT_FIRST} to {@code PAINT_LAST}.
  *
  * @author Amy Fowler
  * @since 1.1
@@ -82,15 +86,19 @@
     /**
      * Constructs a <code>PaintEvent</code> object with the specified
      * source component and type.
-     * <p>Note that passing in an invalid <code>id</code> results in
-     * unspecified behavior. This method throws an
+     * <p> This method throws an
      * <code>IllegalArgumentException</code> if <code>source</code>
      * is <code>null</code>.
      *
-     * @param source     the object where the event originated
-     * @param id         the event type
-     * @param updateRect the rectangle area which needs to be repainted
+     * @param source     The object where the event originated
+     * @param id           The integer that identifies the event type.
+     *                     For information on allowable values, see
+     *                     the class description for {@link PaintEvent}
+     * @param updateRect The rectangle area which needs to be repainted
      * @throws IllegalArgumentException if <code>source</code> is null
+     * @see #getSource()
+     * @see #getID()
+     * @see #getUpdateRect()
      */
     public PaintEvent(Component source, int id, Rectangle updateRect) {
         super(source, id);
--- a/src/share/classes/java/awt/event/TextEvent.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/java/awt/event/TextEvent.java	Wed May 14 07:53:12 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1996-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1996-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -38,12 +38,15 @@
  * this <code>TextEvent</code> when the event occurs. The listener is
  * spared the details of processing individual mouse movements and key strokes
  * Instead, it can process a "meaningful" (semantic) event like "text changed".
+ * <p>
+ * An unspecified behavior will be caused if the {@code id} parameter
+ * of any particular {@code TextEvent} instance is not
+ * in the range from {@code TEXT_FIRST} to {@code TEXT_LAST}.
  *
  * @author Georges Saab
  *
  * @see java.awt.TextComponent
  * @see TextListener
- * @see <a href="http://java.sun.com/docs/books/tutorial/post1.0/ui/textlistener.html">Tutorial: Writing a Text Listener</a>
  *
  * @since 1.1
  */
@@ -72,15 +75,18 @@
 
     /**
      * Constructs a <code>TextEvent</code> object.
-     * <p>Note that passing in an invalid <code>id</code> results in
-     * unspecified behavior. This method throws an
+     * <p> This method throws an
      * <code>IllegalArgumentException</code> if <code>source</code>
      * is <code>null</code>.
      *
-     * @param source the (<code>TextComponent</code>) object that
+     * @param source The (<code>TextComponent</code>) object that
      *               originated the event
-     * @param id     an integer that identifies the event type
+     * @param id     An integer that identifies the event type.
+     *                     For information on allowable values, see
+     *                     the class description for {@link TextEvent}
      * @throws IllegalArgumentException if <code>source</code> is null
+     * @see #getSource()
+     * @see #getID()
      */
     public TextEvent(Object source, int id) {
         super(source, id);
--- a/src/share/classes/java/awt/event/TextListener.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/java/awt/event/TextListener.java	Wed May 14 07:53:12 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1996-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1996-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -40,7 +40,6 @@
  * @author Georges Saab
  *
  * @see TextEvent
- * @see <a href="http://java.sun.com/docs/books/tutorial/post1.0/ui/textlistener.html">Tutorial: Writing a Text Listener</a>
  *
  * @since 1.1
  */
--- a/src/share/classes/java/awt/event/WindowEvent.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/java/awt/event/WindowEvent.java	Wed May 14 07:53:12 2008 -0700
@@ -41,6 +41,10 @@
  * (<code>WindowAdapter</code> objects implement the
  * <code>WindowListener</code> interface.) Each such listener object
  * gets this <code>WindowEvent</code> when the event occurs.
+ * <p>
+ * An unspecified behavior will be caused if the {@code id} parameter
+ * of any particular {@code WindowEvent} instance is not
+ * in the range from {@code WINDOW_FIRST} to {@code WINDOW_LAST}.
  *
  * @author Carl Quinn
  * @author Amy Fowler
@@ -170,20 +174,27 @@
 
     /**
      * Constructs a <code>WindowEvent</code> object.
-     * <p>Note that passing in an invalid <code>id</code> results in
-     * unspecified behavior. This method throws an
+     * <p>This method throws an
      * <code>IllegalArgumentException</code> if <code>source</code>
      * is <code>null</code>.
      *
-     * @param source    the <code>Window</code> object
+     * @param source    The <code>Window</code> object
      *                    that originated the event
-     * @param id        an integer indicating the type of event.
-     * @param opposite  the other window involved in the focus or activation
+     * @param id        An integer indicating the type of event.
+     *                     For information on allowable values, see
+     *                     the class description for {@link WindowEvent}
+     * @param opposite  The other window involved in the focus or activation
      *                      change, or <code>null</code>
-     * @param oldState  previous state of the window for window state
-     *                      change event
-     * @param newState  new state of the window for window state change event
+     * @param oldState  Previous state of the window for window state change event.
+     *                  See {@code #getOldState()} for allowable values
+     * @param newState  New state of the window for window state change event.
+     *                  See {@code #getNewState()} for allowable values
      * @throws IllegalArgumentException if <code>source</code> is null
+     * @see #getWindow()
+     * @see #getID()
+     * @see #getOppositeWindow()
+     * @see #getOldState()
+     * @see #getNewState()
      * @since 1.4
      */
     public WindowEvent(Window source, int id, Window opposite,
@@ -209,24 +220,28 @@
      * If this focus change occurs with a native application, with a
      * Java application in a different VM, or with no other
      * <code>Window</code>, then the opposite Window is <code>null</code>.
-     * <p>Note that passing in an invalid <code>id</code> results in
-     * unspecified behavior. This method throws an
+     * <p>This method throws an
      * <code>IllegalArgumentException</code> if <code>source</code>
      * is <code>null</code>.
      *
-     * @param source     the <code>Window</code> object that
+     * @param source     The <code>Window</code> object that
      *                   originated the event
-     * @param id         <code>WINDOW_ACTIVATED</code>,
-     *                   <code>WINDOW_DEACTIVATED</code>,
-     *                   <code>WINDOW_GAINED_FOCUS</code>,
-     *                   or <code>WINDOW_LOST_FOCUS</code>. It is
-     *                   expected that this constructor will not be used for
-     *                   other <code>WindowEvent</code> types because the
-     *                   opposite <code>Window</code> of such events
-     *                   will always be <code>null</code>
-     * @param opposite   the other <code>Window</code> involved in the
+     * @param id        An integer indicating the type of event.
+     *                     For information on allowable values, see
+     *                     the class description for {@link WindowEvent}.
+     *                  It is expected that this constructor will not
+     *                  be used for other then
+     *                  {@code WINDOW_ACTIVATED},{@code WINDOW_DEACTIVATED},
+     *                  {@code WINDOW_GAINED_FOCUS}, or {@code WINDOW_LOST_FOCUS}.
+     *                  {@code WindowEvent} types,
+     *                  because the opposite <code>Window</code> of other event types
+     *                  will always be {@code null}.
+     * @param opposite   The other <code>Window</code> involved in the
      *                   focus or activation change, or <code>null</code>
      * @throws IllegalArgumentException if <code>source</code> is null
+     * @see #getWindow()
+     * @see #getID()
+     * @see #getOppositeWindow()
      * @since 1.4
      */
     public WindowEvent(Window source, int id, Window opposite) {
@@ -236,21 +251,30 @@
     /**
      * Constructs a <code>WindowEvent</code> object with the specified
      * previous and new window states.
-     * <p>Note that passing in an invalid <code>id</code> results in
-     * unspecified behavior. This method throws an
+     * <p>This method throws an
      * <code>IllegalArgumentException</code> if <code>source</code>
      * is <code>null</code>.
      *
-     * @param source    the <code>Window</code> object
+     * @param source    The <code>Window</code> object
      *                  that originated the event
-     * @param id        <code>WINDOW_STATE_CHANGED</code> event type.
+     * @param id        An integer indicating the type of event.
+     *                     For information on allowable values, see
+     *                     the class description for {@link WindowEvent}.
      *                  It is expected that this constructor will not
-     *                  be used for other <code>WindowEvent</code>
+     *                  be used for other then
+     *                  {@code WINDOW_STATE_CHANGED}
+     *                  {@code WindowEvent}
      *                  types, because the previous and new window
      *                  states are meaningless for other event types.
-     * @param oldState  an integer representing the previous window state
-     * @param newState  an integer representing the new window state
+     * @param oldState  An integer representing the previous window state.
+     *                  See {@code #getOldState()} for allowable values
+     * @param newState  An integer representing the new window state.
+     *                  See {@code #getNewState()} for allowable values
      * @throws IllegalArgumentException if <code>source</code> is null
+     * @see #getWindow()
+     * @see #getID()
+     * @see #getOldState()
+     * @see #getNewState()
      * @since 1.4
      */
     public WindowEvent(Window source, int id, int oldState, int newState) {
@@ -259,14 +283,17 @@
 
     /**
      * Constructs a <code>WindowEvent</code> object.
-     * <p>Note that passing in an invalid <code>id</code> results in
-     * unspecified behavior. This method throws an
+     * <p>This method throws an
      * <code>IllegalArgumentException</code> if <code>source</code>
      * is <code>null</code>.
      *
-     * @param source the <code>Window</code> object that originated the event
-     * @param id     an integer indicating the type of event
+     * @param source The <code>Window</code> object that originated the event
+     * @param id     An integer indicating the type of event.
+     *                     For information on allowable values, see
+     *                     the class description for {@link WindowEvent}.
      * @throws IllegalArgumentException if <code>source</code> is null
+     * @see #getWindow()
+     * @see #getID()
      */
     public WindowEvent(Window source, int id) {
         this(source, id, null, 0, 0);
--- a/src/share/classes/java/awt/image/BufferedImage.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/java/awt/image/BufferedImage.java	Wed May 14 07:53:12 2008 -0700
@@ -1210,9 +1210,9 @@
      *          <code>BufferedImage</code>.
      */
     public String toString() {
-        return new String("BufferedImage@"+Integer.toHexString(hashCode())
-                          +": type = "+imageType
-                          +" "+colorModel+" "+raster);
+        return "BufferedImage@"+Integer.toHexString(hashCode())
+            +": type = "+imageType
+            +" "+colorModel+" "+raster;
     }
 
     /**
--- a/src/share/classes/java/text/DictionaryBasedBreakIterator.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/java/text/DictionaryBasedBreakIterator.java	Wed May 14 07:53:12 2008 -0700
@@ -384,7 +384,7 @@
             // on the last character of a legal word.  Push that position onto
             // the possible-break-positions stack
             if (dictionary.getNextState(state, 0) == -1) {
-                possibleBreakPositions.push(new Integer(text.getIndex()));
+                possibleBreakPositions.push(Integer.valueOf(text.getIndex()));
             }
 
             // look up the new state to transition to in the dictionary
@@ -395,7 +395,7 @@
             // and we've successfully traversed the whole range.  Drop out
             // of the loop.
             if (state == -1) {
-                currentBreakPositions.push(new Integer(text.getIndex()));
+                currentBreakPositions.push(Integer.valueOf(text.getIndex()));
                 break;
             }
 
@@ -496,7 +496,7 @@
         if (!currentBreakPositions.isEmpty()) {
             currentBreakPositions.pop();
         }
-        currentBreakPositions.push(new Integer(endPos));
+        currentBreakPositions.push(Integer.valueOf(endPos));
 
         // create a regular array to hold the break positions and copy
         // the break positions from the stack to the array (in addition,
--- a/src/share/classes/java/text/MessageFormat.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/java/text/MessageFormat.java	Wed May 14 07:53:12 2008 -0700
@@ -1286,7 +1286,7 @@
                             characterIterators.add(
                                          createAttributedCharacterIterator(
                                          subIterator, Field.ARGUMENT,
-                                         new Integer(argumentNumber)));
+                                         Integer.valueOf(argumentNumber)));
                             last = result.length();
                         }
                         arg = null;
@@ -1296,7 +1296,7 @@
                         characterIterators.add(
                                  createAttributedCharacterIterator(
                                  arg, Field.ARGUMENT,
-                                 new Integer(argumentNumber)));
+                                 Integer.valueOf(argumentNumber)));
                         last = result.length();
                     }
                 }
--- a/src/share/classes/javax/imageio/stream/ImageInputStreamImpl.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/javax/imageio/stream/ImageInputStreamImpl.java	Wed May 14 07:53:12 2008 -0700
@@ -778,8 +778,8 @@
      */
     public void mark() {
         try {
-            markByteStack.push(new Long(getStreamPosition()));
-            markBitStack.push(new Integer(getBitOffset()));
+            markByteStack.push(Long.valueOf(getStreamPosition()));
+            markBitStack.push(Integer.valueOf(getBitOffset()));
         } catch (IOException e) {
         }
     }
--- a/src/share/classes/javax/swing/AbstractButton.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/javax/swing/AbstractButton.java	Wed May 14 07:53:12 2008 -0700
@@ -2050,14 +2050,14 @@
                     null, AccessibleState.SELECTED);
                 accessibleContext.firePropertyChange(
                     AccessibleContext.ACCESSIBLE_VALUE_PROPERTY,
-                    new Integer(0), new Integer(1));
+                    Integer.valueOf(0), Integer.valueOf(1));
             } else {
                 accessibleContext.firePropertyChange(
                     AccessibleContext.ACCESSIBLE_STATE_PROPERTY,
                     AccessibleState.SELECTED, null);
                 accessibleContext.firePropertyChange(
                     AccessibleContext.ACCESSIBLE_VALUE_PROPERTY,
-                    new Integer(1), new Integer(0));
+                    Integer.valueOf(1), Integer.valueOf(0));
             }
         }
     }
@@ -2555,9 +2555,9 @@
          */
         public Number getCurrentAccessibleValue() {
             if (isSelected()) {
-                return new Integer(1);
+                return Integer.valueOf(1);
             } else {
-                return new Integer(0);
+                return Integer.valueOf(0);
             }
         }
 
@@ -2586,7 +2586,7 @@
          * @return an Integer of 0.
          */
         public Number getMinimumAccessibleValue() {
-            return new Integer(0);
+            return Integer.valueOf(0);
         }
 
         /**
@@ -2595,7 +2595,7 @@
          * @return An Integer of 1.
          */
         public Number getMaximumAccessibleValue() {
-            return new Integer(1);
+            return Integer.valueOf(1);
         }
 
 
--- a/src/share/classes/javax/swing/DebugGraphicsInfo.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/javax/swing/DebugGraphicsInfo.java	Wed May 14 07:53:12 2008 -0700
@@ -49,7 +49,7 @@
             componentToDebug = new Hashtable();
         }
         if (debug > 0) {
-            componentToDebug.put(component, new Integer(debug));
+            componentToDebug.put(component, Integer.valueOf(debug));
         } else {
             componentToDebug.remove(component);
         }
--- a/src/share/classes/javax/swing/JInternalFrame.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/javax/swing/JInternalFrame.java	Wed May 14 07:53:12 2008 -0700
@@ -1285,7 +1285,7 @@
      *     description: Specifies what desktop layer is used.
      */
     public void setLayer(int layer) {
-      this.setLayer(new Integer(layer));
+      this.setLayer(Integer.valueOf(layer));
     }
 
     /**
@@ -2092,7 +2092,7 @@
          * have a value
          */
         public Number getCurrentAccessibleValue() {
-            return new Integer(getLayer());
+            return Integer.valueOf(getLayer());
         }
 
         /**
@@ -2116,7 +2116,7 @@
          * have a minimum value
          */
         public Number getMinimumAccessibleValue() {
-            return new Integer(Integer.MIN_VALUE);
+            return Integer.MIN_VALUE;
         }
 
         /**
@@ -2126,7 +2126,7 @@
          * have a maximum value
          */
         public Number getMaximumAccessibleValue() {
-            return new Integer(Integer.MAX_VALUE);
+            return Integer.MAX_VALUE;
         }
 
     } // AccessibleJInternalFrame
--- a/src/share/classes/javax/swing/JOptionPane.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/javax/swing/JOptionPane.java	Wed May 14 07:53:12 2008 -0700
@@ -1512,7 +1512,7 @@
 
         iFrame.putClientProperty("JInternalFrame.frameType", "optionDialog");
         iFrame.putClientProperty("JInternalFrame.messageType",
-                                 new Integer(getMessageType()));
+                                 Integer.valueOf(getMessageType()));
 
         iFrame.addInternalFrameListener(new InternalFrameAdapter() {
             public void internalFrameClosing(InternalFrameEvent e) {
--- a/src/share/classes/javax/swing/JProgressBar.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/javax/swing/JProgressBar.java	Wed May 14 07:53:12 2008 -0700
@@ -775,9 +775,9 @@
                 accessibleContext.firePropertyChange(
                         AccessibleContext.ACCESSIBLE_VALUE_PROPERTY,
                         (oldModel== null
-                         ? null : new Integer(oldModel.getValue())),
+                         ? null : Integer.valueOf(oldModel.getValue())),
                         (newModel== null
-                         ? null : new Integer(newModel.getValue())));
+                         ? null : Integer.valueOf(newModel.getValue())));
             }
 
             if (model != null) {
@@ -850,8 +850,8 @@
         if (accessibleContext != null) {
             accessibleContext.firePropertyChange(
                     AccessibleContext.ACCESSIBLE_VALUE_PROPERTY,
-                    new Integer(oldValue),
-                    new Integer(brm.getValue()));
+                    Integer.valueOf(oldValue),
+                    Integer.valueOf(brm.getValue()));
         }
     }
 
@@ -1087,7 +1087,7 @@
          * @return the current value of this object
          */
         public Number getCurrentAccessibleValue() {
-            return new Integer(getValue());
+            return Integer.valueOf(getValue());
         }
 
         /**
@@ -1110,7 +1110,7 @@
          * @return the minimum value of this object
          */
         public Number getMinimumAccessibleValue() {
-            return new Integer(getMinimum());
+            return Integer.valueOf(getMinimum());
         }
 
         /**
@@ -1120,7 +1120,7 @@
          */
         public Number getMaximumAccessibleValue() {
             // TIGER - 4422362
-            return new Integer(model.getMaximum() - model.getExtent());
+            return Integer.valueOf(model.getMaximum() - model.getExtent());
         }
 
     } // AccessibleJProgressBar
--- a/src/share/classes/javax/swing/JScrollBar.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/javax/swing/JScrollBar.java	Wed May 14 07:53:12 2008 -0700
@@ -314,7 +314,7 @@
         BoundedRangeModel oldModel = model;
         if (model != null) {
             model.removeChangeListener(fwdAdjustmentEvents);
-            oldValue = new Integer(model.getValue());
+            oldValue = Integer.valueOf(model.getValue());
         }
         model = newModel;
         if (model != null) {
@@ -465,8 +465,8 @@
         if (accessibleContext != null) {
             accessibleContext.firePropertyChange(
                     AccessibleContext.ACCESSIBLE_VALUE_PROPERTY,
-                    new Integer(oldValue),
-                    new Integer(m.getValue()));
+                    Integer.valueOf(oldValue),
+                    Integer.valueOf(m.getValue()));
         }
     }
 
@@ -611,8 +611,8 @@
         if (accessibleContext != null) {
             accessibleContext.firePropertyChange(
                     AccessibleContext.ACCESSIBLE_VALUE_PROPERTY,
-                    new Integer(oldValue),
-                    new Integer(m.getValue()));
+                    Integer.valueOf(oldValue),
+                    Integer.valueOf(m.getValue()));
         }
     }
 
@@ -880,7 +880,7 @@
          * @return The current value of this object.
          */
         public Number getCurrentAccessibleValue() {
-            return new Integer(getValue());
+            return Integer.valueOf(getValue());
         }
 
         /**
@@ -903,7 +903,7 @@
          * @return The minimum value of this object.
          */
         public Number getMinimumAccessibleValue() {
-            return new Integer(getMinimum());
+            return Integer.valueOf(getMinimum());
         }
 
         /**
--- a/src/share/classes/javax/swing/JSlider.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/javax/swing/JSlider.java	Wed May 14 07:53:12 2008 -0700
@@ -485,9 +485,9 @@
                 accessibleContext.firePropertyChange(
                                                     AccessibleContext.ACCESSIBLE_VALUE_PROPERTY,
                                                     (oldModel == null
-                                                     ? null : new Integer(oldModel.getValue())),
+                                                     ? null : Integer.valueOf(oldModel.getValue())),
                                                     (newModel == null
-                                                     ? null : new Integer(newModel.getValue())));
+                                                     ? null : Integer.valueOf(newModel.getValue())));
             }
         }
 
@@ -538,8 +538,8 @@
         if (accessibleContext != null) {
             accessibleContext.firePropertyChange(
                                                 AccessibleContext.ACCESSIBLE_VALUE_PROPERTY,
-                                                new Integer(oldValue),
-                                                new Integer(m.getValue()));
+                                                Integer.valueOf(oldValue),
+                                                Integer.valueOf(m.getValue()));
         }
     }
 
@@ -581,7 +581,7 @@
     public void setMinimum(int minimum) {
         int oldMin = getModel().getMinimum();
         getModel().setMinimum(minimum);
-        firePropertyChange( "minimum", new Integer( oldMin ), new Integer( minimum ) );
+        firePropertyChange( "minimum", Integer.valueOf( oldMin ), Integer.valueOf( minimum ) );
     }
 
 
@@ -622,7 +622,7 @@
     public void setMaximum(int maximum) {
         int oldMax = getModel().getMaximum();
         getModel().setMaximum(maximum);
-        firePropertyChange( "maximum", new Integer( oldMax ), new Integer( maximum ) );
+        firePropertyChange( "maximum", Integer.valueOf( oldMax ), Integer.valueOf( maximum ) );
     }
 
 
@@ -989,7 +989,7 @@
 
             void createLabels() {
                 for ( int labelIndex = start; labelIndex <= getMaximum(); labelIndex += increment ) {
-                    put( new Integer( labelIndex ), new LabelUIResource( ""+labelIndex, JLabel.CENTER ) );
+                    put( Integer.valueOf( labelIndex ), new LabelUIResource( ""+labelIndex, JLabel.CENTER ) );
                 }
             }
         }
@@ -1463,7 +1463,7 @@
          * @return The current value of this object.
          */
         public Number getCurrentAccessibleValue() {
-            return new Integer(getValue());
+            return Integer.valueOf(getValue());
         }
 
         /**
@@ -1486,7 +1486,7 @@
          * @return The minimum value of this object.
          */
         public Number getMinimumAccessibleValue() {
-            return new Integer(getMinimum());
+            return Integer.valueOf(getMinimum());
         }
 
         /**
@@ -1497,7 +1497,7 @@
         public Number getMaximumAccessibleValue() {
             // TIGER - 4422362
             BoundedRangeModel model = JSlider.this.getModel();
-            return new Integer(model.getMaximum() - model.getExtent());
+            return Integer.valueOf(model.getMaximum() - model.getExtent());
         }
     } // AccessibleJSlider
 }
--- a/src/share/classes/javax/swing/JSplitPane.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/javax/swing/JSplitPane.java	Wed May 14 07:53:12 2008 -0700
@@ -1195,7 +1195,7 @@
          * @return a localized String describing the value of this object
          */
         public Number getCurrentAccessibleValue() {
-            return new Integer(getDividerLocation());
+            return Integer.valueOf(getDividerLocation());
         }
 
 
@@ -1220,7 +1220,7 @@
          * @return The minimum value of this object.
          */
         public Number getMinimumAccessibleValue() {
-            return new Integer(getUI().getMinimumDividerLocation(
+            return Integer.valueOf(getUI().getMinimumDividerLocation(
                                                         JSplitPane.this));
         }
 
@@ -1231,7 +1231,7 @@
          * @return The maximum value of this object.
          */
         public Number getMaximumAccessibleValue() {
-            return new Integer(getUI().getMaximumDividerLocation(
+            return Integer.valueOf(getUI().getMaximumDividerLocation(
                                                         JSplitPane.this));
         }
 
--- a/src/share/classes/javax/swing/JTabbedPane.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/javax/swing/JTabbedPane.java	Wed May 14 07:53:12 2008 -0700
@@ -969,7 +969,7 @@
         // currently no IndexPropertyChangeEvent.  Once
         // IndexPropertyChangeEvents have been added this code should be
         // modified to use it.
-        putClientProperty("__index_to_remove__", new Integer(index));
+        putClientProperty("__index_to_remove__", Integer.valueOf(index));
 
         /* if the selected tab is after the removal */
         if (selected > index) {
--- a/src/share/classes/javax/swing/JTable.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/javax/swing/JTable.java	Wed May 14 07:53:12 2008 -0700
@@ -7680,7 +7680,7 @@
          */
         public Accessible getAccessibleRowDescription(int r) {
             if (r < 0 || r >= getAccessibleRowCount()) {
-                throw new IllegalArgumentException(new Integer(r).toString());
+                throw new IllegalArgumentException(Integer.toString(r));
             }
             if (rowDescription == null) {
                 return null;
@@ -7698,7 +7698,7 @@
          */
         public void setAccessibleRowDescription(int r, Accessible a) {
             if (r < 0 || r >= getAccessibleRowCount()) {
-                throw new IllegalArgumentException(new Integer(r).toString());
+                throw new IllegalArgumentException(Integer.toString(r));
             }
             if (rowDescription == null) {
                 int numRows = getAccessibleRowCount();
@@ -7716,7 +7716,7 @@
          */
         public Accessible getAccessibleColumnDescription(int c) {
             if (c < 0 || c >= getAccessibleColumnCount()) {
-                throw new IllegalArgumentException(new Integer(c).toString());
+                throw new IllegalArgumentException(Integer.toString(c));
             }
             if (columnDescription == null) {
                 return null;
@@ -7734,7 +7734,7 @@
          */
         public void setAccessibleColumnDescription(int c, Accessible a) {
             if (c < 0 || c >= getAccessibleColumnCount()) {
-                throw new IllegalArgumentException(new Integer(c).toString());
+                throw new IllegalArgumentException(Integer.toString(c));
             }
             if (columnDescription == null) {
                 int numColumns = getAccessibleColumnCount();
--- a/src/share/classes/javax/swing/JTextArea.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/javax/swing/JTextArea.java	Wed May 14 07:53:12 2008 -0700
@@ -267,7 +267,7 @@
         Document doc = getDocument();
         if (doc != null) {
             int old = getTabSize();
-            doc.putProperty(PlainDocument.tabSizeAttribute, new Integer(size));
+            doc.putProperty(PlainDocument.tabSizeAttribute, Integer.valueOf(size));
             firePropertyChange("tabSize", old, size);
         }
     }
--- a/src/share/classes/javax/swing/SpinnerNumberModel.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/javax/swing/SpinnerNumberModel.java	Wed May 14 07:53:12 2008 -0700
@@ -144,7 +144,7 @@
      *     <code>minimum &lt;= value &lt;= maximum</code>
      */
     public SpinnerNumberModel(int value, int minimum, int maximum, int stepSize) {
-        this(new Integer(value), new Integer(minimum), new Integer(maximum), new Integer(stepSize));
+        this(Integer.valueOf(value), Integer.valueOf(minimum), Integer.valueOf(maximum), Integer.valueOf(stepSize));
     }
 
 
@@ -171,7 +171,7 @@
      * <code>stepSize</code> equal to one, and an initial value of zero.
      */
     public SpinnerNumberModel() {
-        this(new Integer(0), null, null, new Integer(1));
+        this(Integer.valueOf(0), null, null, Integer.valueOf(1));
     }
 
 
@@ -333,16 +333,16 @@
             long v = value.longValue() + (stepSize.longValue() * (long)dir);
 
             if (value instanceof Long) {
-                newValue = new Long(v);
+                newValue = Long.valueOf(v);
             }
             else if (value instanceof Integer) {
-                newValue = new Integer((int)v);
+                newValue = Integer.valueOf((int)v);
             }
             else if (value instanceof Short) {
-                newValue = new Short((short)v);
+                newValue = Short.valueOf((short)v);
             }
             else {
-                newValue = new Byte((byte)v);
+                newValue = Byte.valueOf((byte)v);
             }
         }
 
--- a/src/share/classes/javax/swing/TablePrintable.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/javax/swing/TablePrintable.java	Wed May 14 07:53:12 2008 -0700
@@ -215,7 +215,7 @@
         }
 
         // to pass the page number when formatting the header and footer text
-        Object[] pageNumber = new Object[]{new Integer(pageIndex + 1)};
+        Object[] pageNumber = new Object[]{Integer.valueOf(pageIndex + 1)};
 
         // fetch the formatted header text, if any
         String headerText = null;
--- a/src/share/classes/javax/swing/plaf/basic/BasicButtonUI.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/javax/swing/plaf/basic/BasicButtonUI.java	Wed May 14 07:53:12 2008 -0700
@@ -109,7 +109,7 @@
             LookAndFeel.installProperty(b, "rolloverEnabled", rollover);
         }
 
-        LookAndFeel.installProperty(b, "iconTextGap", new Integer(4));
+        LookAndFeel.installProperty(b, "iconTextGap", Integer.valueOf(4));
     }
 
     protected void installListeners(AbstractButton b) {
--- a/src/share/classes/javax/swing/plaf/basic/BasicLookAndFeel.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/javax/swing/plaf/basic/BasicLookAndFeel.java	Wed May 14 07:53:12 2008 -0700
@@ -654,7 +654,7 @@
                 "javax.swing.plaf.basic.BasicIconFactory",
                 "getRadioButtonMenuItemIcon");
 
-        Object menuItemAcceleratorDelimiter = new String("+");
+        Object menuItemAcceleratorDelimiter = "+";
 
         // *** OptionPane value objects
 
--- a/src/share/classes/javax/swing/plaf/basic/BasicMenuItemUI.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/javax/swing/plaf/basic/BasicMenuItemUI.java	Wed May 14 07:53:12 2008 -0700
@@ -146,7 +146,7 @@
             menuItem.setMargin(UIManager.getInsets(prefix + ".margin"));
         }
 
-        LookAndFeel.installProperty(menuItem, "iconTextGap", new Integer(4));
+        LookAndFeel.installProperty(menuItem, "iconTextGap", Integer.valueOf(4));
         defaultTextIconGap = menuItem.getIconTextGap();
 
         LookAndFeel.installBorder(menuItem, prefix + ".border");
--- a/src/share/classes/javax/swing/plaf/basic/BasicOptionPaneUI.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/javax/swing/plaf/basic/BasicOptionPaneUI.java	Wed May 14 07:53:12 2008 -0700
@@ -1195,10 +1195,10 @@
                 if (options == null) {
                     if (optionType == JOptionPane.OK_CANCEL_OPTION &&
                         buttonIndex == 1) {
-                        optionPane.setValue(new Integer(2));
+                        optionPane.setValue(Integer.valueOf(2));
 
                     } else {
-                        optionPane.setValue(new Integer(buttonIndex));
+                        optionPane.setValue(Integer.valueOf(buttonIndex));
                     }
                 } else {
                     optionPane.setValue(options[buttonIndex]);
@@ -1393,7 +1393,7 @@
             if (getName() == CLOSE) {
                 JOptionPane optionPane = (JOptionPane)e.getSource();
 
-                optionPane.setValue(new Integer(JOptionPane.CLOSED_OPTION));
+                optionPane.setValue(Integer.valueOf(JOptionPane.CLOSED_OPTION));
             }
         }
     }
--- a/src/share/classes/javax/swing/plaf/basic/BasicTabbedPaneUI.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/javax/swing/plaf/basic/BasicTabbedPaneUI.java	Wed May 14 07:53:12 2008 -0700
@@ -539,7 +539,7 @@
         }
         mnemonicInputMap.put(KeyStroke.getKeyStroke(mnemonic, Event.ALT_MASK),
                              "setSelectedIndex");
-        mnemonicToIndexMap.put(new Integer(mnemonic), new Integer(index));
+        mnemonicToIndexMap.put(Integer.valueOf(mnemonic), Integer.valueOf(index));
     }
 
     /**
@@ -2231,7 +2231,7 @@
                         mnemonic  -= ('a' - 'A');
                     }
                     Integer index = (Integer)ui.mnemonicToIndexMap.
-                                 get(new Integer(mnemonic));
+                                 get(Integer.valueOf(mnemonic));
                     if (index != null && pane.isEnabledAt(index.intValue())) {
                         pane.setSelectedIndex(index.intValue());
                     }
--- a/src/share/classes/javax/swing/plaf/basic/BasicToolBarUI.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/javax/swing/plaf/basic/BasicToolBarUI.java	Wed May 14 07:53:12 2008 -0700
@@ -178,7 +178,7 @@
         dragWindow = null;
         dockingSource = null;
 
-        c.putClientProperty( FOCUSED_COMP_INDEX, new Integer( focusedCompIndex ) );
+        c.putClientProperty( FOCUSED_COMP_INDEX, Integer.valueOf( focusedCompIndex ) );
     }
 
     protected void installDefaults( )
--- a/src/share/classes/javax/swing/plaf/metal/MetalLookAndFeel.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/javax/swing/plaf/metal/MetalLookAndFeel.java	Wed May 14 07:53:12 2008 -0700
@@ -455,7 +455,7 @@
 
         Insets zeroInsets = new InsetsUIResource(0, 0, 0, 0);
 
-        Integer zero = new Integer(0);
+        Integer zero = Integer.valueOf(0);
 
         Object textFieldBorder =
             new SwingLazyValue("javax.swing.plaf.metal.MetalBorders",
@@ -904,7 +904,7 @@
             "ProgressBar.selectionBackground", primaryControlDarkShadow,
             "ProgressBar.border", progressBarBorder,
             "ProgressBar.cellSpacing", zero,
-            "ProgressBar.cellLength", new Integer(1),
+            "ProgressBar.cellLength", Integer.valueOf(1),
 
             // Combo Box
             "ComboBox.background", control,
@@ -971,7 +971,7 @@
             "DesktopIcon.font", controlTextValue,
             "DesktopIcon.foreground", controlTextColor,
             "DesktopIcon.background", control,
-            "DesktopIcon.width", new Integer(160),
+            "DesktopIcon.width", Integer.valueOf(160),
 
             "Desktop.ancestorInputMap",
                new UIDefaults.LazyInputMap(new Object[] {
--- a/src/share/classes/javax/swing/plaf/synth/SynthArrowButton.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/javax/swing/plaf/synth/SynthArrowButton.java	Wed May 14 07:53:12 2008 -0700
@@ -53,7 +53,7 @@
 
     public void setDirection(int dir) {
         direction = dir;
-        putClientProperty("__arrow_direction__", new Integer(dir));
+        putClientProperty("__arrow_direction__", Integer.valueOf(dir));
         repaint();
     }
 
--- a/src/share/classes/javax/swing/plaf/synth/SynthDesktopPaneUI.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/javax/swing/plaf/synth/SynthDesktopPaneUI.java	Wed May 14 07:53:12 2008 -0700
@@ -96,7 +96,7 @@
             }
             taskBar.setBackground(desktop.getBackground());
             desktop.add(taskBar,
-                new Integer(JLayeredPane.PALETTE_LAYER.intValue() + 1));
+                Integer.valueOf(JLayeredPane.PALETTE_LAYER.intValue() + 1));
             if (desktop.isShowing()) {
                 taskBar.adjustSize();
             }
--- a/src/share/classes/javax/swing/plaf/synth/SynthSplitPaneUI.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/javax/swing/plaf/synth/SynthSplitPaneUI.java	Wed May 14 07:53:12 2008 -0700
@@ -127,7 +127,7 @@
         if (style != oldStyle) {
             Object value = style.get(context, "SplitPane.size");
             if (value == null) {
-                value = new Integer(6);
+                value = Integer.valueOf(6);
             }
             LookAndFeel.installProperty(splitPane, "dividerSize", value);
 
--- a/src/share/classes/javax/swing/table/TableColumn.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/javax/swing/table/TableColumn.java	Wed May 14 07:53:12 2008 -0700
@@ -281,7 +281,7 @@
 
     private void firePropertyChange(String propertyName, int oldValue, int newValue) {
         if (oldValue != newValue) {
-            firePropertyChange(propertyName, new Integer(oldValue), new Integer(newValue));
+            firePropertyChange(propertyName, Integer.valueOf(oldValue), Integer.valueOf(newValue));
         }
     }
 
--- a/src/share/classes/javax/swing/text/AbstractDocument.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/javax/swing/text/AbstractDocument.java	Wed May 14 07:53:12 2008 -0700
@@ -351,7 +351,7 @@
      *   loaded asynchronously
      */
     public void setAsynchronousLoadPriority(int p) {
-        Integer loadPriority = (p >= 0) ? new Integer(p) : null;
+        Integer loadPriority = (p >= 0) ? Integer.valueOf(p) : null;
         putProperty(AbstractDocument.AsyncLoadPriority, loadPriority);
     }
 
@@ -2675,7 +2675,7 @@
          */
         BidiElement(Element parent, int start, int end, int level) {
             super(parent, new SimpleAttributeSet(), start, end);
-            addAttribute(StyleConstants.BidiLevel, new Integer(level));
+            addAttribute(StyleConstants.BidiLevel, Integer.valueOf(level));
             //System.out.println("BidiElement: start = " + start
             //                   + " end = " + end + " level = " + level );
         }
--- a/src/share/classes/javax/swing/text/NumberFormatter.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/javax/swing/text/NumberFormatter.java	Wed May 14 07:53:12 2008 -0700
@@ -173,23 +173,24 @@
      */
     private Object convertValueToValueClass(Object value, Class valueClass) {
         if (valueClass != null && (value instanceof Number)) {
+            Number numberValue = (Number)value;
             if (valueClass == Integer.class) {
-                return new Integer(((Number)value).intValue());
+                return Integer.valueOf(numberValue.intValue());
             }
             else if (valueClass == Long.class) {
-                return new Long(((Number)value).longValue());
+                return Long.valueOf(numberValue.longValue());
             }
             else if (valueClass == Float.class) {
-                return new Float(((Number)value).floatValue());
+                return Float.valueOf(numberValue.floatValue());
             }
             else if (valueClass == Double.class) {
-                return new Double(((Number)value).doubleValue());
+                return Double.valueOf(numberValue.doubleValue());
             }
             else if (valueClass == Byte.class) {
-                return new Byte(((Number)value).byteValue());
+                return Byte.valueOf(numberValue.byteValue());
             }
             else if (valueClass == Short.class) {
-                return new Short(((Number)value).shortValue());
+                return Short.valueOf(numberValue.shortValue());
             }
         }
         return value;
--- a/src/share/classes/javax/swing/text/PlainDocument.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/javax/swing/text/PlainDocument.java	Wed May 14 07:53:12 2008 -0700
@@ -89,7 +89,7 @@
      */
     public PlainDocument(Content c) {
         super(c);
-        putProperty(tabSizeAttribute, new Integer(8));
+        putProperty(tabSizeAttribute, Integer.valueOf(8));
         defaultRoot = createDefaultRoot();
     }
 
--- a/src/share/classes/javax/swing/text/Segment.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/javax/swing/text/Segment.java	Wed May 14 07:53:12 2008 -0700
@@ -118,7 +118,7 @@
         if (array != null) {
             return new String(array, offset, count);
         }
-        return new String();
+        return "";
     }
 
     // --- CharacterIterator methods -------------------------------------
--- a/src/share/classes/javax/swing/text/StyleConstants.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/javax/swing/text/StyleConstants.java	Wed May 14 07:53:12 2008 -0700
@@ -296,7 +296,7 @@
      * @param o the bidi level value
      */
     public static void setBidiLevel(MutableAttributeSet a, int o) {
-        a.addAttribute(BidiLevel, new Integer(o));
+        a.addAttribute(BidiLevel, Integer.valueOf(o));
     }
 
     /**
@@ -386,7 +386,7 @@
      * @param s the font size
      */
     public static void setFontSize(MutableAttributeSet a, int s) {
-        a.addAttribute(FontSize, new Integer(s));
+        a.addAttribute(FontSize, Integer.valueOf(s));
     }
 
     /**
@@ -753,7 +753,7 @@
      * @param align the alignment value
      */
     public static void setAlignment(MutableAttributeSet a, int align) {
-        a.addAttribute(Alignment, new Integer(align));
+        a.addAttribute(Alignment, Integer.valueOf(align));
     }
 
     /**
--- a/src/share/classes/javax/swing/text/html/AccessibleHTML.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/javax/swing/text/html/AccessibleHTML.java	Wed May 14 07:53:12 2008 -0700
@@ -1970,7 +1970,7 @@
 
                     for (int i = 0; i < nRows; i++) {
                         if (isAccessibleRowSelected(i)) {
-                            vec.addElement(new Integer(i));
+                            vec.addElement(Integer.valueOf(i));
                         }
                     }
                     int retval[] = new int[vec.size()];
@@ -1995,7 +1995,7 @@
 
                     for (int i = 0; i < nColumns; i++) {
                         if (isAccessibleColumnSelected(i)) {
-                            vec.addElement(new Integer(i));
+                            vec.addElement(Integer.valueOf(i));
                         }
                     }
                     int retval[] = new int[vec.size()];
@@ -2139,7 +2139,7 @@
                 private int columnCount = 0;
 
                 public void addHeader(TableCellElementInfo cellInfo, int rowNumber) {
-                    Integer rowInteger = new Integer(rowNumber);
+                    Integer rowInteger = Integer.valueOf(rowNumber);
                     ArrayList list = (ArrayList)headers.get(rowInteger);
                     if (list == null) {
                         list = new ArrayList();
@@ -2201,7 +2201,7 @@
                 }
 
                 private TableCellElementInfo getElementInfoAt(int r, int c) {
-                    ArrayList list = (ArrayList)headers.get(new Integer(r));
+                    ArrayList list = (ArrayList)headers.get(Integer.valueOf(r));
                     if (list != null) {
                         return (TableCellElementInfo)list.get(c);
                     } else {
--- a/src/share/classes/javax/swing/text/html/CSS.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/javax/swing/text/html/CSS.java	Wed May 14 07:53:12 2008 -0700
@@ -1099,7 +1099,7 @@
      */
     static String colorToHex(Color color) {
 
-      String colorstr = new String("#");
+      String colorstr = "#";
 
       // Red
       String str = Integer.toHexString(color.getRed());
--- a/src/share/classes/javax/swing/text/html/HTMLEditorKit.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/javax/swing/text/html/HTMLEditorKit.java	Wed May 14 07:53:12 2008 -0700
@@ -1899,8 +1899,8 @@
                     // assistive technologies listening for such events.
                     comp.getAccessibleContext().firePropertyChange(
                         AccessibleContext.ACCESSIBLE_HYPERTEXT_OFFSET,
-                        new Integer(kit.prevHypertextOffset),
-                        new Integer(e.getDot()));
+                        Integer.valueOf(kit.prevHypertextOffset),
+                        Integer.valueOf(e.getDot()));
                 }
             }
         }
--- a/src/share/classes/javax/swing/text/html/parser/AttributeList.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/javax/swing/text/html/parser/AttributeList.java	Wed May 14 07:53:12 2008 -0700
@@ -132,7 +132,7 @@
     static Hashtable attributeTypes = new Hashtable();
 
     static void defineAttributeType(String nm, int val) {
-        Integer num = new Integer(val);
+        Integer num = Integer.valueOf(val);
         attributeTypes.put(nm, num);
         attributeTypes.put(num, nm);
     }
@@ -154,11 +154,11 @@
         defineAttributeType("NUTOKEN", NUTOKEN);
         defineAttributeType("NUTOKENS", NUTOKENS);
 
-        attributeTypes.put("fixed", new Integer(FIXED));
-        attributeTypes.put("required", new Integer(REQUIRED));
-        attributeTypes.put("current", new Integer(CURRENT));
-        attributeTypes.put("conref", new Integer(CONREF));
-        attributeTypes.put("implied", new Integer(IMPLIED));
+        attributeTypes.put("fixed", Integer.valueOf(FIXED));
+        attributeTypes.put("required", Integer.valueOf(REQUIRED));
+        attributeTypes.put("current", Integer.valueOf(CURRENT));
+        attributeTypes.put("conref", Integer.valueOf(CONREF));
+        attributeTypes.put("implied", Integer.valueOf(IMPLIED));
     }
 
     public static int name2type(String nm) {
@@ -167,6 +167,6 @@
     }
 
     public static String type2name(int tp) {
-        return (String)attributeTypes.get(new Integer(tp));
+        return (String)attributeTypes.get(Integer.valueOf(tp));
     }
 }
--- a/src/share/classes/javax/swing/text/html/parser/DTD.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/javax/swing/text/html/parser/DTD.java	Wed May 14 07:53:12 2008 -0700
@@ -113,7 +113,7 @@
      *    <code>ch</code> character
      */
     public Entity getEntity(int ch) {
-        return (Entity)entityHash.get(new Integer(ch));
+        return (Entity)entityHash.get(Integer.valueOf(ch));
     }
 
     /**
@@ -178,7 +178,7 @@
                 switch (type & ~GENERAL) {
                   case CDATA:
                   case SDATA:
-                    entityHash.put(new Integer(data[0]), ent);
+                      entityHash.put(Integer.valueOf(data[0]), ent);
                     break;
                 }
             }
--- a/src/share/classes/javax/swing/text/html/parser/Element.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/javax/swing/text/html/parser/Element.java	Wed May 14 07:53:12 2008 -0700
@@ -162,10 +162,10 @@
     static Hashtable contentTypes = new Hashtable();
 
     static {
-        contentTypes.put("CDATA", new Integer(CDATA));
-        contentTypes.put("RCDATA", new Integer(RCDATA));
-        contentTypes.put("EMPTY", new Integer(EMPTY));
-        contentTypes.put("ANY", new Integer(ANY));
+        contentTypes.put("CDATA", Integer.valueOf(CDATA));
+        contentTypes.put("RCDATA", Integer.valueOf(RCDATA));
+        contentTypes.put("EMPTY", Integer.valueOf(EMPTY));
+        contentTypes.put("ANY", Integer.valueOf(ANY));
     }
 
     public static int name2type(String nm) {
--- a/src/share/classes/javax/swing/text/html/parser/Entity.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/javax/swing/text/html/parser/Entity.java	Wed May 14 07:53:12 2008 -0700
@@ -110,15 +110,15 @@
     static Hashtable entityTypes = new Hashtable();
 
     static {
-        entityTypes.put("PUBLIC", new Integer(PUBLIC));
-        entityTypes.put("CDATA", new Integer(CDATA));
-        entityTypes.put("SDATA", new Integer(SDATA));
-        entityTypes.put("PI", new Integer(PI));
-        entityTypes.put("STARTTAG", new Integer(STARTTAG));
-        entityTypes.put("ENDTAG", new Integer(ENDTAG));
-        entityTypes.put("MS", new Integer(MS));
-        entityTypes.put("MD", new Integer(MD));
-        entityTypes.put("SYSTEM", new Integer(SYSTEM));
+        entityTypes.put("PUBLIC", Integer.valueOf(PUBLIC));
+        entityTypes.put("CDATA", Integer.valueOf(CDATA));
+        entityTypes.put("SDATA", Integer.valueOf(SDATA));
+        entityTypes.put("PI", Integer.valueOf(PI));
+        entityTypes.put("STARTTAG", Integer.valueOf(STARTTAG));
+        entityTypes.put("ENDTAG", Integer.valueOf(ENDTAG));
+        entityTypes.put("MS", Integer.valueOf(MS));
+        entityTypes.put("MD", Integer.valueOf(MD));
+        entityTypes.put("SYSTEM", Integer.valueOf(SYSTEM));
     }
 
     /**
--- a/src/share/classes/javax/swing/text/html/parser/Parser.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/javax/swing/text/html/parser/Parser.java	Wed May 14 07:53:12 2008 -0700
@@ -1842,7 +1842,7 @@
             String elemStr = getString(0);
 
             if (elemStr.equals("image")) {
-                elemStr = new String("img");
+                elemStr = "img";
             }
 
             /* determine if this element is part of the dtd. */
--- a/src/share/classes/javax/swing/text/rtf/RTFAttributes.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/javax/swing/text/rtf/RTFAttributes.java	Wed May 14 07:53:12 2008 -0700
@@ -281,7 +281,7 @@
         public AssertiveAttribute(int d, Object s, String r, int v)
         {
             super(d, s, r);
-            swingValue = new Integer(v);
+            swingValue = Integer.valueOf(v);
         }
 
         public boolean set(MutableAttributeSet target)
@@ -343,7 +343,7 @@
         public NumericAttribute(int d, Object s,
                                 String r, int ds, int dr)
         {
-            this(d, s, r, new Integer(ds), dr, 1f);
+            this(d, s, r, Integer.valueOf(ds), dr, 1f);
         }
 
         public NumericAttribute(int d, Object s,
@@ -377,7 +377,7 @@
             Number swingValue;
 
             if (scale == 1f)
-                swingValue = new Integer(parameter);
+                swingValue = Integer.valueOf(parameter);
             else
                 swingValue = new Float(parameter / scale);
             target.addAttribute(swingName, swingValue);
--- a/src/share/classes/javax/swing/text/rtf/RTFGenerator.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/javax/swing/text/rtf/RTFGenerator.java	Wed May 14 07:53:12 2008 -0700
@@ -83,11 +83,7 @@
     static public final String defaultFontFamily = "Helvetica";
 
     /* constants so we can avoid allocating objects in inner loops */
-    /* these should all be final, but javac seems to be a bit buggy */
-    static protected Integer One, Zero;
-    static protected Boolean False;
-    static protected Float ZeroPointZero;
-    static private Object MagicToken;
+    final static private Object MagicToken;
 
     /* An array of character-keyword pairs. This could be done
        as a dictionary (and lookup would be quicker), but that
@@ -98,11 +94,7 @@
     static protected CharacterKeywordPair[] textKeywords;
 
     static {
-        One = new Integer(1);
-        Zero = new Integer(0);
-        False = Boolean.valueOf(false);
         MagicToken = new Object();
-        ZeroPointZero = new Float(0);
 
         Dictionary textKeywordDictionary = RTFReader.textKeywords;
         Enumeration keys = textKeywordDictionary.keys();
@@ -142,7 +134,7 @@
 public RTFGenerator(OutputStream to)
 {
     colorTable = new Hashtable();
-    colorTable.put(defaultRTFColor, new Integer(0));
+    colorTable.put(defaultRTFColor, Integer.valueOf(0));
     colorCount = 1;
 
     fontTable = new Hashtable();
@@ -693,7 +685,7 @@
 {
     writeControlWord("pard");
 
-    currentAttributes.addAttribute(StyleConstants.Alignment,       Zero);
+    currentAttributes.addAttribute(StyleConstants.Alignment, Integer.valueOf(0));
 
     int wordIndex;
     int wordCount = RTFAttributes.attributes.length;
--- a/src/share/classes/javax/swing/tree/DefaultTreeSelectionModel.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/javax/swing/tree/DefaultTreeSelectionModel.java	Wed May 14 07:53:12 2008 -0700
@@ -157,8 +157,8 @@
             selectionMode = TreeSelectionModel.DISCONTIGUOUS_TREE_SELECTION;
         if(oldMode != selectionMode && changeSupport != null)
             changeSupport.firePropertyChange(SELECTION_MODE_PROPERTY,
-                                             new Integer(oldMode),
-                                             new Integer(selectionMode));
+                                             Integer.valueOf(oldMode),
+                                             Integer.valueOf(selectionMode));
     }
 
     /**
--- a/src/share/classes/sun/applet/AppletPanel.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/sun/applet/AppletPanel.java	Wed May 14 07:53:12 2008 -0700
@@ -285,7 +285,7 @@
                 //System.out.println("SEND0= " + id);
                 queue = new Queue();
             }
-            Integer eventId = new Integer(id);
+            Integer eventId = Integer.valueOf(id);
             queue.enqueue(eventId);
             notifyAll();
         }
--- a/src/share/classes/sun/applet/AppletViewer.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/sun/applet/AppletViewer.java	Wed May 14 07:53:12 2008 -0700
@@ -587,9 +587,9 @@
         Dimension d = panel.size();
         Insets in = panel.insets();
         panel.atts.put("width",
-                       new Integer(d.width - (in.left + in.right)).toString());
+                       Integer.toString(d.width - (in.left + in.right)));
         panel.atts.put("height",
-                       new Integer(d.height - (in.top + in.bottom)).toString());
+                       Integer.toString(d.height - (in.top + in.bottom)));
     }
 
     /**
--- a/src/share/classes/sun/awt/FontConfiguration.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/sun/awt/FontConfiguration.java	Wed May 14 07:53:12 2008 -0700
@@ -1956,7 +1956,7 @@
             /*Init these tables to allow componentFontNameID, fontfileNameIDs
               to start from "1".
             */
-            componentFontNameIDs.put("", new Short((short)0));
+            componentFontNameIDs.put("", Short.valueOf((short)0));
 
             fontfileNameIDs = new HashMap<String, Short>();
             filenames = new HashMap<Short, Short>();
--- a/src/share/classes/sun/awt/im/InputContext.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/sun/awt/im/InputContext.java	Wed May 14 07:53:12 2008 -0700
@@ -556,7 +556,7 @@
             }
             usedInputMethods.put(inputMethodLocator.deriveLocator(null), inputMethod);
             perInputMethodState.put(inputMethod,
-                                    new Boolean(clientWindowNotificationEnabled));
+                                    Boolean.valueOf(clientWindowNotificationEnabled));
             enableClientWindowNotification(inputMethod, false);
             if (this == inputMethodWindowContext) {
                 inputMethod.hideWindows();
@@ -921,7 +921,7 @@
             if (perInputMethodState == null) {
                 perInputMethodState = new HashMap(5);
             }
-            perInputMethodState.put(requester, new Boolean(enable));
+            perInputMethodState.put(requester, Boolean.valueOf(enable));
             return;
         }
 
--- a/src/share/classes/sun/font/FileFontStrike.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/sun/font/FileFontStrike.java	Wed May 14 07:53:12 2008 -0700
@@ -657,7 +657,7 @@
              * we first obtain this information, then the image, and never
              * will access this value again.
              */
-            Integer key = new Integer(glyphCode);
+            Integer key = Integer.valueOf(glyphCode);
             Point2D.Float value = null;
             ConcurrentHashMap<Integer, Point2D.Float> glyphMetricsMap = null;
             if (glyphMetricsMapRef != null) {
@@ -724,7 +724,7 @@
             boundsMap = new ConcurrentHashMap<Integer, Rectangle2D.Float>();
         }
 
-        Integer key = new Integer(glyphCode);
+        Integer key = Integer.valueOf(glyphCode);
         Rectangle2D.Float bounds = boundsMap.get(key);
 
         if (bounds == null) {
--- a/src/share/classes/sun/font/FontManager.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/sun/font/FontManager.java	Wed May 14 07:53:12 2008 -0700
@@ -2124,7 +2124,7 @@
 
     private static void addLCIDMapEntry(Map<String, Short> map,
                                         String key, short value) {
-        map.put(key, new Short(value));
+        map.put(key, Short.valueOf(value));
     }
 
     private static synchronized void createLCIDMap() {
--- a/src/share/classes/sun/font/FontResolver.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/sun/font/FontResolver.java	Wed May 14 07:53:12 2008 -0700
@@ -117,7 +117,7 @@
                 Font2D font2D = FontManager.getFont2D(font);
                 if (font2D.hasSupplementaryChars()) {
                     fonts.add(font);
-                    indices.add(new Integer(i));
+                    indices.add(Integer.valueOf(i));
                 }
             }
 
--- a/src/share/classes/sun/font/PhysicalStrike.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/sun/font/PhysicalStrike.java	Wed May 14 07:53:12 2008 -0700
@@ -114,7 +114,7 @@
      */
     Point2D.Float getGlyphPoint(int glyphCode, int ptNumber) {
         Point2D.Float gp = null;
-        Integer ptKey = new Integer(glyphCode<<16|ptNumber);
+        Integer ptKey = Integer.valueOf(glyphCode<<16|ptNumber);
         if (glyphPointMapCache == null) {
             synchronized (this) {
                 if (glyphPointMapCache == null) {
--- a/src/share/classes/sun/java2d/SunGraphics2D.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/sun/java2d/SunGraphics2D.java	Wed May 14 07:53:12 2008 -0700
@@ -1374,7 +1374,7 @@
                   SunHints.Value.get(SunHints.INTKEY_FRACTIONALMETRICS,
                                      fractionalMetricsHint));
         model.put(SunHints.KEY_TEXT_ANTIALIAS_LCD_CONTRAST,
-                  new Integer(lcdTextContrast));
+                  Integer.valueOf(lcdTextContrast));
         Object value;
         switch (interpolationHint) {
         case SunHints.INTVAL_INTERPOLATION_NEAREST_NEIGHBOR:
--- a/src/share/classes/sun/java2d/loops/SurfaceType.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/sun/java2d/loops/SurfaceType.java	Wed May 14 07:53:12 2008 -0700
@@ -408,7 +408,7 @@
             if (unusedUID > 255) {
                 throw new InternalError("surface type id overflow");
             }
-            i = new Integer(unusedUID++);
+            i = Integer.valueOf(unusedUID++);
             surfaceUIDMap.put(desc, i);
         }
         return i.intValue();
--- a/src/share/classes/sun/print/PSPrinterJob.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/sun/print/PSPrinterJob.java	Wed May 14 07:53:12 2008 -0700
@@ -1536,16 +1536,16 @@
             execCmd = new String[ncomps];
             execCmd[n++] = "/usr/bin/lpr";
             if ((pFlags & PRINTER) != 0) {
-                execCmd[n++] = new String("-P" + printer);
+                execCmd[n++] = "-P" + printer;
             }
             if ((pFlags & BANNER) != 0) {
-                execCmd[n++] = new String("-J"  + banner);
+                execCmd[n++] = "-J"  + banner;
             }
             if ((pFlags & COPIES) != 0) {
-                execCmd[n++] = new String("-#" + new Integer(copies).toString());
+                execCmd[n++] = "-#" + copies;
             }
             if ((pFlags & NOSHEET) != 0) {
-                execCmd[n++] = new String("-h");
+                execCmd[n++] = "-h";
             }
             if ((pFlags & OPTIONS) != 0) {
                 execCmd[n++] = new String(options);
@@ -1556,19 +1556,19 @@
             execCmd[n++] = "/usr/bin/lp";
             execCmd[n++] = "-c";           // make a copy of the spool file
             if ((pFlags & PRINTER) != 0) {
-                execCmd[n++] = new String("-d" + printer);
+                execCmd[n++] = "-d" + printer;
             }
             if ((pFlags & BANNER) != 0) {
-                execCmd[n++] = new String("-t"  + banner);
+                execCmd[n++] = "-t"  + banner;
             }
             if ((pFlags & COPIES) != 0) {
-                execCmd[n++] = new String("-n" + new Integer(copies).toString());
+                execCmd[n++] = "-n" + copies;
             }
             if ((pFlags & NOSHEET) != 0) {
-                execCmd[n++] = new String("-o nobanner");
+                execCmd[n++] = "-o nobanner";
             }
             if ((pFlags & OPTIONS) != 0) {
-                execCmd[n++] = new String("-o" + options);
+                execCmd[n++] = "-o" + options;
             }
         }
         execCmd[n++] = spoolFile;
--- a/src/share/classes/sun/print/RasterPrinterJob.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/sun/print/RasterPrinterJob.java	Wed May 14 07:53:12 2008 -0700
@@ -245,7 +245,7 @@
     /**
      * The name of the job being printed.
      */
-    private String mDocName = new String("Java Printing");
+    private String mDocName = "Java Printing";
 
 
     /**
--- a/src/share/classes/sun/text/normalizer/VersionInfo.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/share/classes/sun/text/normalizer/VersionInfo.java	Wed May 14 07:53:12 2008 -0700
@@ -116,7 +116,7 @@
             throw new IllegalArgumentException(INVALID_VERSION_NUMBER_);
         }
         int     version = getInt(major, minor, milli, micro);
-        Integer key     = new Integer(version);
+        Integer key     = Integer.valueOf(version);
         Object  result  = MAP_.get(key);
         if (result == null) {
             result = new VersionInfo(version);
--- a/src/solaris/classes/sun/awt/X11/MWMConstants.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/solaris/classes/sun/awt/X11/MWMConstants.java	Wed May 14 07:53:12 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -26,7 +26,9 @@
 
 package sun.awt.X11;
 
-public interface MWMConstants {
+final public class MWMConstants {
+
+    private MWMConstants(){}
 
 /* bit definitions for MwmHints.flags */
     static final int MWM_HINTS_FUNCTIONS=       (1  << 0);
--- a/src/solaris/classes/sun/awt/X11/MotifDnDConstants.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/solaris/classes/sun/awt/X11/MotifDnDConstants.java	Wed May 14 07:53:12 2008 -0700
@@ -118,11 +118,11 @@
                                                             XA_MOTIF_DRAG_WINDOW,
                                                             0, 1,
                                                             false,
-                                                            XlibWrapper.AnyPropertyType);
+                                                            XConstants.AnyPropertyType);
         try {
             int status = wpg.execute(XToolkit.IgnoreBadWindowHandler);
 
-            if (status == XlibWrapper.Success &&
+            if (status == XConstants.Success &&
                 wpg.getData() != 0 &&
                 wpg.getActualType() == XAtom.XA_WINDOW &&
                 wpg.getActualFormat() == 32 &&
@@ -163,20 +163,20 @@
         XlibWrapper.XGrabServer(newDisplay);
 
         try {
-            XlibWrapper.XSetCloseDownMode(newDisplay, (int)XlibWrapper.RetainPermanent);
+            XlibWrapper.XSetCloseDownMode(newDisplay, (int)XConstants.RetainPermanent);
 
             XSetWindowAttributes xwa = new XSetWindowAttributes();
 
             try {
                 xwa.set_override_redirect(true);
-                xwa.set_event_mask(XlibWrapper.PropertyChangeMask);
+                xwa.set_event_mask(XConstants.PropertyChangeMask);
 
                 motifWindow = XlibWrapper.XCreateWindow(newDisplay, defaultRootWindow,
                                                         -10, -10, 1, 1, 0, 0,
-                                                        XlibWrapper.InputOnly,
-                                                        XlibWrapper.CopyFromParent,
-                                                        (XlibWrapper.CWOverrideRedirect |
-                                                         XlibWrapper.CWEventMask),
+                                                        XConstants.InputOnly,
+                                                        XConstants.CopyFromParent,
+                                                        (XConstants.CWOverrideRedirect |
+                                                         XConstants.CWEventMask),
                                                         xwa.pData);
 
                 if (motifWindow == 0) {
@@ -195,13 +195,13 @@
                                                 defaultRootWindow,
                                                 XA_MOTIF_DRAG_WINDOW.getAtom(),
                                                 XAtom.XA_WINDOW, 32,
-                                                XlibWrapper.PropModeReplace,
+                                                XConstants.PropModeReplace,
                                                 data, 1);
 
                     XToolkit.RESTORE_XERROR_HANDLER();
 
                     if (XToolkit.saved_error != null &&
-                        XToolkit.saved_error.get_error_code() != XlibWrapper.Success) {
+                        XToolkit.saved_error.get_error_code() != XConstants.Success) {
                         throw new XException("Cannot write motif drag window handle.");
                     }
 
@@ -282,7 +282,7 @@
         try {
             int status = wpg.execute(XToolkit.IgnoreBadWindowHandler);
 
-            if (status != XlibWrapper.Success
+            if (status != XConstants.Success
                 || wpg.getActualType() != XA_MOTIF_DRAG_TARGETS.getAtom()
                 || wpg.getData() == 0) {
 
@@ -399,13 +399,13 @@
                                         motifWindow,
                                         XA_MOTIF_DRAG_TARGETS.getAtom(),
                                         XA_MOTIF_DRAG_TARGETS.getAtom(), 8,
-                                        XlibWrapper.PropModeReplace,
+                                        XConstants.PropModeReplace,
                                         data, tableSize);
 
             XToolkit.RESTORE_XERROR_HANDLER();
 
             if (XToolkit.saved_error != null &&
-                XToolkit.saved_error.get_error_code() != XlibWrapper.Success) {
+                XToolkit.saved_error.get_error_code() != XConstants.Success) {
 
                 // Create a new motif window and retry.
                 motifWindow = createMotifWindow();
@@ -415,13 +415,13 @@
                                             motifWindow,
                                             XA_MOTIF_DRAG_TARGETS.getAtom(),
                                             XA_MOTIF_DRAG_TARGETS.getAtom(), 8,
-                                            XlibWrapper.PropModeReplace,
+                                            XConstants.PropModeReplace,
                                             data, tableSize);
 
                 XToolkit.RESTORE_XERROR_HANDLER();
 
                 if (XToolkit.saved_error != null &&
-                    XToolkit.saved_error.get_error_code() != XlibWrapper.Success) {
+                    XToolkit.saved_error.get_error_code() != XConstants.Success) {
                     throw new XException("Cannot write motif drag targets property.");
                 }
             }
@@ -538,12 +538,12 @@
             XlibWrapper.XChangeProperty(XToolkit.getDisplay(), window,
                                         XA_MOTIF_ATOM_0.getAtom(),
                                         XA_MOTIF_DRAG_INITIATOR_INFO.getAtom(),
-                                        8, XlibWrapper.PropModeReplace,
+                                        8, XConstants.PropModeReplace,
                                         structData, MOTIF_INITIATOR_INFO_SIZE);
             XToolkit.RESTORE_XERROR_HANDLER();
 
             if (XToolkit.saved_error != null &&
-                XToolkit.saved_error.get_error_code() != XlibWrapper.Success) {
+                XToolkit.saved_error.get_error_code() != XConstants.Success) {
                 throw new XException("Cannot write drag initiator info");
             }
         } finally {
@@ -571,12 +571,12 @@
             XlibWrapper.XChangeProperty(XToolkit.getDisplay(), window,
                                         XA_MOTIF_DRAG_RECEIVER_INFO.getAtom(),
                                         XA_MOTIF_DRAG_RECEIVER_INFO.getAtom(),
-                                        8, XlibWrapper.PropModeReplace,
+                                        8, XConstants.PropModeReplace,
                                         data, dataSize);
             XToolkit.RESTORE_XERROR_HANDLER();
 
             if (XToolkit.saved_error != null &&
-                XToolkit.saved_error.get_error_code() != XlibWrapper.Success) {
+                XToolkit.saved_error.get_error_code() != XConstants.Success) {
                 throw new XException("Cannot write Motif receiver info property");
             }
         } finally {
--- a/src/solaris/classes/sun/awt/X11/MotifDnDDragSourceProtocol.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/solaris/classes/sun/awt/X11/MotifDnDDragSourceProtocol.java	Wed May 14 07:53:12 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -44,7 +44,7 @@
 
     private static final Unsafe unsafe = XlibWrapper.unsafe;
 
-    private long targetEnterServerTime = XlibWrapper.CurrentTime;
+    private long targetEnterServerTime = XConstants.CurrentTime;
 
     protected MotifDnDDragSourceProtocol(XDragSourceProtocolListener listener) {
         super(listener);
@@ -86,7 +86,7 @@
 
         if (!MotifDnDConstants.MotifDnDSelection.setOwner(contents, formatMap,
                                                           formats,
-                                                          XlibWrapper.CurrentTime)) {
+                                                          XConstants.CurrentTime)) {
             cleanup();
             throw new InvalidDnDOperationException("Cannot acquire selection ownership");
         }
@@ -137,7 +137,7 @@
         long time = t;
 
         /* Discard events from the previous receiver. */
-        if (targetEnterServerTime == XlibWrapper.CurrentTime ||
+        if (targetEnterServerTime == XConstants.CurrentTime ||
             time < targetEnterServerTime) {
             return true;
         }
@@ -181,7 +181,7 @@
             new WindowPropertyGetter(window,
                                      MotifDnDConstants.XA_MOTIF_DRAG_RECEIVER_INFO,
                                      0, 0xFFFF, false,
-                                     XlibWrapper.AnyPropertyType);
+                                     XConstants.AnyPropertyType);
 
         try {
             int status = wpg.execute(XToolkit.IgnoreBadWindowHandler);
@@ -200,7 +200,7 @@
              *     CARD32       heap_offset B32;
              * } xmDragReceiverInfoStruct;
              */
-            if (status == (int)XlibWrapper.Success && wpg.getData() != 0 &&
+            if (status == (int)XConstants.Success && wpg.getData() != 0 &&
                 wpg.getActualType() != 0 && wpg.getActualFormat() == 8 &&
                 wpg.getNumberOfItems() >=
                 MotifDnDConstants.MOTIF_RECEIVER_INFO_SIZE) {
@@ -243,7 +243,7 @@
 
         XClientMessageEvent msg = new XClientMessageEvent();
         try {
-            msg.set_type(XlibWrapper.ClientMessage);
+            msg.set_type(XConstants.ClientMessage);
             msg.set_window(getTargetWindow());
             msg.set_format(8);
             msg.set_message_type(MotifDnDConstants.XA_MOTIF_DRAG_AND_DROP_MESSAGE.getAtom());
@@ -267,7 +267,7 @@
 
             XlibWrapper.XSendEvent(XToolkit.getDisplay(),
                                    getTargetProxyWindow(),
-                                   false, XlibWrapper.NoEventMask,
+                                   false, XConstants.NoEventMask,
                                    msg.pData);
         } finally {
             msg.dispose();
@@ -281,7 +281,7 @@
 
         XClientMessageEvent msg = new XClientMessageEvent();
         try {
-            msg.set_type(XlibWrapper.ClientMessage);
+            msg.set_type(XConstants.ClientMessage);
             msg.set_window(getTargetWindow());
             msg.set_format(8);
             msg.set_message_type(MotifDnDConstants.XA_MOTIF_DRAG_AND_DROP_MESSAGE.getAtom());
@@ -305,7 +305,7 @@
 
             XlibWrapper.XSendEvent(XToolkit.getDisplay(),
                                    getTargetProxyWindow(),
-                                   false, XlibWrapper.NoEventMask,
+                                   false, XConstants.NoEventMask,
                                    msg.pData);
         } finally {
             msg.dispose();
@@ -318,7 +318,7 @@
 
         XClientMessageEvent msg = new XClientMessageEvent();
         try {
-            msg.set_type(XlibWrapper.ClientMessage);
+            msg.set_type(XConstants.ClientMessage);
             msg.set_window(getTargetWindow());
             msg.set_format(8);
             msg.set_message_type(MotifDnDConstants.XA_MOTIF_DRAG_AND_DROP_MESSAGE.getAtom());
@@ -336,7 +336,7 @@
 
             XlibWrapper.XSendEvent(XToolkit.getDisplay(),
                                    getTargetProxyWindow(),
-                                   false, XlibWrapper.NoEventMask,
+                                   false, XConstants.NoEventMask,
                                    msg.pData);
         } finally {
             msg.dispose();
@@ -356,7 +356,7 @@
 
         XClientMessageEvent msg = new XClientMessageEvent();
         try {
-            msg.set_type(XlibWrapper.ClientMessage);
+            msg.set_type(XConstants.ClientMessage);
             msg.set_window(getTargetWindow());
             msg.set_format(8);
             msg.set_message_type(MotifDnDConstants.XA_MOTIF_DRAG_AND_DROP_MESSAGE.getAtom());
@@ -382,7 +382,7 @@
 
             XlibWrapper.XSendEvent(XToolkit.getDisplay(),
                                    getTargetProxyWindow(),
-                                   false, XlibWrapper.NoEventMask,
+                                   false, XConstants.NoEventMask,
                                    msg.pData);
         } finally {
             msg.dispose();
@@ -397,12 +397,12 @@
 
     public void cleanupTargetInfo() {
         super.cleanupTargetInfo();
-        targetEnterServerTime = XlibWrapper.CurrentTime;
+        targetEnterServerTime = XConstants.CurrentTime;
     }
 
     public void dispatchEvent(XEvent ev) {
         switch (ev.get_type()) {
-        case XlibWrapper.SelectionRequest:
+        case XConstants.SelectionRequest:
             XSelectionRequestEvent xsre = ev.get_xselectionrequest();
             long atom = xsre.get_selection();
 
--- a/src/solaris/classes/sun/awt/X11/MotifDnDDropTargetProtocol.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/solaris/classes/sun/awt/X11/MotifDnDDropTargetProtocol.java	Wed May 14 07:53:12 2008 -0700
@@ -99,7 +99,7 @@
             new WindowPropertyGetter(embedder,
                                      MotifDnDConstants.XA_MOTIF_DRAG_RECEIVER_INFO,
                                      0, 0xFFFF, false,
-                                     XlibWrapper.AnyPropertyType);
+                                     XConstants.AnyPropertyType);
 
         try {
             status = wpg.execute(XToolkit.IgnoreBadWindowHandler);
@@ -118,7 +118,7 @@
              *     CARD32       heap_offset B32;
              * } xmDragReceiverInfoStruct;
              */
-            if (status == (int)XlibWrapper.Success && wpg.getData() != 0 &&
+            if (status == (int)XConstants.Success && wpg.getData() != 0 &&
                 wpg.getActualType() != 0 && wpg.getActualFormat() == 8 &&
                 wpg.getNumberOfItems() >=
                 MotifDnDConstants.MOTIF_RECEIVER_INFO_SIZE) {
@@ -166,12 +166,12 @@
             XlibWrapper.XChangeProperty(XToolkit.getDisplay(), embedder,
                                         MotifDnDConstants.XA_MOTIF_DRAG_RECEIVER_INFO.getAtom(),
                                         MotifDnDConstants.XA_MOTIF_DRAG_RECEIVER_INFO.getAtom(),
-                                        8, XlibWrapper.PropModeReplace,
+                                        8, XConstants.PropModeReplace,
                                         data, dataSize);
             XToolkit.RESTORE_XERROR_HANDLER();
 
             if (XToolkit.saved_error != null &&
-                XToolkit.saved_error.get_error_code() != XlibWrapper.Success) {
+                XToolkit.saved_error.get_error_code() != XConstants.Success) {
                 throw new XException("Cannot write Motif receiver info property");
             }
         } finally {
@@ -201,7 +201,7 @@
                 new WindowPropertyGetter(embedder,
                                          MotifDnDConstants.XA_MOTIF_DRAG_RECEIVER_INFO,
                                          0, 0xFFFF, false,
-                                         XlibWrapper.AnyPropertyType);
+                                         XConstants.AnyPropertyType);
 
             try {
                 status = wpg.execute(XToolkit.IgnoreBadWindowHandler);
@@ -220,7 +220,7 @@
                  *     CARD32   heap_offset B32;
                  * } xmDragReceiverInfoStruct;
                  */
-                if (status == (int)XlibWrapper.Success && wpg.getData() != 0 &&
+                if (status == (int)XConstants.Success && wpg.getData() != 0 &&
                     wpg.getActualType() != 0 && wpg.getActualFormat() == 8 &&
                     wpg.getNumberOfItems() >=
                     MotifDnDConstants.MOTIF_RECEIVER_INFO_SIZE) {
@@ -240,12 +240,12 @@
                     XlibWrapper.XChangeProperty(XToolkit.getDisplay(), embedder,
                                                 MotifDnDConstants.XA_MOTIF_DRAG_RECEIVER_INFO.getAtom(),
                                                 MotifDnDConstants.XA_MOTIF_DRAG_RECEIVER_INFO.getAtom(),
-                                                8, XlibWrapper.PropModeReplace,
+                                                8, XConstants.PropModeReplace,
                                                 data, dataSize);
                     XToolkit.RESTORE_XERROR_HANDLER();
 
                     if (XToolkit.saved_error != null &&
-                        XToolkit.saved_error.get_error_code() != XlibWrapper.Success) {
+                        XToolkit.saved_error.get_error_code() != XConstants.Success) {
                         throw new XException("Cannot write Motif receiver info property");
                     }
                 }
@@ -273,7 +273,7 @@
             new WindowPropertyGetter(embedded,
                                      MotifDnDConstants.XA_MOTIF_DRAG_RECEIVER_INFO,
                                      0, 0xFFFF, false,
-                                     XlibWrapper.AnyPropertyType);
+                                     XConstants.AnyPropertyType);
 
         try {
             status = wpg.execute(XToolkit.IgnoreBadWindowHandler);
@@ -292,7 +292,7 @@
              *     CARD32       heap_offset B32;
              * } xmDragReceiverInfoStruct;
              */
-            if (status == (int)XlibWrapper.Success && wpg.getData() != 0 &&
+            if (status == (int)XConstants.Success && wpg.getData() != 0 &&
                 wpg.getActualType() != 0 && wpg.getActualFormat() == 8 &&
                 wpg.getNumberOfItems() >=
                 MotifDnDConstants.MOTIF_RECEIVER_INFO_SIZE) {
@@ -322,12 +322,12 @@
             new WindowPropertyGetter(window,
                                      MotifDnDConstants.XA_MOTIF_DRAG_RECEIVER_INFO,
                                      0, 0xFFFF, false,
-                                     XlibWrapper.AnyPropertyType);
+                                     XConstants.AnyPropertyType);
 
         try {
             int status = wpg.execute(XToolkit.IgnoreBadWindowHandler);
 
-            if (status == (int)XlibWrapper.Success && wpg.getData() != 0 &&
+            if (status == (int)XConstants.Success && wpg.getData() != 0 &&
                 wpg.getActualType() != 0 && wpg.getActualFormat() == 8 &&
                 wpg.getNumberOfItems() >=
                 MotifDnDConstants.MOTIF_RECEIVER_INFO_SIZE) {
@@ -377,7 +377,7 @@
             try {
                 int status = wpg.execute(XToolkit.IgnoreBadWindowHandler);
 
-                if (status == XlibWrapper.Success && wpg.getData() != 0 &&
+                if (status == XConstants.Success && wpg.getData() != 0 &&
                     wpg.getActualType() ==
                     MotifDnDConstants.XA_MOTIF_DRAG_INITIATOR_INFO.getAtom() &&
                     wpg.getActualFormat() == 8 &&
@@ -420,7 +420,7 @@
 
             if (status == 0 ||
                 (XToolkit.saved_error != null &&
-                 XToolkit.saved_error.get_error_code() != XlibWrapper.Success)) {
+                 XToolkit.saved_error.get_error_code() != XConstants.Success)) {
                 throw new XException("XGetWindowAttributes failed");
             }
 
@@ -432,12 +432,12 @@
         XToolkit.WITH_XERROR_HANDLER(XToolkit.IgnoreBadWindowHandler);
         XlibWrapper.XSelectInput(XToolkit.getDisplay(), source_win,
                                  source_win_mask |
-                                 XlibWrapper.StructureNotifyMask);
+                                 XConstants.StructureNotifyMask);
 
         XToolkit.RESTORE_XERROR_HANDLER();
 
         if (XToolkit.saved_error != null &&
-            XToolkit.saved_error.get_error_code() != XlibWrapper.Success) {
+            XToolkit.saved_error.get_error_code() != XConstants.Success) {
             throw new XException("XSelectInput failed");
         }
 
@@ -590,7 +590,7 @@
             XClientMessageEvent dummy = new XClientMessageEvent();
 
             try {
-                dummy.set_type(XlibWrapper.ClientMessage);
+                dummy.set_type(XConstants.ClientMessage);
                 dummy.set_window(xclient.get_window());
                 dummy.set_format(32);
                 dummy.set_message_type(0);
@@ -600,7 +600,7 @@
                 dummy.set_data(3, 0);
                 dummy.set_data(4, 0);
                 XlibWrapper.XSendEvent(XToolkit.getDisplay(),
-                                       proxy, false, XlibWrapper.NoEventMask,
+                                       proxy, false, XConstants.NoEventMask,
                                        dummy.pData);
             } finally {
                 dummy.dispose();
@@ -821,7 +821,7 @@
         XClientMessageEvent msg = new XClientMessageEvent();
 
         try {
-            msg.set_type(XlibWrapper.ClientMessage);
+            msg.set_type(XConstants.ClientMessage);
             msg.set_window(MotifDnDConstants.Swapper.getInt(data + 12, eventByteOrder));
             msg.set_format(8);
             msg.set_message_type(MotifDnDConstants.XA_MOTIF_DRAG_AND_DROP_MESSAGE.getAtom());
@@ -878,7 +878,7 @@
             try {
                 XlibWrapper.XSendEvent(XToolkit.getDisplay(),
                                        msg.get_window(),
-                                       false, XlibWrapper.NoEventMask,
+                                       false, XConstants.NoEventMask,
                                        msg.pData);
             } finally {
                 XToolkit.awtUnlock();
--- a/src/solaris/classes/sun/awt/X11/WindowPropertyGetter.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/solaris/classes/sun/awt/X11/WindowPropertyGetter.java	Wed May 14 07:53:12 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2005 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -89,7 +89,7 @@
 
             if (isCachingSupported() && isCached()) {
                 readFromCache();
-                return XlibWrapper.Success;
+                return XConstants.Success;
             }
 
             // Fix for performance problem - IgnodeBadWindowHandler is
@@ -106,7 +106,7 @@
                                                         offset, length, (auto_delete?1:0), type,
                                                         actual_type, actual_format, nitems_ptr,
                                                         bytes_after, data);
-            if (isCachingSupported() &&  status == XlibWrapper.Success && getData() != 0 && isCacheableProperty(property)) {
+            if (isCachingSupported() &&  status == XConstants.Success && getData() != 0 && isCacheableProperty(property)) {
                 // Property has some data, we cache them
                 cacheProperty();
             }
--- a/src/solaris/classes/sun/awt/X11/XAWTXSettings.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/solaris/classes/sun/awt/X11/XAWTXSettings.java	Wed May 14 07:53:12 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -128,7 +128,7 @@
             try {
                 int status = getter.execute(XToolkit.IgnoreBadWindowHandler);
 
-                if (status != XlibWrapper.Success || getter.getData() == 0) {
+                if (status != XConstants.Success || getter.getData() == 0) {
                     if (log.isLoggable(Level.FINE)) log.fine("OH OH : getter failed  status = " + status );
                     settings = null;
                 }
--- a/src/solaris/classes/sun/awt/X11/XAtom.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/solaris/classes/sun/awt/X11/XAtom.java	Wed May 14 07:53:12 2008 -0700
@@ -370,7 +370,7 @@
                                      false, property_type);
         try {
             int status = getter.execute();
-            if (status != XlibWrapper.Success || getter.getData() == 0) {
+            if (status != XConstants.Success || getter.getData() == 0) {
                 return 0;
             }
             if (getter.getActualType() != property_type || getter.getActualFormat() != 32) {
@@ -401,7 +401,7 @@
         try {
             Native.putCard32(XlibWrapper.larg1, value);
             XlibWrapper.XChangeProperty(XToolkit.getDisplay(), window,
-                atom, XA_CARDINAL, 32, XlibWrapper.PropModeReplace,
+                atom, XA_CARDINAL, 32, XConstants.PropModeReplace,
                 XlibWrapper.larg1, 1);
         } finally {
             XToolkit.awtUnlock();
@@ -432,7 +432,7 @@
                                      false, this);
         try {
             int status = getter.execute();
-            if (status != XlibWrapper.Success || getter.getData() == 0) {
+            if (status != XConstants.Success || getter.getData() == 0) {
                 return false;
             }
             if (getter.getActualType() != atom
@@ -466,7 +466,7 @@
                                      false, type);
         try {
             int status = getter.execute();
-            if (status != XlibWrapper.Success || getter.getData() == 0) {
+            if (status != XConstants.Success || getter.getData() == 0) {
                 return false;
             }
             if (getter.getActualType() != type
@@ -497,7 +497,7 @@
         XToolkit.awtLock();
         try {
             XlibWrapper.XChangeProperty(XToolkit.getDisplay(), window,
-                atom, atom, 32, XlibWrapper.PropModeReplace,
+                atom, atom, 32, XConstants.PropModeReplace,
                 data_ptr, length);
         } finally {
             XToolkit.awtUnlock();
@@ -518,7 +518,7 @@
         XToolkit.awtLock();
         try {
             XlibWrapper.XChangeProperty(XToolkit.getDisplay(), window,
-                atom, type, 32, XlibWrapper.PropModeReplace,
+                atom, type, 32, XConstants.PropModeReplace,
                 data_ptr, length);
         } finally {
             XToolkit.awtUnlock();
@@ -539,7 +539,7 @@
         XToolkit.awtLock();
         try {
             XlibWrapper.XChangeProperty(XToolkit.getDisplay(), window,
-                atom, type, 8, XlibWrapper.PropModeReplace,
+                atom, type, 8, XConstants.PropModeReplace,
                 data_ptr, length);
         } finally {
             XToolkit.awtUnlock();
@@ -602,7 +602,7 @@
                                      false, property_type);
         try {
             int status = getter.execute();
-            if (status != XlibWrapper.Success || getter.getData() == 0) {
+            if (status != XConstants.Success || getter.getData() == 0) {
                 return null;
             }
             if (getter.getActualType() != property_type || getter.getActualFormat() != 8) {
@@ -674,7 +674,7 @@
                                      false, XA_ATOM);
         try {
             int status = getter.execute();
-            if (status != XlibWrapper.Success || getter.getData() == 0) {
+            if (status != XConstants.Success || getter.getData() == 0) {
                 return emptyList;
             }
             if (getter.getActualType() != XA_ATOM || getter.getActualFormat() != 32) {
@@ -797,7 +797,7 @@
         try {
             Native.putWindow(XlibWrapper.larg1, window_value);
             XlibWrapper.XChangeProperty(XToolkit.getDisplay(), window,
-                                    atom, XA_WINDOW, 32, XlibWrapper.PropModeReplace,
+                                    atom, XA_WINDOW, 32, XConstants.PropModeReplace,
                                     XlibWrapper.larg1, 1);
         } finally {
             XToolkit.awtUnlock();
@@ -821,7 +821,7 @@
                                      false, XA_WINDOW);
         try {
             int status = getter.execute();
-            if (status != XlibWrapper.Success || getter.getData() == 0) {
+            if (status != XConstants.Success || getter.getData() == 0) {
                 return 0;
             }
             if (getter.getActualType() != XA_WINDOW || getter.getActualFormat() != 32) {
--- a/src/solaris/classes/sun/awt/X11/XBaseMenuWindow.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/solaris/classes/sun/awt/X11/XBaseMenuWindow.java	Wed May 14 07:53:12 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -885,14 +885,14 @@
      */
      protected boolean isEventDisabled(XEvent e) {
         switch (e.get_type()) {
-          case XlibWrapper.Expose :
-          case XlibWrapper.GraphicsExpose :
-          case XlibWrapper.ButtonPress:
-          case XlibWrapper.ButtonRelease:
-          case XlibWrapper.MotionNotify:
-          case XlibWrapper.KeyPress:
-          case XlibWrapper.KeyRelease:
-          case XlibWrapper.DestroyNotify:
+          case XConstants.Expose :
+          case XConstants.GraphicsExpose :
+          case XConstants.ButtonPress:
+          case XConstants.ButtonRelease:
+          case XConstants.MotionNotify:
+          case XConstants.KeyPress:
+          case XConstants.KeyRelease:
+          case XConstants.DestroyNotify:
               return super.isEventDisabled(e);
           default:
               return true;
--- a/src/solaris/classes/sun/awt/X11/XBaseWindow.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/solaris/classes/sun/awt/X11/XBaseWindow.java	Wed May 14 07:53:12 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -30,7 +30,7 @@
 import java.util.logging.*;
 import java.util.*;
 
-public class XBaseWindow implements XConstants, XUtilConstants {
+public class XBaseWindow {
     private static final Logger log = Logger.getLogger("sun.awt.X11.XBaseWindow");
     private static final Logger insLog = Logger.getLogger("sun.awt.X11.insets.XBaseWindow");
     private static final Logger eventLog = Logger.getLogger("sun.awt.X11.event.XBaseWindow");
@@ -148,7 +148,7 @@
         Long eventMask = (Long)params.get(EVENT_MASK);
         if (eventMask != null) {
             long mask = eventMask.longValue();
-            mask |= SubstructureNotifyMask;
+            mask |= XConstants.SubstructureNotifyMask;
             params.put(EVENT_MASK, mask);
         }
 
@@ -281,10 +281,10 @@
         }
         params.putIfNull(PARENT_WINDOW, Long.valueOf(XToolkit.getDefaultRootWindow()));
         params.putIfNull(BOUNDS, new Rectangle(DEF_LOCATION, DEF_LOCATION, MIN_SIZE, MIN_SIZE));
-        params.putIfNull(DEPTH, Integer.valueOf((int)XlibWrapper.CopyFromParent));
-        params.putIfNull(VISUAL, Long.valueOf(XlibWrapper.CopyFromParent));
-        params.putIfNull(VISUAL_CLASS, Integer.valueOf((int)XlibWrapper.InputOnly));
-        params.putIfNull(VALUE_MASK, Long.valueOf(XlibWrapper.CWEventMask));
+        params.putIfNull(DEPTH, Integer.valueOf((int)XConstants.CopyFromParent));
+        params.putIfNull(VISUAL, Long.valueOf(XConstants.CopyFromParent));
+        params.putIfNull(VISUAL_CLASS, Integer.valueOf((int)XConstants.InputOnly));
+        params.putIfNull(VALUE_MASK, Long.valueOf(XConstants.CWEventMask));
         Rectangle bounds = (Rectangle)params.get(BOUNDS);
         bounds.width = Math.max(MIN_SIZE, bounds.width);
         bounds.height = Math.max(MIN_SIZE, bounds.height);
@@ -293,7 +293,7 @@
         long eventMask = eventMaskObj != null ? eventMaskObj.longValue() : 0;
         // We use our own synthetic grab see XAwtState.getGrabWindow()
         // (see X vol. 1, 8.3.3.2)
-        eventMask |= PropertyChangeMask | OwnerGrabButtonMask;
+        eventMask |= XConstants.PropertyChangeMask | XConstants.OwnerGrabButtonMask;
         params.put(EVENT_MASK, Long.valueOf(eventMask));
     }
 
@@ -312,23 +312,23 @@
 
                 Long eventMask = (Long)params.get(EVENT_MASK);
                 xattr.set_event_mask(eventMask.longValue());
-                value_mask |= XlibWrapper.CWEventMask;
+                value_mask |= XConstants.CWEventMask;
 
                 Long border_pixel = (Long)params.get(BORDER_PIXEL);
                 if (border_pixel != null) {
                     xattr.set_border_pixel(border_pixel.longValue());
-                    value_mask |= XlibWrapper.CWBorderPixel;
+                    value_mask |= XConstants.CWBorderPixel;
                 }
 
                 Long colormap = (Long)params.get(COLORMAP);
                 if (colormap != null) {
                     xattr.set_colormap(colormap.longValue());
-                    value_mask |= XlibWrapper.CWColormap;
+                    value_mask |= XConstants.CWColormap;
                 }
                 Long background_pixmap = (Long)params.get(BACKGROUND_PIXMAP);
                 if (background_pixmap != null) {
                     xattr.set_background_pixmap(background_pixmap.longValue());
-                    value_mask |= XlibWrapper.CWBackPixmap;
+                    value_mask |= XConstants.CWBackPixmap;
                 }
 
                 Long parentWindow = (Long)params.get(PARENT_WINDOW);
@@ -339,25 +339,25 @@
                 Boolean overrideRedirect = (Boolean)params.get(OVERRIDE_REDIRECT);
                 if (overrideRedirect != null) {
                     xattr.set_override_redirect(overrideRedirect.booleanValue());
-                    value_mask |= XlibWrapper.CWOverrideRedirect;
+                    value_mask |= XConstants.CWOverrideRedirect;
                 }
 
                 Boolean saveUnder = (Boolean)params.get(SAVE_UNDER);
                 if (saveUnder != null) {
                     xattr.set_save_under(saveUnder.booleanValue());
-                    value_mask |= XlibWrapper.CWSaveUnder;
+                    value_mask |= XConstants.CWSaveUnder;
                 }
 
                 Integer backingStore = (Integer)params.get(BACKING_STORE);
                 if (backingStore != null) {
                     xattr.set_backing_store(backingStore.intValue());
-                    value_mask |= XlibWrapper.CWBackingStore;
+                    value_mask |= XConstants.CWBackingStore;
                 }
 
                 Integer bitGravity = (Integer)params.get(BIT_GRAVITY);
                 if (bitGravity != null) {
                     xattr.set_bit_gravity(bitGravity.intValue());
-                    value_mask |= XlibWrapper.CWBitGravity;
+                    value_mask |= XConstants.CWBitGravity;
                 }
 
                 if (log.isLoggable(Level.FINE)) {
@@ -487,25 +487,25 @@
             // Note: if PPosition is not set in flags this means that
             // we want to reset PPosition in hints.  This is necessary
             // for locationByPlatform functionality
-            if ((flags & XlibWrapper.PPosition) != 0) {
+            if ((flags & XUtilConstants.PPosition) != 0) {
                 hints.set_x(x);
                 hints.set_y(y);
             }
-            if ((flags & XlibWrapper.PSize) != 0) {
+            if ((flags & XUtilConstants.PSize) != 0) {
                 hints.set_width(width);
                 hints.set_height(height);
-            } else if ((hints.get_flags() & XlibWrapper.PSize) != 0) {
-                flags |= XlibWrapper.PSize;
+            } else if ((hints.get_flags() & XUtilConstants.PSize) != 0) {
+                flags |= XUtilConstants.PSize;
             }
-            if ((flags & XlibWrapper.PMinSize) != 0) {
+            if ((flags & XUtilConstants.PMinSize) != 0) {
                 hints.set_min_width(width);
                 hints.set_min_height(height);
-            } else if ((hints.get_flags() & XlibWrapper.PMinSize) != 0) {
-                flags |= XlibWrapper.PMinSize;
+            } else if ((hints.get_flags() & XUtilConstants.PMinSize) != 0) {
+                flags |= XUtilConstants.PMinSize;
                 //Fix for 4320050: Minimum size for java.awt.Frame is not being enforced.
                 //We don't need to reset minimum size if it's already set
             }
-            if ((flags & XlibWrapper.PMaxSize) != 0) {
+            if ((flags & XUtilConstants.PMaxSize) != 0) {
                 if (maxBounds != null) {
                     if (maxBounds.width != Integer.MAX_VALUE) {
                         hints.set_max_width(maxBounds.width);
@@ -521,8 +521,8 @@
                     hints.set_max_width(width);
                     hints.set_max_height(height);
                 }
-            } else if ((hints.get_flags() & XlibWrapper.PMaxSize) != 0) {
-                flags |= XlibWrapper.PMaxSize;
+            } else if ((hints.get_flags() & XUtilConstants.PMaxSize) != 0) {
+                flags |= XUtilConstants.PMaxSize;
                 if (maxBounds != null) {
                     if (maxBounds.width != Integer.MAX_VALUE) {
                         hints.set_max_width(maxBounds.width);
@@ -538,9 +538,9 @@
                     // Leave intact
                 }
             }
-            flags |= XlibWrapper.PWinGravity;
+            flags |= XUtilConstants.PWinGravity;
             hints.set_flags(flags);
-            hints.set_win_gravity((int)XlibWrapper.NorthWestGravity);
+            hints.set_win_gravity((int)XConstants.NorthWestGravity);
             if (insLog.isLoggable(Level.FINER)) insLog.finer("Setting hints, resulted flags " + XlibWrapper.hintsToString(flags) +
                                                              ", values " + hints);
             XlibWrapper.XSetWMNormalHints(XToolkit.getDisplay(), getWindow(), hints.pData);
@@ -552,7 +552,7 @@
     public boolean isMinSizeSet() {
         XSizeHints hints = getHints();
         long flags = hints.get_flags();
-        return ((flags & XlibWrapper.PMinSize) == XlibWrapper.PMinSize);
+        return ((flags & XUtilConstants.PMinSize) == XUtilConstants.PMinSize);
     }
 
     /**
@@ -837,29 +837,29 @@
             //6273031: PIT. Choice drop down does not close once it is right clicked to show a popup menu
             //remember previous window having grab and if it's not null ungrab it.
             XBaseWindow prevGrabWindow = XAwtState.getGrabWindow();
-            final int eventMask = (int) (ButtonPressMask | ButtonReleaseMask
-                | EnterWindowMask | LeaveWindowMask | PointerMotionMask
-                | ButtonMotionMask);
+            final int eventMask = (int) (XConstants.ButtonPressMask | XConstants.ButtonReleaseMask
+                | XConstants.EnterWindowMask | XConstants.LeaveWindowMask | XConstants.PointerMotionMask
+                | XConstants.ButtonMotionMask);
             final int ownerEvents = 1;
 
             int ptrGrab = XlibWrapper.XGrabPointer(XToolkit.getDisplay(),
-                getContentWindow(), ownerEvents, eventMask, GrabModeAsync,
-                GrabModeAsync, None, (XWM.isMotif() ? XToolkit.arrowCursor : None),
-                CurrentTime);
+                getContentWindow(), ownerEvents, eventMask, XConstants.GrabModeAsync,
+                XConstants.GrabModeAsync, XConstants.None, (XWM.isMotif() ? XToolkit.arrowCursor : XConstants.None),
+                XConstants.CurrentTime);
             // Check grab results to be consistent with X server grab
-            if (ptrGrab != GrabSuccess) {
-                XlibWrapper.XUngrabPointer(XToolkit.getDisplay(), CurrentTime);
+            if (ptrGrab != XConstants.GrabSuccess) {
+                XlibWrapper.XUngrabPointer(XToolkit.getDisplay(), XConstants.CurrentTime);
                 XAwtState.setGrabWindow(null);
                 grabLog.fine("    Grab Failure - mouse");
                 return false;
             }
 
             int keyGrab = XlibWrapper.XGrabKeyboard(XToolkit.getDisplay(),
-                getContentWindow(), ownerEvents, GrabModeAsync, GrabModeAsync,
-                CurrentTime);
-            if (keyGrab != GrabSuccess) {
-                XlibWrapper.XUngrabPointer(XToolkit.getDisplay(), CurrentTime);
-                XlibWrapper.XUngrabKeyboard(XToolkit.getDisplay(), CurrentTime);
+                getContentWindow(), ownerEvents, XConstants.GrabModeAsync, XConstants.GrabModeAsync,
+                XConstants.CurrentTime);
+            if (keyGrab != XConstants.GrabSuccess) {
+                XlibWrapper.XUngrabPointer(XToolkit.getDisplay(), XConstants.CurrentTime);
+                XlibWrapper.XUngrabKeyboard(XToolkit.getDisplay(), XConstants.CurrentTime);
                 XAwtState.setGrabWindow(null);
                 grabLog.fine("    Grab Failure - keyboard");
                 return false;
@@ -882,8 +882,8 @@
             grabLog.log(Level.FINE, "UnGrab input on {0}", new Object[] {grabWindow});
             if (grabWindow != null) {
                 grabWindow.ungrabInputImpl();
-                XlibWrapper.XUngrabPointer(XToolkit.getDisplay(), CurrentTime);
-                XlibWrapper.XUngrabKeyboard(XToolkit.getDisplay(), CurrentTime);
+                XlibWrapper.XUngrabPointer(XToolkit.getDisplay(), XConstants.CurrentTime);
+                XlibWrapper.XUngrabKeyboard(XToolkit.getDisplay(), XConstants.CurrentTime);
                 XAwtState.setGrabWindow(null);
                 // we need to call XFlush() here to force ungrab
                 // see 6384219 for details
@@ -979,15 +979,15 @@
      */
     public void handleButtonPressRelease(XEvent xev) {
         XButtonEvent xbe = xev.get_xbutton();
-        final int buttonState = xbe.get_state() & (Button1Mask | Button2Mask
-            | Button3Mask | Button4Mask | Button5Mask);
+        final int buttonState = xbe.get_state() & (XConstants.Button1Mask | XConstants.Button2Mask
+            | XConstants.Button3Mask | XConstants.Button4Mask | XConstants.Button5Mask);
         switch (xev.get_type()) {
-        case ButtonPress:
+        case XConstants.ButtonPress:
             if (buttonState == 0) {
                 XAwtState.setAutoGrabWindow(this);
             }
             break;
-        case ButtonRelease:
+        case XConstants.ButtonRelease:
             if (isFullRelease(buttonState, xbe.get_button())) {
                 XAwtState.setAutoGrabWindow(null);
             }
@@ -1012,30 +1012,30 @@
      */
     static boolean isFullRelease(int buttonState, int button) {
         switch (button) {
-        case Button1:
-            return buttonState == Button1Mask;
-        case Button2:
-            return buttonState == Button2Mask;
-        case Button3:
-            return buttonState == Button3Mask;
-        case Button4:
-            return buttonState == Button4Mask;
-        case Button5:
-            return buttonState == Button5Mask;
+        case XConstants.Button1:
+            return buttonState == XConstants.Button1Mask;
+        case XConstants.Button2:
+            return buttonState == XConstants.Button2Mask;
+        case XConstants.Button3:
+            return buttonState == XConstants.Button3Mask;
+        case XConstants.Button4:
+            return buttonState == XConstants.Button4Mask;
+        case XConstants.Button5:
+            return buttonState == XConstants.Button5Mask;
         }
         return buttonState == 0;
     }
 
     static boolean isGrabbedEvent(XEvent ev, XBaseWindow target) {
         switch (ev.get_type()) {
-          case ButtonPress:
-          case ButtonRelease:
-          case MotionNotify:
-          case KeyPress:
-          case KeyRelease:
+          case XConstants.ButtonPress:
+          case XConstants.ButtonRelease:
+          case XConstants.MotionNotify:
+          case XConstants.KeyPress:
+          case XConstants.KeyRelease:
               return true;
-          case LeaveNotify:
-          case EnterNotify:
+          case XConstants.LeaveNotify:
+          case XConstants.EnterNotify:
               // We shouldn't dispatch this events to the grabbed components (see 6317481)
               // But this logic is important if the grabbed component is top-level (see realSync)
               return (target instanceof XWindowPeer);
@@ -1067,53 +1067,53 @@
 
         switch (type)
         {
-          case VisibilityNotify:
+          case XConstants.VisibilityNotify:
               handleVisibilityEvent(xev);
               break;
-          case ClientMessage:
+          case XConstants.ClientMessage:
               handleClientMessage(xev);
               break;
-          case Expose :
-          case GraphicsExpose :
+          case XConstants.Expose :
+          case XConstants.GraphicsExpose :
               handleExposeEvent(xev);
               break;
-          case ButtonPress:
-          case ButtonRelease:
+          case XConstants.ButtonPress:
+          case XConstants.ButtonRelease:
               handleButtonPressRelease(xev);
               break;
 
-          case MotionNotify:
+          case XConstants.MotionNotify:
               handleMotionNotify(xev);
               break;
-          case KeyPress:
+          case XConstants.KeyPress:
               handleKeyPress(xev);
               break;
-          case KeyRelease:
+          case XConstants.KeyRelease:
               handleKeyRelease(xev);
               break;
-          case EnterNotify:
-          case LeaveNotify:
+          case XConstants.EnterNotify:
+          case XConstants.LeaveNotify:
               handleXCrossingEvent(xev);
               break;
-          case ConfigureNotify:
+          case XConstants.ConfigureNotify:
               handleConfigureNotifyEvent(xev);
               break;
-          case MapNotify:
+          case XConstants.MapNotify:
               handleMapNotifyEvent(xev);
               break;
-          case UnmapNotify:
+          case XConstants.UnmapNotify:
               handleUnmapNotifyEvent(xev);
               break;
-          case ReparentNotify:
+          case XConstants.ReparentNotify:
               handleReparentNotifyEvent(xev);
               break;
-          case PropertyNotify:
+          case XConstants.PropertyNotify:
               handlePropertyNotify(xev);
               break;
-          case DestroyNotify:
+          case XConstants.DestroyNotify:
               handleDestroyNotify(xev);
               break;
-          case CreateNotify:
+          case XConstants.CreateNotify:
               handleCreateNotify(xev);
               break;
         }
--- a/src/solaris/classes/sun/awt/X11/XClipboard.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/solaris/classes/sun/awt/X11/XClipboard.java	Wed May 14 07:53:12 2008 -0700
@@ -185,7 +185,7 @@
 
     private static class SelectionNotifyHandler implements XEventDispatcher {
         public void dispatchEvent(XEvent ev) {
-            if (ev.get_type() == XlibWrapper.SelectionNotify) {
+            if (ev.get_type() == XConstants.SelectionNotify) {
                 final XSelectionEvent xse = ev.get_xselection();
                 XClipboard clipboard = null;
                 synchronized (XClipboard.classLock) {
@@ -223,7 +223,7 @@
                                               XDataTransferer.TARGETS_ATOM.getAtom(),
                                               getTargetsPropertyAtom().getAtom(),
                                               XWindow.getXAWTRootWindow().getWindow(),
-                                              XlibWrapper.CurrentTime);
+                                              XConstants.CurrentTime);
                 isSelectionNotifyProcessed = false;
             }
         } finally {
@@ -260,7 +260,7 @@
 
         long[] formats = null;
 
-        if (propertyAtom == XlibWrapper.None) {
+        if (propertyAtom == XConstants.None) {
             // We treat None property atom as "empty selection".
             formats = new long[0];
         } else {
@@ -268,7 +268,7 @@
                 new WindowPropertyGetter(XWindow.getXAWTRootWindow().getWindow(),
                                          XAtom.get(propertyAtom), 0,
                                          XSelection.MAX_LENGTH, true,
-                                         XlibWrapper.AnyPropertyType);
+                                         XConstants.AnyPropertyType);
             try {
                 targetsGetter.execute();
                 formats = XSelection.getFormats(targetsGetter);
--- a/src/solaris/classes/sun/awt/X11/XComponentPeer.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/solaris/classes/sun/awt/X11/XComponentPeer.java	Wed May 14 07:53:12 2008 -0700
@@ -72,7 +72,7 @@
 import sun.awt.image.ToolkitImage;
 import sun.java2d.pipe.Region;
 
-public class XComponentPeer extends XWindow implements ComponentPeer, DropTargetPeer, XConstants {
+public class XComponentPeer extends XWindow implements ComponentPeer, DropTargetPeer {
     /* FIX ME: these constants copied from java.awt.KeyboardFocusManager */
     static final int SNFH_FAILURE = 0;
     static final int SNFH_SUCCESS_HANDLED = 1;
@@ -420,40 +420,36 @@
           case SNFH_SUCCESS_PROCEED:
               // Currently we just generate focus events like we deal with lightweight instead of calling
               // XSetInputFocus on native window
-              if (focusLog.isLoggable(Level.FINER)) focusLog.finer("Proceeding with request to " + lightweightChild + " in " + target);
+              if (focusLog.isLoggable(Level.FINER)) focusLog.finer("Proceeding with request to " +
+                  lightweightChild + " in " + target);
               /**
                * The problems with requests in non-focused window arise because shouldNativelyFocusHeavyweight
                * checks that native window is focused while appropriate WINDOW_GAINED_FOCUS has not yet
                * been processed - it is in EventQueue. Thus, SNFH allows native request and stores request record
-               * in requests list - and it breaks our requests sequence as first record on WGF should be the last focus
-               * owner which had focus before WLF. So, we should not add request record for such requests
+               * in requests list - and it breaks our requests sequence as first record on WGF should be the last
+               * focus owner which had focus before WLF. So, we should not add request record for such requests
                * but store this component in mostRecent - and return true as before for compatibility.
                */
               Window parentWindow = getContainingWindow(target);
-              if (parentWindow != null) {
-                  // and check that it is focused
-                  if (!parentWindow.isFocused()) {
-                      XWindowPeer wpeer = (XWindowPeer)parentWindow.getPeer();
-                      /*
-                       * Fix for 6314575.
-                       * Shouldn't restore focus on 'actualFocusedWindow'
-                       * when a component inside a Frame is requesting it.
-                       */
-                      wpeer.setActualFocusedWindow(null);
+              if (parentWindow == null) {
+                  return rejectFocusRequestHelper("WARNING: Parent window is null");
+              }
+              XWindowPeer wpeer = (XWindowPeer)parentWindow.getPeer();
+              if (wpeer == null) {
+                  return rejectFocusRequestHelper("WARNING: Parent window's peer is null");
+              }
+              /*
+               * Passing null 'actualFocusedWindow' as we don't want to restore focus on it
+               * when a component inside a Frame is requesting focus.
+               * See 6314575 for details.
+               */
+              boolean res = wpeer.requestWindowFocus(null);
 
-                      boolean res = wpeer.requestWindowFocus();
-                      if (focusLog.isLoggable(Level.FINER)) focusLog.finer("Requested window focus: " + res);
-                      // If parent window can be made focused and has been made focused(synchronously)
-                      // then we can proceed with children, otherwise we retreat.
-                      if (!(res && parentWindow.isFocused())) {
-                          focusLog.finer("Waiting for asynchronous processing of window focus request");
-                          KeyboardFocusManagerPeerImpl.removeLastFocusRequest(target);
-                          return false;
-                      }
-                  }
-              } else {
-                  if (focusLog.isLoggable(Level.FINER)) focusLog.finer("WARNING: Parent window is null");
-                  return false;
+              if (focusLog.isLoggable(Level.FINER)) focusLog.finer("Requested window focus: " + res);
+              // If parent window can be made focused and has been made focused(synchronously)
+              // then we can proceed with children, otherwise we retreat.
+              if (!(res && parentWindow.isFocused())) {
+                  return rejectFocusRequestHelper("Waiting for asynchronous processing of the request");
               }
 
               // NOTE: We simulate heavyweight behavior of Motif - component receives focus right
@@ -469,6 +465,12 @@
         return false;
     }
 
+    private boolean rejectFocusRequestHelper(String logMsg) {
+        if (focusLog.isLoggable(Level.FINER)) focusLog.finer(logMsg);
+        KeyboardFocusManagerPeerImpl.removeLastFocusRequest(target);
+        return false;
+    }
+
     void handleJavaFocusEvent(AWTEvent e) {
         if (focusLog.isLoggable(Level.FINER)) focusLog.finer(e.toString());
         if (e.getID() == FocusEvent.FOCUS_GAINED) {
@@ -718,7 +720,7 @@
          * handleJavaMouseEvent() would be more suitable place to do this
          * but we want Swing to have this functionality also.
          */
-        if (xev.get_type() == ButtonPress) {
+        if (xev.get_type() == XConstants.ButtonPress) {
             final XWindowPeer parentXWindow = getParentTopLevel();
             Window parentWindow = (Window)parentXWindow.getTarget();
             if (parentXWindow.isFocusableWindow() && parentXWindow.isSimpleWindow() &&
@@ -841,7 +843,7 @@
             XSetWindowAttributes xwa = new XSetWindowAttributes();
             xwa.set_cursor(xcursor);
 
-            long valuemask = XlibWrapper.CWCursor;
+            long valuemask = XConstants.CWCursor;
 
             XlibWrapper.XChangeWindowAttributes(XToolkit.getDisplay(),getWindow(),valuemask,xwa.pData);
             XlibWrapper.XFlush(XToolkit.getDisplay());
@@ -1342,20 +1344,20 @@
         enableLog.log(Level.FINEST, "Component is {1}, checking for disabled event {0}", new Object[] {e, (isEnabled()?"enabled":"disable")});
         if (!isEnabled()) {
             switch (e.get_type()) {
-              case ButtonPress:
-              case ButtonRelease:
-              case KeyPress:
-              case KeyRelease:
-              case EnterNotify:
-              case LeaveNotify:
-              case MotionNotify:
+              case XConstants.ButtonPress:
+              case XConstants.ButtonRelease:
+              case XConstants.KeyPress:
+              case XConstants.KeyRelease:
+              case XConstants.EnterNotify:
+              case XConstants.LeaveNotify:
+              case XConstants.MotionNotify:
                   enableLog.log(Level.FINER, "Event {0} is disable", new Object[] {e});
                   return true;
             }
         }
         switch(e.get_type()) {
-          case MapNotify:
-          case UnmapNotify:
+          case XConstants.MapNotify:
+          case XConstants.UnmapNotify:
               return true;
         }
         return super.isEventDisabled(e);
--- a/src/solaris/classes/sun/awt/X11/XConstants.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/solaris/classes/sun/awt/X11/XConstants.java	Wed May 14 07:53:12 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -25,7 +25,10 @@
 
 package sun.awt.X11;
 
-public interface XConstants {
+final public class XConstants {
+
+    private XConstants(){}
+
     public static final int X_PROTOCOL = 11 ; /* current protocol version */
     public static final int X_PROTOCOL_REVISION = 0 ; /* current minor version */
 
@@ -292,9 +295,9 @@
     public static final int RevertToParent = 2 ;
 
     /* Used in XEventsQueued */
-    int QueuedAlready = 0;
-    int QueuedAfterReading = 1;
-    int QueuedAfterFlush = 2;
+    public static final int QueuedAlready = 0;
+    public static final int QueuedAfterReading = 1;
+    public static final int QueuedAfterFlush = 2;
 
 
     /*****************************************************************
--- a/src/solaris/classes/sun/awt/X11/XContentWindow.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/solaris/classes/sun/awt/X11/XContentWindow.java	Wed May 14 07:53:12 2008 -0700
@@ -43,7 +43,7 @@
  * It should always be located at (- left inset, - top inset) in the associated
  * decorated window.  So coordinates in it would be the same as java coordinates.
  */
-public final class XContentWindow extends XWindow implements XConstants {
+public final class XContentWindow extends XWindow {
     private static Logger insLog = Logger.getLogger("sun.awt.X11.insets.XContentWindow");
 
     static XContentWindow createContent(XDecoratedPeer parentFrame) {
@@ -76,10 +76,10 @@
 
     void preInit(XCreateWindowParams params) {
         super.preInit(params);
-        params.putIfNull(BIT_GRAVITY, Integer.valueOf(NorthWestGravity));
+        params.putIfNull(BIT_GRAVITY, Integer.valueOf(XConstants.NorthWestGravity));
         Long eventMask = (Long)params.get(EVENT_MASK);
         if (eventMask != null) {
-            eventMask = eventMask & ~(StructureNotifyMask);
+            eventMask = eventMask & ~(XConstants.StructureNotifyMask);
             params.put(EVENT_MASK, eventMask);
         }
     }
@@ -90,15 +90,15 @@
     protected boolean isEventDisabled(XEvent e) {
         switch (e.get_type()) {
           // Override parentFrame to receive MouseEnter/Exit
-          case EnterNotify:
-          case LeaveNotify:
+          case XConstants.EnterNotify:
+          case XConstants.LeaveNotify:
               return false;
           // We handle ConfigureNotify specifically in XDecoratedPeer
-          case ConfigureNotify:
+          case XConstants.ConfigureNotify:
               return true;
           // We don't want SHOWN/HIDDEN on content window since it will duplicate XDecoratedPeer
-          case MapNotify:
-          case UnmapNotify:
+          case XConstants.MapNotify:
+          case XConstants.UnmapNotify:
               return true;
           default:
               return super.isEventDisabled(e) || parentFrame.isEventDisabled(e);
--- a/src/solaris/classes/sun/awt/X11/XCursorFontConstants.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/solaris/classes/sun/awt/X11/XCursorFontConstants.java	Wed May 14 07:53:12 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -25,7 +25,10 @@
 
 package sun.awt.X11;
 
-public interface XCursorFontConstants {
+final public class XCursorFontConstants {
+
+    private XCursorFontConstants(){}
+
     /* cursorfont defines */
     static final int XC_num_glyphs=154;
     static final int XC_X_cursor=0;
--- a/src/solaris/classes/sun/awt/X11/XCustomCursor.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/solaris/classes/sun/awt/X11/XCustomCursor.java	Wed May 14 07:53:12 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -83,7 +83,7 @@
             long colormap = XToolkit.getDefaultXColormap();
             XColor fore_color = new XColor();
 
-            fore_color.set_flags((byte) (XlibWrapper.DoRed | XlibWrapper.DoGreen | XlibWrapper.DoBlue));
+            fore_color.set_flags((byte) (XConstants.DoRed | XConstants.DoGreen | XConstants.DoBlue));
             fore_color.set_red((short)(((fcolor >> 16) & 0x000000ff) << 8));
             fore_color.set_green((short) (((fcolor >> 8) & 0x000000ff) << 8));
             fore_color.set_blue((short)(((fcolor >> 0) & 0x000000ff) << 8));
@@ -92,7 +92,7 @@
 
 
             XColor back_color = new XColor();
-            back_color.set_flags((byte) (XlibWrapper.DoRed | XlibWrapper.DoGreen | XlibWrapper.DoBlue));
+            back_color.set_flags((byte) (XConstants.DoRed | XConstants.DoGreen | XConstants.DoBlue));
 
             back_color.set_red((short) (((bcolor >> 16) & 0x000000ff) << 8));
             back_color.set_green((short) (((bcolor >> 8) & 0x000000ff) << 8));
--- a/src/solaris/classes/sun/awt/X11/XDecoratedPeer.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/solaris/classes/sun/awt/X11/XDecoratedPeer.java	Wed May 14 07:53:12 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2002-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -40,9 +40,7 @@
     private static final Logger log = Logger.getLogger("sun.awt.X11.XDecoratedPeer");
     private static final Logger insLog = Logger.getLogger("sun.awt.X11.insets.XDecoratedPeer");
     private static final Logger focusLog = Logger.getLogger("sun.awt.X11.focus.XDecoratedPeer");
-    private final static Logger iconLog = Logger.getLogger("sun.awt.X11.icon.XDecoratedPeer");
-
-    private static XAtom resize_request = new XAtom("_SUN_AWT_RESIZE_REQUEST", false);
+    private static final Logger iconLog = Logger.getLogger("sun.awt.X11.icon.XDecoratedPeer");
 
     // Set to true when we get the first ConfigureNotify after being
     // reparented - indicates that WM has adopted the top-level.
@@ -73,14 +71,11 @@
 
     void preInit(XCreateWindowParams params) {
         super.preInit(params);
-        if (!resize_request.isInterned()) {
-            resize_request.intern(false);
-        }
         winAttr.initialFocus = true;
 
-        currentInsets = new Insets(0,0,0,0); // replacemenet for wdata->top, left, bottom, right
+        currentInsets = new Insets(0,0,0,0);
+        applyGuessedInsets();
 
-        applyGuessedInsets();
         Rectangle bounds = (Rectangle)params.get(BOUNDS);
         dimensions = new WindowDimensions(bounds, getRealInsets(), false);
         params.put(BOUNDS, dimensions.getClientRect());
@@ -89,7 +84,7 @@
         // Deny default processing of these events on the shell - proxy will take care of
         // them instead
         Long eventMask = (Long)params.get(EVENT_MASK);
-        params.add(EVENT_MASK, Long.valueOf(eventMask.longValue() & ~(FocusChangeMask | KeyPressMask | KeyReleaseMask)));
+        params.add(EVENT_MASK, Long.valueOf(eventMask.longValue() & ~(XConstants.FocusChangeMask | XConstants.KeyPressMask | XConstants.KeyReleaseMask)));
     }
 
     void postInit(XCreateWindowParams params) {
@@ -98,7 +93,10 @@
         // happen after the X window is created.
         initResizability();
         updateSizeHints(dimensions);
+        XWM.requestWMExtents(getWindow());
+
         content = XContentWindow.createContent(this);
+
         if (warningWindow != null) {
             warningWindow.toFront();
         }
@@ -121,7 +119,6 @@
         updateMinSizeHints();
     }
 
-
     private void updateMinSizeHints() {
         if (isResizable()) {
             Dimension minimumSize = getTargetMinimumSize();
@@ -131,7 +128,7 @@
                 int minHeight = minimumSize.height - insets.top - insets.bottom;
                 if (minWidth < 0) minWidth = 0;
                 if (minHeight < 0) minHeight = 0;
-                setSizeHints(XlibWrapper.PMinSize | (isLocationByPlatform()?0:(XlibWrapper.PPosition | XlibWrapper.USPosition)),
+                setSizeHints(XUtilConstants.PMinSize | (isLocationByPlatform()?0:(XUtilConstants.PPosition | XUtilConstants.USPosition)),
                              getX(), getY(), minWidth, minHeight);
                 if (isVisible()) {
                     Rectangle bounds = getShellBounds();
@@ -143,7 +140,7 @@
                 }
             } else {
                 boolean isMinSizeSet = isMinSizeSet();
-                XWM.removeSizeHints(this, XlibWrapper.PMinSize);
+                XWM.removeSizeHints(this, XUtilConstants.PMinSize);
                 /* Some WMs need remap to redecorate the window */
                 if (isMinSizeSet && isShowing() && XWM.needRemap(this)) {
                     /*
@@ -238,23 +235,59 @@
         return false;
     }
 
-    Insets difference(Insets i1, Insets i2) {
+    private static Insets difference(Insets i1, Insets i2) {
         return new Insets(i1.top-i2.top, i1.left - i2.left, i1.bottom-i2.bottom, i1.right-i2.right);
     }
 
-    void add(Insets i1, Insets i2) {
-        i1.left += i2.left;
-        i1.top += i2.top;
-        i1.right += i2.right;
-        i1.bottom += i2.bottom;
-    }
-    boolean isNull(Insets i) {
+    private static boolean isNull(Insets i) {
         return (i == null) || ((i.left | i.top | i.right | i.bottom) == 0);
     }
-    Insets copy(Insets i) {
+
+    private static Insets copy(Insets i) {
         return new Insets(i.top, i.left, i.bottom, i.right);
     }
 
+    // insets which we get from WM (e.g from _NET_FRAME_EXTENTS)
+    private Insets wm_set_insets;
+
+    private Insets getWMSetInsets(XAtom changedAtom) {
+        if (isEmbedded()) {
+            return null;
+        }
+
+        if (wm_set_insets != null) {
+            return wm_set_insets;
+        }
+
+        if (changedAtom == null) {
+            wm_set_insets = XWM.getInsetsFromExtents(getWindow());
+        } else {
+            wm_set_insets = XWM.getInsetsFromProp(getWindow(), changedAtom);
+        }
+
+        insLog.log(Level.FINER, "FRAME_EXTENTS: {0}", new Object[]{wm_set_insets});
+
+        if (wm_set_insets != null) {
+            wm_set_insets = copy(wm_set_insets);
+        }
+        return wm_set_insets;
+    }
+
+    private void resetWMSetInsets() {
+        wm_set_insets = null;
+    }
+
+    public void handlePropertyNotify(XEvent xev) {
+        super.handlePropertyNotify(xev);
+
+        XPropertyEvent ev = xev.get_xproperty();
+        if (ev.get_atom() == XWM.XA_KDE_NET_WM_FRAME_STRUT.getAtom()
+            || ev.get_atom() == XWM.XA_NET_FRAME_EXTENTS.getAtom())
+        {
+            getWMSetInsets(XAtom.get(ev.get_atom()));
+        }
+    }
+
     long reparent_serial = 0;
 
     public void handleReparentNotifyEvent(XEvent xev) {
@@ -337,35 +370,30 @@
             Insets correction = difference(correctWM, currentInsets);
             insLog.log(Level.FINEST, "Corrention {0}", new Object[] {correction});
             if (!isNull(correction)) {
-                /*
-                 * Actual insets account for menubar/warning label,
-                 * so we can't assign directly but must adjust them.
-                 */
-                add(currentInsets, correction);
+                currentInsets = copy(correctWM);
                 applyGuessedInsets();
 
                 //Fix for 6318109: PIT: Min Size is not honored properly when a
                 //smaller size is specified in setSize(), XToolkit
                 //update minimum size hints
                 updateMinSizeHints();
-
-                /*
-                 * If this window has been sized by a pack() we need
-                 * to keep the interior geometry intact.  Since pack()
-                 * computed width and height with wrong insets, we
-                 * must adjust the target dimensions appropriately.
-                 */
             }
             if (insLog.isLoggable(Level.FINER)) insLog.finer("Dimensions before reparent: " + dimensions);
 
             dimensions.setInsets(getRealInsets());
             insets_corrected = true;
 
-            if (isMaximized()) {
+            if (isMaximized() || isNull(correction)) {
                 return;
             }
 
-            if ((getHints().get_flags() & (USPosition | PPosition)) != 0) {
+            /*
+             * If this window has been sized by a pack() we need
+             * to keep the interior geometry intact.  Since pack()
+             * computed width and height with wrong insets, we
+             * must adjust the target dimensions appropriately.
+             */
+            if ((getHints().get_flags() & (XUtilConstants.USPosition | XUtilConstants.PPosition)) != 0) {
                 reshape(dimensions, SET_BOUNDS, false);
             } else {
                 reshape(dimensions, SET_SIZE, false);
@@ -384,10 +412,10 @@
 
 
     protected Insets guessInsets() {
-        if (isEmbedded()) {
+        if (isEmbedded() || isTargetUndecorated()) {
             return new Insets(0, 0, 0, 0);
         } else {
-            if (currentInsets.top > 0) {
+            if (!isNull(currentInsets)) {
                 /* insets were set on wdata by System Properties */
                 return copy(currentInsets);
             } else {
@@ -403,7 +431,6 @@
     private void applyGuessedInsets() {
         Insets guessed = guessInsets();
         currentInsets = copy(guessed);
-        insets = copy(currentInsets);
     }
 
     public void revalidate() {
@@ -416,16 +443,18 @@
     }
 
     Insets getRealInsets() {
-        if (isNull(insets)) {
+        if (isNull(currentInsets)) {
             applyGuessedInsets();
         }
-        return insets;
+        return currentInsets;
     }
 
     public Insets getInsets() {
         Insets in = copy(getRealInsets());
         in.top += getMenuBarHeight() + getWarningWindowHeight();
-        if (insLog.isLoggable(Level.FINEST)) insLog.log(Level.FINEST, "Get insets returns {0}", new Object[] {in});
+        if (insLog.isLoggable(Level.FINEST)) {
+            insLog.log(Level.FINEST, "Get insets returns {0}", new Object[] {in});
+        }
         return in;
     }
 
@@ -835,30 +864,30 @@
     public void setResizable(boolean resizable) {
         int fs = winAttr.functions;
         if (!isResizable() && resizable) {
-            insets = currentInsets = new Insets(0, 0, 0, 0);
+            currentInsets = new Insets(0, 0, 0, 0);
             resetWMSetInsets();
             if (!isEmbedded()) {
                 setReparented(false);
             }
             winAttr.isResizable = resizable;
-            if ((fs & MWM_FUNC_ALL) != 0) {
-                fs &= ~(MWM_FUNC_RESIZE | MWM_FUNC_MAXIMIZE);
+            if ((fs & MWMConstants.MWM_FUNC_ALL) != 0) {
+                fs &= ~(MWMConstants.MWM_FUNC_RESIZE | MWMConstants.MWM_FUNC_MAXIMIZE);
             } else {
-                fs |= (MWM_FUNC_RESIZE | MWM_FUNC_MAXIMIZE);
+                fs |= (MWMConstants.MWM_FUNC_RESIZE | MWMConstants.MWM_FUNC_MAXIMIZE);
             }
             winAttr.functions = fs;
             XWM.setShellResizable(this);
         } else if (isResizable() && !resizable) {
-            insets = currentInsets = new Insets(0, 0, 0, 0);
+            currentInsets = new Insets(0, 0, 0, 0);
             resetWMSetInsets();
             if (!isEmbedded()) {
                 setReparented(false);
             }
             winAttr.isResizable = resizable;
-            if ((fs & MWM_FUNC_ALL) != 0) {
-                fs |= (MWM_FUNC_RESIZE | MWM_FUNC_MAXIMIZE);
+            if ((fs & MWMConstants.MWM_FUNC_ALL) != 0) {
+                fs |= (MWMConstants.MWM_FUNC_RESIZE | MWMConstants.MWM_FUNC_MAXIMIZE);
             } else {
-                fs &= ~(MWM_FUNC_RESIZE | MWM_FUNC_MAXIMIZE);
+                fs &= ~(MWMConstants.MWM_FUNC_RESIZE | MWMConstants.MWM_FUNC_MAXIMIZE);
             }
             winAttr.functions = fs;
             XWM.setShellNotResizable(this, dimensions, dimensions.getBounds(), false);
@@ -936,10 +965,10 @@
     protected boolean isEventDisabled(XEvent e) {
         switch (e.get_type()) {
             // Do not generate MOVED/RESIZED events since we generate them by ourselves
-          case ConfigureNotify:
+          case XConstants.ConfigureNotify:
               return true;
-          case EnterNotify:
-          case LeaveNotify:
+          case XConstants.EnterNotify:
+          case XConstants.LeaveNotify:
               // Disable crossing event on outer borders of Frame so
               // we receive only one set of cross notifications(first set is from content window)
               return true;
@@ -964,7 +993,7 @@
             if (winAttr.isResizable) {
                 //Fix for 4320050: Minimum size for java.awt.Frame is not being enforced.
                 //We need to update frame's minimum size, not to reset it
-                XWM.removeSizeHints(this, XlibWrapper.PMaxSize);
+                XWM.removeSizeHints(this, XUtilConstants.PMaxSize);
                 updateMinimumSize();
             }
         } else {
@@ -1004,10 +1033,6 @@
             } else if (cl.get_data(0) == wm_take_focus.getAtom()) {
                 handleWmTakeFocus(cl);
             }
-        } else if (cl.get_message_type() == resize_request.getAtom()) {
-            reshape((int)cl.get_data(0), (int)cl.get_data(1),
-                    (int)cl.get_data(2), (int)cl.get_data(3),
-                    (int)cl.get_data(4), true);
         }
     }
 
@@ -1114,53 +1139,51 @@
         focusLog.fine("Request for decorated window focus");
         // If this is Frame or Dialog we can't assure focus request success - but we still can try
         // If this is Window and its owner Frame is active we can be sure request succedded.
-        Window win = (Window)target;
         Window focusedWindow = XKeyboardFocusManagerPeer.getCurrentNativeFocusedWindow();
         Window activeWindow = XWindowPeer.getDecoratedOwner(focusedWindow);
 
         focusLog.log(Level.FINER, "Current window is: active={0}, focused={1}",
-                     new Object[]{ Boolean.valueOf(win == activeWindow),
-                                   Boolean.valueOf(win == focusedWindow)});
+                     new Object[]{ Boolean.valueOf(target == activeWindow),
+                                   Boolean.valueOf(target == focusedWindow)});
 
         XWindowPeer toFocus = this;
         while (toFocus.nextTransientFor != null) {
             toFocus = toFocus.nextTransientFor;
         }
-
-        if (this == toFocus) {
-            if (focusAllowedFor()) {
-                if (win == activeWindow && win != focusedWindow) {
-                    // Happens when focus is on window child
-                    focusLog.fine("Focus is on child window - transfering it back");
-                    handleWindowFocusInSync(-1);
-                } else {
-                    focusLog.fine("Requesting focus to this window");
-                    if (timeProvided) {
-                        requestXFocus(time);
-                    } else {
-                        requestXFocus();
-                    }
-                }
-                return true;
-            } else {
-                return false;
-            }
-        }
-        else if (toFocus.focusAllowedFor()) {
-            focusLog.fine("Requesting focus to " + toFocus);
-            if (timeProvided) {
-                toFocus.requestXFocus(time);
-            } else {
-                toFocus.requestXFocus();
-            }
-            return false;
-        }
-        else
-        {
+        if (toFocus == null || !toFocus.focusAllowedFor()) {
             // This might change when WM will have property to determine focus policy.
             // Right now, because policy is unknown we can't be sure we succedded
             return false;
         }
+        if (this == toFocus) {
+            if (isWMStateNetHidden()) {
+                focusLog.fine("The window is unmapped, so rejecting the request");
+                return false;
+            }
+            if (target == activeWindow && target != focusedWindow) {
+                // Happens when an owned window is currently focused
+                focusLog.fine("Focus is on child window - transfering it back to the owner");
+                handleWindowFocusInSync(-1);
+                return true;
+            }
+            Window realNativeFocusedWindow = XWindowPeer.getNativeFocusedWindow();
+            focusLog.finest("Real native focused window: " + realNativeFocusedWindow +
+                            "\nKFM's focused window: " + focusedWindow);
+
+            // See 6522725, 6613426.
+            if (target == realNativeFocusedWindow) {
+                focusLog.fine("The window is already natively focused.");
+                return true;
+            }
+        }
+        focusLog.fine("Requesting focus to " + (this == toFocus ? "this window" : toFocus));
+
+        if (timeProvided) {
+            toFocus.requestXFocus(time);
+        } else {
+            toFocus.requestXFocus();
+        }
+        return (this == toFocus);
     }
 
     XWindowPeer actualFocusedWindow = null;
--- a/src/solaris/classes/sun/awt/X11/XDialogPeer.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/solaris/classes/sun/awt/X11/XDialogPeer.java	Wed May 14 07:53:12 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2002-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -51,7 +51,7 @@
         } else {
             winAttr.decorations = winAttr.AWT_DECOR_NONE;
         }
-        winAttr.functions = MWM_FUNC_ALL;
+        winAttr.functions = MWMConstants.MWM_FUNC_ALL;
         winAttr.isResizable =  true; //target.isResizable();
         winAttr.initialResizability =  target.isResizable();
         winAttr.title = target.getTitle();
@@ -80,14 +80,6 @@
         super.setVisible(vis);
     }
 
-    protected Insets guessInsets() {
-        if (isTargetUndecorated()) {
-            return new Insets(0, 0, 0, 0);
-        } else {
-            return super.guessInsets();
-        }
-    }
-
     @Override
     boolean isTargetUndecorated() {
         if (undecorated != null) {
@@ -100,10 +92,10 @@
     int getDecorations() {
         int d = super.getDecorations();
         // remove minimize and maximize buttons for dialogs
-        if ((d & MWM_DECOR_ALL) != 0) {
-            d |= (MWM_DECOR_MINIMIZE | MWM_DECOR_MAXIMIZE);
+        if ((d & MWMConstants.MWM_DECOR_ALL) != 0) {
+            d |= (MWMConstants.MWM_DECOR_MINIMIZE | MWMConstants.MWM_DECOR_MAXIMIZE);
         } else {
-            d &= ~(MWM_DECOR_MINIMIZE | MWM_DECOR_MAXIMIZE);
+            d &= ~(MWMConstants.MWM_DECOR_MINIMIZE | MWMConstants.MWM_DECOR_MAXIMIZE);
         }
         return d;
     }
@@ -111,10 +103,10 @@
     int getFunctions() {
         int f = super.getFunctions();
         // remove minimize and maximize functions for dialogs
-        if ((f & MWM_FUNC_ALL) != 0) {
-            f |= (MWM_FUNC_MINIMIZE | MWM_FUNC_MAXIMIZE);
+        if ((f & MWMConstants.MWM_FUNC_ALL) != 0) {
+            f |= (MWMConstants.MWM_FUNC_MINIMIZE | MWMConstants.MWM_FUNC_MAXIMIZE);
         } else {
-            f &= ~(MWM_FUNC_MINIMIZE | MWM_FUNC_MAXIMIZE);
+            f &= ~(MWMConstants.MWM_FUNC_MINIMIZE | MWMConstants.MWM_FUNC_MAXIMIZE);
         }
         return f;
     }
--- a/src/solaris/classes/sun/awt/X11/XDnDDragSourceProtocol.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/solaris/classes/sun/awt/X11/XDnDDragSourceProtocol.java	Wed May 14 07:53:12 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2005 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -103,7 +103,7 @@
             XToolkit.RESTORE_XERROR_HANDLER();
 
             if (XToolkit.saved_error != null &&
-                XToolkit.saved_error.get_error_code() != XlibWrapper.Success) {
+                XToolkit.saved_error.get_error_code() != XConstants.Success) {
                 cleanup();
                 throw new XException("Cannot write XdndActionList property");
             }
@@ -124,7 +124,7 @@
             XToolkit.RESTORE_XERROR_HANDLER();
 
             if (XToolkit.saved_error != null &&
-                XToolkit.saved_error.get_error_code() != XlibWrapper.Success) {
+                XToolkit.saved_error.get_error_code() != XConstants.Success) {
                 cleanup();
                 throw new XException("Cannot write XdndActionList property");
             }
@@ -134,7 +134,7 @@
         }
 
         if (!XDnDConstants.XDnDSelection.setOwner(contents, formatMap, formats,
-                                                  XlibWrapper.CurrentTime)) {
+                                                  XConstants.CurrentTime)) {
             cleanup();
             throw new InvalidDnDOperationException("Cannot acquire selection ownership");
         }
@@ -193,11 +193,11 @@
 
         WindowPropertyGetter wpg1 =
             new WindowPropertyGetter(window, XDnDConstants.XA_XdndAware, 0, 1,
-                                     false, XlibWrapper.AnyPropertyType);
+                                     false, XConstants.AnyPropertyType);
 
         int status = wpg1.execute(XToolkit.IgnoreBadWindowHandler);
 
-        if (status == XlibWrapper.Success &&
+        if (status == XConstants.Success &&
             wpg1.getData() != 0 && wpg1.getActualType() == XAtom.XA_ATOM) {
 
             int targetVersion = (int)Native.getLong(wpg1.getData());
@@ -217,7 +217,7 @@
                 try {
                     status = wpg2.execute(XToolkit.IgnoreBadWindowHandler);
 
-                    if (status == XlibWrapper.Success &&
+                    if (status == XConstants.Success &&
                         wpg2.getData() != 0 &&
                         wpg2.getActualType() == XAtom.XA_WINDOW) {
 
@@ -235,7 +235,7 @@
                     try {
                         status = wpg3.execute(XToolkit.IgnoreBadWindowHandler);
 
-                        if (status != XlibWrapper.Success ||
+                        if (status != XConstants.Success ||
                             wpg3.getData() == 0 ||
                             wpg3.getActualType() != XAtom.XA_WINDOW ||
                             Native.getLong(wpg3.getData()) != proxy) {
@@ -246,12 +246,12 @@
                                 new WindowPropertyGetter(proxy,
                                                          XDnDConstants.XA_XdndAware,
                                                          0, 1, false,
-                                                         XlibWrapper.AnyPropertyType);
+                                                         XConstants.AnyPropertyType);
 
                             try {
                                 status = wpg4.execute(XToolkit.IgnoreBadWindowHandler);
 
-                                if (status != XlibWrapper.Success ||
+                                if (status != XConstants.Success ||
                                     wpg4.getData() == 0 ||
                                     wpg4.getActualType() != XAtom.XA_ATOM) {
 
@@ -283,7 +283,7 @@
 
         XClientMessageEvent msg = new XClientMessageEvent();
         try {
-            msg.set_type((int)XlibWrapper.ClientMessage);
+            msg.set_type((int)XConstants.ClientMessage);
             msg.set_window(getTargetWindow());
             msg.set_format(32);
             msg.set_message_type(XDnDConstants.XA_XdndEnter.getAtom());
@@ -297,7 +297,7 @@
             msg.set_data(4, formats.length > 2 ? formats[2] : 0);
             XlibWrapper.XSendEvent(XToolkit.getDisplay(),
                                    getTargetProxyWindow(),
-                                   false, XlibWrapper.NoEventMask,
+                                   false, XConstants.NoEventMask,
                                    msg.pData);
         } finally {
             msg.dispose();
@@ -311,7 +311,7 @@
 
         XClientMessageEvent msg = new XClientMessageEvent();
         try {
-            msg.set_type((int)XlibWrapper.ClientMessage);
+            msg.set_type((int)XConstants.ClientMessage);
             msg.set_window(getTargetWindow());
             msg.set_format(32);
             msg.set_message_type(XDnDConstants.XA_XdndPosition.getAtom());
@@ -322,7 +322,7 @@
             msg.set_data(4, XDnDConstants.getXDnDActionForJavaAction(sourceAction));
             XlibWrapper.XSendEvent(XToolkit.getDisplay(),
                                    getTargetProxyWindow(),
-                                   false, XlibWrapper.NoEventMask,
+                                   false, XConstants.NoEventMask,
                                    msg.pData);
         } finally {
             msg.dispose();
@@ -335,7 +335,7 @@
 
         XClientMessageEvent msg = new XClientMessageEvent();
         try {
-            msg.set_type((int)XlibWrapper.ClientMessage);
+            msg.set_type((int)XConstants.ClientMessage);
             msg.set_window(getTargetWindow());
             msg.set_format(32);
             msg.set_message_type(XDnDConstants.XA_XdndLeave.getAtom());
@@ -346,7 +346,7 @@
             msg.set_data(4, 0);
             XlibWrapper.XSendEvent(XToolkit.getDisplay(),
                                    getTargetProxyWindow(),
-                                   false, XlibWrapper.NoEventMask,
+                                   false, XConstants.NoEventMask,
                                    msg.pData);
         } finally {
             msg.dispose();
@@ -361,7 +361,7 @@
 
         XClientMessageEvent msg = new XClientMessageEvent();
         try {
-            msg.set_type((int)XlibWrapper.ClientMessage);
+            msg.set_type((int)XConstants.ClientMessage);
             msg.set_window(getTargetWindow());
             msg.set_format(32);
             msg.set_message_type(XDnDConstants.XA_XdndDrop.getAtom());
@@ -372,7 +372,7 @@
             msg.set_data(4, 0);
             XlibWrapper.XSendEvent(XToolkit.getDisplay(),
                                    getTargetProxyWindow(),
-                                   false, XlibWrapper.NoEventMask,
+                                   false, XConstants.NoEventMask,
                                    msg.pData);
         } finally {
             msg.dispose();
@@ -406,7 +406,7 @@
             assert XToolkit.isAWTLockHeldByCurrentThread();
 
             XlibWrapper.XSendEvent(XToolkit.getDisplay(), sourceWindow,
-                                   false, XlibWrapper.NoEventMask,
+                                   false, XConstants.NoEventMask,
                                    xclient.pData);
 
             return true;
--- a/src/solaris/classes/sun/awt/X11/XDnDDropTargetProtocol.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/solaris/classes/sun/awt/X11/XDnDDropTargetProtocol.java	Wed May 14 07:53:12 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2005 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -93,7 +93,7 @@
             XToolkit.RESTORE_XERROR_HANDLER();
 
             if (XToolkit.saved_error != null &&
-                XToolkit.saved_error.get_error_code() != XlibWrapper.Success) {
+                XToolkit.saved_error.get_error_code() != XConstants.Success) {
                 throw new XException("Cannot write XdndAware property");
             }
         } finally {
@@ -119,12 +119,12 @@
 
         WindowPropertyGetter wpg1 =
             new WindowPropertyGetter(embedder, XDnDConstants.XA_XdndAware, 0, 1,
-                                     false, XlibWrapper.AnyPropertyType);
+                                     false, XConstants.AnyPropertyType);
 
         try {
             status = wpg1.execute(XToolkit.IgnoreBadWindowHandler);
 
-            if (status == XlibWrapper.Success &&
+            if (status == XConstants.Success &&
                 wpg1.getData() != 0 && wpg1.getActualType() == XAtom.XA_ATOM) {
 
                 overriden = true;
@@ -143,7 +143,7 @@
             try {
                 status = wpg2.execute(XToolkit.IgnoreBadWindowHandler);
 
-                if (status == XlibWrapper.Success &&
+                if (status == XConstants.Success &&
                     wpg2.getData() != 0 &&
                     wpg2.getActualType() == XAtom.XA_WINDOW) {
 
@@ -161,7 +161,7 @@
                 try {
                     status = wpg3.execute(XToolkit.IgnoreBadWindowHandler);
 
-                    if (status != XlibWrapper.Success ||
+                    if (status != XConstants.Success ||
                         wpg3.getData() == 0 ||
                         wpg3.getActualType() != XAtom.XA_WINDOW ||
                         Native.getLong(wpg3.getData()) != proxy) {
@@ -172,12 +172,12 @@
                             new WindowPropertyGetter(proxy,
                                                      XDnDConstants.XA_XdndAware,
                                                      0, 1, false,
-                                                     XlibWrapper.AnyPropertyType);
+                                                     XConstants.AnyPropertyType);
 
                         try {
                             status = wpg4.execute(XToolkit.IgnoreBadWindowHandler);
 
-                            if (status != XlibWrapper.Success ||
+                            if (status != XConstants.Success ||
                                 wpg4.getData() == 0 ||
                                 wpg4.getActualType() != XAtom.XA_ATOM) {
 
@@ -212,7 +212,7 @@
 
             if (XToolkit.saved_error != null &&
                 XToolkit.saved_error.get_error_code() !=
-                XlibWrapper.Success) {
+                XConstants.Success) {
                 throw new XException("Cannot write XdndAware property");
             }
 
@@ -226,7 +226,7 @@
 
             if (XToolkit.saved_error != null &&
                 XToolkit.saved_error.get_error_code() !=
-                XlibWrapper.Success) {
+                XConstants.Success) {
                 throw new XException("Cannot write XdndProxy property");
             }
 
@@ -239,7 +239,7 @@
 
             if (XToolkit.saved_error != null &&
                 XToolkit.saved_error.get_error_code() !=
-                XlibWrapper.Success) {
+                XConstants.Success) {
                 throw new XException("Cannot write XdndAware property");
             }
 
@@ -252,7 +252,7 @@
 
             if (XToolkit.saved_error != null &&
                 XToolkit.saved_error.get_error_code() !=
-                XlibWrapper.Success) {
+                XConstants.Success) {
                 throw new XException("Cannot write XdndProxy property");
             }
         } finally {
@@ -285,7 +285,7 @@
 
                 if (XToolkit.saved_error != null &&
                     XToolkit.saved_error.get_error_code() !=
-                    XlibWrapper.Success) {
+                    XConstants.Success) {
                     throw new XException("Cannot write XdndAware property");
                 }
 
@@ -298,7 +298,7 @@
 
                 if (XToolkit.saved_error != null &&
                     XToolkit.saved_error.get_error_code() !=
-                    XlibWrapper.Success) {
+                    XConstants.Success) {
                     throw new XException("Cannot write XdndProxy property");
                 }
             } finally {
@@ -326,12 +326,12 @@
 
         WindowPropertyGetter wpg1 =
             new WindowPropertyGetter(embedded, XDnDConstants.XA_XdndAware, 0, 1,
-                                     false, XlibWrapper.AnyPropertyType);
+                                     false, XConstants.AnyPropertyType);
 
         try {
             status = wpg1.execute(XToolkit.IgnoreBadWindowHandler);
 
-            if (status == XlibWrapper.Success &&
+            if (status == XConstants.Success &&
                 wpg1.getData() != 0 && wpg1.getActualType() == XAtom.XA_ATOM) {
 
                 overriden = true;
@@ -350,7 +350,7 @@
             try {
                 status = wpg2.execute(XToolkit.IgnoreBadWindowHandler);
 
-                if (status == XlibWrapper.Success &&
+                if (status == XConstants.Success &&
                     wpg2.getData() != 0 &&
                     wpg2.getActualType() == XAtom.XA_WINDOW) {
 
@@ -368,7 +368,7 @@
                 try {
                     status = wpg3.execute(XToolkit.IgnoreBadWindowHandler);
 
-                    if (status != XlibWrapper.Success ||
+                    if (status != XConstants.Success ||
                         wpg3.getData() == 0 ||
                         wpg3.getActualType() != XAtom.XA_WINDOW ||
                         Native.getLong(wpg3.getData()) != proxy) {
@@ -379,12 +379,12 @@
                             new WindowPropertyGetter(proxy,
                                                      XDnDConstants.XA_XdndAware,
                                                      0, 1, false,
-                                                     XlibWrapper.AnyPropertyType);
+                                                     XConstants.AnyPropertyType);
 
                         try {
                             status = wpg4.execute(XToolkit.IgnoreBadWindowHandler);
 
-                            if (status != XlibWrapper.Success ||
+                            if (status != XConstants.Success ||
                                 wpg4.getData() == 0 ||
                                 wpg4.getActualType() != XAtom.XA_ATOM) {
 
@@ -408,12 +408,12 @@
 
         WindowPropertyGetter wpg1 =
             new WindowPropertyGetter(window, XDnDConstants.XA_XdndAware, 0, 1,
-                                     false, XlibWrapper.AnyPropertyType);
+                                     false, XConstants.AnyPropertyType);
 
         try {
             int status = wpg1.execute(XToolkit.IgnoreBadWindowHandler);
 
-            if (status == XlibWrapper.Success &&
+            if (status == XConstants.Success &&
                 wpg1.getData() != 0 && wpg1.getActualType() == XAtom.XA_ATOM) {
 
                 return true;
@@ -523,7 +523,7 @@
 
             for (int i = 0; i < 3; i++) {
                 long j;
-                if ((j = xclient.get_data(2 + i)) != XlibWrapper.None) {
+                if ((j = xclient.get_data(2 + i)) != XConstants.None) {
                     formats3[countFormats++] = j;
                 }
             }
@@ -549,7 +549,7 @@
 
             if (status == 0 ||
                 (XToolkit.saved_error != null &&
-                 XToolkit.saved_error.get_error_code() != XlibWrapper.Success)) {
+                 XToolkit.saved_error.get_error_code() != XConstants.Success)) {
                 throw new XException("XGetWindowAttributes failed");
             }
 
@@ -561,12 +561,12 @@
         XToolkit.WITH_XERROR_HANDLER(XToolkit.IgnoreBadWindowHandler);
         XlibWrapper.XSelectInput(XToolkit.getDisplay(), source_win,
                                  source_win_mask |
-                                 XlibWrapper.StructureNotifyMask);
+                                 XConstants.StructureNotifyMask);
 
         XToolkit.RESTORE_XERROR_HANDLER();
 
         if (XToolkit.saved_error != null &&
-            XToolkit.saved_error.get_error_code() != XlibWrapper.Success) {
+            XToolkit.saved_error.get_error_code() != XConstants.Success) {
             throw new XException("XSelectInput failed");
         }
 
@@ -581,7 +581,7 @@
     }
 
     private boolean processXdndPosition(XClientMessageEvent xclient) {
-        long time_stamp = (int)XlibWrapper.CurrentTime;
+        long time_stamp = (int)XConstants.CurrentTime;
         long xdnd_action = 0;
         int java_action = DnDConstants.ACTION_NONE;
         int x = 0;
@@ -748,7 +748,7 @@
                                                 long data3, long data4) {
         XClientMessageEvent enter = new XClientMessageEvent();
         try {
-            enter.set_type((int)XlibWrapper.ClientMessage);
+            enter.set_type((int)XConstants.ClientMessage);
             enter.set_window(toplevel);
             enter.set_format(32);
             enter.set_message_type(XDnDConstants.XA_XdndEnter.getAtom());
@@ -774,7 +774,7 @@
                                                   long sourceWindow) {
         XClientMessageEvent leave = new XClientMessageEvent();
         try {
-            leave.set_type((int)XlibWrapper.ClientMessage);
+            leave.set_type((int)XConstants.ClientMessage);
             leave.set_window(toplevel);
             leave.set_format(32);
             leave.set_message_type(XDnDConstants.XA_XdndLeave.getAtom());
@@ -804,7 +804,7 @@
 
         XClientMessageEvent msg = new XClientMessageEvent();
         try {
-            msg.set_type((int)XlibWrapper.ClientMessage);
+            msg.set_type((int)XConstants.ClientMessage);
             msg.set_window(xclient.get_data(0));
             msg.set_format(32);
             msg.set_message_type(XDnDConstants.XA_XdndStatus.getAtom());
@@ -826,7 +826,7 @@
             try {
                 XlibWrapper.XSendEvent(XToolkit.getDisplay(),
                                        xclient.get_data(0),
-                                       false, XlibWrapper.NoEventMask,
+                                       false, XConstants.NoEventMask,
                                        msg.pData);
             } finally {
                 XToolkit.awtUnlock();
@@ -842,7 +842,7 @@
       throws IllegalArgumentException, IOException {
         XClientMessageEvent xclient = new XClientMessageEvent(ctxt);
         long message_type = xclient.get_message_type();
-        long time_stamp = XlibWrapper.CurrentTime;
+        long time_stamp = XConstants.CurrentTime;
 
         // NOTE: we assume that the source supports at least version 1, so we
         // can use the time stamp
@@ -892,7 +892,7 @@
 
         XClientMessageEvent msg = new XClientMessageEvent();
         try {
-            msg.set_type((int)XlibWrapper.ClientMessage);
+            msg.set_type((int)XConstants.ClientMessage);
             msg.set_window(xclient.get_data(0));
             msg.set_format(32);
             msg.set_message_type(XDnDConstants.XA_XdndFinished.getAtom());
@@ -914,7 +914,7 @@
             try {
                 XlibWrapper.XSendEvent(XToolkit.getDisplay(),
                                        xclient.get_data(0),
-                                       false, XlibWrapper.NoEventMask,
+                                       false, XConstants.NoEventMask,
                                        msg.pData);
             } finally {
                 XToolkit.awtUnlock();
@@ -1119,7 +1119,7 @@
                                 XToolkit.RESTORE_XERROR_HANDLER();
 
                                 if (XToolkit.saved_error != null &&
-                                    XToolkit.saved_error.get_error_code() != XlibWrapper.Success) {
+                                    XToolkit.saved_error.get_error_code() != XConstants.Success) {
                                     if (logger.isLoggable(Level.WARNING)) {
                                         logger.warning("Cannot set XdndTypeList on the proxy window");
                                     }
--- a/src/solaris/classes/sun/awt/X11/XDragSourceContextPeer.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/solaris/classes/sun/awt/X11/XDragSourceContextPeer.java	Wed May 14 07:53:12 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -55,11 +55,11 @@
         Logger.getLogger("sun.awt.X11.xembed.xdnd.XDragSourceContextPeer");
 
     /* The events selected on the root window when the drag begins. */
-    private static final int ROOT_EVENT_MASK = (int)XlibWrapper.ButtonMotionMask |
-        (int)XlibWrapper.KeyPressMask | (int)XlibWrapper.KeyReleaseMask;
+    private static final int ROOT_EVENT_MASK = (int)XConstants.ButtonMotionMask |
+        (int)XConstants.KeyPressMask | (int)XConstants.KeyReleaseMask;
     /* The events to be delivered during grab. */
-    private static final int GRAB_EVENT_MASK = (int)XlibWrapper.ButtonPressMask |
-        (int)XlibWrapper.ButtonMotionMask | (int)XlibWrapper.ButtonReleaseMask;
+    private static final int GRAB_EVENT_MASK = (int)XConstants.ButtonPressMask |
+        (int)XConstants.ButtonMotionMask | (int)XConstants.ButtonReleaseMask;
 
     /* The event mask of the root window before the drag operation starts. */
     private long rootEventMask = 0;
@@ -196,11 +196,11 @@
 
                 status = XlibWrapper.XGrabPointer(XToolkit.getDisplay(), rootWindow,
                                                   0, GRAB_EVENT_MASK,
-                                                  XlibWrapper.GrabModeAsync,
-                                                  XlibWrapper.GrabModeAsync,
-                                                  XlibWrapper.None, xcursor, timeStamp);
+                                                  XConstants.GrabModeAsync,
+                                                  XConstants.GrabModeAsync,
+                                                  XConstants.None, xcursor, timeStamp);
 
-                if (status != XlibWrapper.GrabSuccess) {
+                if (status != XConstants.GrabSuccess) {
                     cleanup(timeStamp);
                     throwGrabFailureException("Cannot grab pointer", status);
                     return;
@@ -208,11 +208,11 @@
 
                 status = XlibWrapper.XGrabKeyboard(XToolkit.getDisplay(), rootWindow,
                                                    0,
-                                                   XlibWrapper.GrabModeAsync,
-                                                   XlibWrapper.GrabModeAsync,
+                                                   XConstants.GrabModeAsync,
+                                                   XConstants.GrabModeAsync,
                                                    timeStamp);
 
-                if (status != XlibWrapper.GrabSuccess) {
+                if (status != XConstants.GrabSuccess) {
                     cleanup(timeStamp);
                     throwGrabFailureException("Cannot grab keyboard", status);
                     return;
@@ -276,7 +276,7 @@
         XlibWrapper.XChangeActivePointerGrab(XToolkit.getDisplay(),
                                              GRAB_EVENT_MASK,
                                              xcursor,
-                                             XlibWrapper.CurrentTime);
+                                             XConstants.CurrentTime);
     }
 
     protected boolean needsBogusExitBeforeDrop() {
@@ -287,10 +287,10 @@
       throws InvalidDnDOperationException {
         String msgCause = "";
         switch (grabStatus) {
-        case XlibWrapper.GrabNotViewable:  msgCause = "not viewable";    break;
-        case XlibWrapper.AlreadyGrabbed:   msgCause = "already grabbed"; break;
-        case XlibWrapper.GrabInvalidTime:  msgCause = "invalid time";    break;
-        case XlibWrapper.GrabFrozen:       msgCause = "grab frozen";     break;
+        case XConstants.GrabNotViewable:  msgCause = "not viewable";    break;
+        case XConstants.AlreadyGrabbed:   msgCause = "already grabbed"; break;
+        case XConstants.GrabInvalidTime:  msgCause = "invalid time";    break;
+        case XConstants.GrabFrozen:       msgCause = "grab frozen";     break;
         default:                           msgCause = "unknown failure"; break;
         }
         throw new InvalidDnDOperationException(msg + ": " + msgCause);
@@ -537,7 +537,7 @@
             return false;
         }
 
-        if (ev.get_type() != (int)XlibWrapper.ClientMessage) {
+        if (ev.get_type() != (int)XConstants.ClientMessage) {
             return false;
         }
 
@@ -579,18 +579,18 @@
         }
 
         switch (ev.get_type()) {
-        case XlibWrapper.ClientMessage: {
+        case XConstants.ClientMessage: {
             XClientMessageEvent xclient = ev.get_xclient();
             return processClientMessage(xclient);
         }
-        case XlibWrapper.DestroyNotify: {
+        case XConstants.DestroyNotify: {
             XDestroyWindowEvent xde = ev.get_xdestroywindow();
 
             /* Target crashed during drop processing - cleanup. */
             if (!dragInProgress &&
                 dragProtocol != null &&
                 xde.get_window() == dragProtocol.getTargetWindow()) {
-                cleanup(XlibWrapper.CurrentTime);
+                cleanup(XConstants.CurrentTime);
                 return true;
             }
             /* Pass along */
@@ -604,14 +604,14 @@
 
         /* Process drag-only messages. */
         switch (ev.get_type()) {
-        case XlibWrapper.KeyRelease:
-        case XlibWrapper.KeyPress: {
+        case XConstants.KeyRelease:
+        case XConstants.KeyPress: {
             XKeyEvent xkey = ev.get_xkey();
             long keysym = XlibWrapper.XKeycodeToKeysym(XToolkit.getDisplay(),
                                                        xkey.get_keycode(), 0);
             switch ((int)keysym) {
             case (int)XKeySymConstants.XK_Escape: {
-                if (ev.get_type() == (int)XlibWrapper.KeyRelease) {
+                if (ev.get_type() == (int)XConstants.KeyRelease) {
                     cleanup(xkey.get_time());
                 }
                 break;
@@ -631,7 +631,7 @@
                                           XlibWrapper.larg7); // modifiers
                 XMotionEvent xmotion = new XMotionEvent();
                 try {
-                    xmotion.set_type(XlibWrapper.MotionNotify);
+                    xmotion.set_type(XConstants.MotionNotify);
                     xmotion.set_serial(xkey.get_serial());
                     xmotion.set_send_event(xkey.get_send_event());
                     xmotion.set_display(xkey.get_display());
@@ -658,12 +658,12 @@
             }
             return true;
         }
-        case XlibWrapper.ButtonPress:
+        case XConstants.ButtonPress:
             return true;
-        case XlibWrapper.MotionNotify:
+        case XConstants.MotionNotify:
             processMouseMove(ev.get_xmotion());
             return true;
-        case XlibWrapper.ButtonRelease: {
+        case XConstants.ButtonRelease: {
             XButtonEvent xbutton = ev.get_xbutton();
             /*
              * On some X servers it could happen that ButtonRelease coordinates
@@ -672,7 +672,7 @@
              */
             XMotionEvent xmotion = new XMotionEvent();
             try {
-                xmotion.set_type(XlibWrapper.MotionNotify);
+                xmotion.set_type(XConstants.MotionNotify);
                 xmotion.set_serial(xbutton.get_serial());
                 xmotion.set_send_event(xbutton.get_send_event());
                 xmotion.set_display(xbutton.get_display());
@@ -694,8 +694,8 @@
             } finally {
                 xmotion.dispose();
             }
-            if (xbutton.get_button() == XlibWrapper.Button1
-                    || xbutton.get_button() == XlibWrapper.Button2) {
+            if (xbutton.get_button() == XConstants.Button1
+                    || xbutton.get_button() == XConstants.Button2) {
                 // drag is initiated with Button1 or Button2 pressed and
                 // ended on release of either of these buttons (as the same
                 // behavior was with our old Motif DnD-based implementation)
@@ -789,6 +789,6 @@
         dragDropFinished(success, action, x, y);
 
         dndInProgress = false;
-        cleanup(XlibWrapper.CurrentTime);
+        cleanup(XConstants.CurrentTime);
     }
 }
--- a/src/solaris/classes/sun/awt/X11/XDragSourceProtocol.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/solaris/classes/sun/awt/X11/XDragSourceProtocol.java	Wed May 14 07:53:12 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2005 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -189,7 +189,7 @@
 
             if (status == 0 ||
                 (XToolkit.saved_error != null &&
-                 XToolkit.saved_error.get_error_code() != XlibWrapper.Success)) {
+                 XToolkit.saved_error.get_error_code() != XConstants.Success)) {
                 throw new XException("XGetWindowAttributes failed");
             }
 
@@ -201,12 +201,12 @@
         XToolkit.WITH_XERROR_HANDLER(XToolkit.IgnoreBadWindowHandler);
         XlibWrapper.XSelectInput(XToolkit.getDisplay(), targetWindow,
                                  targetWindowMask |
-                                 XlibWrapper.StructureNotifyMask);
+                                 XConstants.StructureNotifyMask);
 
         XToolkit.RESTORE_XERROR_HANDLER();
 
         if (XToolkit.saved_error != null &&
-            XToolkit.saved_error.get_error_code() != XlibWrapper.Success) {
+            XToolkit.saved_error.get_error_code() != XConstants.Success) {
             throw new XException("XSelectInput failed");
         }
 
--- a/src/solaris/classes/sun/awt/X11/XDropTargetEventProcessor.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/solaris/classes/sun/awt/X11/XDropTargetEventProcessor.java	Wed May 14 07:53:12 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -43,7 +43,7 @@
     private XDropTargetEventProcessor() {}
 
     private boolean doProcessEvent(XEvent ev) {
-        if (ev.get_type() == (int)XlibWrapper.DestroyNotify &&
+        if (ev.get_type() == (int)XConstants.DestroyNotify &&
             protocol != null &&
             ev.get_xany().get_window() == protocol.getSourceWindow()) {
             protocol.cleanup();
@@ -51,7 +51,7 @@
             return false;
         }
 
-        if (ev.get_type() == (int)XlibWrapper.PropertyNotify) {
+        if (ev.get_type() == (int)XConstants.PropertyNotify) {
             XPropertyEvent xproperty = ev.get_xproperty();
             if (xproperty.get_atom() ==
                 MotifDnDConstants.XA_MOTIF_DRAG_RECEIVER_INFO.getAtom()) {
@@ -60,7 +60,7 @@
             }
         }
 
-        if (ev.get_type() != (int)XlibWrapper.ClientMessage) {
+        if (ev.get_type() != (int)XConstants.ClientMessage) {
             return false;
         }
 
--- a/src/solaris/classes/sun/awt/X11/XDropTargetProtocol.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/solaris/classes/sun/awt/X11/XDropTargetProtocol.java	Wed May 14 07:53:12 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2005 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -149,7 +149,7 @@
         XToolkit.awtLock();
         try {
             XlibWrapper.XSendEvent(XToolkit.getDisplay(), proxy, false,
-                                   XlibWrapper.NoEventMask, xclient.pData);
+                                   XConstants.NoEventMask, xclient.pData);
         } finally {
             XToolkit.awtUnlock();
         }
@@ -317,7 +317,7 @@
 
     protected final void removeEmbedderRegistryEntry(long embedder) {
         synchronized (this) {
-            embedderRegistry.remove(new Long(embedder));
+            embedderRegistry.remove(Long.valueOf(embedder));
         }
     }
 }
--- a/src/solaris/classes/sun/awt/X11/XDropTargetRegistry.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/solaris/classes/sun/awt/X11/XDropTargetRegistry.java	Wed May 14 07:53:12 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -27,18 +27,14 @@
 
 import java.util.ArrayList;
 import java.util.Collections;
-import java.util.Enumeration;
 import java.util.HashMap;
 import java.util.HashSet;
-import java.util.Hashtable;
 import java.util.Iterator;
 import java.util.List;
 import java.util.logging.*;
 
 import java.awt.Point;
 
-import sun.awt.dnd.SunDropTargetContextPeer;
-import sun.awt.dnd.SunDropTargetEvent;
 
 /**
  * The class responsible for registration/deregistration of drop sites.
@@ -179,11 +175,11 @@
 
                         if (status == 0 ||
                             (XToolkit.saved_error != null &&
-                             XToolkit.saved_error.get_error_code() != XlibWrapper.Success)) {
+                             XToolkit.saved_error.get_error_code() != XConstants.Success)) {
                             continue;
                         }
 
-                        if (wattr.get_map_state() != XlibWrapper.IsUnmapped
+                        if (wattr.get_map_state() != XConstants.IsUnmapped
                             && dest_x < wattr.get_width()
                             && dest_y < wattr.get_height()) {
                             return window;
@@ -233,7 +229,7 @@
 
                 if (status == 0 ||
                     (XToolkit.saved_error != null &&
-                     XToolkit.saved_error.get_error_code() != XlibWrapper.Success)) {
+                     XToolkit.saved_error.get_error_code() != XConstants.Success)) {
                     throw new XException("XGetWindowAttributes failed");
                 }
 
@@ -243,14 +239,14 @@
                 wattr.dispose();
             }
 
-            if ((event_mask & XlibWrapper.PropertyChangeMask) == 0) {
+            if ((event_mask & XConstants.PropertyChangeMask) == 0) {
                 XToolkit.WITH_XERROR_HANDLER(XToolkit.IgnoreBadWindowHandler);
                 XlibWrapper.XSelectInput(XToolkit.getDisplay(), embedder,
-                                         event_mask | XlibWrapper.PropertyChangeMask);
+                                         event_mask | XConstants.PropertyChangeMask);
                 XToolkit.RESTORE_XERROR_HANDLER();
 
                 if (XToolkit.saved_error != null &&
-                    XToolkit.saved_error.get_error_code() != XlibWrapper.Success) {
+                    XToolkit.saved_error.get_error_code() != XConstants.Success) {
                     throw new XException("XSelectInput failed");
                 }
             }
@@ -329,7 +325,7 @@
 
         embedderProtocols = Collections.unmodifiableList(embedderProtocols);
 
-        Long lToplevel = new Long(embedder);
+        Long lToplevel = Long.valueOf(embedder);
         boolean isXEmbedServer = false;
         synchronized (this) {
             EmbeddedDropSiteEntry entry =
@@ -397,14 +393,14 @@
             long event_mask = entry.getEventMask();
 
             /* Restore the original event mask for the embedder. */
-            if ((event_mask & XlibWrapper.PropertyChangeMask) == 0) {
+            if ((event_mask & XConstants.PropertyChangeMask) == 0) {
                 XToolkit.WITH_XERROR_HANDLER(XToolkit.IgnoreBadWindowHandler);
                 XlibWrapper.XSelectInput(XToolkit.getDisplay(), embedder,
                                          event_mask);
                 XToolkit.RESTORE_XERROR_HANDLER();
 
                 if (XToolkit.saved_error != null &&
-                    XToolkit.saved_error.get_error_code() != XlibWrapper.Success) {
+                    XToolkit.saved_error.get_error_code() != XConstants.Success) {
                     throw new XException("XSelectInput failed");
                 }
             }
--- a/src/solaris/classes/sun/awt/X11/XEmbedCanvasPeer.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/solaris/classes/sun/awt/X11/XEmbedCanvasPeer.java	Wed May 14 07:53:12 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -81,10 +81,10 @@
         super.preInit(params);
 
         params.put(EVENT_MASK,
-                   KeyPressMask       | KeyReleaseMask
-                   | FocusChangeMask  | ButtonPressMask | ButtonReleaseMask
-                   | EnterWindowMask  | LeaveWindowMask | PointerMotionMask
-                   | ButtonMotionMask | ExposureMask    | StructureNotifyMask | SubstructureNotifyMask);
+                   XConstants.KeyPressMask       | XConstants.KeyReleaseMask
+                   | XConstants.FocusChangeMask  | XConstants.ButtonPressMask | XConstants.ButtonReleaseMask
+                   | XConstants.EnterWindowMask  | XConstants.LeaveWindowMask | XConstants.PointerMotionMask
+                   | XConstants.ButtonMotionMask | XConstants.ExposureMask    | XConstants.StructureNotifyMask | XConstants.SubstructureNotifyMask);
 
     }
 
@@ -134,7 +134,7 @@
         try {
             XToolkit.addEventDispatcher(xembed.handle, xembed);
             XlibWrapper.XSelectInput(XToolkit.getDisplay(), xembed.handle,
-                                     XlibWrapper.StructureNotifyMask | XlibWrapper.PropertyChangeMask);
+                                     XConstants.StructureNotifyMask | XConstants.PropertyChangeMask);
 
             XDropTargetRegistry.getRegistry().registerXEmbedClient(getWindow(), xembed.handle);
         } finally {
@@ -194,7 +194,7 @@
     public void dispatchEvent(XEvent ev) {
         super.dispatchEvent(ev);
         switch (ev.get_type()) {
-          case CreateNotify:
+          case XConstants.CreateNotify:
               XCreateWindowEvent cr = ev.get_xcreatewindow();
               if (xembedLog.isLoggable(Level.FINEST)) {
                   xembedLog.finest("Message on embedder: " + cr);
@@ -205,7 +205,7 @@
               }
               embedChild(cr.get_window());
               break;
-          case DestroyNotify:
+          case XConstants.DestroyNotify:
               XDestroyWindowEvent dn = ev.get_xdestroywindow();
               if (xembedLog.isLoggable(Level.FINEST)) {
                   xembedLog.finest("Message on embedder: " + dn);
@@ -215,7 +215,7 @@
               }
               childDestroyed();
               break;
-          case ReparentNotify:
+          case XConstants.ReparentNotify:
               XReparentEvent rep = ev.get_xreparent();
               if (xembedLog.isLoggable(Level.FINEST)) {
                   xembedLog.finest("Message on embedder: " + rep);
@@ -309,7 +309,7 @@
 
                 if (status == 0 ||
                     (XToolkit.saved_error != null &&
-                     XToolkit.saved_error.get_error_code() != XlibWrapper.Success)) {
+                     XToolkit.saved_error.get_error_code() != XConstants.Success)) {
                     return null;
                 }
 
@@ -480,7 +480,7 @@
             if (xembedLog.isLoggable(Level.FINE)) xembedLog.fine("Forwarding native key event: " + ke);
             XToolkit.awtLock();
             try {
-                XlibWrapper.XSendEvent(XToolkit.getDisplay(), xembed.handle, false, XlibWrapper.NoEventMask, data);
+                XlibWrapper.XSendEvent(XToolkit.getDisplay(), xembed.handle, false, XConstants.NoEventMask, data);
             } finally {
                 XToolkit.awtUnlock();
             }
@@ -742,7 +742,7 @@
                 version = Native.getCard32(xembed_info_data, 0);
                 flags = Native.getCard32(xembed_info_data, 1);
                 boolean new_mapped = (flags & XEMBED_MAPPED) != 0;
-                boolean currently_mapped = XlibUtil.getWindowMapState(handle) != XlibWrapper.IsUnmapped;
+                boolean currently_mapped = XlibUtil.getWindowMapState(handle) != XConstants.IsUnmapped;
                 if (new_mapped != currently_mapped) {
                     if (xembedLog.isLoggable(Level.FINER))
                         xembedLog.fine("Mapping state of the client has changed, old state: " + currently_mapped + ", new state: " + new_mapped);
@@ -803,13 +803,13 @@
         public void dispatchEvent(XEvent xev) {
             int type = xev.get_type();
             switch (type) {
-              case PropertyNotify:
+              case XConstants.PropertyNotify:
                   handlePropertyNotify(xev);
                   break;
-              case ConfigureNotify:
+              case XConstants.ConfigureNotify:
                   handleConfigureNotify(xev);
                   break;
-              case ClientMessage:
+              case XConstants.ClientMessage:
                   handleClientMessage(xev);
                   break;
             }
@@ -844,7 +844,7 @@
                 XKeyEvent ke = new XKeyEvent(data);
 
                 // We recognize only these masks
-                modifiers = ke.get_state() & (ShiftMask | ControlMask | LockMask);
+                modifiers = ke.get_state() & (XConstants.ShiftMask | XConstants.ControlMask | XConstants.LockMask);
                 if (xembedLog.isLoggable(Level.FINEST)) xembedLog.finest("Mapped " + e + " to " + this);
             } finally {
                 XlibWrapper.unsafe.freeMemory(data);
--- a/src/solaris/classes/sun/awt/X11/XEmbedChildProxyPeer.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/solaris/classes/sun/awt/X11/XEmbedChildProxyPeer.java	Wed May 14 07:53:12 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -53,7 +53,7 @@
         try {
             XToolkit.addEventDispatcher(handle, this);
             XlibWrapper.XSelectInput(XToolkit.getDisplay(), handle,
-                    XlibWrapper.StructureNotifyMask | XlibWrapper.PropertyChangeMask);
+                    XConstants.StructureNotifyMask | XConstants.PropertyChangeMask);
         }
         finally {
             XToolkit.awtUnlock();
@@ -341,10 +341,10 @@
     public void dispatchEvent(XEvent xev) {
         int type = xev.get_type();
         switch (type) {
-          case XlibWrapper.PropertyNotify:
+          case XConstants.PropertyNotify:
               handlePropertyNotify(xev);
               break;
-          case XlibWrapper.ConfigureNotify:
+          case XConstants.ConfigureNotify:
               handleConfigureNotify(xev);
               break;
         }
--- a/src/solaris/classes/sun/awt/X11/XEmbedClientHelper.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/solaris/classes/sun/awt/X11/XEmbedClientHelper.java	Wed May 14 07:53:12 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -145,10 +145,10 @@
 
     public void dispatchEvent(XEvent xev) {
         switch(xev.get_type()) {
-          case XlibWrapper.ClientMessage:
+          case XConstants.ClientMessage:
               handleClientMessage(xev);
               break;
-          case XlibWrapper.ReparentNotify:
+          case XConstants.ReparentNotify:
               handleReparentNotify(xev);
               break;
         }
--- a/src/solaris/classes/sun/awt/X11/XEmbedHelper.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/solaris/classes/sun/awt/X11/XEmbedHelper.java	Wed May 14 07:53:12 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2005 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -94,7 +94,7 @@
     }
     void sendMessage(long window, int message, long detail, long data1, long data2) {
         XClientMessageEvent msg = new XClientMessageEvent();
-        msg.set_type((int)XlibWrapper.ClientMessage);
+        msg.set_type((int)XConstants.ClientMessage);
         msg.set_window(window);
         msg.set_message_type(XEmbed.getAtom());
         msg.set_format(32);
@@ -106,7 +106,7 @@
         XToolkit.awtLock();
         try {
             if (xembedLog.isLoggable(Level.FINE)) xembedLog.fine("Sending " + XEmbedMessageToString(msg));
-            XlibWrapper.XSendEvent(XToolkit.getDisplay(), window, false, XlibWrapper.NoEventMask, msg.pData);
+            XlibWrapper.XSendEvent(XToolkit.getDisplay(), window, false, XConstants.NoEventMask, msg.pData);
         }
         finally {
             XToolkit.awtUnlock();
--- a/src/solaris/classes/sun/awt/X11/XEmbedServerTester.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/solaris/classes/sun/awt/X11/XEmbedServerTester.java	Wed May 14 07:53:12 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -260,7 +260,7 @@
         mapped = 0;
         embedCompletely();
         sleep(1000);
-        if (XlibUtil.getWindowMapState(window.getWindow()) != XlibWrapper.IsUnmapped) {
+        if (XlibUtil.getWindowMapState(window.getWindow()) != IsUnmapped) {
             throw new RuntimeException("Client has been mapped");
         }
     }
@@ -383,11 +383,11 @@
         try {
             XCreateWindowParams params =
                 new XCreateWindowParams(new Object[] {
-                    XBaseWindow.PARENT_WINDOW, new Long(reparent?XToolkit.getDefaultRootWindow():parent),
+                    XBaseWindow.PARENT_WINDOW, Long.valueOf(reparent?XToolkit.getDefaultRootWindow():parent),
                     XBaseWindow.BOUNDS, initialBounds,
                     XBaseWindow.EMBEDDED, Boolean.TRUE,
                     XBaseWindow.VISIBLE, Boolean.valueOf(mapped == XEmbedHelper.XEMBED_MAPPED),
-                    XBaseWindow.EVENT_MASK, new Long(VisibilityChangeMask | StructureNotifyMask |
+                    XBaseWindow.EVENT_MASK, Long.valueOf(VisibilityChangeMask | StructureNotifyMask |
                                                      SubstructureNotifyMask | KeyPressMask)});
             window = new XBaseWindow(params);
 
@@ -613,12 +613,12 @@
         }
     }
     private void checkMapped() {
-        if (XlibUtil.getWindowMapState(window.getWindow()) == XlibWrapper.IsUnmapped) {
+        if (XlibUtil.getWindowMapState(window.getWindow()) == IsUnmapped) {
             throw new RuntimeException("Client is not mapped");
         }
     }
     private void checkNotMapped() {
-        if (XlibUtil.getWindowMapState(window.getWindow()) != XlibWrapper.IsUnmapped) {
+        if (XlibUtil.getWindowMapState(window.getWindow()) != IsUnmapped) {
             throw new RuntimeException("Client is mapped");
         }
     }
--- a/src/solaris/classes/sun/awt/X11/XEmbeddedFramePeer.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/solaris/classes/sun/awt/X11/XEmbeddedFramePeer.java	Wed May 14 07:53:12 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2002-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -114,8 +114,8 @@
     protected boolean isEventDisabled(XEvent e) {
         if (embedder != null && embedder.isActive()) {
             switch (e.get_type()) {
-              case FocusIn:
-              case FocusOut:
+              case XConstants.FocusIn:
+              case XConstants.FocusOut:
                   return true;
             }
         }
--- a/src/solaris/classes/sun/awt/X11/XEmbeddingContainer.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/solaris/classes/sun/awt/X11/XEmbeddingContainer.java	Wed May 14 07:53:12 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -121,7 +121,7 @@
     }
     public void dispatchEvent(XEvent xev) {
         switch(xev.get_type()) {
-          case XlibWrapper.ClientMessage:
+          case XConstants.ClientMessage:
               handleClientMessage(xev);
               break;
         }
@@ -149,7 +149,7 @@
         ke.set_window(child);
         XToolkit.awtLock();
         try {
-            XlibWrapper.XSendEvent(XToolkit.getDisplay(), child, false, XlibWrapper.NoEventMask, data);
+            XlibWrapper.XSendEvent(XToolkit.getDisplay(), child, false, XConstants.NoEventMask, data);
         }
         finally {
             XToolkit.awtUnlock();
--- a/src/solaris/classes/sun/awt/X11/XFileDialogPeer.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/solaris/classes/sun/awt/X11/XFileDialogPeer.java	Wed May 14 07:53:12 2008 -0700
@@ -908,7 +908,7 @@
      * Converts the filter into the form which is acceptable by Java's regexps
      */
     private String convert(String filter) {
-        String regex = new String("^" + filter + "$");
+        String regex = "^" + filter + "$";
         regex = regex.replaceAll("\\.", "\\\\.");
         regex = regex.replaceAll("\\?", ".");
         regex = regex.replaceAll("\\*", ".*");
--- a/src/solaris/classes/sun/awt/X11/XFocusProxyWindow.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/solaris/classes/sun/awt/X11/XFocusProxyWindow.java	Wed May 14 07:53:12 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -41,7 +41,7 @@
         super(new XCreateWindowParams(new Object[] {
             BOUNDS, new Rectangle(-1, -1, 1, 1),
             PARENT_WINDOW, new Long(owner.getWindow()),
-            EVENT_MASK, new Long(FocusChangeMask | KeyPressMask | KeyReleaseMask)
+            EVENT_MASK, new Long(XConstants.FocusChangeMask | XConstants.KeyPressMask | XConstants.KeyReleaseMask)
         }));
         this.owner = owner;
     }
@@ -67,8 +67,8 @@
         int type = ev.get_type();
         switch (type)
         {
-          case XlibWrapper.FocusIn:
-          case XlibWrapper.FocusOut:
+          case XConstants.FocusIn:
+          case XConstants.FocusOut:
               handleFocusEvent(ev);
               break;
         }
--- a/src/solaris/classes/sun/awt/X11/XFramePeer.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/solaris/classes/sun/awt/X11/XFramePeer.java	Wed May 14 07:53:12 2008 -0700
@@ -37,7 +37,7 @@
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
-class XFramePeer extends XDecoratedPeer implements FramePeer, XConstants {
+class XFramePeer extends XDecoratedPeer implements FramePeer {
     private static Logger log = Logger.getLogger("sun.awt.X11.XFramePeer");
     private static Logger stateLog = Logger.getLogger("sun.awt.X11.states");
     private static Logger insLog = Logger.getLogger("sun.awt.X11.insets.XFramePeer");
@@ -71,7 +71,7 @@
         } else {
             winAttr.decorations = winAttr.AWT_DECOR_NONE;
         }
-        winAttr.functions = MWM_FUNC_ALL;
+        winAttr.functions = MWMConstants.MWM_FUNC_ALL;
         winAttr.isResizable = true; // target.isResizable();
         winAttr.title = target.getTitle();
         winAttr.initialResizability = target.isResizable();
@@ -87,14 +87,6 @@
         setupState(true);
     }
 
-    protected Insets guessInsets() {
-        if (isTargetUndecorated()) {
-            return new Insets(0, 0, 0, 0);
-        } else {
-            return super.guessInsets();
-        }
-    }
-
     @Override
     boolean isTargetUndecorated() {
         if (undecorated != null) {
@@ -109,9 +101,9 @@
             state = winAttr.initialState;
         }
         if ((state & Frame.ICONIFIED) != 0) {
-            setInitialState(IconicState);
+            setInitialState(XUtilConstants.IconicState);
         } else {
-            setInitialState(NormalState);
+            setInitialState(XUtilConstants.NormalState);
         }
         setExtendedState(state);
     }
@@ -221,7 +213,7 @@
         XToolkit.awtLock();
         try {
             XSizeHints hints = getHints();
-            hints.set_flags(hints.get_flags() | (int)XlibWrapper.PMaxSize);
+            hints.set_flags(hints.get_flags() | (int)XUtilConstants.PMaxSize);
             if (b.width != Integer.MAX_VALUE) {
                 hints.set_max_width(b.width);
             } else {
@@ -344,7 +336,7 @@
         XToolkit.awtLock();
         try {
             XWMHints hints = getWMHints();
-            hints.set_flags((int)XlibWrapper.StateHint | hints.get_flags());
+            hints.set_flags((int)XUtilConstants.StateHint | hints.get_flags());
             hints.set_initial_state(wm_state);
             if (stateLog.isLoggable(Level.FINE)) stateLog.fine("Setting initial WM state on " + this + " to " + wm_state);
             XlibWrapper.XSetWMHints(XToolkit.getDisplay(), getWindow(), hints.pData);
--- a/src/solaris/classes/sun/awt/X11/XGlobalCursorManager.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/solaris/classes/sun/awt/X11/XGlobalCursorManager.java	Wed May 14 07:53:12 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -229,46 +229,46 @@
         int cursorType = 0;
         switch (type) {
           case Cursor.DEFAULT_CURSOR:
-              cursorType = XlibWrapper.XC_left_ptr;
+              cursorType = XCursorFontConstants.XC_left_ptr;
               break;
           case Cursor.CROSSHAIR_CURSOR:
-              cursorType = XlibWrapper.XC_crosshair;
+              cursorType = XCursorFontConstants.XC_crosshair;
               break;
           case Cursor.TEXT_CURSOR:
-              cursorType = XlibWrapper.XC_xterm;
+              cursorType = XCursorFontConstants.XC_xterm;
               break;
           case Cursor.WAIT_CURSOR:
-              cursorType = XlibWrapper.XC_watch;
+              cursorType = XCursorFontConstants.XC_watch;
               break;
           case Cursor.SW_RESIZE_CURSOR:
-              cursorType = XlibWrapper.XC_bottom_left_corner;
+              cursorType = XCursorFontConstants.XC_bottom_left_corner;
               break;
           case Cursor.NW_RESIZE_CURSOR:
-              cursorType = XlibWrapper.XC_top_left_corner;
+              cursorType = XCursorFontConstants.XC_top_left_corner;
               break;
           case Cursor.SE_RESIZE_CURSOR:
-              cursorType = XlibWrapper.XC_bottom_right_corner;
+              cursorType = XCursorFontConstants.XC_bottom_right_corner;
               break;
           case Cursor.NE_RESIZE_CURSOR:
-              cursorType = XlibWrapper.XC_top_right_corner;
+              cursorType = XCursorFontConstants.XC_top_right_corner;
               break;
           case Cursor.S_RESIZE_CURSOR:
-              cursorType = XlibWrapper.XC_bottom_side;
+              cursorType = XCursorFontConstants.XC_bottom_side;
               break;
           case Cursor.N_RESIZE_CURSOR:
-              cursorType = XlibWrapper.XC_top_side;
+              cursorType = XCursorFontConstants.XC_top_side;
               break;
           case Cursor.W_RESIZE_CURSOR:
-              cursorType = XlibWrapper.XC_left_side;
+              cursorType = XCursorFontConstants.XC_left_side;
               break;
           case Cursor.E_RESIZE_CURSOR:
-              cursorType = XlibWrapper.XC_right_side;
+              cursorType = XCursorFontConstants.XC_right_side;
               break;
           case Cursor.HAND_CURSOR:
-              cursorType = XlibWrapper.XC_hand2;
+              cursorType = XCursorFontConstants.XC_hand2;
               break;
           case Cursor.MOVE_CURSOR:
-              cursorType = XlibWrapper.XC_fleur;
+              cursorType = XCursorFontConstants.XC_fleur;
               break;
         }
 
--- a/src/solaris/classes/sun/awt/X11/XIconWindow.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/solaris/classes/sun/awt/X11/XIconWindow.java	Wed May 14 07:53:12 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -293,7 +293,7 @@
             long dst = XlibWrapper.XCreateImage(XToolkit.getDisplay(),
                                                 visInfo.get_visual(),
                                                 (int)awtImage.get_Depth(),
-                                                (int)XlibWrapper.ZPixmap,
+                                                (int)XConstants.ZPixmap,
                                                 0,
                                                 bytes,
                                                 iconWidth,
@@ -470,9 +470,9 @@
                 params.add(BACKGROUND_PIXMAP, iconPixmap);
                 params.add(COLORMAP, adata.get_awt_cmap());
                 params.add(DEPTH, awtImage.get_Depth());
-                params.add(VISUAL_CLASS, (int)XlibWrapper.InputOutput);
+                params.add(VISUAL_CLASS, (int)XConstants.InputOutput);
                 params.add(VISUAL, visInfo.get_visual());
-                params.add(VALUE_MASK, XlibWrapper.CWBorderPixel | XlibWrapper.CWColormap | XlibWrapper.CWBackPixmap);
+                params.add(VALUE_MASK, XConstants.CWBorderPixel | XConstants.CWColormap | XConstants.CWBackPixmap);
                 params.add(PARENT_WINDOW, XlibWrapper.RootWindow(XToolkit.getDisplay(), visInfo.get_screen()));
                 params.add(BOUNDS, new Rectangle(0, 0, iconWidth, iconHeight));
                 params.remove(DELAYED);
@@ -488,9 +488,9 @@
                 XlibWrapper.XClearWindow(XToolkit.getDisplay(), getWindow());
             }
             // Provide both pixmap and window, WM or Taskbar will use the one they find more appropriate
-            long newFlags = hints.get_flags() | XlibWrapper.IconPixmapHint | XlibWrapper.IconMaskHint;
+            long newFlags = hints.get_flags() | XUtilConstants.IconPixmapHint | XUtilConstants.IconMaskHint;
             if (getWindow()  != 0) {
-                newFlags |= XlibWrapper.IconWindowHint;
+                newFlags |= XUtilConstants.IconWindowHint;
             }
             hints.set_flags(newFlags);
             hints.set_icon_pixmap(iconPixmap);
--- a/src/solaris/classes/sun/awt/X11/XKeyboardFocusManagerPeer.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/solaris/classes/sun/awt/X11/XKeyboardFocusManagerPeer.java	Wed May 14 07:53:12 2008 -0700
@@ -96,12 +96,12 @@
             Component focusOwner = activeWindow.getFocusOwner();
             if (focusLog.isLoggable(Level.FINE)) focusLog.fine("Clearing global focus owner " + focusOwner);
             if (focusOwner != null) {
-                XComponentPeer nativePeer = XComponentPeer.getNativeContainer(focusOwner);
-                if (nativePeer != null) {
+//                XComponentPeer nativePeer = XComponentPeer.getNativeContainer(focusOwner);
+//                if (nativePeer != null) {
                     FocusEvent fl = new CausedFocusEvent(focusOwner, FocusEvent.FOCUS_LOST, false, null,
                                                          CausedFocusEvent.Cause.CLEAR_GLOBAL_FOCUS_OWNER);
                     XWindow.sendEvent(fl);
-                }
+//                }
             }
         }
    }
--- a/src/solaris/classes/sun/awt/X11/XKeysym.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/solaris/classes/sun/awt/X11/XKeysym.java	Wed May 14 07:53:12 2008 -0700
@@ -1,7 +1,7 @@
 // This is a generated file: do not edit! Edit keysym2ucs.h if necessary.
 
 /*
- * Copyright 2005-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -1495,6 +1495,7 @@
 
         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Multi_key),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_COMPOSE, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Mode_switch),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_ALT_GRAPH, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
+        keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_ISO_Level3_Shift),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_ALT_GRAPH, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
 
             /* Editing block */
         keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Redo),     new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_AGAIN, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
--- a/src/solaris/classes/sun/awt/X11/XListPeer.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/solaris/classes/sun/awt/X11/XListPeer.java	Wed May 14 07:53:12 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -55,14 +55,15 @@
     public final static int     DEFAULT_VISIBLE_ROWS = 4; // From java.awt.List,
     public final static int     HORIZ_SCROLL_AMT = 10;
 
-    final static int
-        PAINT_VSCROLL = 2,
-        PAINT_HSCROLL = 4,
-        PAINT_ITEMS = 8,
-        PAINT_FOCUS = 16,
-        PAINT_BACKGROUND = 32,
-        PAINT_HIDEFOCUS = 64,
-        PAINT_ALL = PAINT_VSCROLL | PAINT_HSCROLL | PAINT_ITEMS | PAINT_FOCUS | PAINT_BACKGROUND;
+    private final static int    PAINT_VSCROLL = 2;
+    private final static int    PAINT_HSCROLL = 4;
+    private final static int    PAINT_ITEMS = 8;
+    private final static int    PAINT_FOCUS = 16;
+    private final static int    PAINT_BACKGROUND = 32;
+    private final static int    PAINT_HIDEFOCUS = 64;
+    private final static int    PAINT_ALL =
+        PAINT_VSCROLL | PAINT_HSCROLL | PAINT_ITEMS | PAINT_FOCUS | PAINT_BACKGROUND;
+    private final static int    COPY_AREA = 128;
 
     XVerticalScrollbar       vsb;
     XHorizontalScrollbar     hsb;
@@ -363,35 +364,6 @@
         }
     }
 
-    Area getItemsArea(int firstItem, int lastItem) {
-        firstItem = Math.max(getFirstVisibleItem(), firstItem);
-        lastItem = Math.min(lastItem, getLastVisibleItem());
-        if (lastItem < getFirstVisibleItem()) {
-            return new Area();
-        }
-        if (firstItem <= lastItem) {
-            int startY = getItemY(firstItem);
-            int endY = getItemY(lastItem) + getItemHeight();
-            // Account for focus rectangle, instead should be called twice - before change
-            // of focusIndex and after
-            startY -= 2;
-            endY += 2;
-            // x is 0 since we need to account for focus rectangle,
-            // the same with width
-            return new Area(new Rectangle(0, startY, getItemWidth() + 3, endY-startY+1));
-        } else {
-            return new Area();
-        }
-    }
-
-    Rectangle getItemRect(int item) {
-        return new Rectangle(MARGIN, getItemY(item), getItemWidth(), getItemHeight());
-    }
-
-    Area getItemArea(int item) {
-        return new Area(getItemRect(item));
-    }
-
     public void repaintScrollbarRequest(XScrollbar scrollbar) {
         Graphics g = getGraphics();
         if (scrollbar == hsb)  {
@@ -411,14 +383,36 @@
         repaint(getFirstVisibleItem(), getLastVisibleItem(), PAINT_ALL);
     }
 
-    public void repaint(int options) {
+    private void repaint(int options) {
         repaint(getFirstVisibleItem(), getLastVisibleItem(), options);
     }
 
-    public void repaint(int firstItem, int lastItem, int options) {
+    private void repaint(int firstItem, int lastItem, int options) {
+        repaint(firstItem, lastItem, options, null, null);
+    }
+
+    /**
+     * In most cases the entire area of the component doesn't have
+     * to be repainted. The method repaints the particular areas of
+     * the component. The areas to repaint is specified by the option
+     * parameter. The possible values of the option parameter are:
+     * PAINT_VSCROLL, PAINT_HSCROLL, PAINT_ITEMS, PAINT_FOCUS,
+     * PAINT_HIDEFOCUS, PAINT_BACKGROUND, PAINT_ALL, COPY_AREA.
+     *
+     * Note that the COPY_AREA value initiates copy of a source area
+     * of the component by a distance by means of the copyArea method
+     * of the Graphics class.
+     *
+     * @param firstItem the position of the first item of the range to repaint
+     * @param lastItem the position of the last item of the range to repaint
+     * @param options specifies the particular area of the component to repaint
+     * @param source the area of the component to copy
+     * @param distance the distance to copy the source area
+     */
+    private void repaint(int firstItem, int lastItem, int options, Rectangle source, Point distance) {
         Graphics g = getGraphics();
         try {
-            painter.paint(g, firstItem, lastItem, options);
+            painter.paint(g, firstItem, lastItem, options, source, distance);
         } finally {
             g.dispose();
         }
@@ -1449,35 +1443,29 @@
         }
         vsb.setValue(vsb.getValue() + y);
 
+        Rectangle source = null;
+        Point distance = null;
+        int firstItem = 0, lastItem = 0;
+        int options = PAINT_HIDEFOCUS | PAINT_ITEMS | PAINT_VSCROLL | PAINT_FOCUS;
         if (y > 0) {
-            // Fixed 6308295: XAWTduplicate list item is displayed
-            // Window resizing leads to the buffer flushing
-            // That's why the repainting with the PAINT_HIDEFOCUS option is the repainting with PAINT_ALL option
-            // So we should do only the repainting instead of the copy area
-            if (y < itemsInWin && painter.isBuffer()) {
-                if (log.isLoggable(Level.FINEST)) {
-                    log.finest("Copying " + "" + MARGIN + "," + ( MARGIN + pixelsToScroll)
-                               + "," +  (width - SCROLLBAR_AREA) + "," +  (h * (itemsInWin - y)-1) +
-                               "," + 0 + "," + (-pixelsToScroll));
-                }
-                // Unpaint focus before copying
-                repaint(PAINT_HIDEFOCUS);
-                painter.copyArea(MARGIN, MARGIN + pixelsToScroll, width - SCROLLBAR_AREA, h * (itemsInWin - y - 1)-1, 0, -pixelsToScroll);
+            if (y < itemsInWin) {
+                source = new Rectangle(MARGIN, MARGIN + pixelsToScroll, width - SCROLLBAR_AREA, h * (itemsInWin - y - 1)-1);
+                distance = new Point(0, -pixelsToScroll);
+                options |= COPY_AREA;
             }
-            repaint(vsb.getValue() + (itemsInWin - y)-1, (vsb.getValue() + itemsInWin) - 1, PAINT_ITEMS | PAINT_VSCROLL | PAINT_FOCUS);
-        } else if (y < 0 && painter.isBuffer()) {
+            firstItem = vsb.getValue() + itemsInWin - y - 1;
+            lastItem = vsb.getValue() + itemsInWin - 1;
+
+        } else if (y < 0) {
             if (y + itemsInWindow() > 0) {
-                if (log.isLoggable(Level.FINEST)) {
-                    log.finest("Copying " + MARGIN + "," + MARGIN +"," +
-                               (width - SCROLLBAR_AREA) + "," +
-                               (h * (itemsInWin + y)) + "," + "0" +"," +(-pixelsToScroll));
-                }
-                repaint(PAINT_HIDEFOCUS);
-                painter.copyArea(MARGIN, MARGIN, width - SCROLLBAR_AREA, h * (itemsInWin + y), 0, -pixelsToScroll);
+                source = new Rectangle(MARGIN, MARGIN, width - SCROLLBAR_AREA, h * (itemsInWin + y));
+                distance = new Point(0, -pixelsToScroll);
+                options |= COPY_AREA;
             }
-            int e = Math.min(getLastVisibleItem(), vsb.getValue() + -y);
-            repaint(vsb.getValue(), e, PAINT_ITEMS | PAINT_VSCROLL | PAINT_FOCUS);
+            firstItem = vsb.getValue();
+            lastItem = Math.min(getLastVisibleItem(), vsb.getValue() + -y);
         }
+        repaint(firstItem, lastItem, options, source, distance);
     }
 
     /**
@@ -1491,12 +1479,17 @@
         int h = height - (SCROLLBAR_AREA + (2 * MARGIN));
         hsb.setValue(hsb.getValue() + x);
 
-        if (x < 0 && painter.isBuffer()) {
-            painter.copyArea(MARGIN + SPACE, MARGIN, w + x, h, -x, 0);
-        } else if (x > 0 && painter.isBuffer()) {
-            painter.copyArea(MARGIN + SPACE + x, MARGIN, w - x, h, -x, 0);
+        Rectangle source = null;
+        Point distance = null;
+        if (x < 0) {
+            source = new Rectangle(MARGIN + SPACE, MARGIN, w + x, h);
+            distance = new Point(-x, 0);
+        } else if (x > 0) {
+            source = new Rectangle(MARGIN + SPACE + x, MARGIN, w - x, h);
+            distance = new Point(-x, 0);
         }
-        repaint(vsb.getValue(), lastItemDisplayed(), PAINT_ITEMS | PAINT_HSCROLL);
+        int options = COPY_AREA | PAINT_ITEMS | PAINT_HSCROLL;
+        repaint(vsb.getValue(), lastItemDisplayed(), options, source, distance);
     }
 
     /**
@@ -1677,7 +1670,6 @@
      * Since we can't guarantee the sequence, use awtLock.
      */
     class ListPainter {
-        // TODO: use VolatileImage
         VolatileImage buffer;
         Color[] colors;
 
@@ -1746,6 +1738,11 @@
         }
 
         private void paint(Graphics listG, int firstItem, int lastItem, int options) {
+            paint(listG, firstItem, lastItem, options, null, null);
+        }
+
+        private void paint(Graphics listG, int firstItem, int lastItem, int options,
+                           Rectangle source, Point distance) {
             if (log.isLoggable(Level.FINER)) log.finer("Repaint from " + firstItem + " to " + lastItem + " options " + options);
             if (firstItem > lastItem) {
                 int t = lastItem;
@@ -1773,17 +1770,34 @@
                       invalidate();
                       options = PAINT_ALL;
                       continue;
+                  case VolatileImage.IMAGE_RESTORED:
+                      options = PAINT_ALL;
                 }
                 Graphics g = localBuffer.createGraphics();
 
+                // Note that the order of the following painting operations
+                // should not be modified
                 try {
                     g.setFont(getFont());
+
+                    // hiding the focus rectangle must be done prior to copying
+                    // area and so this is the first action to be performed
+                    if ((options & (PAINT_HIDEFOCUS)) != 0) {
+                        paintFocus(g, PAINT_HIDEFOCUS);
+                    }
+                    /*
+                     * The shift of the component contents occurs while someone
+                     * scrolls the component, the only purpose of the shift is to
+                     * increase the painting performance. The shift should be done
+                     * prior to painting any area (except hiding focus) and actually
+                     * it should never be done jointly with erase background.
+                     */
+                    if ((options & COPY_AREA) != 0) {
+                        g.copyArea(source.x, source.y, source.width, source.height,
+                            distance.x, distance.y);
+                    }
                     if ((options & PAINT_BACKGROUND) != 0) {
-                        g.setColor(SystemColor.window);
-                        g.fillRect(0, 0, width, height);
-                        g.setColor(getListBackground());
-                        g.fillRect(0, 0, listWidth, listHeight);
-                        draw3DRect(g, getSystemColors(), 0, 0, listWidth - 1, listHeight - 1, false);
+                        paintBackground(g);
                         // Since we made full erase update items
                         firstItem = getFirstVisibleItem();
                         lastItem = getLastVisibleItem();
@@ -1799,8 +1813,8 @@
                         g.setClip(getHScrollBarRec());
                         paintHorScrollbar(g, true);
                     }
-                    if ((options & (PAINT_FOCUS|PAINT_HIDEFOCUS)) != 0) {
-                        paintFocus(g, options);
+                    if ((options & (PAINT_FOCUS)) != 0) {
+                        paintFocus(g, PAINT_FOCUS);
                     }
                 } finally {
                     g.dispose();
@@ -1809,6 +1823,14 @@
             listG.drawImage(localBuffer, 0, 0, null);
         }
 
+        private void paintBackground(Graphics g) {
+            g.setColor(SystemColor.window);
+            g.fillRect(0, 0, width, height);
+            g.setColor(getListBackground());
+            g.fillRect(0, 0, listWidth, listHeight);
+            draw3DRect(g, getSystemColors(), 0, 0, listWidth - 1, listHeight - 1, false);
+        }
+
         private void paintItems(Graphics g, int firstItem, int lastItem, int options) {
             if (log.isLoggable(Level.FINER)) log.finer("Painting items from " + firstItem + " to " + lastItem + ", focused " + focusIndex + ", first " + getFirstVisibleItem() + ", last " + getLastVisibleItem());
 
@@ -1932,53 +1954,5 @@
             }
             g.setClip(clip);
         }
-
-        public void copyArea(int x, int y, int width, int height, int dx, int dy) {
-            if (log.isLoggable(Level.FINER)) log.finer("Copying area " + x + ", " + y + " " + width +
-                                                       "x" + height + ", (" + dx + "," + dy + ")");
-            VolatileImage localBuffer = null;
-            do {
-                XToolkit.awtLock();
-                try {
-                    if (createBuffer()) {
-                        // Newly created buffer should be painted over at full
-                        repaint(PAINT_ALL);
-                        return;
-                    }
-                    localBuffer = buffer;
-                } finally {
-                    XToolkit.awtUnlock();
-                }
-                switch (localBuffer.validate(getGraphicsConfiguration())) {
-                  case VolatileImage.IMAGE_INCOMPATIBLE:
-                      invalidate();
-                  case VolatileImage.IMAGE_RESTORED:
-                      // Since we've lost the content we can't just scroll - we should paint again
-                      repaint(PAINT_ALL);
-                      return;
-                }
-                Graphics g = localBuffer.createGraphics();
-                try {
-                    g.copyArea(x, y, width, height, dx, dy);
-                } finally {
-                    g.dispose();
-                }
-            } while (localBuffer.contentsLost());
-            Graphics listG = getGraphics();
-            listG.setClip(x, y, width, height);
-            listG.drawImage(localBuffer, 0, 0, null);
-            listG.dispose();
-        }
-
-        public boolean isBuffer() {
-            boolean isBuffer;
-            XToolkit.awtLock();
-            try {
-                isBuffer = (buffer != null);
-            } finally {
-                XToolkit.awtUnlock();
-            }
-            return isBuffer;
-        }
     }
 }
--- a/src/solaris/classes/sun/awt/X11/XMSelection.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/solaris/classes/sun/awt/X11/XMSelection.java	Wed May 14 07:53:12 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -98,7 +98,7 @@
         XToolkit.awtLock();
         try {
             long root = XlibWrapper.RootWindow(display,screen);
-            XlibWrapper.XSelectInput(display, root, XlibWrapper.StructureNotifyMask);
+            XlibWrapper.XSelectInput(display, root, XConstants.StructureNotifyMask);
             XToolkit.addEventDispatcher(root,
                     new XEventDispatcher() {
                         public void dispatchEvent(XEvent ev) {
@@ -130,7 +130,7 @@
             synchronized(this) {
                 setOwner(owner, screen);
                 if (log.isLoggable(Level.FINE)) log.fine("New Selection Owner for screen " + screen + " = " + owner );
-                XlibWrapper.XSelectInput(display, owner, XlibWrapper.StructureNotifyMask | eventMask);
+                XlibWrapper.XSelectInput(display, owner, XConstants.StructureNotifyMask | eventMask);
                 XToolkit.addEventDispatcher(owner,
                         new XEventDispatcher() {
                             public void dispatchEvent(XEvent ev) {
@@ -162,7 +162,7 @@
                     if (owner != 0) {
                         setOwner(owner, screen);
                         if (log.isLoggable(Level.FINE)) log.fine("Selection Owner for screen " + screen + " = " + owner );
-                        XlibWrapper.XSelectInput(display, owner, XlibWrapper.StructureNotifyMask | extra_mask);
+                        XlibWrapper.XSelectInput(display, owner, XConstants.StructureNotifyMask | extra_mask);
                         XToolkit.addEventDispatcher(owner,
                                 new XEventDispatcher() {
                                         public void dispatchEvent(XEvent ev) {
@@ -205,7 +205,7 @@
 
     static  boolean processRootEvent(XEvent xev, int screen) {
         switch (xev.get_type()) {
-            case XlibWrapper.ClientMessage: {
+            case XConstants.ClientMessage: {
                 return processClientMessage(xev, screen);
             }
         }
@@ -225,7 +225,7 @@
      */
 
     public XMSelection (String selname) {
-        this(selname, XlibWrapper.PropertyChangeMask);
+        this(selname, XConstants.PropertyChangeMask);
     }
 
 
@@ -319,11 +319,11 @@
 
     void dispatchSelectionEvent(XEvent xev, int screen) {
         if (log.isLoggable(Level.FINE)) log.fine("Event =" + xev);
-        if (xev.get_type() == XlibWrapper.DestroyNotify) {
+        if (xev.get_type() == XConstants.DestroyNotify) {
             XDestroyWindowEvent de = xev.get_xdestroywindow();
             dispatchOwnerDeath( de, screen);
         }
-        else if (xev.get_type() == XlibWrapper.PropertyNotify)  {
+        else if (xev.get_type() == XConstants.PropertyNotify)  {
             XPropertyEvent xpe = xev.get_xproperty();
             dispatchSelectionChanged( xpe, screen);
         }
--- a/src/solaris/classes/sun/awt/X11/XNETProtocol.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/solaris/classes/sun/awt/X11/XNETProtocol.java	Wed May 14 07:53:12 2008 -0700
@@ -99,7 +99,7 @@
                   return;
             }
             if (log.isLoggable(Level.FINE)) log.fine("Requesting state on " + window + " for " + state);
-            req.set_type((int)XlibWrapper.ClientMessage);
+            req.set_type((int)XConstants.ClientMessage);
             req.set_window(window.getWindow());
             req.set_message_type(XA_NET_WM_STATE.getAtom());
             req.set_format(32);
@@ -109,7 +109,7 @@
                 XlibWrapper.XSendEvent(XToolkit.getDisplay(),
                         XlibWrapper.RootWindow(XToolkit.getDisplay(), window.getScreenNumber()),
                         false,
-                        XlibWrapper.SubstructureRedirectMask | XlibWrapper.SubstructureNotifyMask,
+                        XConstants.SubstructureRedirectMask | XConstants.SubstructureNotifyMask,
                         req.pData);
             }
             finally {
@@ -183,7 +183,7 @@
         if (window.isShowing()) {
             XClientMessageEvent req = new XClientMessageEvent();
             try {
-                req.set_type((int)XlibWrapper.ClientMessage);
+                req.set_type((int)XConstants.ClientMessage);
                 req.set_window(window.getWindow());
                 req.set_message_type(XA_NET_WM_STATE.getAtom());
                 req.set_format(32);
@@ -195,7 +195,7 @@
                     XlibWrapper.XSendEvent(XToolkit.getDisplay(),
                                            XlibWrapper.RootWindow(XToolkit.getDisplay(), window.getScreenNumber()),
                                            false,
-                                           XlibWrapper.SubstructureRedirectMask | XlibWrapper.SubstructureNotifyMask,
+                                           XConstants.SubstructureRedirectMask | XConstants.SubstructureNotifyMask,
                                            req.pData);
                 }
                 finally {
--- a/src/solaris/classes/sun/awt/X11/XProtocol.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/solaris/classes/sun/awt/X11/XProtocol.java	Wed May 14 07:53:12 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2005 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -42,7 +42,7 @@
     static XToolkit.XErrorHandler VerifyChangePropertyHandler = new XToolkit.XErrorHandler() {
             public int handleError(long display, XErrorEvent err) {
                 XToolkit.XERROR_SAVE(err);
-                if (err.get_request_code() == XlibWrapper.X_ChangeProperty) {
+                if (err.get_request_code() == XProtocolConstants.X_ChangeProperty) {
                     return 0;
                 } else {
                     return XToolkit.SAVED_ERROR_HANDLER(display, err);
--- a/src/solaris/classes/sun/awt/X11/XProtocolConstants.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/solaris/classes/sun/awt/X11/XProtocolConstants.java	Wed May 14 07:53:12 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -25,7 +25,10 @@
 
 package sun.awt.X11;
 
-public interface XProtocolConstants {
+final public class XProtocolConstants {
+
+    private XProtocolConstants(){}
+
     /* Reply codes */
     public static final int X_Reply = 1 ; /* Normal reply */
     public static final int X_Error = 0 ; /* Error */
--- a/src/solaris/classes/sun/awt/X11/XScrollbar.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/solaris/classes/sun/awt/X11/XScrollbar.java	Wed May 14 07:53:12 2008 -0700
@@ -458,16 +458,16 @@
              String type;
              switch (id) {
                 case MouseEvent.MOUSE_PRESSED:
-                    type = new String("press");
+                    type = "press";
                     break;
                 case MouseEvent.MOUSE_RELEASED:
-                    type = new String("release");
+                    type = "release";
                     break;
                 case MouseEvent.MOUSE_DRAGGED:
-                    type = new String("drag");
+                    type = "drag";
                     break;
                 default:
-                    type = new String("other");
+                    type = "other";
              }
              log.finer("Mouse " + type + " event in scroll bar " + this +
                                                    "x = " + x + ", y = " + y +
--- a/src/solaris/classes/sun/awt/X11/XSelection.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/solaris/classes/sun/awt/X11/XSelection.java	Wed May 14 07:53:12 2008 -0700
@@ -141,7 +141,7 @@
         long selection = selectionAtom.getAtom();
 
         // ICCCM prescribes that CurrentTime should not be used for SetSelectionOwner.
-        if (time == XlibWrapper.CurrentTime) {
+        if (time == XConstants.CurrentTime) {
             time = XToolkit.getCurrentServerTime();
         }
 
@@ -199,7 +199,7 @@
             WindowPropertyGetter targetsGetter =
                 new WindowPropertyGetter(XWindow.getXAWTRootWindow().getWindow(),
                                          selectionPropertyAtom, 0, MAX_LENGTH,
-                                         true, XlibWrapper.AnyPropertyType);
+                                         true, XConstants.AnyPropertyType);
 
             try {
                 XToolkit.awtLock();
@@ -274,7 +274,7 @@
                 new WindowPropertyGetter(XWindow.getXAWTRootWindow().getWindow(),
                                          selectionPropertyAtom, 0, MAX_LENGTH,
                                          false, // don't delete to handle INCR properly.
-                                         XlibWrapper.AnyPropertyType);
+                                         XConstants.AnyPropertyType);
 
             try {
                 XToolkit.awtLock();
@@ -353,7 +353,7 @@
                             new WindowPropertyGetter(XWindow.getXAWTRootWindow().getWindow(),
                                                      selectionPropertyAtom,
                                                      0, MAX_LENGTH, false,
-                                                     XlibWrapper.AnyPropertyType);
+                                                     XConstants.AnyPropertyType);
 
                         try {
                             XToolkit.awtLock();
@@ -520,7 +520,7 @@
             try {
                 XlibWrapper.XChangeProperty(XToolkit.getDisplay(), requestor, property,
                                             format, dataFormat,
-                                            XlibWrapper.PropModeReplace,
+                                            XConstants.PropModeReplace,
                                             nativeDataPtr, count);
             } finally {
                 XToolkit.awtUnlock();
@@ -543,14 +543,14 @@
         boolean conversionSucceeded = false;
 
         if (ownershipTime != 0 &&
-            (requestTime == XlibWrapper.CurrentTime || requestTime >= ownershipTime))
+            (requestTime == XConstants.CurrentTime || requestTime >= ownershipTime))
         {
             // Handle MULTIPLE requests as per ICCCM.
             if (format == XDataTransferer.MULTIPLE_ATOM.getAtom()) {
                 conversionSucceeded = handleMultipleRequest(requestor, property);
             } else {
                 // Support for obsolete clients as per ICCCM.
-                if (property == XlibWrapper.None) {
+                if (property == XConstants.None) {
                     property = format;
                 }
 
@@ -564,12 +564,12 @@
 
         if (!conversionSucceeded) {
             // None property indicates conversion failure.
-            property = XlibWrapper.None;
+            property = XConstants.None;
         }
 
         XSelectionEvent xse = new XSelectionEvent();
         try {
-            xse.set_type(XlibWrapper.SelectionNotify);
+            xse.set_type(XConstants.SelectionNotify);
             xse.set_send_event(true);
             xse.set_requestor(requestor);
             xse.set_selection(selectionAtom.getAtom());
@@ -580,7 +580,7 @@
             XToolkit.awtLock();
             try {
                 XlibWrapper.XSendEvent(XToolkit.getDisplay(), requestor, false,
-                                       XlibWrapper.NoEventMask, xse.pData);
+                                       XConstants.NoEventMask, xse.pData);
             } finally {
                 XToolkit.awtUnlock();
             }
@@ -590,7 +590,7 @@
     }
 
     private boolean handleMultipleRequest(final long requestor, long property) {
-        if (XlibWrapper.None == property) {
+        if (XConstants.None == property) {
             // The property cannot be None for a MULTIPLE request.
             return false;
         }
@@ -601,7 +601,7 @@
         WindowPropertyGetter wpg =
                 new WindowPropertyGetter(requestor, XAtom.get(property),
                                          0, MAX_LENGTH, false,
-                                         XlibWrapper.AnyPropertyType);
+                                         XConstants.AnyPropertyType);
         try {
             wpg.execute();
 
@@ -629,7 +629,7 @@
                                                     property,
                                                     wpg.getActualType(),
                                                     wpg.getActualFormat(),
-                                                    XlibWrapper.PropModeReplace,
+                                                                XConstants.PropModeReplace,
                                                     wpg.getData(),
                                                     wpg.getNumberOfItems());
                     } finally {
@@ -673,7 +673,7 @@
             try {
                 XlibWrapper.XChangeProperty(XToolkit.getDisplay(), requestor,
                                             property, XAtom.XA_ATOM, dataFormat,
-                                            XlibWrapper.PropModeReplace,
+                                            XConstants.PropModeReplace,
                                             nativeDataPtr, count);
             } finally {
                 XToolkit.awtUnlock();
@@ -712,7 +712,7 @@
     private static class SelectionEventHandler implements XEventDispatcher {
         public void dispatchEvent(XEvent ev) {
             switch (ev.get_type()) {
-            case XlibWrapper.SelectionNotify: {
+            case XConstants.SelectionNotify: {
                 XToolkit.awtLock();
                 try {
                     XSelectionEvent xse = ev.get_xselection();
@@ -733,7 +733,7 @@
                 }
                 break;
             }
-            case XlibWrapper.SelectionRequest: {
+            case XConstants.SelectionRequest: {
                 XSelectionRequestEvent xsre = ev.get_xselectionrequest();
                 long atom = xsre.get_selection();
                 XSelection selection = XSelection.getSelection(XAtom.get(atom));
@@ -743,7 +743,7 @@
                 }
                 break;
             }
-            case XlibWrapper.SelectionClear: {
+            case XConstants.SelectionClear: {
                 XSelectionClearEvent xsce = ev.get_xselectionclear();
                 long atom = xsce.get_selection();
                 XSelection selection = XSelection.getSelection(XAtom.get(atom));
@@ -793,7 +793,7 @@
                                                      wattr.pData);
                     XlibWrapper.XSelectInput(XToolkit.getDisplay(), requestor,
                                              wattr.get_your_event_mask() |
-                                             XlibWrapper.PropertyChangeMask);
+                                             XConstants.PropertyChangeMask);
                 } finally {
                     XToolkit.awtUnlock();
                 }
@@ -805,10 +805,10 @@
 
         public void dispatchEvent(XEvent ev) {
             switch (ev.get_type()) {
-            case XlibWrapper.PropertyNotify:
+            case XConstants.PropertyNotify:
                 XPropertyEvent xpe = ev.get_xproperty();
                 if (xpe.get_window() == requestor &&
-                    xpe.get_state() == XlibWrapper.PropertyDelete &&
+                    xpe.get_state() == XConstants.PropertyDelete &&
                     xpe.get_atom() == property) {
 
                     int count = data.length - offset;
@@ -834,7 +834,7 @@
                         XlibWrapper.XChangeProperty(XToolkit.getDisplay(),
                                                     requestor, property,
                                                     target, format,
-                                                    XlibWrapper.PropModeReplace,
+                                                    XConstants.PropModeReplace,
                                                     nativeDataPtr, count);
                     } finally {
                         XToolkit.awtUnlock();
@@ -853,9 +853,9 @@
     private static class IncrementalTransferHandler implements XEventDispatcher {
         public void dispatchEvent(XEvent ev) {
             switch (ev.get_type()) {
-            case XlibWrapper.PropertyNotify:
+            case XConstants.PropertyNotify:
                 XPropertyEvent xpe = ev.get_xproperty();
-                if (xpe.get_state() == XlibWrapper.PropertyNewValue &&
+                if (xpe.get_state() == XConstants.PropertyNewValue &&
                     xpe.get_atom() == selectionPropertyAtom.getAtom()) {
                     XToolkit.awtLock();
                     try {
--- a/src/solaris/classes/sun/awt/X11/XSystemTrayPeer.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/solaris/classes/sun/awt/X11/XSystemTrayPeer.java	Wed May 14 07:53:12 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -131,7 +131,7 @@
         XClientMessageEvent xev = new XClientMessageEvent();
 
         try {
-            xev.set_type(XlibWrapper.ClientMessage);
+            xev.set_type(XConstants.ClientMessage);
             xev.set_window(win);
             xev.set_format(32);
             xev.set_message_type(_NET_SYSTEM_TRAY_OPCODE.getAtom());
@@ -144,7 +144,7 @@
             XToolkit.awtLock();
             try {
                 XlibWrapper.XSendEvent(XToolkit.getDisplay(), win, false,
-                                       XlibWrapper.NoEventMask, xev.pData);
+                                       XConstants.NoEventMask, xev.pData);
             } finally {
                 XToolkit.awtUnlock();
             }
--- a/src/solaris/classes/sun/awt/X11/XToolkit.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/solaris/classes/sun/awt/X11/XToolkit.java	Wed May 14 07:53:12 2008 -0700
@@ -54,8 +54,7 @@
 import sun.misc.PerformanceLogger;
 import sun.print.PrintJob2D;
 
-public final class XToolkit extends UNIXToolkit implements Runnable, XConstants
-{
+public final class XToolkit extends UNIXToolkit implements Runnable {
     private static Logger log = Logger.getLogger("sun.awt.X11.XToolkit");
     private static Logger eventLog = Logger.getLogger("sun.awt.X11.event.XToolkit");
     private static final Logger timeoutTaskLog = Logger.getLogger("sun.awt.X11.timeoutTask.XToolkit");
@@ -169,7 +168,7 @@
     static XErrorHandler IgnoreBadWindowHandler = new XErrorHandler() {
             public int handleError(long display, XErrorEvent err) {
                 XERROR_SAVE(err);
-                if (err.get_error_code() == BadWindow) {
+                if (err.get_error_code() == XConstants.BadWindow) {
                     return 0;
                 } else {
                     return SAVED_ERROR_HANDLER(display, err);
@@ -425,7 +424,7 @@
         // Only our windows guaranteely generate MotionNotify, so we
         // should track enter/leave, to catch the moment when to
         // switch to XQueryPointer
-        if (e.get_type() == MotionNotify) {
+        if (e.get_type() == XConstants.MotionNotify) {
             XMotionEvent ev = e.get_xmotion();
             awtLock();
             try {
@@ -437,7 +436,7 @@
             } finally {
                 awtUnlock();
             }
-        } else if (e.get_type() == LeaveNotify) {
+        } else if (e.get_type() == XConstants.LeaveNotify) {
             // Leave from our window
             awtLock();
             try {
@@ -445,7 +444,7 @@
             } finally {
                 awtUnlock();
             }
-        } else if (e.get_type() == EnterNotify) {
+        } else if (e.get_type() == XConstants.EnterNotify) {
             // Entrance into our window
             XCrossingEvent ev = e.get_xcrossing();
             awtLock();
@@ -492,7 +491,7 @@
         final XAnyEvent xany = ev.get_xany();
 
         if (windowToXWindow(xany.get_window()) != null &&
-             (ev.get_type() == MotionNotify || ev.get_type() == EnterNotify || ev.get_type() == LeaveNotify))
+             (ev.get_type() == XConstants.MotionNotify || ev.get_type() == XConstants.EnterNotify || ev.get_type() == XConstants.LeaveNotify))
         {
             processGlobalMotionEvent(ev);
         }
@@ -549,15 +548,15 @@
                     // If no events are queued, waitForEvents() causes calls to
                     // awtUnlock(), awtJNI_ThreadYield, poll, awtLock(),
                     // so it spends most of its time in poll, without holding the lock.
-                    while ((XlibWrapper.XEventsQueued(getDisplay(), XlibWrapper.QueuedAfterReading) == 0) &&
-                           (XlibWrapper.XEventsQueued(getDisplay(), XlibWrapper.QueuedAfterFlush) == 0)) {
+                    while ((XlibWrapper.XEventsQueued(getDisplay(), XConstants.QueuedAfterReading) == 0) &&
+                           (XlibWrapper.XEventsQueued(getDisplay(), XConstants.QueuedAfterFlush) == 0)) {
                         callTimeoutTasks();
                         waitForEvents(getNextTaskTime());
                     }
                     XlibWrapper.XNextEvent(getDisplay(),ev.pData);
                 }
 
-                if (ev.get_type() != NoExpose) {
+                if (ev.get_type() != XConstants.NoExpose) {
                     eventNumber++;
                 }
 
@@ -582,13 +581,13 @@
                         }
                     }
                 }
-                if( keyEventLog.isLoggable(Level.FINE) && (ev.get_type() == KeyPress || ev.get_type() == KeyRelease) ) {
+                if( keyEventLog.isLoggable(Level.FINE) && (ev.get_type() == XConstants.KeyPress || ev.get_type() == XConstants.KeyRelease) ) {
                     keyEventLog.fine("before XFilterEvent:"+ev);
                 }
                 if (XlibWrapper.XFilterEvent(ev.getPData(), w)) {
                     continue;
                 }
-                if( keyEventLog.isLoggable(Level.FINE) && (ev.get_type() == KeyPress || ev.get_type() == KeyRelease) ) {
+                if( keyEventLog.isLoggable(Level.FINE) && (ev.get_type() == XConstants.KeyPress || ev.get_type() == XConstants.KeyRelease) ) {
                     keyEventLog.fine("after XFilterEvent:"+ev); // IS THIS CORRECT?
                 }
 
@@ -750,7 +749,7 @@
              * _NET_WM_STRUT[_PARTIAL] hints for iconified windows
              * are not included to the screen insets.
              */
-            if (XlibUtil.getWindowMapState(window) == XlibWrapper.IsUnmapped)
+            if (XlibUtil.getWindowMapState(window) == XConstants.IsUnmapped)
             {
                 continue;
             }
@@ -1289,7 +1288,7 @@
     new XEventDispatcher() {
             public void dispatchEvent(XEvent ev) {
                 switch (ev.get_type()) {
-                  case PropertyNotify:
+                  case XConstants.PropertyNotify:
                       XPropertyEvent xpe = ev.get_xproperty();
 
                       awtLock();
@@ -1322,7 +1321,7 @@
                 XlibWrapper.XChangeProperty(XToolkit.getDisplay(),
                                             XBaseWindow.getXAWTRootWindow().getWindow(),
                                             _XA_JAVA_TIME_PROPERTY_ATOM.getAtom(), XAtom.XA_ATOM, 32,
-                                            PropModeAppend,
+                                            XConstants.PropModeAppend,
                                             0, 0);
                 XlibWrapper.XFlush(XToolkit.getDisplay());
 
@@ -1539,8 +1538,8 @@
         final int shiftLock = keysymToPrimaryKeycode(XKeySymConstants.XK_Shift_Lock);
         final int capsLock  = keysymToPrimaryKeycode(XKeySymConstants.XK_Caps_Lock);
 
-        final int modmask[] = { ShiftMask, LockMask, ControlMask, Mod1Mask,
-            Mod2Mask, Mod3Mask, Mod4Mask, Mod5Mask };
+        final int modmask[] = { XConstants.ShiftMask, XConstants.LockMask, XConstants.ControlMask, XConstants.Mod1Mask,
+            XConstants.Mod2Mask, XConstants.Mod3Mask, XConstants.Mod4Mask, XConstants.Mod5Mask };
 
         log.fine("In setupModifierMap");
         awtLock();
@@ -2047,7 +2046,7 @@
         if (oops_waiter == null) {
             oops_waiter = new XEventDispatcher() {
                     public void dispatchEvent(XEvent e) {
-                        if (e.get_type() == SelectionNotify) {
+                        if (e.get_type() == XConstants.SelectionNotify) {
                             XSelectionEvent pe = e.get_xselection();
                             if (pe.get_property() == oops.getAtom()) {
                                 oops_updated = true;
@@ -2083,7 +2082,7 @@
             eventLog.log(Level.FINER, "WM_S0 selection owner {0}", new Object[] {XlibWrapper.XGetSelectionOwner(getDisplay(), atom.getAtom())});
             XlibWrapper.XConvertSelection(getDisplay(), atom.getAtom(),
                                           XAtom.get("VERSION").getAtom(), oops.getAtom(),
-                                          win.getWindow(), XlibWrapper.CurrentTime);
+                                          win.getWindow(), XConstants.CurrentTime);
             XSync();
 
 
--- a/src/solaris/classes/sun/awt/X11/XTrayIconPeer.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/solaris/classes/sun/awt/X11/XTrayIconPeer.java	Wed May 14 07:53:12 2008 -0700
@@ -98,7 +98,7 @@
             parentXED = new XEventDispatcher() {
                 // It's executed under AWTLock.
                 public void dispatchEvent(XEvent ev) {
-                    if (isDisposed() || ev.get_type() != XlibWrapper.ConfigureNotify) {
+                    if (isDisposed() || ev.get_type() != XConstants.ConfigureNotify) {
                         return;
                     }
 
@@ -194,7 +194,7 @@
                 XTrayIconPeer xtiPeer = XTrayIconPeer.this;
 
                 public void dispatchEvent(XEvent ev) {
-                    if (isDisposed() || ev.get_type() != XlibWrapper.ReparentNotify) {
+                    if (isDisposed() || ev.get_type() != XConstants.ReparentNotify) {
                         return;
                     }
 
@@ -214,7 +214,7 @@
                     }
 
                     if (!isTrayIconDisplayed) {
-                        addXED(eframeParentID, parentXED, XlibWrapper.StructureNotifyMask);
+                        addXED(eframeParentID, parentXED, XConstants.StructureNotifyMask);
 
                         isTrayIconDisplayed = true;
                         XToolkit.awtLockNotifyAll();
@@ -222,7 +222,7 @@
                 }
             };
 
-        addXED(getWindow(), eframeXED, XlibWrapper.StructureNotifyMask);
+        addXED(getWindow(), eframeXED, XConstants.StructureNotifyMask);
 
         XSystemTrayPeer.getPeerInstance().addTrayIcon(this); // throws AWTException
 
@@ -833,6 +833,7 @@
                 Dimension tpSize = textPanel.getSize();
                 iconCanvas.setSize(BALLOON_ICON_WIDTH, (BALLOON_ICON_HEIGHT > tpSize.height ?
                                                         BALLOON_ICON_HEIGHT : tpSize.height));
+                iconCanvas.validate();
             }
 
             SunToolkit.executeOnEventHandlerThread(xtiPeer.target, new Runnable() {
--- a/src/solaris/classes/sun/awt/X11/XUtilConstants.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/solaris/classes/sun/awt/X11/XUtilConstants.java	Wed May 14 07:53:12 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -25,7 +25,10 @@
 
 package sun.awt.X11;
 
-public interface XUtilConstants {
+final public class XUtilConstants {
+
+    private XUtilConstants(){}
+
     /*
      * Bitmask returned by XParseGeometry().  Each bit tells if the corresponding
      * value (x, y, width, height) was found in the parsed string.
--- a/src/solaris/classes/sun/awt/X11/XWINProtocol.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/solaris/classes/sun/awt/X11/XWINProtocol.java	Wed May 14 07:53:12 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -58,7 +58,7 @@
             }
 
             XClientMessageEvent req = new XClientMessageEvent();
-            req.set_type(XlibWrapper.ClientMessage);
+            req.set_type(XConstants.ClientMessage);
             req.set_window(window.getWindow());
             req.set_message_type(XA_WIN_STATE.getAtom());
             req.set_format(32);
@@ -71,7 +71,7 @@
                         XlibWrapper.RootWindow(XToolkit.getDisplay(),
                             window.getScreenNumber()),
                         false,
-                        XlibWrapper.SubstructureRedirectMask | XlibWrapper.SubstructureNotifyMask,
+                        XConstants.SubstructureRedirectMask | XConstants.SubstructureNotifyMask,
                         req.pData);
             }
             finally {
@@ -150,7 +150,7 @@
     public void setLayer(XWindowPeer window, int layer) {
         if (window.isShowing()) {
             XClientMessageEvent req = new XClientMessageEvent();
-            req.set_type(XlibWrapper.ClientMessage);
+            req.set_type(XConstants.ClientMessage);
             req.set_window(window.getWindow());
             req.set_message_type(XA_WIN_LAYER.getAtom());
             req.set_format(32);
@@ -164,7 +164,7 @@
                         XlibWrapper.RootWindow(XToolkit.getDisplay(),
                             window.getScreenNumber()),
                         false,
-                        /*XlibWrapper.SubstructureRedirectMask | */XlibWrapper.SubstructureNotifyMask,
+                        /*XConstants.SubstructureRedirectMask | */XConstants.SubstructureNotifyMask,
                         req.pData);
             }
             finally {
--- a/src/solaris/classes/sun/awt/X11/XWM.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/solaris/classes/sun/awt/X11/XWM.java	Wed May 14 07:53:12 2008 -0700
@@ -46,7 +46,7 @@
  * Class incapsulating knowledge about window managers in general
  * Descendants should provide some information about specific window manager.
  */
-final class XWM implements MWMConstants, XUtilConstants
+final class XWM
 {
 
     private final static Logger log = Logger.getLogger("sun.awt.X11.XWM");
@@ -274,12 +274,12 @@
             }
 
             winmgr_running = false;
-            substruct.set_event_mask(XlibWrapper.SubstructureRedirectMask);
+            substruct.set_event_mask(XConstants.SubstructureRedirectMask);
 
             XToolkit.WITH_XERROR_HANDLER(DetectWMHandler);
             XlibWrapper.XChangeWindowAttributes(XToolkit.getDisplay(),
                                                 XToolkit.getDefaultRootWindow(),
-                                                XlibWrapper.CWEventMask,
+                                                XConstants.CWEventMask,
                                                 substruct.pData);
             XToolkit.RESTORE_XERROR_HANDLER();
 
@@ -291,7 +291,7 @@
                 substruct.set_event_mask(0);
                 XlibWrapper.XChangeWindowAttributes(XToolkit.getDisplay(),
                                                     XToolkit.getDefaultRootWindow(),
-                                                    XlibWrapper.CWEventMask,
+                                                    XConstants.CWEventMask,
                                                     substruct.pData);
                 if (insLog.isLoggable(Level.FINE)) {
                     insLog.finer("It looks like there is no WM thus NO_WM");
@@ -322,7 +322,7 @@
                                      XAtom.XA_STRING);
         try {
             int status = getter.execute(XToolkit.IgnoreBadWindowHandler);
-            if (status != XlibWrapper.Success || getter.getData() == 0) {
+            if (status != XConstants.Success || getter.getData() == 0) {
                 return 0;
             }
 
@@ -411,7 +411,7 @@
                                      false, XA_DT_SM_WINDOW_INFO);
         try {
             int status = getter.execute();
-            if (status != XlibWrapper.Success || getter.getData() == 0) {
+            if (status != XConstants.Success || getter.getData() == 0) {
                 log.finer("Getting of _DT_SM_WINDOW_INFO is not successfull");
                 return false;
             }
@@ -442,7 +442,7 @@
                 status = getter2.execute(XToolkit.IgnoreBadWindowHandler);
 
 
-                if (status != XlibWrapper.Success || getter2.getData() == 0) {
+                if (status != XConstants.Success || getter2.getData() == 0) {
                     log.finer("Getting of _DT_SM_STATE_INFO is not successfull");
                     return false;
                 }
@@ -480,18 +480,18 @@
         WindowPropertyGetter getter =
             new WindowPropertyGetter(XToolkit.getDefaultRootWindow(),
                                      XA_MOTIF_WM_INFO, 0,
-                                     PROP_MOTIF_WM_INFO_ELEMENTS,
+                                     MWMConstants.PROP_MOTIF_WM_INFO_ELEMENTS,
                                      false, XA_MOTIF_WM_INFO);
         try {
             int status = getter.execute();
 
-            if (status != XlibWrapper.Success || getter.getData() == 0) {
+            if (status != XConstants.Success || getter.getData() == 0) {
                 return false;
             }
 
             if (getter.getActualType() != XA_MOTIF_WM_INFO.getAtom()
                 || getter.getActualFormat() != 32
-                || getter.getNumberOfItems() != PROP_MOTIF_WM_INFO_ELEMENTS
+                || getter.getNumberOfItems() != MWMConstants.PROP_MOTIF_WM_INFO_ELEMENTS
                 || getter.getBytesAfter() != 0)
             {
                 return false;
@@ -516,7 +516,7 @@
                                                  0, 1, false,
                                                  XA_WM_STATE);
                     try {
-                        if (state_getter.execute() == XlibWrapper.Success &&
+                        if (state_getter.execute() == XConstants.Success &&
                             state_getter.getData() != 0 &&
                             state_getter.getActualType() == XA_WM_STATE.getAtom())
                         {
@@ -577,7 +577,7 @@
     static XToolkit.XErrorHandler VerifyChangePropertyHandler = new XToolkit.XErrorHandler() {
             public int handleError(long display, XErrorEvent err) {
                 XToolkit.XERROR_SAVE(err);
-                if (err.get_request_code() == XlibWrapper.X_ChangeProperty) {
+                if (err.get_request_code() == XProtocolConstants.X_ChangeProperty) {
                     return 0;
                 } else {
                     return XToolkit.SAVED_ERROR_HANDLER(display, err);
@@ -621,11 +621,11 @@
             XlibWrapper.XChangePropertyS(XToolkit.getDisplay(), XToolkit.getDefaultRootWindow(),
                                          XA_ICEWM_WINOPTHINT.getAtom(),
                                          XA_ICEWM_WINOPTHINT.getAtom(),
-                                         8, XlibWrapper.PropModeReplace,
+                                         8, XConstants.PropModeReplace,
                                          new String(opt));
             XToolkit.RESTORE_XERROR_HANDLER();
 
-            if (XToolkit.saved_error != null && XToolkit.saved_error.get_error_code() != XlibWrapper.Success) {
+            if (XToolkit.saved_error != null && XToolkit.saved_error.get_error_code() != XConstants.Success) {
                 log.finer("Erorr getting XA_ICEWM_WINOPTHINT property");
                 return false;
             }
@@ -654,7 +654,7 @@
                                      true, XA_ICEWM_WINOPTHINT);
         try {
             int status = getter.execute();
-            boolean res = (status == XlibWrapper.Success && getter.getActualType() != 0);
+            boolean res = (status == XConstants.Success && getter.getActualType() != 0);
             log.finer("Status getting XA_ICEWM_WINOPTHINT: " + !res);
             return !res || isNetWMName("IceWM");
         } finally {
@@ -686,8 +686,8 @@
     static XToolkit.XErrorHandler DetectWMHandler = new XToolkit.XErrorHandler() {
             public int handleError(long display, XErrorEvent err) {
                 XToolkit.XERROR_SAVE(err);
-                if (err.get_request_code() == XlibWrapper.X_ChangeWindowAttributes
-                    && err.get_error_code() == XlibWrapper.BadAccess)
+                if (err.get_request_code() == XProtocolConstants.X_ChangeWindowAttributes
+                    && err.get_error_code() == XConstants.BadAccess)
                 {
                     winmgr_running = true;
                     return 0;
@@ -804,7 +804,7 @@
      * XXX: Why do we need this in the first place???
      */
     static void removeSizeHints(XDecoratedPeer window, long mask) {
-        mask &= PMaxSize | PMinSize;
+        mask &= XUtilConstants.PMaxSize | XUtilConstants.PMinSize;
 
         XToolkit.awtLock();
         try {
@@ -830,13 +830,13 @@
      * rest of the code.
      */
     static int normalizeMotifDecor(int decorations) {
-        if ((decorations & MWM_DECOR_ALL) == 0) {
+        if ((decorations & MWMConstants.MWM_DECOR_ALL) == 0) {
             return decorations;
         }
-        int d = MWM_DECOR_BORDER | MWM_DECOR_RESIZEH
-            | MWM_DECOR_TITLE
-            | MWM_DECOR_MENU | MWM_DECOR_MINIMIZE
-            | MWM_DECOR_MAXIMIZE;
+        int d = MWMConstants.MWM_DECOR_BORDER | MWMConstants.MWM_DECOR_RESIZEH
+            | MWMConstants.MWM_DECOR_TITLE
+            | MWMConstants.MWM_DECOR_MENU | MWMConstants.MWM_DECOR_MINIMIZE
+            | MWMConstants.MWM_DECOR_MAXIMIZE;
         d &= ~decorations;
         return d;
     }
@@ -848,14 +848,14 @@
      * rest of the code.
      */
     static int normalizeMotifFunc(int functions) {
-        if ((functions & MWM_FUNC_ALL) == 0) {
+        if ((functions & MWMConstants.MWM_FUNC_ALL) == 0) {
             return functions;
         }
-        int f = MWM_FUNC_RESIZE |
-                MWM_FUNC_MOVE |
-                MWM_FUNC_MAXIMIZE |
-                MWM_FUNC_MINIMIZE |
-                MWM_FUNC_CLOSE;
+        int f = MWMConstants.MWM_FUNC_RESIZE |
+                MWMConstants.MWM_FUNC_MOVE |
+                MWMConstants.MWM_FUNC_MAXIMIZE |
+                MWMConstants.MWM_FUNC_MINIMIZE |
+                MWMConstants.MWM_FUNC_CLOSE;
         f &= ~functions;
         return f;
     }
@@ -872,15 +872,15 @@
         XAtomList decorDel = new XAtomList();
         decorations = normalizeMotifDecor(decorations);
         if (insLog.isLoggable(Level.FINER)) insLog.finer("Setting OL_DECOR to " + Integer.toBinaryString(decorations));
-        if ((decorations & MWM_DECOR_TITLE) == 0) {
+        if ((decorations & MWMConstants.MWM_DECOR_TITLE) == 0) {
             decorDel.add(XA_OL_DECOR_HEADER);
         }
-        if ((decorations & (MWM_DECOR_RESIZEH | MWM_DECOR_MAXIMIZE)) == 0) {
+        if ((decorations & (MWMConstants.MWM_DECOR_RESIZEH | MWMConstants.MWM_DECOR_MAXIMIZE)) == 0) {
             decorDel.add(XA_OL_DECOR_RESIZE);
         }
-        if ((decorations & (MWM_DECOR_MENU |
-                            MWM_DECOR_MAXIMIZE |
-                            MWM_DECOR_MINIMIZE)) == 0)
+        if ((decorations & (MWMConstants.MWM_DECOR_MENU |
+                            MWMConstants.MWM_DECOR_MAXIMIZE |
+                            MWMConstants.MWM_DECOR_MINIMIZE)) == 0)
         {
             decorDel.add(XA_OL_DECOR_CLOSE);
         }
@@ -898,19 +898,21 @@
      */
     static void setMotifDecor(XWindowPeer window, boolean resizable, int decorations, int functions) {
         /* Apparently some WMs don't implement MWM_*_ALL semantic correctly */
-        if ((decorations & MWM_DECOR_ALL) != 0
-            && (decorations != MWM_DECOR_ALL))
+        if ((decorations & MWMConstants.MWM_DECOR_ALL) != 0
+            && (decorations != MWMConstants.MWM_DECOR_ALL))
         {
             decorations = normalizeMotifDecor(decorations);
         }
-        if ((functions & MWM_FUNC_ALL) != 0
-            && (functions != MWM_FUNC_ALL))
+        if ((functions & MWMConstants.MWM_FUNC_ALL) != 0
+            && (functions != MWMConstants.MWM_FUNC_ALL))
         {
             functions = normalizeMotifFunc(functions);
         }
 
         PropMwmHints hints = window.getMWMHints();
-        hints.set_flags(hints.get_flags() | MWM_HINTS_FUNCTIONS | MWM_HINTS_DECORATIONS);
+        hints.set_flags(hints.get_flags() |
+                        MWMConstants.MWM_HINTS_FUNCTIONS |
+                        MWMConstants.MWM_HINTS_DECORATIONS);
         hints.set_functions(functions);
         hints.set_decorations(decorations);
 
@@ -950,10 +952,10 @@
         boolean resizable = window.isResizable();
 
         if (!resizable) {
-            if ((decorations & MWM_DECOR_ALL) != 0) {
-                decorations |= MWM_DECOR_RESIZEH | MWM_DECOR_MAXIMIZE;
+            if ((decorations & MWMConstants.MWM_DECOR_ALL) != 0) {
+                decorations |= MWMConstants.MWM_DECOR_RESIZEH | MWMConstants.MWM_DECOR_MAXIMIZE;
             } else {
-                decorations &= ~(MWM_DECOR_RESIZEH | MWM_DECOR_MAXIMIZE);
+                decorations &= ~(MWMConstants.MWM_DECOR_RESIZEH | MWMConstants.MWM_DECOR_MAXIMIZE);
             }
         }
         setMotifDecor(window, resizable, decorations, functions);
@@ -988,7 +990,7 @@
             /* REMINDER: will need to revisit when setExtendedStateBounds is added */
             //Fix for 4320050: Minimum size for java.awt.Frame is not being enforced.
             //We need to update frame's minimum size, not to reset it
-            removeSizeHints(window, PMaxSize);
+            removeSizeHints(window, XUtilConstants.PMaxSize);
             window.updateMinimumSize();
 
             /* Restore decorations */
@@ -1134,7 +1136,7 @@
         }
 
         int wm_state = window.getWMState();
-        if (wm_state == XlibWrapper.WithdrawnState) {
+        if (wm_state == XUtilConstants.WithdrawnState) {
             stateLog.finer("WithdrawnState");
             return false;
         } else {
@@ -1158,7 +1160,7 @@
     int getState(XDecoratedPeer window) {
         int res = 0;
         final int wm_state = window.getWMState();
-        if (wm_state == XlibWrapper.IconicState) {
+        if (wm_state == XUtilConstants.IconicState) {
             res = Frame.ICONIFIED;
         } else {
             res = Frame.NORMAL;
@@ -1397,7 +1399,7 @@
             new WindowPropertyGetter(window, atom,
                                      0, 4, false, XAtom.XA_CARDINAL);
         try {
-            if (getter.execute() != XlibWrapper.Success
+            if (getter.execute() != XConstants.Success
                 || getter.getData() == 0
                 || getter.getActualType() != XAtom.XA_CARDINAL
                 || getter.getActualFormat() != 32)
@@ -1426,7 +1428,7 @@
 
         XClientMessageEvent msg = new XClientMessageEvent();
         msg.zero();
-        msg.set_type(XlibWrapper.ClientMessage);
+        msg.set_type(XConstants.ClientMessage);
         msg.set_display(XToolkit.getDisplay());
         msg.set_window(window);
         msg.set_format(32);
@@ -1436,13 +1438,15 @@
             if (net_protocol != null && net_protocol.active()) {
                 msg.set_message_type(XA_NET_REQUEST_FRAME_EXTENTS.getAtom());
                 XlibWrapper.XSendEvent(XToolkit.getDisplay(), XToolkit.getDefaultRootWindow(),
-                                       false, XlibWrapper.SubstructureRedirectMask | XlibWrapper.SubstructureNotifyMask,
+                                       false,
+                                       XConstants.SubstructureRedirectMask | XConstants.SubstructureNotifyMask,
                                        msg.getPData());
             }
             if (getWMID() == XWM.KDE2_WM) {
                 msg.set_message_type(XA_KDE_NET_WM_FRAME_STRUT.getAtom());
                 XlibWrapper.XSendEvent(XToolkit.getDisplay(), XToolkit.getDefaultRootWindow(),
-                                       false, XlibWrapper.SubstructureRedirectMask | XlibWrapper.SubstructureNotifyMask,
+                                       false,
+                                       XConstants.SubstructureRedirectMask | XConstants.SubstructureNotifyMask,
                                        msg.getPData());
             }
             // XXX: should we wait for response? XIfEvent() would be useful here :)
--- a/src/solaris/classes/sun/awt/X11/XWindow.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/solaris/classes/sun/awt/X11/XWindow.java	Wed May 14 07:53:12 2008 -0700
@@ -103,12 +103,14 @@
         return defaultFont;
     }
 
-    /*
-     * Keeps all buttons which were pressed at the time of the last mouse
-     * drag until all buttons will be released, contains state as bit masks
-     * Button1Mask, Button2Mask, Button3Mask
-     */
-    private int mouseDragState = 0;
+    /* A bitmask keeps the button's numbers as Button1Mask, Button2Mask, Button3Mask
+     * which are allowed to
+     * generate the CLICK event after the RELEASE has happened.
+     * There are conditions that must be true for that sending CLICK event:
+     * 1) button was initially PRESSED
+     * 2) no movement or drag has happened until RELEASE
+    */
+    private int mouseButtonClickAllowed = 0;
 
     native int getNativeColor(Color clr, GraphicsConfiguration gc);
     native void getWMInsets(long window, long left, long top, long right, long bottom, long border);
@@ -178,10 +180,10 @@
         AwtGraphicsConfigData gData = getGraphicsConfigurationData();
         X11GraphicsConfig config = (X11GraphicsConfig) getGraphicsConfiguration();
         XVisualInfo visInfo = gData.get_awt_visInfo();
-        params.putIfNull(EVENT_MASK, KeyPressMask | KeyReleaseMask
-            | FocusChangeMask | ButtonPressMask | ButtonReleaseMask
-            | EnterWindowMask | LeaveWindowMask | PointerMotionMask
-            | ButtonMotionMask | ExposureMask | StructureNotifyMask);
+        params.putIfNull(EVENT_MASK, XConstants.KeyPressMask | XConstants.KeyReleaseMask
+            | XConstants.FocusChangeMask | XConstants.ButtonPressMask | XConstants.ButtonReleaseMask
+            | XConstants.EnterWindowMask | XConstants.LeaveWindowMask | XConstants.PointerMotionMask
+            | XConstants.ButtonMotionMask | XConstants.ExposureMask | XConstants.StructureNotifyMask);
 
         if (target != null) {
             params.putIfNull(BOUNDS, target.getBounds());
@@ -192,9 +194,9 @@
         getColorModel(); // fix 4948833: this call forces the color map to be initialized
         params.putIfNull(COLORMAP, gData.get_awt_cmap());
         params.putIfNull(DEPTH, gData.get_awt_depth());
-        params.putIfNull(VISUAL_CLASS, Integer.valueOf((int)XlibWrapper.InputOutput));
+        params.putIfNull(VISUAL_CLASS, Integer.valueOf((int)XConstants.InputOutput));
         params.putIfNull(VISUAL, visInfo.get_visual());
-        params.putIfNull(VALUE_MASK, XlibWrapper.CWBorderPixel | XlibWrapper.CWEventMask | XlibWrapper.CWColormap);
+        params.putIfNull(VALUE_MASK, XConstants.CWBorderPixel | XConstants.CWEventMask | XConstants.CWColormap);
         Long parentWindow = (Long)params.get(PARENT_WINDOW);
         if (parentWindow == null || parentWindow.longValue() == 0) {
             XToolkit.awtLock();
@@ -553,10 +555,10 @@
     static int getModifiers(int state, int button, int keyCode) {
         int modifiers = 0;
 
-        if (((state & XlibWrapper.ShiftMask) != 0) ^ (keyCode == KeyEvent.VK_SHIFT)) {
+        if (((state & XConstants.ShiftMask) != 0) ^ (keyCode == KeyEvent.VK_SHIFT)) {
             modifiers |= InputEvent.SHIFT_DOWN_MASK;
         }
-        if (((state & XlibWrapper.ControlMask) != 0) ^ (keyCode == KeyEvent.VK_CONTROL)) {
+        if (((state & XConstants.ControlMask) != 0) ^ (keyCode == KeyEvent.VK_CONTROL)) {
             modifiers |= InputEvent.CTRL_DOWN_MASK;
         }
         if (((state & XToolkit.metaMask) != 0) ^ (keyCode == KeyEvent.VK_META)) {
@@ -568,13 +570,13 @@
         if (((state & XToolkit.modeSwitchMask) != 0) ^ (keyCode == KeyEvent.VK_ALT_GRAPH)) {
             modifiers |= InputEvent.ALT_GRAPH_DOWN_MASK;
         }
-        if (((state & XlibWrapper.Button1Mask) != 0) ^ (button == MouseEvent.BUTTON1)) {
+        if (((state & XConstants.Button1Mask) != 0) ^ (button == MouseEvent.BUTTON1)) {
             modifiers |= InputEvent.BUTTON1_DOWN_MASK;
         }
-        if (((state & XlibWrapper.Button2Mask) != 0) ^ (button == MouseEvent.BUTTON2)) {
+        if (((state & XConstants.Button2Mask) != 0) ^ (button == MouseEvent.BUTTON2)) {
             modifiers |= InputEvent.BUTTON2_DOWN_MASK;
         }
-        if (((state & XlibWrapper.Button3Mask) != 0) ^ (button == MouseEvent.BUTTON3)) {
+        if (((state & XConstants.Button3Mask) != 0) ^ (button == MouseEvent.BUTTON3)) {
             modifiers |= InputEvent.BUTTON3_DOWN_MASK;
         }
         return modifiers;
@@ -584,10 +586,10 @@
         int mods = stroke.getModifiers();
         int res = 0;
         if ((mods & (InputEvent.SHIFT_DOWN_MASK | InputEvent.SHIFT_MASK)) != 0) {
-            res |= XToolkit.ShiftMask;
+            res |= XConstants.ShiftMask;
         }
         if ((mods & (InputEvent.CTRL_DOWN_MASK | InputEvent.CTRL_MASK)) != 0) {
-            res |= XToolkit.ControlMask;
+            res |= XConstants.ControlMask;
         }
         if ((mods & (InputEvent.ALT_DOWN_MASK | InputEvent.ALT_MASK)) != 0) {
             res |= XToolkit.altMask;
@@ -602,12 +604,12 @@
     }
 
     private static int getButtonMask(long mouseButton) {
-        if (mouseButton == XlibWrapper.Button1) {
-            return XlibWrapper.Button1Mask;
-        } else if (mouseButton == XlibWrapper.Button2) {
-            return XlibWrapper.Button2Mask;
-        } else if (mouseButton == XlibWrapper.Button3) {
-            return XlibWrapper.Button3Mask;
+        if (mouseButton == XConstants.Button1) {
+            return XConstants.Button1Mask;
+        } else if (mouseButton == XConstants.Button2) {
+            return XConstants.Button2Mask;
+        } else if (mouseButton == XConstants.Button3) {
+            return XConstants.Button3Mask;
         }
         return 0;
     }
@@ -659,7 +661,9 @@
             y = localXY.y;
         }
 
-        if (type == XlibWrapper.ButtonPress) {
+        if (type == XConstants.ButtonPress) {
+            //Allow this mouse button to generate CLICK event on next ButtonRelease
+            mouseButtonClickAllowed |= getButtonMask(lbutton);
             XWindow lastWindow = (lastWindowRef != null) ? ((XWindow)lastWindowRef.get()):(null);
             /*
                multiclick checking
@@ -689,16 +693,16 @@
             }
         }
 
-        if (lbutton == XlibWrapper.Button1)
+        if (lbutton == XConstants.Button1)
             button = MouseEvent.BUTTON1;
-        else if (lbutton ==  XlibWrapper.Button2 )
+        else if (lbutton ==  XConstants.Button2 )
             button = MouseEvent.BUTTON2;
-        else if (lbutton == XlibWrapper.Button3)
+        else if (lbutton == XConstants.Button3)
             button = MouseEvent.BUTTON3;
-        else if (lbutton == XlibWrapper.Button4) {
+        else if (lbutton == XConstants.Button4) {
             button = 4;
             wheel_mouse = true;
-        } else if (lbutton == XlibWrapper.Button5) {
+        } else if (lbutton == XConstants.Button5) {
             button = 5;
             wheel_mouse = true;
         }
@@ -707,7 +711,7 @@
 
         if (!wheel_mouse) {
             MouseEvent me = new MouseEvent((Component)getEventSource(),
-                                           type == XlibWrapper.ButtonPress ? MouseEvent.MOUSE_PRESSED : MouseEvent.MOUSE_RELEASED,
+                                           type == XConstants.ButtonPress ? MouseEvent.MOUSE_PRESSED : MouseEvent.MOUSE_RELEASED,
                                            jWhen,modifiers, x, y,
                                            xbe.get_x_root(),
                                            xbe.get_y_root(),
@@ -715,8 +719,8 @@
 
             postEventToEventQueue(me);
 
-            if (((mouseDragState & getButtonMask(lbutton)) == 0) && // No up-button in the drag-state
-                (type == XlibWrapper.ButtonRelease))
+            if ((type == XConstants.ButtonRelease) &&
+                ((mouseButtonClickAllowed & getButtonMask(lbutton)) != 0) ) // No up-button in the drag-state
             {
                 postEventToEventQueue(me = new MouseEvent((Component)getEventSource(),
                                                      MouseEvent.MOUSE_CLICKED,
@@ -731,7 +735,7 @@
 
         }
         else {
-            if (xev.get_type() == XlibWrapper.ButtonPress) {
+            if (xev.get_type() == XConstants.ButtonPress) {
                 MouseWheelEvent mwe = new MouseWheelEvent((Component)getEventSource(),MouseEvent.MOUSE_WHEEL, jWhen,
                                                           modifiers,
                                                           x, y,
@@ -743,7 +747,11 @@
             }
         }
 
-        mouseDragState &= ~getButtonMask(lbutton); // Exclude the up-button from the drag-state
+        /* Update the state variable AFTER the CLICKED event post. */
+        if (type == XConstants.ButtonRelease) {
+            /* Exclude this mouse button from allowed list.*/
+            mouseButtonClickAllowed &= ~getButtonMask(lbutton);
+        }
     }
 
     public void handleMotionNotify(XEvent xev) {
@@ -753,7 +761,7 @@
             return;
         }
 
-        int mouseKeyState = (xme.get_state() & (Button1Mask | Button2Mask | Button3Mask));
+        int mouseKeyState = (xme.get_state() & (XConstants.Button1Mask | XConstants.Button2Mask | XConstants.Button3Mask));
         boolean isDragging = (mouseKeyState != 0);
         int mouseEventType = 0;
 
@@ -776,7 +784,7 @@
                Math.abs(lastY - y) < AWT_MULTICLICK_SMUDGE))) {
           clickCount = 0;
           lastWindowRef = null;
-          mouseDragState = mouseKeyState;
+          mouseButtonClickAllowed = 0;
           lastTime = 0;
           lastX = 0;
           lastY = 0;
@@ -823,10 +831,10 @@
         // accordingly. This leads to impossibility to make a double click on Component (6404708)
         XWindowPeer toplevel = getToplevelXWindow();
         if (toplevel != null && !toplevel.isModalBlocked()){
-            if (xce.get_mode() != NotifyNormal) {
+            if (xce.get_mode() != XConstants.NotifyNormal) {
                 // 6404708 : need update cursor in accordance with skipping Leave/EnterNotify event
                 // whereas it doesn't need to handled further.
-                if (xce.get_type() == EnterNotify) {
+                if (xce.get_type() == XConstants.EnterNotify) {
                     XAwtState.setComponentMouseEntered(getEventSource());
                     XGlobalCursorManager.nativeUpdateCursor(getEventSource());
                 } else { // LeaveNotify:
@@ -840,7 +848,7 @@
         // From java point the event is bogus as ancestor is obscured, so if
         // the child can get java event itself, we skip it on ancestor.
         long childWnd = xce.get_subwindow();
-        if (childWnd != None) {
+        if (childWnd != XConstants.None) {
             XBaseWindow child = XToolkit.windowToXWindow(childWnd);
             if (child != null && child instanceof XWindow &&
                 !child.isEventDisabled(xev))
@@ -853,7 +861,7 @@
         final Component compWithMouse = XAwtState.getComponentMouseEntered();
         if (toplevel != null) {
             if(!toplevel.isModalBlocked()){
-                if (xce.get_type() == EnterNotify) {
+                if (xce.get_type() == XConstants.EnterNotify) {
                     // Change XAwtState's component mouse entered to the up-to-date one before requesting
                     // to update the cursor since XAwtState.getComponentMouseEntered() is used when the
                     // cursor is updated (in XGlobalCursorManager.findHeavyweightUnderCursor()).
@@ -895,7 +903,7 @@
             eventLog.finest("Clearing last window ref");
             lastWindowRef = null;
         }
-        if (xce.get_type() == EnterNotify) {
+        if (xce.get_type() == XConstants.EnterNotify) {
             MouseEvent me = new MouseEvent(getEventSource(), MouseEvent.MOUSE_ENTERED,
                 jWhen, modifiers, xce.get_x(), xce.get_y(), xce.get_x_root(), xce.get_y_root(), clickCount,
                 popupTrigger, MouseEvent.NOBUTTON);
@@ -990,7 +998,7 @@
     final void handleKeyPress(XKeyEvent ev) {
         long keysym[] = new long[2];
         char unicodeKey = 0;
-        keysym[0] = NoSymbol;
+        keysym[0] = XConstants.NoSymbol;
 
         if (keyEventLog.isLoggable(Level.FINE)) {
             logIncomingKeyEvent( ev );
@@ -1073,7 +1081,7 @@
     private void handleKeyRelease(XKeyEvent ev) {
         long keysym[] = new long[2];
         char unicodeKey = 0;
-        keysym[0] = NoSymbol;
+        keysym[0] = XConstants.NoSymbol;
 
         if (keyEventLog.isLoggable(Level.FINE)) {
             logIncomingKeyEvent( ev );
@@ -1153,10 +1161,10 @@
     }
 
     void updateSizeHints(int x, int y, int width, int height) {
-        long flags = XlibWrapper.PSize | (isLocationByPlatform() ? 0 : (XlibWrapper.PPosition | XlibWrapper.USPosition));
+        long flags = XUtilConstants.PSize | (isLocationByPlatform() ? 0 : (XUtilConstants.PPosition | XUtilConstants.USPosition));
         if (!isResizable()) {
             log.log(Level.FINER, "Window {0} is not resizable", new Object[] {this});
-            flags |= XlibWrapper.PMinSize | XlibWrapper.PMaxSize;
+            flags |= XUtilConstants.PMinSize | XUtilConstants.PMaxSize;
         } else {
             log.log(Level.FINER, "Window {0} is resizable", new Object[] {this});
         }
@@ -1164,10 +1172,10 @@
     }
 
     void updateSizeHints(int x, int y) {
-        long flags = isLocationByPlatform() ? 0 : (XlibWrapper.PPosition | XlibWrapper.USPosition);
+        long flags = isLocationByPlatform() ? 0 : (XUtilConstants.PPosition | XUtilConstants.USPosition);
         if (!isResizable()) {
             log.log(Level.FINER, "Window {0} is not resizable", new Object[] {this});
-            flags |= XlibWrapper.PMinSize | XlibWrapper.PMaxSize | XlibWrapper.PSize;
+            flags |= XUtilConstants.PMinSize | XUtilConstants.PMaxSize | XUtilConstants.PSize;
         } else {
             log.log(Level.FINER, "Window {0} is resizable", new Object[] {this});
         }
--- a/src/solaris/classes/sun/awt/X11/XWindowPeer.java	Wed May 07 23:20:32 2008 +0400
+++ b/src/solaris/classes/sun/awt/X11/XWindowPeer.java	Wed May 14 07:53:12 2008 -0700
@@ -50,7 +50,7 @@
 import sun.awt.X11GraphicsEnvironment;
 
 class XWindowPeer extends XPanelPeer implements WindowPeer,
-                                                DisplayChangedListener, MWMConstants {
+                                                DisplayChangedListener {
 
     private static final Logger log = Logger.getLogger("sun.awt.X11.XWindowPeer");
     private static final Logger focusLog = Logger.getLogger("sun.awt.X11.focus.XWindowPeer");
@@ -65,7 +65,6 @@
     static XAtom wm_delete_window;
     static XAtom wm_take_focus;
 
-    Insets insets = new Insets( 0, 0, 0, 0 );
     XWindowAttributesData winAttr;
     private boolean cachedFocusableWindow;
     XWarningWindow warningWindow;
@@ -133,13 +132,12 @@
         params.put(REPARENTED,
                    Boolean.valueOf(isOverrideRedirect() || isSimpleWindow()));
         super.preInit(params);
-        params.putIfNull(BIT_GRAVITY, Integer.valueOf(NorthWestGravity));
+        params.putIfNull(BIT_GRAVITY, Integer.valueOf(XConstants.NorthWestGravity));
 
-        savedState = WithdrawnState;
+        savedState = XUtilConstants.WithdrawnState;
         XA_NET_WM_STATE = XAtom.get("_NET_WM_STATE");
 
         winAttr = new XWindowAttributesData();
-        insets = new Insets(0,0,0,0);
 
         params.put(OVERRIDE_REDIRECT, Boolean.valueOf(isOverrideRedirect()));
 
@@ -239,7 +237,7 @@
 
                     // Set group leader
                     XWMHints hints = getWMHints();
-                    hints.set_flags(hints.get_flags() | (int)XlibWrapper.WindowGroupHint);
+                    hints.set_flags(hints.get_flags() | (int)XUtilConstants.WindowGroupHint);
                     hints.set_window_group(ownerWindow);
                     XlibWrapper.XSetWMHints(XToolkit.getDisplay(), getWindow(), hints.pData);
                 }
@@ -260,7 +258,6 @@
 
         setSaveUnder(true);
 
-        XWM.requestWMExtents(getWindow());
         updateIconImages();
     }
 
@@ -503,7 +500,7 @@
             Rectangle bounds = getBounds();
 
             XSizeHints hints = getHints();
-            setSizeHints(hints.get_flags() | XlibWrapper.PPosition | XlibWrapper.PSize,
+            setSizeHints(hints.get_flags() | XUtilConstants.PPosition | XUtilConstants.PSize,
                              bounds.x, bounds.y, bounds.width, bounds.height);
             XWM.setMotifDecor(this, false, 0, 0);
 
@@ -531,7 +528,7 @@
         XToolkit.awtLock();
         try {
             XWMHints hints = getWMHints();
-            hints.set_flags(hints.get_flags() | (int)XlibWrapper.InputHint);
+            hints.set_flags(hints.get_flags() | (int)XUtilConstants.InputHint);
             hints.set_input(false/*isNativelyNonFocusableWindow() ? (0):(1)*/);
             XlibWrapper.XSetWMHints(XToolkit.getDisplay(), getWindow(), hints.pData);
         }
@@ -541,9 +538,7 @@
     }
 
     public Insets getInsets() {
-        Insets in = (Insets)(insets.clone());
-        in.top += getWarningWindowHeight();
-        return in;
+        return new Insets(getWarningWindowHeight(), 0, 0, 0);
     }
 
     // NOTE: This method may be called by privileged threads.
@@ -582,7 +577,7 @@
     }
 
     /*
-     * Converts native focused X window id into Java peer.
+     * Retrives real native focused window and converts it into Java peer.
      */
     static XWindowPeer getNativeFocusedWindowPeer() {
         XBaseWindow baseWindow = XToolkit.windowToXWindow(xGetInputFocus());
@@ -591,6 +586,14 @@
                ((XFocusProxyWindow)baseWindow).getOwner() : null;
     }
 
+    /*
+     * Retrives real native focused window and converts it into Java window.
+     */
+    static Window getNativeFocusedWindow() {
+        XWindowPeer peer = getNativeFocusedWindowPeer();
+        return peer != null ? (Window)peer.target : null;
+    }
+
     boolean isFocusableWindow() {
         if (XToolkit.isToolkitThread() || SunToolkit.isAWTLockHeldByCurrentThread())
         {
@@ -821,12 +824,12 @@
         if (isEventDisabled(xev)) {
             return;
         }
-        if (xev.get_type() == XlibWrapper.FocusIn)
+        if (xev.get_type() == XConstants.FocusIn)
         {
             // If this window is non-focusable don't post any java focus event
             if (focusAllowedFor()) {
-                if (xfe.get_mode() == XlibWrapper.NotifyNormal // Normal notify
-                    || xfe.get_mode() == XlibWrapper.NotifyWhileGrabbed) // Alt-Tab notify
+                if (xfe.get_mode() == XConstants.NotifyNormal // Normal notify
+                    || xfe.get_mode() == XConstants.NotifyWhileGrabbed) // Alt-Tab notify
                 {
                     handleWindowFocusIn(xfe.get_serial());
                 }
@@ -834,8 +837,8 @@
         }
         else
         {
-            if (xfe.get_mode() == XlibWrapper.NotifyNormal // Normal notify
-                || xfe.get_mode() == XlibWrapper.NotifyWhileGrabbed) // Alt-Tab notify
+            if (xfe.get_mode() == XConstants.NotifyNormal // Normal notify
+                || xfe.get_mode() == XConstants.NotifyWhileGrabbed) // Alt-Tab notify
             {
                 // If this window is non-focusable don't post any java focus event
                 if (!isNativelyNonFocusableWindow()) {
@@ -994,7 +997,8 @@
 
         return ret;
     }
-    private boolean isDesktopWindow( long wi ) {
+
+    private static boolean isDesktopWindow( long wi ) {
         return XWM.getWM().isDesktopWindow( wi );
     }
 
@@ -1022,7 +1026,7 @@
             try {
                 Rectangle bounds = getBounds();
                 XSizeHints hints = getHints();
-                setSizeHints(hints.get_flags() & ~(USPosition | PPosition),
+                setSizeHints(hints.get_flags() & ~(XUtilConstants.USPosition | XUtilConstants.PPosition),
                              bounds.x, bounds.y, bounds.width, bounds.height);
             } finally {
                 XToolkit.awtUnlock();
@@ -1059,10 +1063,10 @@
                 XUnmapEvent unmap = new XUnmapEvent();
                 unmap.set_window(window);
                 unmap.set_event(XToolkit.getDefaultRootWindow());
-                unmap.set_type((int)XlibWrapper.UnmapNotify);
+                unmap.set_type((int)XConstants.UnmapNotify);
                 unmap.set_from_configure(false);
                 XlibWrapper.XSendEvent(XToolkit.getDisplay(), XToolkit.getDefaultRootWindow(),
-                        false, XlibWrapper.SubstructureNotifyMask | XlibWrapper.SubstructureRedirectMask,
+                        false, XConstants.SubstructureNotifyMask | XConstants.SubstructureRedirectMask,
                         unmap.pData);
                 unmap.dispose();
             }
@@ -1168,10 +1172,6 @@
             // State has changed, invalidate saved value
             stateChanged = true;
             stateChanged(ev.get_time(), savedState, getWMState());
-        } else if (ev.get_atom() == XWM.XA_KDE_NET_WM_FRAME_STRUT.getAtom()
-                   || ev.get_atom() == XWM.XA_NET_FRAME_EXTENTS.getAtom())
-        {
-            getWMSetInsets(XAtom.get(ev.get_atom()));
         }
     }
 
@@ -1252,7 +1252,7 @@
         return res;
     }
 
-    private boolean isWMStateNetHidden() {
+    protected boolean isWMStateNetHidden() {
         XNETProtocol protocol = XWM.getWM().getNETProtocol();
         return (protocol != null && protocol.isWMStateNetHidden(this));
     }
@@ -1305,12 +1305,12 @@
                                          XWM.XA_WM_STATE);
             try {
                 int status = getter.execute();
-                if (status != XlibWrapper.Success || getter.getData() == 0) {
-                    return savedState = XlibWrapper.WithdrawnState;
+                if (status != XConstants.Success || getter.getData() == 0) {
+                    return savedState = XUtilConstants.WithdrawnState;
                 }
 
                 if (getter.getActualType() != XWM.XA_WM_STATE.getAtom() && getter.getActualFormat() != 32) {
-                    return savedState = XlibWrapper.WithdrawnState;
+                    return savedState = XUtilConstants.WithdrawnState;
                 }
                 savedState = (int)Native.getCard32(getter.getData());
             } finally {
@@ -1321,7 +1321,7 @@
     }
 
     boolean isWithdrawn() {
-        return getWMState() == XlibWrapper.WithdrawnState;
+        return getWMState() == XUtilConstants.WithdrawnState;
     }
 
     boolean hasDecorations(int decor) {
@@ -1740,6 +1740,11 @@
         return window;
     }
 
+    public boolean requestWindowFocus(XWindowPeer actualFocusedWindow) {
+        setActualFocusedWindow(actualFocusedWindow);
+        return requestWindowFocus();
+    }
+
     public boolean requestWindowFocus() {
         return requestWindowFocus(0, false);
     }
@@ -1748,25 +1753,25 @@
         focusLog.fine("Request for window focus");
         // If this is Frame or Dialog we can't assure focus request success - but we still can try
         // If this is Window and its owner Frame is active we can be sure request succedded.
-        Window win = (Window) target;
-        Window owner = XWindowPeer.getDecoratedOwner(win);
+        Window ownerWindow  = XWindowPeer.getDecoratedOwner((Window)target);
+        Window focusedWindow = XKeyboardFocusManagerPeer.getCurrentNativeFocusedWindow();
+        Window activeWindow = XWindowPeer.getDecoratedOwner(focusedWindow);
 
-        final Window activeWindow =
-                XWindowPeer.getDecoratedOwner(XKeyboardFocusManagerPeer.getCurrentNativeFocusedWindow());
-        if (activeWindow == owner) {
+        if (isWMStateNetHidden()) {
+            focusLog.fine("The window is unmapped, so rejecting the request");
+            return false;
+        }
+        if (activeWindow == ownerWindow) {
             focusLog.fine("Parent window is active - generating focus for this window");
             handleWindowFocusInSync(-1);
             return true;
-        } else {
-            focusLog.fine("Parent window is not active");
         }
-        ComponentPeer peer = ComponentAccessor.getPeer(owner);
-        if (peer instanceof XDecoratedPeer) {
-            XDecoratedPeer wpeer = (XDecoratedPeer) peer;
-            if (wpeer.requestWindowFocus(this, time, timeProvided)) {
-                focusLog.fine("Parent window accepted focus request - generating focus for this window");
-                return true;
-            }
+        focusLog.fine("Parent window is not active");
+
+        XDecoratedPeer wpeer = (XDecoratedPeer)ComponentAccessor.getPeer(ownerWindow);
+        if (wpeer != null && wpeer.requestWindowFocus(this, time, timeProvided)) {
+            focusLog.fine("Parent window accepted focus request - generating focus for this window");
+            return true;
         }
         focusLog.fine("Denied - parent window is not active and didn't accept focus request");
         return false;
@@ -1818,14 +1823,14 @@
         if( rootPropertyEventDispatcher == null ) {
             rootPropertyEventDispatcher = new XEventDispatcher() {
                 public void dispatchEvent(XEvent ev) {
-                    if( ev.get_type() == PropertyNotify ) {
+                    if( ev.get_type() == XConstants.PropertyNotify ) {
                         handleRootPropertyNotify( ev );
                     }
                 }
             };
             XlibWrapper.XSelectInput( XToolkit.getDisplay(),
                                       XToolkit.getDefaultRootWindow(),
-                                      XlibWrapper.PropertyChangeMask);
+                                      XConstants.PropertyChangeMask);
             XToolkit.addEventDispatcher(XToolkit.getDefaultRootWindow(),
                                                 rootPropertyEventDispatcher);
         }
@@ -1860,7 +1865,7 @@
     public PropMwmHints getMWMHints() {
         if (mwm_hints == null) {
             mwm_hints = new PropMwmHints();
-            if (!XWM.XA_MWM_HINTS.getAtomData(getWindow(), mwm_hints.pData, PROP_MWM_HINTS_ELEMENTS)) {
+            if (!XWM.XA_MWM_HINTS.getAtomData(getWindow(), mwm_hints.pData, MWMConstants.PROP_MWM_HINTS_ELEMENTS)) {
                 mwm_hints.zero();
             }
         }
@@ -1870,41 +1875,10 @@
     public void setMWMHints(PropMwmHints hints) {
         mwm_hints = hints;
         if (hints != null) {
-            XWM.XA_MWM_HINTS.setAtomData(getWindow(), mwm_hints.pData, PROP_MWM_HINTS_ELEMENTS);
+            XWM.XA_MWM_HINTS.setAtomData(getWindow(), mwm_hints.pData, MWMConstants.PROP_MWM_HINTS_ELEMENTS);
         }
     }
 
-    private Insets wm_set_insets;
-    public Insets getWMSetInsets(XAtom changedAtom) {
-        if (isEmbedded()) {
-            return null;
-        }
-
-        if (wm_set_insets != null) {
-            return wm_set_insets;
-        }
-
-        if (changedAtom == null) {
-            wm_set_insets = XWM.getInsetsFromExtents(getWindow());
-        } else {
-            wm_set_insets = XWM.getInsetsFromProp(getWindow(), changedAtom);
-        }
-
-        insLog.log(Level.FINER, "FRAME_EXTENTS: {0}", new Object[]{wm_set_insets});
-
-        if (wm_set_insets != null) {
-            handleWMSetInsets(wm_set_insets);
-        }
-        return wm_set_insets;
-    }
-
-    protected void handleWMSetInsets(Insets newInsets) {
-        wm_set_insets = (Insets)newInsets.clone();
-    }
-
-    public void resetWMSetInsets() {
-        wm_set_insets = null;
-    }
     protected synchronized void updateDropTarget() {
         if (dropTargetCount > 0) {
             long window = getWindow();
@@ -1960,7 +1934,7 @@
                         new Object[] {xme, isGrabbed(), containsGlobal(xme.get_x_root(), xme.get_y_root())});
         }
         if (isGrabbed()) {
-            boolean dragging = (xme.get_state() & (Button1Mask | Button2Mask | Button3Mask)) != 0;
+            boolean dragging = (xme.get_state() & (XConstants.Button1Mask | XConstants.Button2Mask | XConstants.Button3Mask)) != 0;
             // When window is grabbed, all events are dispatched to
             // it.  Retarget them to the corresponding windows (notice
             // that XBaseWindow.dispatchEvent does the opposite
@@ -1974,8 +1948,9 @@
                 // So, I do not want to implement complicated logic for better retargeting.
                 target = pressTarget.isVisible() ? pressTarget : this;
                 xme.set_window(target.getWindow());
-                xme.set_x(xme.get_x_root() - target.getX());