Merge
authorddehaven
Mon, 27 Feb 2017 18:07:31 -0800
changeset 44146 a9850dbd0b18
parent 44145 a6c61a817414 (diff)
parent 44033 ab43ed5eab17 (current diff)
child 44147 443a141b81c6
Merge
jdk/test/java/net/httpclient/HandshakePhase.java
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.datatransfer/share/classes/java/awt/datatransfer/package-info.java	Mon Feb 27 18:07:31 2017 -0800
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 1998, 2017, Oracle and/or its affiliates. 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * Provides interfaces and classes for transferring data between and within
+ * applications. It defines the notion of a "transferable" object, which is an
+ * object capable of being transferred between or within applications. An object
+ * identifies itself as being transferable by implementing the Transferable
+ * interface.
+ * <p>
+ * It also provides a clipboard mechanism, which is an object that temporarily
+ * holds a transferable object that can be transferred between or within an
+ * application. The clipboard is typically used for copy and paste operations.
+ * Although it is possible to create a clipboard to use within an application,
+ * most applications will use the system clipboard to ensure the data can be
+ * transferred across applications running on the platform.
+ *
+ * @since 1.1
+ */
+package java.awt.datatransfer;
--- a/jdk/src/java.datatransfer/share/classes/java/awt/datatransfer/package.html	Tue Feb 28 22:16:00 2017 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,64 +0,0 @@
-<!--
- Copyright (c) 1998, 2013, Oracle and/or its affiliates. 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
- under the terms of the GNU General Public License version 2 only, as
- published by the Free Software Foundation.  Oracle designates this
- particular file as subject to the "Classpath" exception as provided
- by Oracle in the LICENSE file that accompanied this code.
-
- This code is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- version 2 for more details (a copy is included in the LICENSE file that
- accompanied this code).
-
- You should have received a copy of the GNU General Public License version
- 2 along with this work; if not, write to the Free Software Foundation,
- Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-
- Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- or visit www.oracle.com if you need additional information or have any
- questions.
--->
-
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<html>
-<head><title></title></head>
-<body bgcolor="white">
-
-Provides interfaces and classes for transferring data
-between and within applications.  It defines the notion of a
-"transferable" object, which is an object capable of being
-transferred between or within applications. An object identifies
-itself as being transferable by implementing the Transferable
-interface.
-<p>
-It also provides a clipboard mechanism, which is an object that
-temporarily holds a transferable object that can be transferred
-between or within an application. The clipboard is typically used
-for copy and paste operations. Although it is possible to create
-a clipboard to use within an application, most applications will
-use the system clipboard to ensure the data can be transferred
-across applications running on the platform.
-
-<!--
-<h2>Package Specification</h2>
-
-##### FILL IN ANY SPECS NEEDED BY JAVA COMPATIBILITY KIT #####
-<ul>
-  <li><a href="">##### REFER TO ANY FRAMEMAKER SPECIFICATION HERE #####</a>
-</ul>
-
-<h2>Related Documentation</h2>
-
-For overviews, tutorials, examples, guides, and tool documentation, please see:
-<ul>
-  <li><a href="">##### REFER TO NON-SPEC DOCUMENTATION HERE #####</a>
-</ul>
--->
-
-@since 1.1
-</body>
-</html>
--- a/jdk/src/java.desktop/macosx/classes/sun/font/CCharToGlyphMapper.java	Tue Feb 28 22:16:00 2017 -0800
+++ b/jdk/src/java.desktop/macosx/classes/sun/font/CCharToGlyphMapper.java	Mon Feb 27 18:07:31 2017 -0800
@@ -75,37 +75,9 @@
                 }
             }
 
-            if (code < 0x0590) {
+            if (code < FontUtilities.MIN_LAYOUT_CHARCODE) {
                 continue;
-            } else if (code <= 0x05ff) {
-                // Hebrew 0x0590->0x05ff
-                return true;
-            } else if (code >= 0x0600 && code <= 0x06ff) {
-                // Arabic
-                return true;
-            } else if (code >= 0x0900 && code <= 0x0d7f) {
-                // if Indic, assume shaping for conjuncts, reordering:
-                // 0900 - 097F Devanagari
-                // 0980 - 09FF Bengali
-                // 0A00 - 0A7F Gurmukhi
-                // 0A80 - 0AFF Gujarati
-                // 0B00 - 0B7F Oriya
-                // 0B80 - 0BFF Tamil
-                // 0C00 - 0C7F Telugu
-                // 0C80 - 0CFF Kannada
-                // 0D00 - 0D7F Malayalam
-                return true;
-            } else if (code >= 0x0e00 && code <= 0x0e7f) {
-                // if Thai, assume shaping for vowel, tone marks
-                return true;
-            } else if (code >= 0x200c && code <= 0x200d) {
-                // zwj or zwnj
-                return true;
-            } else if (code >= 0x202a && code <= 0x202e) {
-                // directional control
-                return true;
-            } else if (code >= 0x206a && code <= 0x206f) {
-                // directional control
+            } else if (FontUtilities.isComplexCharCode(code)) {
                 return true;
             } else if (code >= 0x10000) {
                 i += 1; // Empty glyph slot after surrogate
--- a/jdk/src/java.desktop/macosx/classes/sun/lwawt/macosx/CInputMethodDescriptor.java	Tue Feb 28 22:16:00 2017 -0800
+++ b/jdk/src/java.desktop/macosx/classes/sun/lwawt/macosx/CInputMethodDescriptor.java	Mon Feb 27 18:07:31 2017 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2017, Oracle and/or its affiliates. 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
@@ -57,15 +57,19 @@
     }
 
     static Object[] getAvailableLocalesInternal() {
-        List<?> workList = nativeGetAvailableLocales();
+        List<Object> workList = nativeGetAvailableLocales();
+        Locale currentLocale = CInputMethod.getNativeLocale();
 
-        if (workList != null) {
+        if (workList == null || workList.isEmpty()) {
+            return new Object[] {
+                    currentLocale != null ? currentLocale : Locale.getDefault()
+            };
+        } else {
+            if (currentLocale != null && !workList.contains(currentLocale)) {
+                workList.add(currentLocale);
+            }
             return workList.toArray();
         }
-
-        return new Object[] {
-            Locale.getDefault()
-        };
     }
 
     /**
@@ -119,5 +123,5 @@
     }
 
     private static native void nativeInit();
-    private static native List<?> nativeGetAvailableLocales();
+    private static native List<Object> nativeGetAvailableLocales();
 }
--- a/jdk/src/java.desktop/macosx/classes/sun/lwawt/macosx/CRobot.java	Tue Feb 28 22:16:00 2017 -0800
+++ b/jdk/src/java.desktop/macosx/classes/sun/lwawt/macosx/CRobot.java	Mon Feb 27 18:07:31 2017 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2017, Oracle and/or its affiliates. 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
@@ -174,7 +174,8 @@
     @Override
     public int getRGBPixel(int x, int y) {
         int c[] = new int[1];
-        getScreenPixels(new Rectangle(x, y, 1, 1), c);
+        double scale = fDevice.getScaleFactor();
+        getScreenPixels(new Rectangle(x, y, (int) scale, (int) scale), c);
         return c[0];
     }
 
@@ -198,7 +199,8 @@
                                    boolean isMouseMove);
     private native void keyEvent(int javaKeyCode, boolean keydown);
     private void getScreenPixels(Rectangle r, int[] pixels){
-        nativeGetScreenPixels(r.x, r.y, r.width, r.height, pixels);
+        double scale = fDevice.getScaleFactor();
+        nativeGetScreenPixels(r.x, r.y, r.width, r.height, scale, pixels);
     }
-    private native void nativeGetScreenPixels(int x, int y, int width, int height, int[] pixels);
+    private native void nativeGetScreenPixels(int x, int y, int width, int height, double scale, int[] pixels);
 }
--- a/jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CRobot.m	Tue Feb 28 22:16:00 2017 -0800
+++ b/jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CRobot.m	Mon Feb 27 18:07:31 2017 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2017, Oracle and/or its affiliates. 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
@@ -276,7 +276,7 @@
 JNIEXPORT void JNICALL
 Java_sun_lwawt_macosx_CRobot_nativeGetScreenPixels
 (JNIEnv *env, jobject peer,
- jint x, jint y, jint width, jint height, jintArray pixels)
+ jint x, jint y, jint width, jint height, jdouble scale, jintArray pixels)
 {
     JNF_COCOA_ENTER(env);
 
@@ -285,10 +285,11 @@
     jint picWidth = width;
     jint picHeight = height;
 
-    CGRect screenRect = CGRectMake(picX, picY, picWidth, picHeight);
+    CGRect screenRect = CGRectMake(picX / scale, picY / scale,
+    				picWidth / scale, picHeight / scale);
     CGImageRef screenPixelsImage = CGWindowListCreateImage(screenRect,
                                         kCGWindowListOptionOnScreenOnly,
-                                        kCGNullWindowID, kCGWindowImageDefault);
+                                        kCGNullWindowID, kCGWindowImageBestResolution);
 
     if (screenPixelsImage == NULL) {
         return;
--- a/jdk/src/java.desktop/share/classes/java/awt/Robot.java	Tue Feb 28 22:16:00 2017 -0800
+++ b/jdk/src/java.desktop/share/classes/java/awt/Robot.java	Mon Feb 27 18:07:31 2017 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2017, Oracle and/or its affiliates. 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,6 +27,9 @@
 
 import java.awt.event.InputEvent;
 import java.awt.event.KeyEvent;
+import java.awt.geom.AffineTransform;
+import java.awt.image.BaseMultiResolutionImage;
+import java.awt.image.MultiResolutionImage;
 import java.awt.image.BufferedImage;
 import java.awt.image.DataBufferInt;
 import java.awt.image.DirectColorModel;
@@ -95,15 +98,14 @@
 
     /**
      * Creates a Robot for the given screen device. Coordinates passed
-     * to Robot method calls like mouseMove and createScreenCapture will
-     * be interpreted as being in the same coordinate system as the
-     * specified screen. Note that depending on the platform configuration,
-     * multiple screens may either:
+     * to Robot method calls like mouseMove, getPixelColor and
+     * createScreenCapture will be interpreted as being in the same coordinate
+     * system as the specified screen. Note that depending on the platform
+     * configuration, multiple screens may either:
      * <ul>
      * <li>share the same coordinate system to form a combined virtual screen</li>
      * <li>use different coordinate systems to act as independent screens</li>
      * </ul>
-     * This constructor is meant for the latter case.
      * <p>
      * If screen devices are reconfigured such that the coordinate system is
      * affected, the behavior of existing Robot objects is undefined.
@@ -391,6 +393,11 @@
      * @return  Color of the pixel
      */
     public synchronized Color getPixelColor(int x, int y) {
+        AffineTransform tx = GraphicsEnvironment.
+                getLocalGraphicsEnvironment().getDefaultScreenDevice().
+                getDefaultConfiguration().getDefaultTransform();
+        x = (int) (x * tx.getScaleX());
+        y = (int) (y * tx.getScaleY());
         Color color = new Color(peer.getRGBPixel(x, y));
         return color;
     }
@@ -406,13 +413,70 @@
      * @see     AWTPermission
      */
     public synchronized BufferedImage createScreenCapture(Rectangle screenRect) {
+        return createCompatibleImage(screenRect, false)[0];
+    }
+
+    /**
+     * Creates an image containing pixels read from the screen.
+     * This image does not include the mouse cursor.
+     * This method can be used in case there is a scaling transform
+     * from user space to screen (device) space.
+     * Typically this means that the display is a high resolution screen,
+     * although strictly it means any case in which there is such a transform.
+     * Returns a {@link java.awt.image.MultiResolutionImage}.
+     * <p>
+     * For a non-scaled display, the {@code MultiResolutionImage}
+     * will have one image variant:
+     * <ul>
+     * <li> Base Image with user specified size.
+     * </ul>
+     * <p>
+     * For a high resolution display where there is a scaling transform,
+     * the {@code MultiResolutionImage} will have two image variants:
+     * <ul>
+     * <li> Base Image with user specified size. This is scaled from the screen.
+     * <li> Native device resolution image with device size pixels.
+     * </ul>
+     * <p>
+     * Example:
+     * <pre>{@code
+     *      Image nativeResImage;
+     *      MultiResolutionImage mrImage = robot.createMultiResolutionScreenCapture(frame.getBounds());
+     *      List<Image> resolutionVariants = mrImage.getResolutionVariants();
+     *      if (resolutionVariants.size() > 1) {
+     *          nativeResImage = resolutionVariants.get(1);
+     *      } else {
+     *          nativeResImage = resolutionVariants.get(0);
+     *      }
+     * }</pre>
+     * @param   screenRect     Rect to capture in screen coordinates
+     * @return  The captured image
+     * @throws  IllegalArgumentException if {@code screenRect} width and height are not greater than zero
+     * @throws  SecurityException if {@code readDisplayPixels} permission is not granted
+     * @see     SecurityManager#checkPermission
+     * @see     AWTPermission
+     *
+     * @since 9
+     */
+    public synchronized MultiResolutionImage
+            createMultiResolutionScreenCapture(Rectangle screenRect) {
+
+        return new BaseMultiResolutionImage(
+                createCompatibleImage(screenRect, true));
+    }
+
+    private synchronized BufferedImage[]
+            createCompatibleImage(Rectangle screenRect, boolean isHiDPI) {
+
         checkScreenCaptureAllowed();
 
         checkValidRect(screenRect);
 
-        BufferedImage image;
+        BufferedImage lowResolutionImage;
+        BufferedImage highResolutionImage;
         DataBufferInt buffer;
         WritableRaster raster;
+        BufferedImage[] imageArray;
 
         if (screenCapCM == null) {
             /*
@@ -422,31 +486,92 @@
              */
 
             screenCapCM = new DirectColorModel(24,
-                                               /* red mask */    0x00FF0000,
-                                               /* green mask */  0x0000FF00,
-                                               /* blue mask */   0x000000FF);
+                    /* red mask */ 0x00FF0000,
+                    /* green mask */ 0x0000FF00,
+                    /* blue mask */ 0x000000FF);
         }
 
+        int[] bandmasks = new int[3];
+        bandmasks[0] = screenCapCM.getRedMask();
+        bandmasks[1] = screenCapCM.getGreenMask();
+        bandmasks[2] = screenCapCM.getBlueMask();
+
         // need to sync the toolkit prior to grabbing the pixels since in some
         // cases rendering to the screen may be delayed
         Toolkit.getDefaultToolkit().sync();
-
+        AffineTransform tx = GraphicsEnvironment.
+                getLocalGraphicsEnvironment().getDefaultScreenDevice().
+                getDefaultConfiguration().getDefaultTransform();
+        double uiScaleX = tx.getScaleX();
+        double uiScaleY = tx.getScaleY();
         int pixels[];
-        int[] bandmasks = new int[3];
+
+        if (uiScaleX == 1 && uiScaleY == 1) {
+
+            pixels = peer.getRGBPixels(screenRect);
+            buffer = new DataBufferInt(pixels, pixels.length);
+
+            bandmasks[0] = screenCapCM.getRedMask();
+            bandmasks[1] = screenCapCM.getGreenMask();
+            bandmasks[2] = screenCapCM.getBlueMask();
+
+            raster = Raster.createPackedRaster(buffer, screenRect.width,
+                    screenRect.height, screenRect.width, bandmasks, null);
+            SunWritableRaster.makeTrackable(buffer);
 
-        pixels = peer.getRGBPixels(screenRect);
-        buffer = new DataBufferInt(pixels, pixels.length);
+            highResolutionImage = new BufferedImage(screenCapCM, raster,
+                    false, null);
+            imageArray = new BufferedImage[1];
+            imageArray[0] = highResolutionImage;
+
+        } else {
+
+            int sX = (int) Math.floor(screenRect.x * uiScaleX);
+            int sY = (int) Math.floor(screenRect.y * uiScaleY);
+            int sWidth = (int) Math.ceil(screenRect.width * uiScaleX);
+            int sHeight = (int) Math.ceil(screenRect.height * uiScaleY);
+            int temppixels[];
+            Rectangle scaledRect = new Rectangle(sX, sY, sWidth, sHeight);
+            temppixels = peer.getRGBPixels(scaledRect);
 
-        bandmasks[0] = screenCapCM.getRedMask();
-        bandmasks[1] = screenCapCM.getGreenMask();
-        bandmasks[2] = screenCapCM.getBlueMask();
+            // HighResolutionImage
+            pixels = temppixels;
+            buffer = new DataBufferInt(pixels, pixels.length);
+            raster = Raster.createPackedRaster(buffer, scaledRect.width,
+                    scaledRect.height, scaledRect.width, bandmasks, null);
+            SunWritableRaster.makeTrackable(buffer);
+
+            highResolutionImage = new BufferedImage(screenCapCM, raster,
+                    false, null);
+
 
-        raster = Raster.createPackedRaster(buffer, screenRect.width, screenRect.height, screenRect.width, bandmasks, null);
-        SunWritableRaster.makeTrackable(buffer);
+            // LowResolutionImage
+            lowResolutionImage = new BufferedImage(screenRect.width,
+                    screenRect.height, highResolutionImage.getType());
+            Graphics2D g = lowResolutionImage.createGraphics();
+            g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
+                    RenderingHints.VALUE_INTERPOLATION_BILINEAR);
+            g.setRenderingHint(RenderingHints.KEY_RENDERING,
+                    RenderingHints.VALUE_RENDER_QUALITY);
+            g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
+                    RenderingHints.VALUE_ANTIALIAS_ON);
+            g.drawImage(highResolutionImage, 0, 0,
+                    screenRect.width, screenRect.height,
+                    0, 0, scaledRect.width, scaledRect.height, null);
+            g.dispose();
 
-        image = new BufferedImage(screenCapCM, raster, false, null);
+            if(!isHiDPI) {
+                imageArray = new BufferedImage[1];
+                imageArray[0] = lowResolutionImage;
+            } else {
+                imageArray = new BufferedImage[2];
+                imageArray[0] = lowResolutionImage;
+                imageArray[1] = highResolutionImage;
+            }
 
-        return image;
+        }
+
+        return imageArray;
     }
 
     private static void checkValidRect(Rectangle rect) {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.desktop/share/classes/java/awt/color/package-info.java	Mon Feb 27 18:07:31 2017 -0800
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 1998, 2017, Oracle and/or its affiliates. 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * Provides classes for color spaces. It contains an implementation of a color
+ * space based on the International Color Consortium (ICC) Profile Format
+ * Specification, Version 3.4, August 15, 1997. It also contains color profiles
+ * based on the ICC Profile Format Specification.
+ *
+ * @since 1.2
+ */
+package java.awt.color;
--- a/jdk/src/java.desktop/share/classes/java/awt/color/package.html	Tue Feb 28 22:16:00 2017 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-<!--
- Copyright (c) 1998, 2013, Oracle and/or its affiliates. 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
- under the terms of the GNU General Public License version 2 only, as
- published by the Free Software Foundation.  Oracle designates this
- particular file as subject to the "Classpath" exception as provided
- by Oracle in the LICENSE file that accompanied this code.
-
- This code is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- version 2 for more details (a copy is included in the LICENSE file that
- accompanied this code).
-
- You should have received a copy of the GNU General Public License version
- 2 along with this work; if not, write to the Free Software Foundation,
- Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-
- Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- or visit www.oracle.com if you need additional information or have any
- questions.
--->
-
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<html>
-<head><title></title></head>
-<body bgcolor="white">
-
-Provides classes for color spaces.  It contains an
-implementation of a color space based on the International Color
-Consortium (ICC) Profile Format Specification, Version 3.4, August 15,
-1997.  It also contains color profiles based on the ICC Profile Format
-Specification.
-
-<!--
-<h2>Package Specification</h2>
-
-##### FILL IN ANY SPECS NEEDED BY JAVA COMPATIBILITY KIT #####
-<ul>
-  <li><a href="">##### REFER TO ANY FRAMEMAKER SPECIFICATION HERE #####</a>
-</ul>
-
-<h2>Related Documentation</h2>
-
-For overviews, tutorials, examples, guides, and tool documentation, please see:
-<ul>
-  <li><a href="">##### REFER TO NON-SPEC DOCUMENTATION HERE #####</a>
-</ul>
--->
-
-@since 1.2
-</body>
-</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.desktop/share/classes/java/awt/desktop/package-info.java	Mon Feb 27 18:07:31 2017 -0800
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 2016, 2017, Oracle and/or its affiliates. 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * Provides interfaces and classes for interaction with various desktop
+ * capabilities.
+ *
+ * @since 9
+ */
+package java.awt.desktop;
--- a/jdk/src/java.desktop/share/classes/java/awt/desktop/package.html	Tue Feb 28 22:16:00 2017 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-<!--
- Copyright (c) 2016, Oracle and/or its affiliates. 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
- under the terms of the GNU General Public License version 2 only, as
- published by the Free Software Foundation.  Oracle designates this
- particular file as subject to the "Classpath" exception as provided
- by Oracle in the LICENSE file that accompanied this code.
-
- This code is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- version 2 for more details (a copy is included in the LICENSE file that
- accompanied this code).
-
- You should have received a copy of the GNU General Public License version
- 2 along with this work; if not, write to the Free Software Foundation,
- Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-
- Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- or visit www.oracle.com if you need additional information or have any
- questions.
--->
-
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<html>
-<head><title></title></head>
-<body bgcolor="white">
-
-Provides interfaces and classes for interaction with various 
-desktop capabilities.
-
-@since 9
-</body>
-</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.desktop/share/classes/java/awt/dnd/package-info.java	Mon Feb 27 18:07:31 2017 -0800
@@ -0,0 +1,110 @@
+/*
+ * Copyright (c) 1998, 2017, Oracle and/or its affiliates. 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * Drag and Drop is a direct manipulation gesture found in many Graphical User
+ * Interface systems that provides a mechanism to transfer information between
+ * two entities logically associated with presentation elements in the GUI.
+ * Normally driven by a physical gesture of a human user using an appropriate
+ * input device, Drag and Drop provides both a mechanism to enable continuous
+ * feedback regarding the possible outcome of any subsequent data transfer to
+ * the user during navigation over the presentation elements in the GUI, and the
+ * facilities to provide for any subsequent data negotiation and transfer.
+ * <p>
+ * This package defines the classes and interfaces necessary to perform Drag and
+ * Drop operations in Java. It defines classes for the drag-source and the
+ * drop-target, as well as events for transferring the data being dragged. This
+ * package also provides a means for giving visual feedback to the user
+ * throughout the duration of the Drag and Drop operation.
+ * <p>
+ * A typical Drag and Drop operation can be decomposed into the following states
+ * (not entirely sequentially):
+ * <ul>
+ *     <li>A {@code DragSource} comes into existence, associated with some
+ *     presentation element ({@code Component}) in the GUI, to initiate a Drag
+ *     and Drop of some potentially {@code Transferable} data.</li>
+ *     <li>1 or more {@code DropTarget}(s) come into/go out of existence,
+ *     associated with presentation elements in the GUI (Components),
+ *     potentially capable of consuming {@code Transferable} data types.</li>
+ *     <li>A {@code DragGestureRecognizer} is obtained from the
+ *     {@code DragSource} and is associated with a {@code Component} in order to
+ *     track and identify any Drag initiating gesture by the user over the
+ *     {@code Component}.</li>
+ *     <li>A user makes a Drag gesture over the {@code Component}, which the
+ *     registered {@code DragGestureRecognizer} detects, and notifies its
+ *     {@code DragGestureListener} of.
+ *     <p>
+ *     Note: Although this API consistently refers to the stimulus for a drag
+ *     and drop operation being a physical gesture by a human user, this does
+ *     not preclude a programmatically driven DnD operation given the
+ *     appropriate implementation of a {@code DragSource}. This package
+ *     contains the abstract class {@code MouseDragGestureRecognizer} for
+ *     recognizing mouse device gestures. Other abstract subclasses may be
+ *     provided by the platform to support other input devices or particular
+ *     {@code Component} class semantics.</li>
+ *     <li>The {@code DragGestureListener} causes the {@code DragSource} to
+ *     initiate the Drag and Drop operation on behalf of the user, perhaps
+ *     animating the GUI Cursor and/or rendering an {@code Image} of the item(s)
+ *     that are the subject of the operation.</li>
+ *     <li>As the user gestures navigate over {@code Component}(s) in the GUI
+ *     with associated {@code DropTarget}(s), the {@code DragSource} receives
+ *     notifications in order to provide "Drag Over" feedback effects, and the
+ *     {@code DropTarget}(s) receive notifications in order to provide
+ *     "Drag Under" feedback effects based upon the operation(s) supported and
+ *     the data type(s) involved.</li>
+ * </ul>
+ * <p>
+ * The gesture itself moves a logical cursor across the GUI hierarchy,
+ * intersecting the geometry of GUI Component(s), possibly resulting in the
+ * logical "Drag" cursor entering, crossing, and subsequently leaving
+ * {@code Component}(s) and associated {@code DropTarget}(s).
+ * <p>
+ * The {@code DragSource} object manifests "Drag Over" feedback to the user, in
+ * the typical case by animating the GUI {@code Cursor} associated with the
+ * logical cursor.
+ * <p>
+ * {@code DropTarget} objects manifest "Drag Under" feedback to the user, in the
+ * typical case, by rendering animations into their associated GUI
+ * {@code Component}(s) under the GUI Cursor.
+ * <p>
+ * The determination of the feedback effects, and the ultimate success or
+ * failure of the data transfer, should one occur, is parameterized as follows:
+ * <ul>
+ *     <li>By the transfer "operation" selected by the user, and supported by
+ *     both the {@code DragSource} and {@code DropTarget}: Copy, Move or
+ *     Reference(link).</li>
+ *     <li>By the intersection of the set of data types provided by the
+ *     {@code DragSource} and the set of data types comprehensible by the
+ *     {@code DropTarget}.</li>
+ *     <li>When the user terminates the drag operation, normally resulting in a
+ *     successful Drop, both the {@code DragSource} and {@code DropTarget}
+ *     receive notifications that include, and result in the type negotiation
+ *     and transfer of, the information associated with the {@code DragSource}
+ *     via a {@code Transferable} object.</li>
+ * </ul>
+ *
+ * @since 1.2
+ */
+package java.awt.dnd;
--- a/jdk/src/java.desktop/share/classes/java/awt/dnd/package.html	Tue Feb 28 22:16:00 2017 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,146 +0,0 @@
-<!--
- Copyright (c) 1998, 2013, Oracle and/or its affiliates. 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
- under the terms of the GNU General Public License version 2 only, as
- published by the Free Software Foundation.  Oracle designates this
- particular file as subject to the "Classpath" exception as provided
- by Oracle in the LICENSE file that accompanied this code.
-
- This code is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- version 2 for more details (a copy is included in the LICENSE file that
- accompanied this code).
-
- You should have received a copy of the GNU General Public License version
- 2 along with this work; if not, write to the Free Software Foundation,
- Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-
- Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- or visit www.oracle.com if you need additional information or have any
- questions.
--->
-
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<html>
-<head><title></title></head>
-<body bgcolor="white">
-
-Drag and Drop is a direct manipulation gesture found in many Graphical
-User Interface systems that provides a mechanism to transfer
-information between two entities logically associated with presentation
-elements in the GUI. Normally driven by a physical gesture of a
-human user using an appropriate input device, Drag and Drop provides both
-a mechanism to enable continuous feedback regarding the
-possible outcome of any subsequent data transfer to the user during
-navigation over the presentation elements in the GUI, and the facilities
-to provide for any subsequent data negotiation and transfer. 
-<P>
-This package defines the classes and interfaces necessary to perform Drag
-and Drop operations in Java. It
-defines classes for the drag-source and the drop-target, as well as
-events for transferring the data being dragged. This package also provides
-a means for giving visual feedback to the user throughout the
-duration of the Drag and Drop operation. 
-<P>
-A typical Drag and Drop operation can be decomposed into the following
-states (not entirely sequentially): 
-<UL>
-<LI>A <code>DragSource</code> comes into existence, 
-associated with some presentation
-element (<code>Component</code>) in the GUI, to initiate a Drag and Drop of
-some potentially <code>Transferable</code> data. 
-<br><br>
-<LI>1 or more <code>DropTarget</code>(s) come into/go out of 
-existence, associated
-with presentation elements in the GUI (Components), potentially
-capable of consuming <code>Transferable</code> data types. 
-<br><br>
-<LI> A <code>DragGestureRecognizer</code> is 
-obtained from the <code>DragSource</code> and is
-associated with a <code>Component</code> in order 
-to track and identify any Drag
-initiating gesture by the user over the <code>Component</code>. 
-<br><br>
-<LI> A user makes a Drag gesture over the <code>Component</code>, 
-which the registered
-<code>DragGestureRecognizer</code> detects, and notifies its
-<code>DragGestureListener</code> of. 
-<P>
-Note: Although this API consistently refers to the stimulus for a
-drag and drop operation being a physical gesture by a human user, this
-does not preclude a programmatically driven DnD operation given the
-appropriate implementation of a <code>DragSource</code>. This package
-contains the abstract class <code>MouseDragGestureRecognizer</code> for
-recognizing mouse device gestures. Other abstract subclasses may be
-provided by the platform to support other input devices or
-particular <code>Component</code> class semantics. 
-<br><br>
-<LI> The <code>DragGestureListener</code> causes the 
-<code>DragSource</code> to initiate the Drag
-and Drop operation on behalf of the user, perhaps animating the
-GUI Cursor and/or rendering an <code>Image</code> of the item(s) that are the
-subject of the operation.
-<br><br>
-<LI> As the user gestures navigate over <code>Component</code>(s) 
-in the GUI with
-associated <code>DropTarget</code>(s), the <code>DragSource</code> 
-receives notifications in order
-to provide "Drag Over" feedback effects, and the <code>DropTarget</code>(s)
-receive notifications in order to provide "Drag Under" feedback effects
-based upon the operation(s) supported and the data type(s) involved. 
-</UL>
-<P>
-
-The gesture itself moves a logical cursor across the GUI hierarchy,
-intersecting the geometry of GUI Component(s), possibly resulting in
-the logical "Drag" cursor entering, crossing, and subsequently
-leaving <code>Component</code>(s) and associated <code>DropTarget</code>(s). 
-<P>
-The <code>DragSource</code> object manifests "Drag Over" feedback to the user, in the typical case by animating the GUI <code>Cursor</code> associated with the
-logical cursor. 
-<P>
-<code>DropTarget</code> objects manifest "Drag Under" feedback to the user, in
-the typical case, by rendering animations into their associated GUI
-<code>Component</code>(s) under the GUI Cursor. 
-<P>
-The determination of the feedback effects, and the ultimate success
-or failure of the data transfer, should one occur, is parameterized
-as follows: 
-<UL>
-<LI> By the transfer "operation" selected by the user, and supported by
-both the <code>DragSource</code> and <code>DropTarget</code>: Copy, Move or Reference(link). 
-<br><br>
-<LI> By the intersection of the set of data types provided by the
-<code>DragSource</code> and the set of data types comprehensible by the 
-<code>DropTarget</code>. 
-<br><br>
-<LI>When the user terminates the drag operation, normally resulting in a
-successful Drop, both the <code>DragSource</code> and <code>DropTarget</code>
-receive
-notifications that include, and result in the type negotiation and
-transfer of, the information associated with the <code>DragSource</code> via a
-<code>Transferable</code> object. 
-</UL>
-
-<!--
-<h2>Package Specification</h2>
-
-##### FILL IN ANY SPECS NEEDED BY JAVA COMPATIBILITY KIT #####
-<ul>
-  <li><a href="">##### REFER TO ANY FRAMEMAKER SPECIFICATION HERE #####</a>
-</ul>
-
-<h2>Related Documentation</h2>
-
-For overviews, tutorials, examples, guides, and tool documentation, please see:
-<ul>
-  <li><a href="">##### REFER TO NON-SPEC DOCUMENTATION HERE #####</a>
-</ul>
--->
-
-@since 1.2
-</body>
-</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.desktop/share/classes/java/awt/dnd/peer/package-info.java	Mon Feb 27 18:07:31 2017 -0800
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 1998, 2017, Oracle and/or its affiliates. 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * Provides for interfacing with the underlying window system in order to access
+ * its platform-dependent drag-and-drop facilities. This package is only used by
+ * AWT toolkit developers.
+ *
+ * @since 1.2
+ */
+package java.awt.dnd.peer;
--- a/jdk/src/java.desktop/share/classes/java/awt/dnd/peer/package.html	Tue Feb 28 22:16:00 2017 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +0,0 @@
-<!--
- Copyright (c) 1998, Oracle and/or its affiliates. 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
- under the terms of the GNU General Public License version 2 only, as
- published by the Free Software Foundation.  Oracle designates this
- particular file as subject to the "Classpath" exception as provided
- by Oracle in the LICENSE file that accompanied this code.
-
- This code is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- version 2 for more details (a copy is included in the LICENSE file that
- accompanied this code).
-
- You should have received a copy of the GNU General Public License version
- 2 along with this work; if not, write to the Free Software Foundation,
- Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-
- Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- or visit www.oracle.com if you need additional information or have any
- questions.
--->
-
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<html>
-<body bgcolor="white">
-
-Provides for interfacing with the underlying window system
-in order to access its platform-dependent drag-and-drop facilities.
-This package is only used by AWT toolkit developers.
-
-
-<h2>Package Specification</h2>
-
-##### FILL IN ANY SPECS NEEDED BY JAVA COMPATIBILITY KIT #####
-<ul>
-  <li><a href="">##### REFER TO ANY FRAMEMAKER SPECIFICATION HERE #####</a>
-</ul>
-
-<h2>Related Documentation</h2>
-
-For overviews, tutorials, examples, guides, and tool documentation, please see:
-<ul>
-  <li><a href="">##### REFER TO NON-SPEC DOCUMENTATION HERE #####</a>
-</ul>
-
-
-</body>
-</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.desktop/share/classes/java/awt/event/package-info.java	Mon Feb 27 18:07:31 2017 -0800
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 1998, 2017, Oracle and/or its affiliates. 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * Provides interfaces and classes for dealing with different types of events
+ * fired by AWT components. See the {@link java.awt.AWTEvent java.awt.AWTEvent}
+ * class for details on the AWT event model. Events are fired by event sources.
+ * An event listener registers with an event source to receive notifications
+ * about the events of a particular type. This package defines events and event
+ * listeners, as well as event listener adapters, which are convenience classes
+ * to make easier the process of writing event listeners.
+ *
+ * @since 1.1
+ */
+package java.awt.event;
--- a/jdk/src/java.desktop/share/classes/java/awt/event/package.html	Tue Feb 28 22:16:00 2017 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-<!--
- Copyright (c) 1998, 2013, Oracle and/or its affiliates. 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
- under the terms of the GNU General Public License version 2 only, as
- published by the Free Software Foundation.  Oracle designates this
- particular file as subject to the "Classpath" exception as provided
- by Oracle in the LICENSE file that accompanied this code.
-
- This code is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- version 2 for more details (a copy is included in the LICENSE file that
- accompanied this code).
-
- You should have received a copy of the GNU General Public License version
- 2 along with this work; if not, write to the Free Software Foundation,
- Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-
- Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- or visit www.oracle.com if you need additional information or have any
- questions.
--->
-
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<html>
-<head><title></title></head>
-<body bgcolor="white">
-
-Provides interfaces and classes for dealing with different
-types of events fired by AWT components. See the java.awt.AWTEvent
-class for details on the AWT event model.  Events are fired by event
-sources.  An event listener registers with an event source to receive
-notifications about the events of a particular type.  This package
-defines events and event listeners, as well as event listener
-adapters, which are convenience classes to make easier the process of
-writing event listeners.
-
-<!--
-<h2>Package Specification</h2>
-
-##### FILL IN ANY SPECS NEEDED BY JAVA COMPATIBILITY KIT #####
-<ul>
-  <li><a href="">##### REFER TO ANY FRAMEMAKER SPECIFICATION HERE #####</a>
-</ul>
-
-<h2>Related Documentation</h2>
-
-For overviews, tutorials, examples, guides, and tool documentation, please see:
-<ul>
-  <li><a href="">##### REFER TO NON-SPEC DOCUMENTATION HERE #####</a>
-</ul>
--->
-
-@since 1.1
-</body>
-</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.desktop/share/classes/java/awt/font/package-info.java	Mon Feb 27 18:07:31 2017 -0800
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 1998, 2013, Oracle and/or its affiliates. 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * Provides classes and interface relating to fonts. It contains support for
+ * representing Type 1, Type 1 Multiple Master fonts, OpenType fonts, and
+ * TrueType fonts.
+ *
+ * @since 1.2
+ */
+package java.awt.font;
--- a/jdk/src/java.desktop/share/classes/java/awt/font/package.html	Tue Feb 28 22:16:00 2017 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +0,0 @@
-<!--
- Copyright (c) 1998, 2013, Oracle and/or its affiliates. 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
- under the terms of the GNU General Public License version 2 only, as
- published by the Free Software Foundation.  Oracle designates this
- particular file as subject to the "Classpath" exception as provided
- by Oracle in the LICENSE file that accompanied this code.
-
- This code is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- version 2 for more details (a copy is included in the LICENSE file that
- accompanied this code).
-
- You should have received a copy of the GNU General Public License version
- 2 along with this work; if not, write to the Free Software Foundation,
- Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-
- Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- or visit www.oracle.com if you need additional information or have any
- questions.
--->
-
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<html>
-<head><title></title></head>
-<body bgcolor="white">
-
-Provides classes and interface relating to fonts.  It
-contains support for representing Type 1, Type 1 Multiple Master
-fonts, OpenType fonts, and TrueType fonts.
-
-<!--
-<h2>Package Specification</h2>
-
-##### FILL IN ANY SPECS NEEDED BY JAVA COMPATIBILITY KIT #####
-<ul>
-  <li><a href="">##### REFER TO ANY FRAMEMAKER SPECIFICATION HERE #####</a>
-</ul>
-
-<h2>Related Documentation</h2>
-
-For overviews, tutorials, examples, guides, and tool documentation, please see:
-<ul>
-  <li><a href="">##### REFER TO NON-SPEC DOCUMENTATION HERE #####</a>
-</ul>
--->
-
-@since 1.2
-</body>
-</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.desktop/share/classes/java/awt/geom/package-info.java	Mon Feb 27 18:07:31 2017 -0800
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 1998, 2017, Oracle and/or its affiliates. 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * Provides the Java 2D classes for defining and performing operations on
+ * objects related to two-dimensional geometry. Some important features of the
+ * package include:
+ * <ul>
+ *     <li>classes for manipulating geometry, such as AffineTransform and the
+ *     PathIterator interface which is implemented by all Shape objects.</li>
+ *     <li>classes that implement the Shape interface, such as CubicCurve2D,
+ *     Ellipse2D, Line2D, Rectangle2D, and GeneralShape.</li>
+ *     <li>the Area class which provides mechanisms for add (union), subtract,
+ *     intersect, and exclusiveOR operations on other Shape objects.</li>
+ * </ul>
+ *
+ * @since 1.2
+ */
+package java.awt.geom;
--- a/jdk/src/java.desktop/share/classes/java/awt/geom/package.html	Tue Feb 28 22:16:00 2017 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +0,0 @@
-<!--
- Copyright (c) 1998, 2013, Oracle and/or its affiliates. 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
- under the terms of the GNU General Public License version 2 only, as
- published by the Free Software Foundation.  Oracle designates this
- particular file as subject to the "Classpath" exception as provided
- by Oracle in the LICENSE file that accompanied this code.
-
- This code is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- version 2 for more details (a copy is included in the LICENSE file that
- accompanied this code).
-
- You should have received a copy of the GNU General Public License version
- 2 along with this work; if not, write to the Free Software Foundation,
- Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-
- Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- or visit www.oracle.com if you need additional information or have any
- questions.
--->
-
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<html>
-<head><title></title></head>
-<body bgcolor="white">
-
-Provides the Java 2D classes for defining and performing operations
-on objects related to two-dimensional geometry.  Some important features
-of the package include:
-<ul>
-<li>classes for manipulating geometry, such as AffineTransform and
-the PathIterator interface which is implemented by all Shape objects.
-
-<li>classes that implement the Shape interface, such as
-CubicCurve2D, Ellipse2D, Line2D, Rectangle2D, and GeneralShape.
-
-<li>the Area class which provides mechanisms for add (union), subtract,
-intersect, and exclusiveOR operations on other Shape objects.
-</ul>
-
-<!--
-<h2>Package Specification</h2>
-
-##### FILL IN ANY SPECS NEEDED BY JAVA COMPATIBILITY KIT #####
-<ul>
-  <li><a href="">##### REFER TO ANY FRAMEMAKER SPECIFICATION HERE #####</a>
-</ul>
-
-<h2>Related Documentation</h2>
-
-For overviews, tutorials, examples, guides, and tool documentation, please see:
-<ul>
-  <li><a href="">##### REFER TO NON-SPEC DOCUMENTATION HERE #####</a>
-</ul>
--->
-
-@since 1.2
-</body>
-</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.desktop/share/classes/java/awt/im/package-info.java	Mon Feb 27 18:07:31 2017 -0800
@@ -0,0 +1,56 @@
+/*
+ * Copyright (c) 1998, 2017, Oracle and/or its affiliates. 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * Provides classes and interfaces for the input method framework. This package
+ * enables text editing components to receive text input through input methods.
+ * Input methods are software components that let the user enter text in ways
+ * other than simple typing on a keyboard. They are commonly used to enter
+ * Japanese, Chinese, or Korean - languages using thousands of different
+ * characters - on keyboards with far fewer keys. However, the framework also
+ * supports input methods for other languages and the use of entirely different
+ * input mechanisms, such as handwriting or speech recognition.
+ *
+ * <h2>Package Specification</h2>
+ * <ul>
+ *     <li><a href="{@docRoot}/../technotes/guides/imf/spec.html">
+ *         Input Method Framework Specification</a></li>
+ *     <li><a href="{@docRoot}/../technotes/guides/imf/api-reference.html">
+ *         Input Method Client API Reference</a></li>
+ * </ul>
+ *
+ * <h2>Related Documentation</h2>
+ * For overviews, tutorials, examples, guides, and tool documentation, please
+ * see:
+ * <ul>
+ *     <li><a href="{@docRoot}/../technotes/guides/imf/overview.html">
+ *         Input Method Framework Overview</a></li>
+ *     <li><a href="{@docRoot}/../technotes/guides/imf/api-tutorial.html">
+ *         Input Method Client API Tutorial</a></li>
+ * </ul>
+ *
+ * @since 1.2
+ */
+package java.awt.im;
--- a/jdk/src/java.desktop/share/classes/java/awt/im/package.html	Tue Feb 28 22:16:00 2017 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +0,0 @@
-<!--
- Copyright (c) 1998, 2006, Oracle and/or its affiliates. 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
- under the terms of the GNU General Public License version 2 only, as
- published by the Free Software Foundation.  Oracle designates this
- particular file as subject to the "Classpath" exception as provided
- by Oracle in the LICENSE file that accompanied this code.
-
- This code is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- version 2 for more details (a copy is included in the LICENSE file that
- accompanied this code).
-
- You should have received a copy of the GNU General Public License version
- 2 along with this work; if not, write to the Free Software Foundation,
- Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-
- Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- or visit www.oracle.com if you need additional information or have any
- questions.
--->
-
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<HTML>
-<HEAD>
-   <META NAME=GENERATOR CONTENT="Claris Home Page 2.0">
-   <X-SAS-WINDOW TOP=42 BOTTOM=589 LEFT=4 RIGHT=534>
-</HEAD>
-<BODY BGCOLOR="#FFFFFF">
-
-<P>Provides classes and interfaces for the input method framework.
-This package enables text editing components to receive text input
-through input methods. Input methods are software components that let
-the user enter text in ways other than simple typing on a keyboard.
-They are commonly used to enter Japanese, Chinese, or Korean -
-languages using thousands of different characters - on keyboards with
-far fewer keys. However, the framework also supports input methods
-for other languages and the use of entirely different input
-mechanisms, such as handwriting or speech recognition.</P>
-
-<H2>Package Specification</H2>
-
-<UL>
-   <LI><B><A HREF="{@docRoot}/../technotes/guides/imf/spec.html">Input Method
-   Framework Specification</A></B>
-   
-   <LI><B><A HREF="{@docRoot}/../technotes/guides/imf/api-reference.html">Input
-   Method Client API Reference</A></B>
-</UL>
-
-<H2>Related Documentation</H2>
-
-<P>For overviews, tutorials, examples, guides, and tool
-documentation, please see:</P>
-
-<UL>
-   <LI><B><A HREF="{@docRoot}/../technotes/guides/imf/overview.html">Input Method
-   Framework Overview</A></B>
-   
-   <LI><B><A HREF="{@docRoot}/../technotes/guides/imf/api-tutorial.html">Input
-   Method Client API Tutorial</A></B>
-</UL>
-
-@since 1.2
-</BODY>
-</HTML>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.desktop/share/classes/java/awt/im/spi/package-info.java	Mon Feb 27 18:07:31 2017 -0800
@@ -0,0 +1,101 @@
+/*
+ * Copyright (c) 1998, 2017, Oracle and/or its affiliates. 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * Provides interfaces that enable the development of input methods that can be
+ * used with any Java runtime environment. Input methods are software components
+ * that let the user enter text in ways other than simple typing on a keyboard.
+ * They are commonly used to enter Japanese, Chinese, or Korean - languages
+ * using thousands of different characters - on keyboards with far fewer keys.
+ * However, this package also allows the development of input methods for other
+ * languages and the use of entirely different input mechanisms, such as
+ * handwriting recognition.
+ *
+ * <h2><a name="package_specification"></a>Package Specification</h2>
+ * <ul>
+ *     <li><a href="../../../../../technotes/guides/imf/spec.html">
+ *         Input Method Framework Specification</a></li>
+ *     <li><a href="../../../../../technotes/guides/imf/spi-reference.html">
+ *         Input Method Engine SPI Reference</a></li>
+ * </ul>
+ *
+ * <h2><a name="Packaging"></a>Packaging Input Methods</h2>
+ * Input methods can be made available by adding them to the application's class
+ * path. The main JAR file of an input method must contain the file:
+ * <pre>
+ *     META-INF/services/java.awt.im.spi.InputMethodDescriptor
+ * </pre>
+ * The file should contain a list of fully-qualified class names, one per line,
+ * of classes implementing the {@code java.awt.im.spi.InputMethodDescriptor}
+ * interface. Space and tab characters surrounding each name, as well as blank
+ * lines, are ignored. The comment character is {@code '#'}
+ * ({@code \u005Cu0023}); on each line all characters following the first
+ * comment character are ignored. The file must be encoded in UTF-8.
+ * <p>
+ * For example, if the fully-qualified name of the class that implements
+ * {@code java.awt.im.spi.InputMethodDesciptor} for the <em>Foo</em> input
+ * method is {@code com.sun.ime.FooInputMethodDescriptor}, the file
+ * {@code META-INF/services/java.awt.im.spi.InputMethodDescriptor}
+ * contains a line:
+ * <pre>
+ *     com.sun.ime.FooInputMethodDescriptor
+ * </pre>
+ * The input method must also provide at least two classes: one class
+ * implementing the {@code java.awt.im.spi.InputMethodDescriptor} interface, one
+ * class implementing the {@code java.awt.im.spi.InputMethod} interface. The
+ * input method should separate the implementations for these interfaces, so
+ * that loading of the class implementing {@code InputMethod} can be deferred
+ * until actually needed.
+ *
+ * <h2><a name="Loading"></a>Loading Input Methods</h2>
+ * The input method framework will usually defer loading of input  method
+ * classes until they are absolutely needed. It loads only the
+ * {@code InputMethodDescriptor} implementations during AWT initialization. It
+ * loads an {@code InputMethod} implementation when the input method has been
+ * selected.
+ *
+ * <h2><a name="PeeredComponents"></a>Java Input Methods and Peered Text
+ * Components</h2>
+ * The Java input method framework intends to support all combinations of input
+ * methods (host input methods and Java input methods) and components (peered
+ * and lightweight). However, because of limitations in the underlying platform,
+ * it may not always be possible to enable the communication between Java input
+ * methods and peered AWT components. Support for this specific combination is
+ * therefore platform dependent. In Sun's Java SE Runtime Environments, this
+ * combination is supported on Windows, but not on Solaris.
+ *
+ * <h2>Related Documentation</h2>
+ * For overviews, tutorials, examples, guides, and tool documentation, please
+ * see:
+ * <ul>
+ *     <li><a href="../../../../../technotes/guides/imf/overview.html">
+ *         Input Method Framework Overview</a></li>
+ *     <li><a href="../../../../../technotes/guides/imf/spi-tutorial.html">
+ *         Input Method Engine SPI Tutorial</a></li>
+ * </ul>
+ *
+ * @since 1.3
+ */
+package java.awt.im.spi;
--- a/jdk/src/java.desktop/share/classes/java/awt/im/spi/package.html	Tue Feb 28 22:16:00 2017 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,125 +0,0 @@
-<!--
- Copyright (c) 1999, 2006, Oracle and/or its affiliates. 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
- under the terms of the GNU General Public License version 2 only, as
- published by the Free Software Foundation.  Oracle designates this
- particular file as subject to the "Classpath" exception as provided
- by Oracle in the LICENSE file that accompanied this code.
-
- This code is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- version 2 for more details (a copy is included in the LICENSE file that
- accompanied this code).
-
- You should have received a copy of the GNU General Public License version
- 2 along with this work; if not, write to the Free Software Foundation,
- Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-
- Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- or visit www.oracle.com if you need additional information or have any
- questions.
--->
-
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<!--This file created 7/22/1999 11:47 by Claris Home Page version 2.0-->
-<HTML>
-<HEAD>
-   <TITLE>Package java.awt.im.spi Description</TITLE>
-   <META NAME=GENERATOR CONTENT="Claris Home Page 2.0">
-   <X-SAS-WINDOW TOP=51 BOTTOM=592 LEFT=171 RIGHT=701>
-</HEAD>
-<BODY BGCOLOR="#FFFFFF">
-
-<P>Provides interfaces that enable the development of input methods
-that can be used with any Java runtime environment. Input methods are
-software components that let the user enter text in ways other than
-simple typing on a keyboard. They are commonly used to enter
-Japanese, Chinese, or Korean - languages using thousands of different
-characters - on keyboards with far fewer keys. However, this package
-also allows the development of input methods for other languages and
-the use of entirely different input mechanisms, such as handwriting
-recognition.</P>
-
-<H2><A NAME="package_specification"></A>Package Specification</H2>
-
-<UL>
-   <LI><B><A HREF="../../../../../technotes/guides/imf/spec.html">Input Method
-   Framework Specification</A></B>
-   
-   <LI><B><A HREF="../../../../../technotes/guides/imf/spi-reference.html">Input
-   Method Engine SPI Reference</A></B>
-</UL>
-
-<H4><A NAME="Packaging"></A>Packaging Input Methods</H4>
-
-<P>Input methods can be made available by adding them to the application's
-class path. The main JAR file of an input method must contain the
-file:</P>
-
-<PRE>    META-INF/services/java.awt.im.spi.InputMethodDescriptor</PRE>
-
-<P>The file should contain a list of fully-qualified class names, one
-per line, of classes implementing the
-<CODE>java.awt.im.spi.InputMethodDescriptor</CODE> interface. Space
-and tab characters surrounding each name, as well as blank lines, are
-ignored. The comment character is <CODE>'#'</CODE>
-(<CODE>\u0023</CODE>); on each line all characters following the
-first comment character are ignored. The file must be encoded in
-UTF-8.</P>
-
-<P>For example, if the fully-qualified name of the class that
-implements <CODE>java.awt.im.spi.InputMethodDesciptor</CODE> for the
-<EM>Foo</EM> input method is
-<CODE>com.sun.ime.FooInputMethodDescriptor</CODE>, the file
-<CODE>META-INF/services/java.awt.im.spi.InputMethodDescriptor</CODE>
-contains a line:</P>
-
-<PRE>    com.sun.ime.FooInputMethodDescriptor</PRE>
-
-<P>The input method must also provide at least two classes: one class
-implementing the <CODE>java.awt.im.spi.InputMethodDescriptor</CODE>
-interface, one class implementing the
-<CODE>java.awt.im.spi.InputMethod</CODE> interface. The input method
-should separate the implementations for these interfaces, so that
-loading of the class implementing <CODE>InputMethod</CODE> can be
-deferred until actually needed.</P>
-
-<H4><A NAME="Loading"></A>Loading Input Methods</H4>
-
-<P>The input method framework will usually defer loading of input
-method classes until they are absolutely needed. It loads only the
-<CODE>InputMethodDescriptor</CODE> implementations during AWT
-initialization. It loads an <CODE>InputMethod</CODE> implementation
-when the input method has been selected.</P>
-
-<H4><A NAME="PeeredComponents"></A>Java Input Methods and Peered Text
-Components</H4>
-
-<P>The Java input method framework intends to support all
-combinations of input methods (host input methods and Java input
-methods) and components (peered and lightweight). However, because of
-limitations in the underlying platform, it may not always be possible
-to enable the communication between Java input methods and peered AWT
-components. Support for this specific combination is therefore
-platform dependent. In Sun's Java SE Runtime Environments, this
-combination is supported on Windows, but not on Solaris.</P>
-
-<H2>Related Documentation</H2>
-
-<P>For overviews, tutorials, examples, guides, and tool
-documentation, please see:</P>
-
-<UL>
-   <LI><B><A HREF="../../../../../technotes/guides/imf/overview.html">Input
-   Method Framework Overview</A></B>
-   
-   <LI><B><A HREF="../../../../../technotes/guides/imf/spi-tutorial.html">Input
-   Method Engine SPI Tutorial</A></B>
-</UL>
-
-@since 1.3
-</BODY>
-</HTML>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.desktop/share/classes/java/awt/image/package-info.java	Mon Feb 27 18:07:31 2017 -0800
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 1998, 2017, Oracle and/or its affiliates. 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * Provides classes for creating and modifying images. Images are processed
+ * using a streaming framework that involves an image producer, optional image
+ * filters, and an image consumer. This framework makes it possible to
+ * progressively render an image while it is being fetched and generated.
+ * Moreover, the framework allows an application to discard the storage used by
+ * an image and to regenerate it at any time. This package provides a number of
+ * image producers, consumers, and filters that you can configure for your image
+ * processing needs.
+ *
+ * @since 1.0
+ */
+package java.awt.image;
--- a/jdk/src/java.desktop/share/classes/java/awt/image/package.html	Tue Feb 28 22:16:00 2017 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-<!--
- Copyright (c) 1998, 2013, Oracle and/or its affiliates. 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
- under the terms of the GNU General Public License version 2 only, as
- published by the Free Software Foundation.  Oracle designates this
- particular file as subject to the "Classpath" exception as provided
- by Oracle in the LICENSE file that accompanied this code.
-
- This code is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- version 2 for more details (a copy is included in the LICENSE file that
- accompanied this code).
-
- You should have received a copy of the GNU General Public License version
- 2 along with this work; if not, write to the Free Software Foundation,
- Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-
- Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- or visit www.oracle.com if you need additional information or have any
- questions.
--->
-
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<html>
-<head><title></title></head>
-<body bgcolor="white">
-
-Provides classes for creating and modifying images.
-Images are processed using a streaming framework that involves an
-image producer, optional image filters, and an image consumer.  This
-framework makes it possible to progressively render an image while it
-is being fetched and generated.  Moreover, the framework allows an
-application to discard the storage used by an image and to regenerate
-it at any time.  This package provides a number of image producers,
-consumers, and filters that you can configure for your image
-processing needs.
-<!--
-<h2>Package Specification</h2>
-
-##### FILL IN ANY SPECS NEEDED BY JAVA COMPATIBILITY KIT #####
-<ul>
-  <li><a href="">##### REFER TO ANY FRAMEMAKER SPECIFICATION HERE #####</a>
-</ul>
-
-<h2>Related Documentation</h2>
-
-For overviews, tutorials, examples, guides, and tool documentation, please see:
-<ul>
-  <li><a href="">##### REFER TO NON-SPEC DOCUMENTATION HERE #####</a>
-</ul>
--->
-
-@since 1.0
-</body>
-</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.desktop/share/classes/java/awt/image/renderable/package-info.java	Mon Feb 27 18:07:31 2017 -0800
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 1998, 2017, Oracle and/or its affiliates. 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * Provides classes and interfaces for producing rendering-independent images.
+ *
+ * @since 1.2
+ */
+package java.awt.image.renderable;
--- a/jdk/src/java.desktop/share/classes/java/awt/image/renderable/package.html	Tue Feb 28 22:16:00 2017 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-<!--
- Copyright (c) 1998, 2013, Oracle and/or its affiliates. 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
- under the terms of the GNU General Public License version 2 only, as
- published by the Free Software Foundation.  Oracle designates this
- particular file as subject to the "Classpath" exception as provided
- by Oracle in the LICENSE file that accompanied this code.
-
- This code is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- version 2 for more details (a copy is included in the LICENSE file that
- accompanied this code).
-
- You should have received a copy of the GNU General Public License version
- 2 along with this work; if not, write to the Free Software Foundation,
- Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-
- Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- or visit www.oracle.com if you need additional information or have any
- questions.
--->
-
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<html>
-<head><title></title></head>
-<body bgcolor="white">
-
-Provides classes and interfaces for producing
-rendering-independent images.
-
-<!--
-<h2>Package Specification</h2>
-
-##### FILL IN ANY SPECS NEEDED BY JAVA COMPATIBILITY KIT #####
-<ul>
-  <li><a href="">##### REFER TO ANY FRAMEMAKER SPECIFICATION HERE #####</a>
-</ul>
-
-<h2>Related Documentation</h2>
-
-For overviews, tutorials, examples, guides, and tool documentation, please see:
-<ul>
-  <li><a href="">##### REFER TO NON-SPEC DOCUMENTATION HERE #####</a>
-</ul>
--->
-
-@since 1.2
-</body>
-</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.desktop/share/classes/java/awt/package-info.java	Mon Feb 27 18:07:31 2017 -0800
@@ -0,0 +1,61 @@
+/*
+ * Copyright (c) 1998, 2017, Oracle and/or its affiliates. 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * Contains all of the classes for creating user interfaces and for painting
+ * graphics and images. A user interface object such as a button or a scrollbar
+ * is called, in AWT terminology, a component. The Component class is the root
+ * of all AWT components. See Component for a detailed description of properties
+ * that all AWT components share.
+ * <p>
+ * Some components fire events when a user interacts with the components. The
+ * AWTEvent class and its subclasses are used to represent the events that AWT
+ * components can fire. See AWTEvent for a description of the AWT event model.
+ * <p>
+ * A container is a component that can contain components and other containers.
+ * A con tainer can also have a layout manager that controls the visual
+ * placement of components in the container. The AWT package contains several
+ * layout manager classes and an interface for building your own layout manager.
+ * See Container and LayoutManager for more information.
+ * <p>
+ * Each {@code Component} object is limited in its maximum size and its location
+ * because the values are stored as an integer. Also, a platform may further
+ * restrict maximum size and location coordinates. The exact maximum values are
+ * dependent on the platform. There is no way to change these maximum values,
+ * either in Java code or in native code. These limitations also impose
+ * restrictions on component layout. If the bounds of a Component object exceed
+ * a platform limit, there is no way to properly arrange them within a Container
+ * object. The object's bounds are defined by any object's coordinate in
+ * combination with its size on a respective axis.
+ *
+ * <h2>Additional Specification</h2>
+ * <ul>
+ *     <li><a href="doc-files/FocusSpec.html">The AWT Focus Subsystem</a>
+ *     <li><a href="doc-files/Modality.html">The AWT Modality</a>
+ * </ul>
+ *
+ * @since 1.0
+ */
+package java.awt;
--- a/jdk/src/java.desktop/share/classes/java/awt/package.html	Tue Feb 28 22:16:00 2017 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,83 +0,0 @@
-<!--
- Copyright (c) 1998, 2013, Oracle and/or its affiliates. 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
- under the terms of the GNU General Public License version 2 only, as
- published by the Free Software Foundation.  Oracle designates this
- particular file as subject to the "Classpath" exception as provided
- by Oracle in the LICENSE file that accompanied this code.
-
- This code is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- version 2 for more details (a copy is included in the LICENSE file that
- accompanied this code).
-
- You should have received a copy of the GNU General Public License version
- 2 along with this work; if not, write to the Free Software Foundation,
- Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-
- Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- or visit www.oracle.com if you need additional information or have any
- questions.
--->
-
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<html>
-<head><title></title></head>
-<body bgcolor="white">
-
-Contains all of the classes for creating user
-interfaces and for painting graphics and images. A user interface object such as a button or a
-scrollbar is called, in AWT terminology, a component. The Component class is the root of all
-AWT components. See Component for a detailed description of properties that all AWT 
-components share.
-<p>
-Some components fire events when a user interacts with the components. The AWTEvent
-class and its subclasses are used to represent the events that AWT components can fire. See
-AWTEvent for a description of the AWT event model.
-<p>
-A container is a component that can contain components and other containers. A con
-tainer can also have a layout manager that controls the visual placement of components in the
-container. The AWT package contains several layout manager classes and an interface for
-building your own layout manager. See Container and LayoutManager for more information.
-<p>
-Each {@code Component} object is limited in its maximum size and
-its location because the values are stored as an integer.
-Also, a platform may further restrict maximum size and location
-coordinates. The exact maximum values are dependent on the platform.
-There is no way to change these maximum values, either in Java
-code or in native code.
-These limitations also impose restrictions on component layout.
-If the bounds of a Component object exceed a platform limit,
-there is no way to properly arrange them within a Container object.
-The object's bounds are defined by any object's coordinate
-in combination with its size on a respective axis. 
-
-
-<h2>Additional Specification</h2>
-<ul>
-<li><a href="doc-files/FocusSpec.html">The AWT Focus Subsystem</a>
-<li><a href="doc-files/Modality.html">The AWT Modality</a>
-</ul>
-
-<!--
-<h2>Package Specification</h2>
-
-##### FILL IN ANY SPECS NEEDED BY JAVA COMPATIBILITY KIT #####
-<ul>
-  <li><a href="">##### REFER TO ANY FRAMEMAKER SPECIFICATION HERE #####</a>
-</ul>
-
-<h2>Related Documentation</h2>
-
-For overviews, tutorials, examples, guides, and tool documentation, please see:
-<ul>
-  <li><a href="">##### REFER TO NON-SPEC DOCUMENTATION HERE #####</a>
-</ul>
--->
-
-@since 1.0
-</body>
-</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.desktop/share/classes/java/awt/peer/package-info.java	Mon Feb 27 18:07:31 2017 -0800
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 1998, 2017, Oracle and/or its affiliates. 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * Provides for interfacing with the underlying window system. It is for
+ * accessing the platform-specific facilities in order to build AWT toolkits. It
+ * is only used by AWT toolkit developers.
+ */
+package java.awt.peer;
--- a/jdk/src/java.desktop/share/classes/java/awt/peer/package.html	Tue Feb 28 22:16:00 2017 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +0,0 @@
-<!--
- Copyright (c) 1998, Oracle and/or its affiliates. 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
- under the terms of the GNU General Public License version 2 only, as
- published by the Free Software Foundation.  Oracle designates this
- particular file as subject to the "Classpath" exception as provided
- by Oracle in the LICENSE file that accompanied this code.
-
- This code is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- version 2 for more details (a copy is included in the LICENSE file that
- accompanied this code).
-
- You should have received a copy of the GNU General Public License version
- 2 along with this work; if not, write to the Free Software Foundation,
- Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-
- Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- or visit www.oracle.com if you need additional information or have any
- questions.
--->
-
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<html>
-<body bgcolor="white">
-
-Provides for interfacing with the underlying window system.
-It is for accessing the platform-specific facilities in order to
-build AWT toolkits. It is only used by AWT toolkit developers.
-
-
-<h2>Package Specification</h2>
-
-##### FILL IN ANY SPECS NEEDED BY JAVA COMPATIBILITY KIT #####
-<ul>
-  <li><a href="">##### REFER TO ANY FRAMEMAKER SPECIFICATION HERE #####</a>
-</ul>
-
-<h2>Related Documentation</h2>
-
-For overviews, tutorials, examples, guides, and tool documentation, please see:
-<ul>
-  <li><a href="">##### REFER TO NON-SPEC DOCUMENTATION HERE #####</a>
-</ul>
-
-
-</body>
-</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.desktop/share/classes/java/awt/print/package-info.java	Mon Feb 27 18:07:31 2017 -0800
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 1998, 2017, Oracle and/or its affiliates. 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * Provides classes and interfaces for a general printing API. The API includes
+ * such features as:
+ * <ul>
+ *     <li>the ability to specify document types</li>
+ *     <li>mechanisms for control of page setup and page formats</li>
+ *     <li>the ability to manage job control dialogs</li>
+ * </ul>
+ *
+ * @since 1.2
+ */
+package java.awt.print;
--- a/jdk/src/java.desktop/share/classes/java/awt/print/package.html	Tue Feb 28 22:16:00 2017 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-<!--
- Copyright (c) 1998, 2013, Oracle and/or its affiliates. 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
- under the terms of the GNU General Public License version 2 only, as
- published by the Free Software Foundation.  Oracle designates this
- particular file as subject to the "Classpath" exception as provided
- by Oracle in the LICENSE file that accompanied this code.
-
- This code is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- version 2 for more details (a copy is included in the LICENSE file that
- accompanied this code).
-
- You should have received a copy of the GNU General Public License version
- 2 along with this work; if not, write to the Free Software Foundation,
- Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-
- Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- or visit www.oracle.com if you need additional information or have any
- questions.
--->
-
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<html>
-<head><title></title></head>
-<body bgcolor="white">
-
-Provides classes and interfaces for a general printing API.  The
-API includes such features as:
-<ul>
-<li>the ability to specify document types
-<li>mechanisms for control of page setup and page formats
-<li>the ability to manage job control dialogs
-</ul>
-
-
-<!--
-<h2>Package Specification</h2>
-
-##### FILL IN ANY SPECS NEEDED BY JAVA COMPATIBILITY KIT #####
-<ul>
-  <li><a href="">##### REFER TO ANY FRAMEMAKER SPECIFICATION HERE #####</a>
-</ul>
-
-<h2>Related Documentation</h2>
-
-For overviews, tutorials, examples, guides, and tool documentation, please see:
-<ul>
-  <li><a href="">##### REFER TO NON-SPEC DOCUMENTATION HERE #####</a>
-</ul>
--->
-
-@since 1.2
-</body>
-</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/swing/border/package-info.java	Mon Feb 27 18:07:31 2017 -0800
@@ -0,0 +1,53 @@
+/*
+ * Copyright (c) 1998, 2017, Oracle and/or its affiliates. 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * Provides classes and interface for drawing specialized borders around a Swing
+ * component. You can subclass these classes to create customized borders for
+ * your components instead of using the default borders provided by the
+ * look-and-feel being used.
+ * <p>
+ * <strong>Note:</strong>
+ * Most of the Swing API is <em>not</em> thread safe. For details, see
+ * <a
+ * href="http://docs.oracle.com/javase/tutorial/uiswing/concurrency/index.html"
+ * target="_top">Concurrency in Swing</a>,
+ * a section in
+ * <em><a href="http://docs.oracle.com/javase/tutorial/"
+ * target="_top">The Java Tutorial</a></em>.
+ *
+ * <h2>Related Documentation</h2>
+ * For overviews, tutorials, examples, guides, and tool documentation,
+ * please see:
+ * <ul>
+ *     <li><a href="http://docs.oracle.com/javase/tutorial/uiswing/components/border.html"
+ *     target="_top">How to Use Borders</a>,
+ *     a section in <em>The Java Tutorial</em></li>
+ * </ul>
+ *
+ * @since 1.2
+ * @serial exclude
+ */
+package javax.swing.border;
--- a/jdk/src/java.desktop/share/classes/javax/swing/border/package.html	Tue Feb 28 22:16:00 2017 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,64 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<html>
-<head>
-<!--
-Copyright (c) 1998, 2013, Oracle and/or its affiliates. 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
-under the terms of the GNU General Public License version 2 only, as
-published by the Free Software Foundation.  Oracle designates this
-particular file as subject to the "Classpath" exception as provided
-by Oracle in the LICENSE file that accompanied this code.
-
-This code is distributed in the hope that it will be useful, but WITHOUT
-ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-version 2 for more details (a copy is included in the LICENSE file that
-accompanied this code).
-
-You should have received a copy of the GNU General Public License version
-2 along with this work; if not, write to the Free Software Foundation,
-Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-
-Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-or visit www.oracle.com if you need additional information or have any
-questions.
--->
-<title></title>
-</head>
-<body bgcolor="white">
-
-Provides classes and interface for drawing
-specialized borders around a Swing component.
-You can subclass these classes to create customized borders
-for your components instead of using the default borders
-provided by the look-and-feel being used.
-
-<p>
-<strong>Note:</strong>
-Most of the Swing API is <em>not</em> thread safe.
-For details, see
-<a
-href="http://docs.oracle.com/javase/tutorial/uiswing/concurrency/index.html"
-target="_top">Concurrency in Swing</a>,
-a section in
-<em><a href="http://docs.oracle.com/javase/tutorial/"
-target="_top">The Java Tutorial</a></em>.
-
-
-<h2>Related Documentation</h2>
-
-For overviews, tutorials, examples, guides, and tool documentation, please see:
-<ul>
-  <li><a href="http://docs.oracle.com/javase/tutorial/uiswing/components/border.html"
-      target="_top">How to Use Borders</a>,
-      a section in <em>The Java Tutorial</em>
-</ul>
-
-
-@since 1.2
-@serial exclude
-
-</body>
-</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/swing/colorchooser/package-info.java	Mon Feb 27 18:07:31 2017 -0800
@@ -0,0 +1,54 @@
+/*
+ * Copyright (c) 1998, 2017, Oracle and/or its affiliates. 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * Contains classes and interfaces used by the {@code JColorChooser} component.
+ * <p>
+ * <strong>Note:</strong>
+ * Most of the Swing API is <em>not</em> thread safe. For details, see
+ * <a
+ * href="http://docs.oracle.com/javase/tutorial/uiswing/concurrency/index.html"
+ * target="_top">Concurrency in Swing</a>,
+ * a section in
+ * <em><a href="http://docs.oracle.com/javase/tutorial/"
+ * target="_top">The Java Tutorial</a></em>.
+ *
+ * <h2>Related Documentation </h2>
+ * This document forms the complete API specification. For overviews, tutorials,
+ * examples, guides, and tool documentation, please see:
+ * <ul>
+ *     <li><a href="http://docs.oracle.com/javase/tutorial/uiswing/components/colorchooser.html"
+ *     target="_top">How to Use Color Choosers</a>,
+ *     a section in <em>The Java Tutorial</em></li>
+ *     <li><a href="../../../../technotes/guides/intl/index.html"
+ *     target="_top">Internationalization Documentation</a></li>
+ *     <li><a href="../../../../technotes/guides/imf/index.html"
+ *     target="_top">Input Method Framework Documentation</a></li>
+ * </ul>
+ *
+ * @since 1.2
+ * @serial exclude
+ */
+package javax.swing.colorchooser;
--- a/jdk/src/java.desktop/share/classes/javax/swing/colorchooser/package.html	Tue Feb 28 22:16:00 2017 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,66 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<html>
-<head>
-<!--
-Copyright (c) 1998, 2013, Oracle and/or its affiliates. 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
-under the terms of the GNU General Public License version 2 only, as
-published by the Free Software Foundation.  Oracle designates this
-particular file as subject to the "Classpath" exception as provided
-by Oracle in the LICENSE file that accompanied this code.
-
-This code is distributed in the hope that it will be useful, but WITHOUT
-ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-version 2 for more details (a copy is included in the LICENSE file that
-accompanied this code).
-
-You should have received a copy of the GNU General Public License version
-2 along with this work; if not, write to the Free Software Foundation,
-Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-
-Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-or visit www.oracle.com if you need additional information or have any
-questions.
--->
-<title></title>
-</head>
-<body bgcolor="white">
-
-Contains classes and interfaces used by the <code>JColorChooser</code>
-component.
-
-<p>
-<strong>Note:</strong>
-Most of the Swing API is <em>not</em> thread safe.
-For details, see
-<a
-href="http://docs.oracle.com/javase/tutorial/uiswing/concurrency/index.html"
-target="_top">Concurrency in Swing</a>,
-a section in
-<em><a href="http://docs.oracle.com/javase/tutorial/"
-target="_top">The Java Tutorial</a></em>.
-
-
-<h2>Related Documentation </h2>
-
-This document forms the complete API specification.  For overviews, tutorials, 
-examples, guides, and tool documentation, please see:
-<ul>
-  <li><a href="http://docs.oracle.com/javase/tutorial/uiswing/components/colorchooser.html" target="_top">How to Use Color Choosers</a>,
-      a section in <em>The Java Tutorial</em>
-
-  <li><a href="../../../../technotes/guides/intl/index.html"
-      target="_top">Internationalization Documentation</a>
-
-  <li><a href="../../../../technotes/guides/imf/index.html"
-      target="_top">Input Method Framework Documentation</a>
-</ul>
-
-@since 1.2
-@serial exclude
-
-</body>
-</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/swing/event/package-info.java	Mon Feb 27 18:07:31 2017 -0800
@@ -0,0 +1,52 @@
+/*
+ * Copyright (c) 1998, 2017, Oracle and/or its affiliates. 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * Provides for events fired by Swing components. It contains event classes and
+ * corresponding event listener interfaces for events fired by Swing components
+ * in addition to those events in the {@link java.awt.event} package.
+ * <p>
+ * <strong>Note:</strong>
+ * Most of the Swing API is <em>not</em> thread safe. For details, see
+ * <a
+ * href="http://docs.oracle.com/javase/tutorial/uiswing/concurrency/index.html"
+ * target="_top">Concurrency in Swing</a>,
+ * a section in
+ * <em><a href="http://docs.oracle.com/javase/tutorial/"
+ * target="_top">The Java Tutorial</a></em>.
+ *
+ * <h2>Related Documentation</h2>
+ * For overviews, tutorials, examples, guides, and tool documentation,
+ * please see:
+ * <ul>
+ *     <li><a href="http://docs.oracle.com/javase/tutorial/uiswing/events/index.html"
+ *     target="_top">Writing Event Listeners</a>,
+ *     a section in <em>The Java Tutorial</em></li>
+ * </ul>
+ *
+ * @since 1.2
+ * @serial exclude
+ */
+package javax.swing.event;
--- a/jdk/src/java.desktop/share/classes/javax/swing/event/package.html	Tue Feb 28 22:16:00 2017 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<html>
-<head>
-<!--
-Copyright (c) 1998, 2013, Oracle and/or its affiliates. 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
-under the terms of the GNU General Public License version 2 only, as
-published by the Free Software Foundation.  Oracle designates this
-particular file as subject to the "Classpath" exception as provided
-by Oracle in the LICENSE file that accompanied this code.
-
-This code is distributed in the hope that it will be useful, but WITHOUT
-ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-version 2 for more details (a copy is included in the LICENSE file that
-accompanied this code).
-
-You should have received a copy of the GNU General Public License version
-2 along with this work; if not, write to the Free Software Foundation,
-Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-
-Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-or visit www.oracle.com if you need additional information or have any
-questions.
--->
-<title></title>
-</head>
-<body bgcolor="white">
-
-Provides for events fired by Swing components.  It contains
-event classes and corresponding event listener interfaces for events
-fired by Swing components in addition to those events in the
-java.awt.event package.
-
-<p>
-<strong>Note:</strong>
-Most of the Swing API is <em>not</em> thread safe.
-For details, see
-<a
-href="http://docs.oracle.com/javase/tutorial/uiswing/concurrency/index.html"
-target="_top">Concurrency in Swing</a>,
-a section in
-<em><a href="http://docs.oracle.com/javase/tutorial/"
-target="_top">The Java Tutorial</a></em>.
-
-<h2>Related Documentation</h2>
-
-For overviews, tutorials, examples, guides, and tool documentation, please see:
-<ul>
-  <li><a href="http://docs.oracle.com/javase/tutorial/uiswing/events/index.html"
-      target="_top">Writing Event Listeners</a>,
-      a section in <em>The Java Tutorial</em>
-</ul>
-
-
-@since 1.2
-@serial exclude
-
-</body>
-</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/swing/filechooser/package-info.java	Mon Feb 27 18:07:31 2017 -0800
@@ -0,0 +1,54 @@
+/*
+ * Copyright (c) 1998, 2017, Oracle and/or its affiliates. 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * Contains classes and interfaces used by the {@code JFileChooser} component.
+ * <p>
+ * <strong>Note:</strong>
+ * Most of the Swing API is <em>not</em> thread safe. For details, see
+ * <a
+ * href="http://docs.oracle.com/javase/tutorial/uiswing/concurrency/index.html"
+ * target="_top">Concurrency in Swing</a>,
+ * a section in
+ * <em><a href="http://docs.oracle.com/javase/tutorial/"
+ * target="_top">The Java Tutorial</a></em>.
+ *
+ * <h2>Related Documentation </h2>
+ * This document forms the complete API specification. For overviews, tutorials,
+ * examples, guides, and tool documentation, please see:
+ * <ul>
+ *     <li><a href="http://docs.oracle.com/javase/tutorial/uiswing/components/filechooser.html"
+ *     target="_top">How to Use File Choosers</a>,
+ *     a section in <em>The Java Tutorial</em></li>
+ *     <li><a href="../../../../technotes/guides/intl/index.html"
+ *     target="_top">Internationalization Documentation</a></li>
+ *     <li><a href="../../../../technotes/guides/imf/index.html"
+ *     target="_top">Input Method Framework Documentation</a></li>
+ * </ul>
+ *
+ * @since 1.2
+ * @serial exclude
+ */
+package javax.swing.filechooser;
--- a/jdk/src/java.desktop/share/classes/javax/swing/filechooser/package.html	Tue Feb 28 22:16:00 2017 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,65 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<html>
-<head>
-<!--
-Copyright (c) 1998, 2013, Oracle and/or its affiliates. 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
-under the terms of the GNU General Public License version 2 only, as
-published by the Free Software Foundation.  Oracle designates this
-particular file as subject to the "Classpath" exception as provided
-by Oracle in the LICENSE file that accompanied this code.
-
-This code is distributed in the hope that it will be useful, but WITHOUT
-ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-version 2 for more details (a copy is included in the LICENSE file that
-accompanied this code).
-
-You should have received a copy of the GNU General Public License version
-2 along with this work; if not, write to the Free Software Foundation,
-Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-
-Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-or visit www.oracle.com if you need additional information or have any
-questions.
--->
-<title></title>
-</head>
-
-<body bgcolor="white">
-
-Contains classes and interfaces used by the <code>JFileChooser</code> component.
-
-<p>
-<strong>Note:</strong>
-Most of the Swing API is <em>not</em> thread safe.
-For details, see
-<a
-href="http://docs.oracle.com/javase/tutorial/uiswing/concurrency/index.html"
-target="_top">Concurrency in Swing</a>,
-a section in
-<em><a href="http://docs.oracle.com/javase/tutorial/"
-target="_top">The Java Tutorial</a></em>.
-
-
-<h2>Related Documentation </h2>
-
-This document forms the complete API specification.  For overviews, tutorials,
-examples, guides, and tool documentation, please see:
-<ul>
-  <li><a href="http://docs.oracle.com/javase/tutorial/uiswing/components/filechooser.html" target="_top">How to Use File Choosers</a>,
-      a section in <em>The Java Tutorial</em>
-  <li><a href="../../../../technotes/guides/intl/index.html"
-      target="_top">Internationalization Documentation</a>
-
-  <li><a href="../../../../technotes/guides/imf/index.html"
-      target="_top">Input Method Framework Documentation</a>
-</ul>
-
-@since 1.2
-@serial exclude
-
-</body>
-</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/swing/package-info.java	Mon Feb 27 18:07:31 2017 -0800
@@ -0,0 +1,130 @@
+/*
+ * Copyright (c) 1998, 2017, Oracle and/or its affiliates. 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * Provides a set of &quot;lightweight&quot; (all-Java language) components
+ * that, to the maximum degree possible, work the same on all platforms. For a
+ * programmer's guide to using these components, see
+ * <a href="http://docs.oracle.com/javase/tutorial/uiswing/index.html"
+ * target="_top">Creating a GUI with JFC/Swing</a>, a trail in
+ * <em>The Java Tutorial</em>. For other resources, see
+ * <a href="#related">Related Documentation</a>.
+ *
+ * <h2><a name="threading">Swing's Threading Policy</a></h2>
+ * In general Swing is not thread safe. All Swing components and related
+ * classes, unless otherwise documented, must be accessed on the event
+ * dispatching thread.
+ * <p>
+ * Typical Swing applications do processing in response to an event generated
+ * from a user gesture. For example, clicking on a {@code JButton} notifies all
+ * {@code ActionListeners} added to the {@code JButton}. As all events generated
+ * from a user gesture are dispatched on the event dispatching thread, most
+ * developers are not impacted by the restriction.
+ * <p>
+ * Where the impact lies, however, is in constructing and showing a Swing
+ * application. Calls to an application's {@code main} method, or methods in
+ * {@code Applet}, are not invoked on the event dispatching thread. As such,
+ * care must be taken to transfer control to the event dispatching thread when
+ * constructing and showing an application or applet. The preferred way to
+ * transfer control and begin working with Swing is to use {@code invokeLater}.
+ * The {@code invokeLater} method schedules a {@code Runnable} to be processed
+ * on the event dispatching thread. The following two examples work equally well
+ * for transferring control and starting up a Swing application:
+ * <pre>
+ * import javax.swing.SwingUtilities;
+ *
+ * public class MyApp implements Runnable {
+ *     public void run() {
+ *         // Invoked on the event dispatching thread.
+ *         // Construct and show GUI.
+ *     }
+ *
+ *     public static void main(String[] args) {
+ *         SwingUtilities.invokeLater(new MyApp());
+ *     }
+ * }</pre>
+ * Or:<pre>
+ * import javax.swing.SwingUtilities;
+ *
+ * public class MyApp {
+ *     MyApp(String[] args) {
+ *         // Invoked on the event dispatching thread.
+ *         // Do any initialization here.
+ *     }
+ *
+ *     public void show() {
+ *         // Show the UI.
+ *     }
+ *
+ *     public static void main(final String[] args) {
+ *         // Schedule a job for the event-dispatching thread:
+ *         // creating and showing this application's GUI.
+ *         SwingUtilities.invokeLater(new Runnable() {
+ *             public void run() {
+ *                 new MyApp(args).show();
+ *             }
+ *         });
+ *     }
+ * }</pre>
+ * This restriction also applies to models attached to Swing components. For
+ * example, if a {@code TableModel} is attached to a {@code JTable}, the
+ * {@code TableModel} should only be modified on the event dispatching thread.
+ * If you modify the model on a separate thread you run the risk of exceptions
+ * and possible display corruption.
+ * <p>
+ * As all events are delivered on the event dispatching thread, care must be
+ * taken in event processing. In particular, a long running task, such as
+ * network io or computational intensive processing, executed on the event
+ * dispatching thread blocks the event dispatching thread from dispatching any
+ * other events. While the event dispatching thread is blocked the application
+ * is completely unresponsive to user input. Refer to
+ * {@link javax.swing.SwingWorker} for the preferred way to do such processing
+ * when working with Swing.
+ * <p>
+ * More information on this topic can be found in the
+ * <a href="http://docs.oracle.com/javase/tutorial/uiswing/">Swing tutorial</a>,
+ * in particular the section on
+ * <a
+ * href="http://docs.oracle.com/javase/tutorial/uiswing/concurrency/index.html">
+ * Concurrency in Swing</a>.
+ *
+ * <h2><a name="related">Related Documentation</a></h2>
+ * For overviews, tutorials, examples, guides, and other documentation,
+ * please see:
+ * <ul>
+ *     <li><a href="http://www.oracle.com/technetwork/java/javase/tech/articles-jsp-139072.html"
+ *     target="_top">The Swing Connection</a></li>
+ *     <li><a href="http://docs.oracle.com/javase/tutorial/"
+ *     target="_top">The Java Tutorial</a></li>
+ *     <li><a href="http://www.oracle.com/technetwork/java/javase/training/index.html"
+ *     target="_top">Online Training</a>
+ *     at the Java Developer Connection <sup>SM</sup></li>
+ *     <li><a href="http://www.oracle.com/technetwork/java/javase/tech/index-jsp-142216.html"
+ *     target="_top">Java Foundation Classes (JFC)</a> home page</li>
+ * </ul>
+ *
+ * @serial exclude
+ */
+package javax.swing;
--- a/jdk/src/java.desktop/share/classes/javax/swing/package.html	Tue Feb 28 22:16:00 2017 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,151 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
-<HTML>
-
-<HEAD>
-<!--
-Copyright (c) 1998, 2014, Oracle and/or its affiliates. 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
-under the terms of the GNU General Public License version 2 only, as
-published by the Free Software Foundation.  Oracle designates this
-particular file as subject to the "Classpath" exception as provided
-by Oracle in the LICENSE file that accompanied this code.
-
-This code is distributed in the hope that it will be useful, but WITHOUT
-ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-version 2 for more details (a copy is included in the LICENSE file that
-accompanied this code).
-
-You should have received a copy of the GNU General Public License version
-2 along with this work; if not, write to the Free Software Foundation,
-Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-
-Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-or visit www.oracle.com if you need additional information or have any
-questions.
--->
-
-        <META NAME="Author" Content="Eric Armstrong">
-        <META HTTP-EQUIV="Content-Type" CONTENT="text/html;CHARSET=iso-8859-1">
-        <TITLE>swing package</TITLE>
-</HEAD>
-
-<BODY bgcolor="white">
-
-<P>Provides a set of &quot;lightweight&quot;
-(all-Java language) components that,
-to the maximum degree possible, work the same on all platforms.
-For a programmer's guide to using these components, see
-<a href="http://docs.oracle.com/javase/tutorial/uiswing/index.html"
-target="_top">Creating
-a GUI with JFC/Swing</a>, a trail in <em>The Java Tutorial</em>.
-For other resources, see 
-<a href="#related">Related Documentation</a>.
-
-<H2><a name="threading">Swing's Threading Policy</a></h2>
-
-In general Swing is not thread safe. All Swing components and related
-classes, unless otherwise documented, must be accessed on the event
-dispatching thread.
-<p>
-Typical Swing applications do processing in response to an event
-generated from a user gesture. For example, clicking on a {@code
-JButton} notifies all {@code ActionListeners} added to the {@code
-JButton}. As all events generated from a user gesture are
-dispatched on the event dispatching thread, most developers are not
-impacted by the restriction.
-<p>
-Where the impact lies, however, is in constructing and showing a
-Swing application. Calls to an application's {@code main} method,
-or methods in {@code Applet}, are not invoked on the event
-dispatching thread. As such, care must be taken to transfer control
-to the event dispatching thread when constructing and showing an
-application or applet. The preferred way to transfer control and begin
-working with Swing is to use {@code invokeLater}. The {@code
-invokeLater} method schedules a {@code Runnable} to be processed on
-the event dispatching thread. The following two examples work equally
-well for transferring control and starting up a Swing application:
-<pre>
-import javax.swing.SwingUtilities;
-
-public class MyApp implements Runnable {
-    public void run() {
-        // Invoked on the event dispatching thread.
-        // Construct and show GUI.
-    }
-
-    public static void main(String[] args) {
-        SwingUtilities.invokeLater(new MyApp());
-    }
-}
-</pre>
-Or:
-<pre>
-import javax.swing.SwingUtilities;
-
-public class MyApp {
-    MyApp(String[] args) {
-        // Invoked on the event dispatching thread.
-        // Do any initialization here.
-    }
-
-    public void show() {
-        // Show the UI.
-    }
-
-    public static void main(final String[] args) {
-        // Schedule a job for the event-dispatching thread:
-        // creating and showing this application's GUI.
-        SwingUtilities.invokeLater(new Runnable() {
-            public void run() {
-                new MyApp(args).show();
-            }
-        });
-    }
-}
-</pre>
-This restriction also applies to models attached to Swing components.
-For example, if a {@code TableModel} is attached to a {@code
-JTable}, the {@code TableModel} should only be modified on the
-event dispatching thread. If you modify the model on a separate
-thread you run the risk of exceptions and possible display
-corruption.
-<p>
-As all events are delivered on the event dispatching thread, care must
-be taken in event processing. In particular, a long running task, such
-as network io or computational intensive processing, executed on the
-event dispatching thread blocks the event dispatching thread from
-dispatching any other events. While the event dispatching thread is
-blocked the application is completely unresponsive to user
-input. Refer to {@link javax.swing.SwingWorker} for the preferred way to do such
-processing when working with Swing.
-<p>
-More information on this topic can be found in the
-<a href="http://docs.oracle.com/javase/tutorial/uiswing/">Swing tutorial</a>,
-in particular the section on
-<a href="http://docs.oracle.com/javase/tutorial/uiswing/concurrency/index.html">Concurrency in Swing</a>.
-
-
-<H2>
-<a name="related">Related Documentation</a>
-</H2>
-<P>For overviews, tutorials, examples, guides, and other documentation, please see:
-
-<UL>
-   <LI><A HREF="http://www.oracle.com/technetwork/java/javase/tech/articles-jsp-139072.html"
-   target="_top">The Swing Connection</A>
-   <LI><A HREF="http://docs.oracle.com/javase/tutorial/"
-   target="_top">The Java Tutorial</A>
-   <LI><A HREF="http://www.oracle.com/technetwork/java/javase/training/index.html"
-   target="_top">Online Training</A> at the Java Developer Connection<font size=-2><sup>SM</sup></font>
-   <LI><A HREF="http://www.oracle.com/technetwork/java/javase/tech/index-jsp-142216.html"
-   target="_top">Java Foundation Classes (JFC)</A> home page
-</UL>
-
-@serial exclude
-
-</BODY>
-</HTML>
-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/swing/plaf/basic/package-info.java	Mon Feb 27 18:07:31 2017 -0800
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 1998, 2017, Oracle and/or its affiliates. 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * Provides user interface objects built according to the Basic look and feel.
+ * The Basic look and feel provides default behavior used by many look and feel
+ * packages. It contains components, layout managers, events, event listeners,
+ * and adapters. You can subclass the classes in this package to create your own
+ * customized look and feel.
+ * <p>
+ * These classes are designed to be used while the corresponding
+ * {@code LookAndFeel} class has been installed
+ * (<code>UIManager.setLookAndFeel(new <i>XXX</i>LookAndFeel())</code>).
+ * Using them while a different {@code LookAndFeel} is installed may produce
+ * unexpected results, including exceptions. Additionally, changing the
+ * {@code LookAndFeel} maintained by the {@code UIManager} without updating the
+ * corresponding {@code ComponentUI} of any {@code JComponent}s may also produce
+ * unexpected results, such as the wrong colors showing up, and is generally not
+ * encouraged.
+ * <p>
+ * <strong>Note:</strong>
+ * Most of the Swing API is <em>not</em> thread safe. For details, see
+ * <a
+ * href="http://docs.oracle.com/javase/tutorial/uiswing/concurrency/index.html"
+ * target="_top">Concurrency in Swing</a>,
+ * a section in
+ * <em><a href="http://docs.oracle.com/javase/tutorial/"
+ * target="_top">The Java Tutorial</a></em>.
+ *
+ * @since 1.2
+ * @serial exclude
+ */
+package javax.swing.plaf.basic;
--- a/jdk/src/java.desktop/share/classes/javax/swing/plaf/basic/package.html	Tue Feb 28 22:16:00 2017 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,68 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<html>
-<head>
-<!--
-Copyright (c) 1998, 2013, Oracle and/or its affiliates. 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
-under the terms of the GNU General Public License version 2 only, as
-published by the Free Software Foundation.  Oracle designates this
-particular file as subject to the "Classpath" exception as provided
-by Oracle in the LICENSE file that accompanied this code.
-
-This code is distributed in the hope that it will be useful, but WITHOUT
-ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-version 2 for more details (a copy is included in the LICENSE file that
-accompanied this code).
-
-You should have received a copy of the GNU General Public License version
-2 along with this work; if not, write to the Free Software Foundation,
-Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-
-Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-or visit www.oracle.com if you need additional information or have any
-questions.
--->
-<title></title>
-</head>
-<body bgcolor="white">
-
-Provides user interface objects built according to the
-Basic look and feel. The Basic look and feel provides default 
-behavior used by many look and feel packages. 
-It contains components, layout managers,
-events, event listeners, and adapters. 
-You can subclass the classes in
-this package to create your own customized look and feel.
-
-<p>These classes are designed to be used while the
-corresponding <code>LookAndFeel</code> class has been
-installed
-(<code>UIManager.setLookAndFeel(new <i>XXX</i>LookAndFeel())</code>).
-Using them while a different <code>LookAndFeel</code> is installed
-may produce unexpected results, including exceptions.
-Additionally, changing the <code>LookAndFeel</code>
-maintained by the <code>UIManager</code> without updating the
-corresponding <code>ComponentUI</code> of any
-<code>JComponent</code>s may also produce unexpected results,
-such as the wrong colors showing up, and is generally not
-encouraged.
-
-<p>
-<strong>Note:</strong>
-Most of the Swing API is <em>not</em> thread safe.
-For details, see
-<a
-href="http://docs.oracle.com/javase/tutorial/uiswing/concurrency/index.html"
-target="_top">Concurrency in Swing</a>,
-a section in
-<em><a href="http://docs.oracle.com/javase/tutorial/"
-target="_top">The Java Tutorial</a></em>.
-
-@since 1.2
-@serial exclude
-
-</body>
-</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/swing/plaf/metal/package-info.java	Mon Feb 27 18:07:31 2017 -0800
@@ -0,0 +1,52 @@
+/*
+ * Copyright (c) 1998, 2017, Oracle and/or its affiliates. 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * Provides user interface objects built according to the Java look and feel
+ * (once codenamed <em>Metal</em>), which is the default look and feel.
+ * <p>
+ * These classes are designed to be used while the corresponding
+ * {@code LookAndFeel} class has been installed
+ * (<code>UIManager.setLookAndFeel(new <i>XXX</i>LookAndFeel())</code>).
+ * Using them while a different {@code LookAndFeel} is installed may produce
+ * unexpected results, including exceptions. Additionally, changing the
+ * {@code LookAndFeel} maintained by the {@code UIManager} without updating the
+ * corresponding {@code ComponentUI} of any {@code JComponent}s may also produce
+ * unexpected results, such as the wrong colors showing up, and is generally not
+ * encouraged.
+ * <p>
+ * <strong>Note:</strong>
+ * Most of the Swing API is <em>not</em> thread safe. For details, see
+ * <a
+ * href="http://docs.oracle.com/javase/tutorial/uiswing/concurrency/index.html"
+ * target="_top">Concurrency in Swing</a>,
+ * a section in
+ * <em><a href="http://docs.oracle.com/javase/tutorial/"
+ * target="_top">The Java Tutorial</a></em>.
+ *
+ * @since 1.2
+ * @serial exclude
+ */
+package javax.swing.plaf.metal;
--- a/jdk/src/java.desktop/share/classes/javax/swing/plaf/metal/package.html	Tue Feb 28 22:16:00 2017 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,64 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<html>
-<head>
-<!--
-Copyright (c) 1998, 2013, Oracle and/or its affiliates. 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
-under the terms of the GNU General Public License version 2 only, as
-published by the Free Software Foundation.  Oracle designates this
-particular file as subject to the "Classpath" exception as provided
-by Oracle in the LICENSE file that accompanied this code.
-
-This code is distributed in the hope that it will be useful, but WITHOUT
-ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-version 2 for more details (a copy is included in the LICENSE file that
-accompanied this code).
-
-You should have received a copy of the GNU General Public License version
-2 along with this work; if not, write to the Free Software Foundation,
-Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-
-Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-or visit www.oracle.com if you need additional information or have any
-questions.
--->
-<title></title>
-</head>
-<body bgcolor="white">
-
-Provides user interface objects built according to
-the Java look and feel (once codenamed <em>Metal</em>),
-which is the default look and feel.
-
-<p>These classes are designed to be used while the
-corresponding <code>LookAndFeel</code> class has been
-installed
-(<code>UIManager.setLookAndFeel(new <i>XXX</i>LookAndFeel())</code>).
-Using them while a different <code>LookAndFeel</code> is installed
-may produce unexpected results, including exceptions.
-Additionally, changing the <code>LookAndFeel</code>
-maintained by the <code>UIManager</code> without updating the
-corresponding <code>ComponentUI</code> of any
-<code>JComponent</code>s may also produce unexpected results,
-such as the wrong colors showing up, and is generally not
-encouraged.
-
-<p>
-<strong>Note:</strong>
-Most of the Swing API is <em>not</em> thread safe.
-For details, see
-<a
-href="http://docs.oracle.com/javase/tutorial/uiswing/concurrency/index.html"
-target="_top">Concurrency in Swing</a>,
-a section in
-<em><a href="http://docs.oracle.com/javase/tutorial/"
-target="_top">The Java Tutorial</a></em>.
-
-@since 1.2
-@serial exclude
-
-</body>
-</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/swing/plaf/multi/package-info.java	Mon Feb 27 18:07:31 2017 -0800
@@ -0,0 +1,52 @@
+/*
+ * Copyright (c) 1998, 2017, Oracle and/or its affiliates. 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * Provides user interface objects that combine two or more look and feels. When
+ * a component asks for its UI, this look and feel returns a multiplexing UI
+ * that handles all communications with both the default look and feel and one
+ * or more auxiliary look and feels. For example, if a user combines an
+ * auxiliary audio look and feel with the Motif look and feel, the
+ * {@code JButton.getUI} method would return an instance of
+ * {@code MultiButtonUI}, which would handle both a {@code MotifButtonUI} and an
+ * {@code AudioButtonUI}.
+ * <p>
+ * For more information, see
+ * <a href="doc-files/multi_tsc.html" target="_top">
+ *     Using the Multiplexing Look and Feel.</a>
+ * <p>
+ * <strong>Note:</strong>
+ * Most of the Swing API is <em>not</em> thread safe. For details, see
+ * <a
+ * href="http://docs.oracle.com/javase/tutorial/uiswing/concurrency/index.html"
+ * target="_top">Concurrency in Swing</a>,
+ * a section in
+ * <em><a href="http://docs.oracle.com/javase/tutorial/"
+ * target="_top">The Java Tutorial</a></em>.
+ *
+ * @since 1.2
+ * @serial exclude
+ */
+package javax.swing.plaf.multi;
--- a/jdk/src/java.desktop/share/classes/javax/swing/plaf/multi/package.html	Tue Feb 28 22:16:00 2017 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,66 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<html>
-<head>
-<!--
-Copyright (c) 1998, 2013, Oracle and/or its affiliates. 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
-under the terms of the GNU General Public License version 2 only, as
-published by the Free Software Foundation.  Oracle designates this
-particular file as subject to the "Classpath" exception as provided
-by Oracle in the LICENSE file that accompanied this code.
-
-This code is distributed in the hope that it will be useful, but WITHOUT
-ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-version 2 for more details (a copy is included in the LICENSE file that
-accompanied this code).
-
-You should have received a copy of the GNU General Public License version
-2 along with this work; if not, write to the Free Software Foundation,
-Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-
-Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-or visit www.oracle.com if you need additional information or have any
-questions.
--->
-<title></title>
-</head>
-<body bgcolor="white">
-
-Provides user interface objects that combine two or more look and feels.
-When a component asks
-for its UI, this look and feel returns a 
-multiplexing UI that handles all communications with both the 
-default look and feel and one or more auxiliary look and feels. 
-For example, if
-a user combines an auxiliary audio look and feel 
-with the Motif look and feel,
-the <code>JButton.getUI</code> method
-would return an instance of <code>MultiButtonUI</code>,
-which would handle both a
-<code>MotifButtonUI</code> and an <code>AudioButtonUI</code>. 
-   
-<p>
-
-For more information, see
-<a href="doc-files/multi_tsc.html" target="_top">Using
-the Multiplexing Look and Feel.</a>
-
-<p>
-<strong>Note:</strong>
-Most of the Swing API is <em>not</em> thread safe.
-For details, see
-<a
-href="http://docs.oracle.com/javase/tutorial/uiswing/concurrency/index.html"
-target="_top">Concurrency in Swing</a>,
-a section in
-<em><a href="http://docs.oracle.com/javase/tutorial/"
-target="_top">The Java Tutorial</a></em>.
-
-@since 1.2
-@serial exclude
-
-</body>
-</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/swing/plaf/nimbus/package-info.java	Mon Feb 27 18:07:31 2017 -0800
@@ -0,0 +1,93 @@
+/*
+ * Copyright (c) 1998, 2017, Oracle and/or its affiliates. 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * Provides user interface objects built according to the cross-platform Nimbus
+ * look and feel.
+ * <p>
+ * Nimbus uses instances of the {@link javax.swing.Painter} interface to paint
+ * components. With each Swing component it associates a foreground and a
+ * background {@code Painter}, and there may be several painters for different
+ * component states.
+ * <p>
+ * Nimbus allows customizing many of its properties, including painters, by
+ * altering the {@link javax.swing.UIDefaults} table. Here's an example:
+ * <pre>
+ * UIManager.put("ProgressBar.tileWidth", myTileWidth);
+ * UIManager.put("ProgressBar[Enabled].backgroundPainter", myBgPainter);
+ * UIManager.put("ProgressBar[Enabled].foregroundPainter", myFgPainter);
+ * </pre>
+ * <p>
+ * Per-component customization is also possible. When rendering a component,
+ * Nimbus checks its client property named "Nimbus.Overrides". The value of this
+ * property should be an instance of {@code UIDefaults}. Settings from that
+ * table override the UIManager settings, but for that particular component
+ * instance only. An optional client property,
+ * "Nimbus.Overrides.InheritDefaults" of type Boolean, specifies whether the
+ * overriding settings should be merged with default ones ({@code true}), or
+ * replace them ({@code false}). By default they are merged:
+ * <pre>
+ * JProgressBar bar = new JProgressBar();
+ * UIDefaults overrides = new UIDefaults();
+ * overrides.put("ProgressBar.cycleTime", 330);
+ * ...
+ * bar.putClientProperty("Nimbus.Overrides", overrides);
+ * bar.putClientProperty("Nimbus.Overrides.InheritDefaults", false);
+ * </pre>
+ * <p>
+ * Colors in Nimbus are derived from a core set of
+ * <a href="doc-files/properties.html#primaryColors">primary colors</a>. There
+ * are also
+ * <a href="doc-files/properties.html#secondaryColors">secondary colors</a>,
+ * which are derived from primary ones, but serve themselves as base colors for
+ * other derived colors. The derivation mechanism allows for runtime
+ * customization, i.e. if a primary or secondary color is changed, all colors
+ * that are derived from it are automatically updated. The method
+ * {@link javax.swing.plaf.nimbus.NimbusLookAndFeel#getDerivedColor(java.lang.String, float, float, float, int, boolean)}
+ * may be used to create a derived color.
+ * <p>
+ * These classes are designed to be used while the corresponding
+ * {@code LookAndFeel} class has been installed
+ * (<code>UIManager.setLookAndFeel(new <i>XXX</i>LookAndFeel())</code>).
+ * Using them while a different {@code LookAndFeel} is installed may produce
+ * unexpected results, including exceptions. Additionally, changing the
+ * {@code LookAndFeel} maintained by the {@code UIManager} without updating the
+ * corresponding {@code ComponentUI} of any {@code JComponent}s may also produce
+ * unexpected results, such as the wrong colors showing up, and is generally not
+ * encouraged.
+ * <p>
+ * <strong>Note:</strong>
+ * Most of the Swing API is <em>not</em> thread safe. For details, see
+ * <a
+ * href="http://docs.oracle.com/javase/tutorial/uiswing/concurrency/index.html"
+ * target="_top">Concurrency in Swing</a>,
+ * a section in
+ * <em><a href="http://docs.oracle.com/javase/tutorial/"
+ * target="_top">The Java Tutorial</a></em>.
+ *
+ * @since 1.7
+ * @serial exclude
+ */
+package javax.swing.plaf.nimbus;
--- a/jdk/src/java.desktop/share/classes/javax/swing/plaf/nimbus/package.html	Tue Feb 28 22:16:00 2017 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,101 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<html>
-<head>
-<!--
-Copyright (c) 1998, 2013, Oracle and/or its affiliates. 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
-under the terms of the GNU General Public License version 2 only, as
-published by the Free Software Foundation.  Oracle designates this
-particular file as subject to the "Classpath" exception as provided
-by Oracle in the LICENSE file that accompanied this code.
-
-This code is distributed in the hope that it will be useful, but WITHOUT
-ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-version 2 for more details (a copy is included in the LICENSE file that
-accompanied this code).
-
-You should have received a copy of the GNU General Public License version
-2 along with this work; if not, write to the Free Software Foundation,
-Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-
-Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-or visit www.oracle.com if you need additional information or have any
-questions.
--->
-<title></title>
-</head>
-<body bgcolor="white">
-
-Provides user interface objects built according to the cross-platform
-Nimbus look and feel.
-
-<p>Nimbus uses instances of the {@link javax.swing.Painter} interface to paint
-components. With each Swing component it associates a foreground and a
-background {@code Painter}, and there may be several painters for different
-component states.
-
-<p>Nimbus allows customizing many of its properties, including painters, by
-altering the {@link javax.swing.UIDefaults} table. Here's an example:
-<pre>
-    UIManager.put("ProgressBar.tileWidth", myTileWidth);
-    UIManager.put("ProgressBar[Enabled].backgroundPainter", myBgPainter);
-    UIManager.put("ProgressBar[Enabled].foregroundPainter", myFgPainter);
-</pre>
-
-<p>Per-component customization is also possible. When rendering a component,
-Nimbus checks its client property named "Nimbus.Overrides". The value of this
-property should be an instance of {@code UIDefaults}. Settings from that table
-override the UIManager settings, but for that particular component instance
-only. An optional client property, "Nimbus.Overrides.InheritDefaults" of type
-Boolean, specifies whether the overriding settings should be merged with
-default ones ({@code true}), or replace them ({@code false}). By default they
-are merged:
-<pre>
-    JProgressBar bar = new JProgressBar();
-    UIDefaults overrides = new UIDefaults();
-    overrides.put("ProgressBar.cycleTime", 330);
-    ...
-    bar.putClientProperty("Nimbus.Overrides", overrides);
-    bar.putClientProperty("Nimbus.Overrides.InheritDefaults", false);
-</pre>
-
-<p>Colors in Nimbus are derived from a core set of
-<a href="doc-files/properties.html#primaryColors">primary colors</a>. There are also
-<a href="doc-files/properties.html#secondaryColors">secondary colors</a>, which are
-derived from primary ones, but serve themselves as base colors for other
-derived colors. The derivation mechanism allows for runtime customization,
-i.e. if a primary or secondary color is changed, all colors that are derived
-from it are automatically updated. The method
-{@link javax.swing.plaf.nimbus.NimbusLookAndFeel#getDerivedColor(java.lang.String, float, float, float, int, boolean)}
-may be used to create a derived color.
-
-<p>These classes are designed to be used while the
-corresponding <code>LookAndFeel</code> class has been
-installed
-(<code>UIManager.setLookAndFeel(new <i>XXX</i>LookAndFeel())</code>).
-Using them while a different <code>LookAndFeel</code> is installed
-may produce unexpected results, including exceptions.
-Additionally, changing the <code>LookAndFeel</code>
-maintained by the <code>UIManager</code> without updating the
-corresponding <code>ComponentUI</code> of any
-<code>JComponent</code>s may also produce unexpected results,
-such as the wrong colors showing up, and is generally not
-encouraged.
-
-<p><strong>Note:</strong>
-Most of the Swing API is <em>not</em> thread safe.
-For details, see
-<a href="http://docs.oracle.com/javase/tutorial/uiswing/concurrency/index.html"
-   target="_top">Concurrency in Swing</a>,
-a section in
-<em><a href="http://docs.oracle.com/javase/tutorial/"
-       target="_top">The Java Tutorial</a></em>.
-
-@since 1.7
-@serial exclude
-
-</body>
-</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/swing/plaf/package-info.java	Mon Feb 27 18:07:31 2017 -0800
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 1998, 2017, Oracle and/or its affiliates. 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * Provides one interface and many abstract classes that Swing uses to provide
+ * its pluggable look-and-feel capabilities. Its classes are subclassed and
+ * implemented by look and feel UIs such as Basic and the Java look and feel
+ * (Metal). This package is only used by developers who cannot create a new
+ * look and feel by subclassing existing look-and-feel components (such as those
+ * provided by the {@code javax.swing.plaf.basic} and
+ * {@code javax.swing.plaf.metal} packages).
+ * <p>
+ * <strong>Note:</strong>
+ * Most of the Swing API is <em>not</em> thread safe. For details, see
+ * <a
+ * href="http://docs.oracle.com/javase/tutorial/uiswing/concurrency/index.html"
+ * target="_top">Concurrency in Swing</a>,
+ * a section in
+ * <em><a href="http://docs.oracle.com/javase/tutorial/"
+ * target="_top">The Java Tutorial</a></em>.
+ *
+ * @since 1.2
+ * @serial exclude
+ */
+package javax.swing.plaf;
--- a/jdk/src/java.desktop/share/classes/javax/swing/plaf/package.html	Tue Feb 28 22:16:00 2017 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<html>
-<head>
-<!--
-Copyright (c) 1998, 2013, Oracle and/or its affiliates. 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
-under the terms of the GNU General Public License version 2 only, as
-published by the Free Software Foundation.  Oracle designates this
-particular file as subject to the "Classpath" exception as provided
-by Oracle in the LICENSE file that accompanied this code.
-
-This code is distributed in the hope that it will be useful, but WITHOUT
-ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-version 2 for more details (a copy is included in the LICENSE file that
-accompanied this code).
-
-You should have received a copy of the GNU General Public License version
-2 along with this work; if not, write to the Free Software Foundation,
-Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-
-Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-or visit www.oracle.com if you need additional information or have any
-questions.
--->
-<title></title>
-</head>
-<body bgcolor="white">
-
-Provides one interface and many abstract classes that
-Swing uses to provide its pluggable look-and-feel capabilities.  Its
-classes are subclassed and implemented by look and feel UIs 
-such as Basic and the Java look and feel (Metal).
-This package is only used by developers who
-cannot create a new look and feel by subclassing existing
-look-and-feel components (such as those provided
-by the <code>javax.swing.plaf.basic</code> and
-<code>javax.swing.plaf.metal</code> packages).
-
-<p>
-<strong>Note:</strong>
-Most of the Swing API is <em>not</em> thread safe.
-For details, see
-<a
-href="http://docs.oracle.com/javase/tutorial/uiswing/concurrency/index.html"
-target="_top">Concurrency in Swing</a>,
-a section in
-<em><a href="http://docs.oracle.com/javase/tutorial/"
-target="_top">The Java Tutorial</a></em>.
-
-@since 1.2
-@serial exclude
-
-</body>
-</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/swing/plaf/synth/package-info.java	Mon Feb 27 18:07:31 2017 -0800
@@ -0,0 +1,143 @@
+/*
+ * Copyright (c) 2003, 2017, Oracle and/or its affiliates. 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * Synth is a skinnable look and feel in which all painting is delegated. Synth
+ * does not provide a default look. In order to use Synth you need to specify a
+ * <a href="doc-files/synthFileFormat.html">file</a>, or provide a
+ * {@link javax.swing.plaf.synth.SynthStyleFactory}. Both configuration options
+ * require an understanding of the synth architecture, which is described below,
+ * as well as an understanding of Swing's architecture.
+ * <p>
+ * Unless otherwise specified null is not a legal value to any of the methods
+ * defined in the synth package and if passed in will result in a
+ * {@code NullPointerException}.
+ *
+ * <h2>Synth</h2>
+ * Each {@link javax.swing.plaf.ComponentUI} implementation in Synth associates
+ * itself with one {@link javax.swing.plaf.synth.SynthStyle} per
+ * {@link javax.swing.plaf.synth.Region}, most {@code Components} only have one
+ * {@code Region} and therefor only one {@code SynthStyle}. {@code SynthStyle}
+ * is used to access all style related properties: fonts, colors
+ * and other {@code Component} properties. In addition {@code SynthStyle}s are
+ * used to obtain {@link javax.swing.plaf.synth.SynthPainter}s for painting the
+ * background, border, focus and other portions of a {@code Component}. The
+ * {@code ComponentUI}s obtain {@code SynthStyle}s from a
+ * {@link javax.swing.plaf.synth.SynthStyleFactory}. A {@code SynthStyleFactory}
+ * can be provided directly by way of
+ * {@link javax.swing.plaf.synth.SynthLookAndFeel#setStyleFactory(javax.swing.plaf.synth.SynthStyleFactory)},
+ * or indirectly by way of {@link javax.swing.plaf.synth.SynthLookAndFeel#load}.
+ * The following example uses the {@code SynthLookAndFeel.load()} method to
+ * configure a {@code SynthLookAndFeel} and sets it as the current look and
+ * feel:
+ * <div class="example">
+ * <pre>{@code
+ *     SynthLookAndFeel laf = new SynthLookAndFeel();
+ *     laf.load(MyClass.class.getResourceAsStream("laf.xml"), MyClass.class);
+ *     UIManager.setLookAndFeel(laf);
+ * }</pre>
+ * </div>
+ * <p>
+ * Many {@code JComponent}s are broken down into smaller pieces and identified
+ * by the type safe enumeration in {@link javax.swing.plaf.synth.Region}. For
+ * example, a {@code JTabbedPane} consists of a {@code Region} for the
+ * {@code JTabbedPane}({@link javax.swing.plaf.synth.Region#TABBED_PANE}), the
+ * content area ({@link javax.swing.plaf.synth.Region#TABBED_PANE_CONTENT}), the
+ * area behind the tabs
+ * ({@link javax.swing.plaf.synth.Region#TABBED_PANE_TAB_AREA}), and the tabs
+ * ({@link javax.swing.plaf.synth.Region#TABBED_PANE_TAB}). Each
+ * {@code Region} of each {@code JComponent} will have a {@code SynthStyle}.
+ * This allows you to customize individual pieces of each region of each
+ * {@code JComponent}.
+ * <p>
+ * Many of the Synth methods take a {@link javax.swing.plaf.synth.SynthContext}.
+ * This is used to provide information about the current {@code Component} and
+ * includes: the {@link javax.swing.plaf.synth.SynthStyle} associated with the
+ * current {@link javax.swing.plaf.synth.Region}, the state of the
+ * {@code Component} as a bitmask (refer to
+ * {@link javax.swing.plaf.synth.SynthConstants} for the valid states), and a
+ * {@link javax.swing.plaf.synth.Region} identifying the portion of the
+ * {@code Component} being painted.
+ * <p>
+ * All text rendering by non-{@code JTextComponent}s is delegated to a
+ * {@link javax.swing.plaf.synth.SynthGraphicsUtils}, which is obtained using
+ * the {@link javax.swing.plaf.synth.SynthStyle} method
+ * {@link javax.swing.plaf.synth.SynthStyle#getGraphicsUtils}. You can customize
+ * text rendering by supplying your own
+ * {@link javax.swing.plaf.synth.SynthGraphicsUtils}.
+ *
+ * <h2>Notes on specific components</h2>
+ * <h3>JTree</h3>
+ * Synth provides a region for the cells of a tree:
+ * {@code Region.TREE_CELL}. To specify the colors of the
+ * renderer you'll want to provide a style for the
+ * {@code TREE_CELL} region. The following illustrates this:
+ * <pre>{@code
+ *   <style id="treeCellStyle">
+ *     <opaque value="TRUE"/>
+ *     <state>
+ *       <color value="WHITE" type="TEXT_FOREGROUND"/>
+ *       <color value="RED" type="TEXT_BACKGROUND"/>
+ *     </state>
+ *     <state value="SELECTED">
+ *       <color value="RED" type="TEXT_FOREGROUND"/>
+ *       <color value="WHITE" type="BACKGROUND"/>
+ *     </state>
+ *   </style>
+ *   <bind style="treeCellStyle" type="region" key="TreeCell"/>
+ * }</pre>
+ * <p>
+ * This specifies a color combination of red on white, when selected, and white
+ * on red when not selected. To see the background you need to specify that
+ * labels are not opaque. The following XML fragment does that:
+ * <pre>{@code
+ *   <style id="labelStyle">
+ *     <opaque value="FALSE"/>
+ *   </style>
+ *   <bind style="labelStyle" type="region" key="Label"/>
+ * }</pre>
+ *
+ * <h3>JList and JTable</h3>
+ * The colors that the renderers for JList and JTable use are specified by way
+ * of the list and table Regions. The following XML fragment illustrates how to
+ * specify red on white, when selected, and white on red when not selected:
+ * <pre>{@code
+ *   <style id="style">
+ *     <opaque value="TRUE"/>
+ *     <state>
+ *       <color value="WHITE" type="TEXT_FOREGROUND"/>
+ *       <color value="RED" type="TEXT_BACKGROUND"/>
+ *       <color value="RED" type="BACKGROUND"/>
+ *     </state>
+ *     <state value="SELECTED">
+ *       <color value="RED" type="TEXT_FOREGROUND"/>
+ *       <color value="WHITE" type="TEXT_BACKGROUND"/>
+ *     </state>
+ *   </style>
+ *   <bind style="style" type="region" key="Table"/>
+ *   <bind style="style" type="region" key="List"/>
+ * }</pre>
+ */
+package javax.swing.plaf.synth;
--- a/jdk/src/java.desktop/share/classes/javax/swing/plaf/synth/package.html	Tue Feb 28 22:16:00 2017 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,178 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<html>
-<head>
-<!--
-Copyright (c) 2003, 2013, Oracle and/or its affiliates. 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
-under the terms of the GNU General Public License version 2 only, as
-published by the Free Software Foundation.  Oracle designates this
-particular file as subject to the "Classpath" exception as provided
-by Oracle in the LICENSE file that accompanied this code.
-
-This code is distributed in the hope that it will be useful, but WITHOUT
-ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-version 2 for more details (a copy is included in the LICENSE file that
-accompanied this code).
-
-You should have received a copy of the GNU General Public License version
-2 along with this work; if not, write to the Free Software Foundation,
-Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-
-Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-or visit www.oracle.com if you need additional information or have any
-questions.
-
-
--->
-<title></title>
-</head>
-<body bgcolor="white">
-    <p>
-      Synth is a skinnable look and feel in which all painting is
-      delegated. Synth does not provide a default look. In
-      order to use Synth you need to specify a
-      <a href="doc-files/synthFileFormat.html">file</a>, or 
-      provide a {@link
-      javax.swing.plaf.synth.SynthStyleFactory}. Both 
-      configuration options require an 
-      understanding of the synth architecture, which is described
-      below, as well as an understanding of Swing's architecture.
-    </p>
-    <p>
-      Unless otherwise specified null is not a legal value to any of
-      the methods defined in the synth package and if passed in will
-      result in a <code>NullPointerException</code>.
-      
-
-    <h2>Synth</h2>
-    <p>
-      Each {@link javax.swing.plaf.ComponentUI} implementation in Synth associates
-      itself with one {@link
-      javax.swing.plaf.synth.SynthStyle} per {@link
-      javax.swing.plaf.synth.Region}, most
-      <code>Components</code> only have one <code>Region</code> and
-      therefor only one <code>SynthStyle</code>.
-      <code>SynthStyle</code>
-      is used to access all style related properties: fonts, colors
-      and other <code>Component</code> properties. In addition
-      <code>SynthStyle</code>s are used to obtain 
-      {@link javax.swing.plaf.synth.SynthPainter}s for painting the background, border,
-      focus and other portions of a <code>Component</code>. The <code>ComponentUI</code>s obtain
-      <code>SynthStyle</code>s from a
-      {@link javax.swing.plaf.synth.SynthStyleFactory}.
-      A <code>SynthStyleFactory</code>
-      can be provided directly by way of 
-      {@link javax.swing.plaf.synth.SynthLookAndFeel#setStyleFactory(javax.swing.plaf.synth.SynthStyleFactory)},
-      or indirectly by way of
-      {@link javax.swing.plaf.synth.SynthLookAndFeel#load}. The
-      following example uses the <code>SynthLookAndFeel.load()</code>
-      method to configure a <code>SynthLookAndFeel</code> and sets it
-      as the current look and feel:
-    </p>
-    <div class="example">
-      <pre>
-  SynthLookAndFeel laf = new SynthLookAndFeel();
-  laf.load(MyClass.class.getResourceAsStream("laf.xml"), MyClass.class);
-  UIManager.setLookAndFeel(laf);
-      </pre>
-    </div>
-    <p>
-      Many <code>JComponent</code>s are broken down into smaller
-      pieces and identified by the type safe enumeration in
-      {@link javax.swing.plaf.synth.Region}. For example, a <code>JTabbedPane</code>
-      consists of a <code>Region</code> for the
-      <code>JTabbedPane</code> ({@link
-      javax.swing.plaf.synth.Region#TABBED_PANE}), the content
-      area ({@link
-      javax.swing.plaf.synth.Region#TABBED_PANE_CONTENT}), the
-      area behind the tabs ({@link
-      javax.swing.plaf.synth.Region#TABBED_PANE_TAB_AREA}), and the
-      tabs ({@link
-      javax.swing.plaf.synth.Region#TABBED_PANE_TAB}). Each
-      <code>Region</code> of each
-      <code>JComponent</code> will have a
-      <code>SynthStyle</code>. This allows 
-      you to customize individual pieces of each region of each
-      <code>JComponent</code>.
-    <p>
-      Many of the Synth methods take a {@link javax.swing.plaf.synth.SynthContext}. This 
-      is used to provide information about the current
-      <code>Component</code> and includes: the
-      {@link javax.swing.plaf.synth.SynthStyle} associated with the current
-      {@link javax.swing.plaf.synth.Region}, the state of the <code>Component</code>
-      as a bitmask (refer to {@link
-      javax.swing.plaf.synth.SynthConstants} for the valid
-      states), and a {@link javax.swing.plaf.synth.Region} identifying the portion of 
-      the <code>Component</code> being painted.
-    <p>
-      All text rendering by non-<code>JTextComponent</code>s is
-      delegated to a {@link
-      javax.swing.plaf.synth.SynthGraphicsUtils}, which is
-      obtained using the {@link javax.swing.plaf.synth.SynthStyle} method
-      {@link javax.swing.plaf.synth.SynthStyle#getGraphicsUtils}. You can
-      customize text rendering 
-      by supplying your own {@link javax.swing.plaf.synth.SynthGraphicsUtils}.
-
-    </p>
-
-    <h2>Notes on specific components</h2>
-
-    <h3>JTree</h3>
-    <p>
-      Synth provides a region for the cells of a tree:
-      <code>Region.TREE_CELL</code>.  To specify the colors of the
-      renderer you'll want to provide a style for the
-      <code>TREE_CELL</code> region.  The following illustrates this:
-<pre>
-  &lt;style id="treeCellStyle">
-    &lt;opaque value="TRUE"/>
-    &lt;state>
-      &lt;color value="WHITE" type="TEXT_FOREGROUND"/>
-      &lt;color value="RED" type="TEXT_BACKGROUND"/>
-    &lt;/state>
-    &lt;state value="SELECTED">
-      &lt;color value="RED" type="TEXT_FOREGROUND"/>
-      &lt;color value="WHITE" type="BACKGROUND"/>
-    &lt;/state>
-  &lt;/style>
-  &lt;bind style="treeCellStyle" type="region" key="TreeCell"/>
-</pre>
-    <p>
-      This specifies a color combination of red on white, when
-      selected, and white on red when not selected.  To see the
-      background you need to specify that labels are not opaque.  The
-      following XML fragment does that:
-<pre>
-  &lt;style id="labelStyle">
-    &lt;opaque value="FALSE"/>
-  &lt;/style>
-  &lt;bind style="labelStyle" type="region" key="Label"/>
-</pre>
-      
-    <h3>JList and JTable</h3>
-    <p>
-      The colors that the renderers for JList and JTable use are
-      specified by way of the list and table Regions.  The following
-      XML fragment illustrates how to specify red on white, when
-      selected, and white on red when not selected:
-<pre>
-  &lt;style id="style">
-    &lt;opaque value="TRUE"/>
-    &lt;state>
-      &lt;color value="WHITE" type="TEXT_FOREGROUND"/>
-      &lt;color value="RED" type="TEXT_BACKGROUND"/>
-      &lt;color value="RED" type="BACKGROUND"/>
-    &lt;/state>
-    &lt;state value="SELECTED">
-      &lt;color value="RED" type="TEXT_FOREGROUND"/>
-      &lt;color value="WHITE" type="TEXT_BACKGROUND"/>
-    &lt;/state>
-  &lt;/style>
-  &lt;bind style="style" type="region" key="Table"/>
-  &lt;bind style="style" type="region" key="List"/>
-</pre>
-  </body>
-</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/swing/table/package-info.java	Mon Feb 27 18:07:31 2017 -0800
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 1998, 2017, Oracle and/or its affiliates. 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * Provides classes and interfaces for dealing with {@code javax.swing.JTable}.
+ * {@code JTable} is Swing's grid or tabular view for constructing user
+ * interfaces for tabular data structures inside an application. Use this
+ * package if you want control over how tables are constructed, updated, and
+ * rendered, as well as how data associated with the tables are viewed and
+ * managed.
+ * <p>
+ * <strong>Note:</strong>
+ * Most of the Swing API is <em>not</em> thread safe. For details, see
+ * <a
+ * href="http://docs.oracle.com/javase/tutorial/uiswing/concurrency/index.html"
+ * target="_top">Concurrency in Swing</a>,
+ * a section in
+ * <em><a href="http://docs.oracle.com/javase/tutorial/"
+ * target="_top">The Java Tutorial</a></em>.
+ *
+ * <h2>Related Documentation</h2>
+ * For overviews, tutorials, examples, guides, and tool documentation,
+ * please see:
+ * <ul>
+ *     <li><a href="http://docs.oracle.com/javase/tutorial/uiswing/components/table.html"
+ *     target="_top">How to Use Tables</a>,
+ *     a section in <em>The Java Tutorial</em></li>
+ * </ul>
+ *
+ * @since 1.2
+ * @serial exclude
+ */
+package javax.swing.table;
--- a/jdk/src/java.desktop/share/classes/javax/swing/table/package.html	Tue Feb 28 22:16:00 2017 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,66 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<html>
-<head>
-<!--
-Copyright (c) 1998, 2013, Oracle and/or its affiliates. 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
-under the terms of the GNU General Public License version 2 only, as
-published by the Free Software Foundation.  Oracle designates this
-particular file as subject to the "Classpath" exception as provided
-by Oracle in the LICENSE file that accompanied this code.
-
-This code is distributed in the hope that it will be useful, but WITHOUT
-ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-version 2 for more details (a copy is included in the LICENSE file that
-accompanied this code).
-
-You should have received a copy of the GNU General Public License version
-2 along with this work; if not, write to the Free Software Foundation,
-Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-
-Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-or visit www.oracle.com if you need additional information or have any
-questions.
--->
-<title></title>
-</head>
-<body bgcolor="white">
-
-Provides classes and interfaces for dealing with
-<code>javax.swing.JTable</code>. 
-<code>JTable</code> is Swing's grid or tabular view for
-constructing user interfaces for tabular data structures inside
-an application.  Use this package if you want control over how tables
-are constructed, updated, and rendered, as well as how data associated
-with the tables are viewed and managed.
-
-<p>
-
-<strong>Note:</strong>
-Most of the Swing API is <em>not</em> thread safe.
-For details, see
-<a
-href="http://docs.oracle.com/javase/tutorial/uiswing/concurrency/index.html"
-target="_top">Concurrency in Swing</a>,
-a section in
-<em><a href="http://docs.oracle.com/javase/tutorial/"
-target="_top">The Java Tutorial</a></em>.
-
-
-<h2>Related Documentation</h2>
-
-For overviews, tutorials, examples, guides, and tool documentation, please see:
-<ul>
-  <li><a href="http://docs.oracle.com/javase/tutorial/uiswing/components/table.html" target="_top">How to Use Tables</a>,
-      a section in <em>The Java Tutorial</em>
-</ul>
-
-
-@since 1.2
-@serial exclude
-
-</body>
-</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/swing/text/html/package-info.java	Mon Feb 27 18:07:31 2017 -0800
@@ -0,0 +1,49 @@
+/*
+ * Copyright (c) 1998, 2017, Oracle and/or its affiliates. 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * Provides the class {@code HTMLEditorKit} and supporting classes for creating
+ * HTML text editors.
+ * <p>
+ * <strong>Note:</strong>
+ * Most of the Swing API is <em>not</em> thread safe. For details, see
+ * <a
+ * href="http://docs.oracle.com/javase/tutorial/uiswing/concurrency/index.html"
+ * target="_top">Concurrency in Swing</a>,
+ * a section in
+ * <em><a href="http://docs.oracle.com/javase/tutorial/"
+ * target="_top">The Java Tutorial</a></em>.
+ *
+ * <h2>Package Specification</h2>
+ * <ul>
+ *     <li><a href="http://www.w3.org/TR/REC-html32.html" target="_top">
+ *     HTML 3.2 Reference Specification</a> - The HTML specification on
+ *     which HTMLEditorKit is based.
+ * </ul>
+ *
+ * @since 1.2
+ * @serial exclude
+ */
+package javax.swing.text.html;
--- a/jdk/src/java.desktop/share/classes/javax/swing/text/html/package.html	Tue Feb 28 22:16:00 2017 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,59 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<html>
-<head>
-<!--
-Copyright (c) 1998, 2013, Oracle and/or its affiliates. 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
-under the terms of the GNU General Public License version 2 only, as
-published by the Free Software Foundation.  Oracle designates this
-particular file as subject to the "Classpath" exception as provided
-by Oracle in the LICENSE file that accompanied this code.
-
-This code is distributed in the hope that it will be useful, but WITHOUT
-ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-version 2 for more details (a copy is included in the LICENSE file that
-accompanied this code).
-
-You should have received a copy of the GNU General Public License version
-2 along with this work; if not, write to the Free Software Foundation,
-Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-
-Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-or visit www.oracle.com if you need additional information or have any
-questions.
--->
-<title></title>
-</head>
-<body bgcolor="white">
-
-Provides the class <code>HTMLEditorKit</code> and supporting classes
-for creating HTML text editors.
-
-<p>
-<strong>Note:</strong>
-Most of the Swing API is <em>not</em> thread safe.
-For details, see
-<a
-href="http://docs.oracle.com/javase/tutorial/uiswing/concurrency/index.html"
-target="_top">Concurrency in Swing</a>,
-a section in
-<em><a href="http://docs.oracle.com/javase/tutorial/"
-target="_top">The Java Tutorial</a></em>.
-
-<h2>Package Specification</h2>
-
-
-<ul>
-  <li><a href="http://www.w3.org/TR/REC-html32.html" target="_top">
-      HTML 3.2 Reference Specification</a> - 
-      The HTML specification on which HTMLEditorKit is based.
-</ul>
-
-@since 1.2
-@serial exclude
-
-</body>
-</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/swing/text/html/parser/package-info.java	Mon Feb 27 18:07:31 2017 -0800
@@ -0,0 +1,44 @@
+/*
+ * Copyright (c) 1999, 2017, Oracle and/or its affiliates. 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * Provides the default HTML parser, along with support classes. As the stream
+ * is parsed, the parser notifies a delegate, which must implement the
+ * {@code HTMLEditorKit.ParserCallback} interface.
+ * <p>
+ * <strong>Note:</strong>
+ * Most of the Swing API is <em>not</em> thread safe. For details, see
+ * <a
+ * href="http://docs.oracle.com/javase/tutorial/uiswing/concurrency/index.html"
+ * target="_top">Concurrency in Swing</a>,
+ * a section in
+ * <em><a href="http://docs.oracle.com/javase/tutorial/"
+ * target="_top">The Java Tutorial</a></em>.
+ *
+ * @see javax.swing.text.html.HTMLEditorKit.ParserCallback
+ * @since 1.2
+ * @serial exclude
+ */
+package javax.swing.text.html.parser;
--- a/jdk/src/java.desktop/share/classes/javax/swing/text/html/parser/package.html	Tue Feb 28 22:16:00 2017 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<html>
-<head>
-<!--
-Copyright (c) 1999, 2013, Oracle and/or its affiliates. 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
-under the terms of the GNU General Public License version 2 only, as
-published by the Free Software Foundation.  Oracle designates this
-particular file as subject to the "Classpath" exception as provided
-by Oracle in the LICENSE file that accompanied this code.
-
-This code is distributed in the hope that it will be useful, but WITHOUT
-ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-version 2 for more details (a copy is included in the LICENSE file that
-accompanied this code).
-
-You should have received a copy of the GNU General Public License version
-2 along with this work; if not, write to the Free Software Foundation,
-Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-
-Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-or visit www.oracle.com if you need additional information or have any
-questions.
--->
-<title></title>
-</head>
-<body bgcolor="white">
-
-Provides the default HTML parser, along with support classes.
-As the stream is parsed,
-the parser notifies a delegate, 
-which must implement
-the <code>HTMLEditorKit.ParserCallback</code> interface.
-
-<p>
-<strong>Note:</strong>
-Most of the Swing API is <em>not</em> thread safe.
-For details, see
-<a
-href="http://docs.oracle.com/javase/tutorial/uiswing/concurrency/index.html"
-target="_top">Concurrency in Swing</a>,
-a section in
-<em><a href="http://docs.oracle.com/javase/tutorial/"
-target="_top">The Java Tutorial</a></em>.
-
-@see javax.swing.text.html.HTMLEditorKit.ParserCallback
-@since 1.2
-@serial exclude
-
-</body>
-</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/swing/text/package-info.java	Mon Feb 27 18:07:31 2017 -0800
@@ -0,0 +1,54 @@
+/*
+ * Copyright (c) 1998, 2017, Oracle and/or its affiliates. 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * Provides classes and interfaces that deal with editable and noneditable text
+ * components. Examples of text components are text fields and text areas, of
+ * which password fields and document editors are special instantiations.
+ * Features that are supported by this package include selection/highlighting,
+ * editing, style, and key mapping.
+ * <p>
+ * <strong>Note:</strong>
+ * Most of the Swing API is <em>not</em> thread safe. For details, see
+ * <a
+ * href="http://docs.oracle.com/javase/tutorial/uiswing/concurrency/index.html"
+ * target="_top">Concurrency in Swing</a>,
+ * a section in
+ * <em><a href="http://docs.oracle.com/javase/tutorial/"
+ * target="_top">The Java Tutorial</a></em>.
+ *
+ * <h2>Related Documentation</h2>
+ * For overviews, tutorials, examples, guides, and tool documentation,
+ * please see:
+ * <ul>
+ *     <li><a href="http://docs.oracle.com/javase/tutorial/uiswing/components/text.html"
+ *     target="_top">Using Text Components</a>,
+ *     a section in <em>The Java Tutorial</em></li>
+ * </ul>
+ *
+ * @since 1.2
+ * @serial exclude
+ */
+package javax.swing.text;
--- a/jdk/src/java.desktop/share/classes/javax/swing/text/package.html	Tue Feb 28 22:16:00 2017 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<html>
-<head>
-<!--
-Copyright (c) 1998, 2013, Oracle and/or its affiliates. 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
-under the terms of the GNU General Public License version 2 only, as
-published by the Free Software Foundation.  Oracle designates this
-particular file as subject to the "Classpath" exception as provided
-by Oracle in the LICENSE file that accompanied this code.
-
-This code is distributed in the hope that it will be useful, but WITHOUT
-ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-version 2 for more details (a copy is included in the LICENSE file that
-accompanied this code).
-
-You should have received a copy of the GNU General Public License version
-2 along with this work; if not, write to the Free Software Foundation,
-Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-
-Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-or visit www.oracle.com if you need additional information or have any
-questions.
--->
-<title></title>
-</head>
-<body bgcolor="white">
-
-Provides classes and interfaces that deal with editable
-and noneditable text components.  Examples of text components are text
-fields and text areas, of which password fields and document editors
-are special instantiations.  Features that are supported by this
-package include selection/highlighting, editing, style,
-and key mapping.
-
-<p>
-<strong>Note:</strong>
-Most of the Swing API is <em>not</em> thread safe.
-For details, see
-<a
-href="http://docs.oracle.com/javase/tutorial/uiswing/concurrency/index.html"
-target="_top">Concurrency in Swing</a>,
-a section in
-<em><a href="http://docs.oracle.com/javase/tutorial/"
-target="_top">The Java Tutorial</a></em>.
-
-<h2>Related Documentation</h2>
-
-For overviews, tutorials, examples, guides, and tool documentation, please see:
-<ul>
-  <li><a href="http://docs.oracle.com/javase/tutorial/uiswing/components/text.html" target="_top">Using Text Components</a>,
-      a section in <em>The Java Tutorial</em>
-</ul>
-
-@since 1.2
-@serial exclude
-
-</body>
-</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/swing/text/rtf/package-info.java	Mon Feb 27 18:07:31 2017 -0800
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 1998, 2017, Oracle and/or its affiliates. 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * Provides a class ({@code RTFEditorKit}) for creating Rich-Text-Format text
+ * editors.
+ * <p>
+ * <strong>Note:</strong>
+ * Most of the Swing API is <em>not</em> thread safe. For details, see
+ * <a
+ * href="http://docs.oracle.com/javase/tutorial/uiswing/concurrency/index.html"
+ * target="_top">Concurrency in Swing</a>,
+ * a section in
+ * <em><a href="http://docs.oracle.com/javase/tutorial/"
+ * target="_top">The Java Tutorial</a></em>.
+ *
+ * @since 1.2
+ * @serial exclude
+ */
+package javax.swing.text.rtf;
--- a/jdk/src/java.desktop/share/classes/javax/swing/text/rtf/package.html	Tue Feb 28 22:16:00 2017 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<html>
-<head>
-<!--
-Copyright (c) 1998, 2013, Oracle and/or its affiliates. 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
-under the terms of the GNU General Public License version 2 only, as
-published by the Free Software Foundation.  Oracle designates this
-particular file as subject to the "Classpath" exception as provided
-by Oracle in the LICENSE file that accompanied this code.
-
-This code is distributed in the hope that it will be useful, but WITHOUT
-ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-version 2 for more details (a copy is included in the LICENSE file that
-accompanied this code).
-
-You should have received a copy of the GNU General Public License version
-2 along with this work; if not, write to the Free Software Foundation,
-Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-
-Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-or visit www.oracle.com if you need additional information or have any
-questions.
--->
-<title></title>
-</head>
-<body bgcolor="white">
-
-Provides a class (<code>RTFEditorKit</code>) for creating Rich-Text-Format
-text editors.
-
-<p>
-
-<strong>Note:</strong>
-Most of the Swing API is <em>not</em> thread safe.
-For details, see
-<a
-href="http://docs.oracle.com/javase/tutorial/uiswing/concurrency/index.html"
-target="_top">Concurrency in Swing</a>,
-a section in
-<em><a href="http://docs.oracle.com/javase/tutorial/"
-target="_top">The Java Tutorial</a></em>.
-
-@since 1.2
-@serial exclude
-
-</body>
-</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/swing/tree/package-info.java	Mon Feb 27 18:07:31 2017 -0800
@@ -0,0 +1,53 @@
+/*
+ * Copyright (c) 1998, 2017, Oracle and/or its affiliates. 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * Provides classes and interfaces for dealing with {@code javax.swing.JTree}.
+ * You use these classes and interfaces if you want control over how trees are
+ * constructed, updated, and rendered, as well as how data associated with the
+ * tree nodes are viewed and managed.
+ * <p>
+ * <strong>Note:</strong>
+ * Most of the Swing API is <em>not</em> thread safe. For details, see
+ * <a
+ * href="http://docs.oracle.com/javase/tutorial/uiswing/concurrency/index.html"
+ * target="_top">Concurrency in Swing</a>,
+ * a section in
+ * <em><a href="http://docs.oracle.com/javase/tutorial/"
+ * target="_top">The Java Tutorial</a></em>.
+ *
+ * <h2>Related Documentation</h2>
+ * For overviews, tutorials, examples, guides, and tool documentation,
+ * please see:
+ * <ul>
+ *     <li><a href="http://docs.oracle.com/javase/tutorial/uiswing/components/tree.html"
+ *     target="_top">How to Use Trees</a>,
+ *     a section in <em>The Java Tutorial</em></li>
+ * </ul>
+ *
+ * @since 1.2
+ * @serial exclude
+ */
+package javax.swing.tree;
--- a/jdk/src/java.desktop/share/classes/javax/swing/tree/package.html	Tue Feb 28 22:16:00 2017 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<html>
-<head>
-<!--
-Copyright (c) 1998, 2013, Oracle and/or its affiliates. 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
-under the terms of the GNU General Public License version 2 only, as
-published by the Free Software Foundation.  Oracle designates this
-particular file as subject to the "Classpath" exception as provided
-by Oracle in the LICENSE file that accompanied this code.
-
-This code is distributed in the hope that it will be useful, but WITHOUT
-ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-version 2 for more details (a copy is included in the LICENSE file that
-accompanied this code).
-
-You should have received a copy of the GNU General Public License version
-2 along with this work; if not, write to the Free Software Foundation,
-Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-
-Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-or visit www.oracle.com if you need additional information or have any
-questions.
--->
-<title></title>
-</head>
-<body bgcolor="white">
-
-Provides classes and interfaces for dealing with
-<code>javax.swing.JTree</code>. You use these classes and interfaces if you want
-control over how trees are constructed, updated, and rendered, as well
-as how data associated with the tree nodes are viewed and managed.
-
-<p>
-<strong>Note:</strong>
-Most of the Swing API is <em>not</em> thread safe.
-For details, see
-<a
-href="http://docs.oracle.com/javase/tutorial/uiswing/concurrency/index.html"
-target="_top">Concurrency in Swing</a>,
-a section in
-<em><a href="http://docs.oracle.com/javase/tutorial/"
-target="_top">The Java Tutorial</a></em>.
-
-
-<h2>Related Documentation</h2>
-
-For overviews, tutorials, examples, guides, and tool documentation, please see:
-<ul>
-  <li><a href="http://docs.oracle.com/javase/tutorial/uiswing/components/tree.html" target="_top">How to Use Trees</a>,
-      a section in <em>The Java Tutorial</em>
-</ul>
-
-
-@since 1.2
-@serial exclude
-
-</body>
-</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.desktop/share/classes/javax/swing/undo/package-info.java	Mon Feb 27 18:07:31 2017 -0800
@@ -0,0 +1,51 @@
+/*
+ * Copyright (c) 1998, 2017, Oracle and/or its affiliates. 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * Allows developers to provide support for undo/redo in applications such as
+ * text editors.
+ * <p>
+ * <strong>Note:</strong>
+ * Most of the Swing API is <em>not</em> thread safe. For details, see
+ * <a
+ * href="http://docs.oracle.com/javase/tutorial/uiswing/concurrency/index.html"
+ * target="_top">Concurrency in Swing</a>,
+ * a section in
+ * <em><a href="http://docs.oracle.com/javase/tutorial/"
+ * target="_top">The Java Tutorial</a></em>.
+ *
+ * <h2>Related Documentation</h2>
+ * For overviews, tutorials, examples, guides, and tool documentation,
+ * please see:
+ * <ul>
+ *     <li><a href="http://docs.oracle.com/javase/tutorial/uiswing/components/generaltext.html#undo"
+ *     target="_top">Implementing Undo and Redo</a>,
+ *     a section in <em>The Java Tutorial</em></li>
+ * </ul>
+ *
+ * @since 1.2
+ * @serial exclude
+ */
+package javax.swing.undo;
--- a/jdk/src/java.desktop/share/classes/javax/swing/undo/package.html	Tue Feb 28 22:16:00 2017 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,59 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<html>
-<head>
-<!--
-Copyright (c) 1998, 2013, Oracle and/or its affiliates. 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
-under the terms of the GNU General Public License version 2 only, as
-published by the Free Software Foundation.  Oracle designates this
-particular file as subject to the "Classpath" exception as provided
-by Oracle in the LICENSE file that accompanied this code.
-
-This code is distributed in the hope that it will be useful, but WITHOUT
-ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-version 2 for more details (a copy is included in the LICENSE file that
-accompanied this code).
-
-You should have received a copy of the GNU General Public License version
-2 along with this work; if not, write to the Free Software Foundation,
-Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-
-Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-or visit www.oracle.com if you need additional information or have any
-questions.
--->
-<title></title>
-</head>
-<body bgcolor="white">
-
-Allows developers to provide support for undo/redo
-in applications such as text editors. 
-
-<p>
-<strong>Note:</strong>
-Most of the Swing API is <em>not</em> thread safe.
-For details, see
-<a
-href="http://docs.oracle.com/javase/tutorial/uiswing/concurrency/index.html"
-target="_top">Concurrency in Swing</a>,
-a section in
-<em><a href="http://docs.oracle.com/javase/tutorial/"
-target="_top">The Java Tutorial</a></em>.
-
-<h2>Related Documentation</h2>
-
-For overviews, tutorials, examples, guides, and tool documentation, please see:
-<ul>
-  <li><a href="http://docs.oracle.com/javase/tutorial/uiswing/components/generaltext.html#undo" target="_top">Implementing Undo and Redo</a>,
-      a section in <em>The Java Tutorial</em>
-</ul>
-
-
-@since 1.2
-@serial exclude
-
-</body>
-</html>
--- a/jdk/src/java.desktop/unix/classes/sun/awt/X11/XRobotPeer.java	Tue Feb 28 22:16:00 2017 -0800
+++ b/jdk/src/java.desktop/unix/classes/sun/awt/X11/XRobotPeer.java	Mon Feb 27 18:07:31 2017 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2017, Oracle and/or its affiliates. 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
@@ -115,8 +115,7 @@
     @Override
     public int getRGBPixel(int x, int y) {
         int pixelArray[] = new int[1];
-        getRGBPixelsImpl(xgc, x, y, 1, 1, xgc.getScale(), pixelArray,
-                         useGtk);
+        getRGBPixelsImpl(xgc, x, y, 1, 1, pixelArray, useGtk);
         return pixelArray[0];
     }
 
@@ -124,7 +123,7 @@
     public int [] getRGBPixels(Rectangle bounds) {
         int pixelArray[] = new int[bounds.width*bounds.height];
         getRGBPixelsImpl(xgc, bounds.x, bounds.y, bounds.width, bounds.height,
-                         xgc.getScale(), pixelArray, useGtk);
+                            pixelArray, useGtk);
         return pixelArray;
     }
 
@@ -140,6 +139,5 @@
     private static synchronized native void keyReleaseImpl(int keycode);
 
     private static synchronized native void getRGBPixelsImpl(X11GraphicsConfig xgc,
-            int x, int y, int width, int height, int scale,
-            int pixelArray[], boolean isGtkSupported);
+            int x, int y, int width, int height, int pixelArray[], boolean isGtkSupported);
 }
--- a/jdk/src/java.desktop/unix/native/libawt_xawt/awt/awt_Robot.c	Tue Feb 28 22:16:00 2017 -0800
+++ b/jdk/src/java.desktop/unix/native/libawt_xawt/awt/awt_Robot.c	Mon Feb 27 18:07:31 2017 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2017, Oracle and/or its affiliates. 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
@@ -276,7 +276,6 @@
                              jint jy,
                              jint jwidth,
                              jint jheight,
-                             jint scale,
                              jintArray pixelArray,
                              jboolean useGtk) {
     XImage *image;
@@ -298,11 +297,6 @@
 
     AWT_LOCK();
 
-    jint sx = jx * scale;
-    jint sy = jy * scale;
-    jint swidth = jwidth * scale;
-    jint sheight = jheight * scale;
-
     rootWindow = XRootWindow(awt_display, adata->awt_visInfo.screen);
 
     if (!useGtk) {
@@ -314,10 +308,10 @@
     }
 
     if (!XGetWindowAttributes(awt_display, rootWindow, &attr)
-            || sx + swidth <= attr.x
-            || attr.x + attr.width <= sx
-            || sy + sheight <= attr.y
-            || attr.y + attr.height <= sy) {
+            || jx + jwidth <= attr.x
+            || attr.x + attr.width <= jx
+            || jy + jheight <= attr.y
+            || attr.y + attr.height <= jy) {
 
         AWT_UNLOCK();
         return; // Does not intersect with root window
@@ -326,26 +320,25 @@
     gboolean gtk_failed = TRUE;
     jint _x, _y;
 
-    jint x = MAX(sx, attr.x);
-    jint y = MAX(sy, attr.y);
-    jint width = MIN(sx + swidth, attr.x + attr.width) - x;
-    jint height = MIN(sy + sheight, attr.y + attr.height) - y;
+    jint x = MAX(jx, attr.x);
+    jint y = MAX(jy, attr.y);
+    jint width = MIN(jx + jwidth, attr.x + attr.width) - x;
+    jint height = MIN(jy + jheight, attr.y + attr.height) - y;
 
-
-    int dx = attr.x > sx ? attr.x - sx : 0;
-    int dy = attr.y > sy ? attr.y - sy : 0;
+    int dx = attr.x > jx ? attr.x - jx : 0;
+    int dy = attr.y > jy ? attr.y - jy : 0;
 
     int index;
 
     if (useGtk) {
         gtk->gdk_threads_enter();
         gtk_failed = gtk->get_drawable_data(env, pixelArray, x, y, width,
-                                            height, jwidth, dx, dy, scale);
+                                            height, jwidth, dx, dy, 1);
         gtk->gdk_threads_leave();
     }
 
     if (gtk_failed) {
-        image = getWindowImage(awt_display, rootWindow, sx, sy, swidth, sheight);
+        image = getWindowImage(awt_display, rootWindow, x, y, width, height);
 
         ary = (*env)->GetPrimitiveArrayCritical(env, pixelArray, NULL);
 
@@ -355,15 +348,10 @@
             return;
         }
 
-        dx /= scale;
-        dy /= scale;
-        width /= scale;
-        height /= scale;
-
         /* convert to Java ARGB pixels */
         for (_y = 0; _y < height; _y++) {
             for (_x = 0; _x < width; _x++) {
-                jint pixel = (jint) XGetPixel(image, _x * scale, _y * scale);
+                jint pixel = (jint) XGetPixel(image, _x, _y);
                                                               /* Note ignore upper
                                                                * 32-bits on 64-bit
                                                                * OSes.
--- a/jdk/src/java.desktop/windows/classes/sun/awt/windows/WWindowPeer.java	Tue Feb 28 22:16:00 2017 -0800
+++ b/jdk/src/java.desktop/windows/classes/sun/awt/windows/WWindowPeer.java	Mon Feb 27 18:07:31 2017 -0800
@@ -554,9 +554,8 @@
         float newScaleY = newDev.getDefaultScaleY();
 
         if (scaleX != newScaleX || scaleY != newScaleY) {
-            if (oldDev.getScreen() == newDev.getScreen()) {
-                windowDPIChange(scaleX, scaleY, newScaleX, newScaleY);
-            }
+            windowDPIChange(oldDev.getScreen(), scaleX, scaleY,
+                            newDev.getScreen(), newScaleX, newScaleY);
             scaleX = newScaleX;
             scaleY = newScaleY;
         }
@@ -802,8 +801,8 @@
         }
     }
 
-    native void windowDPIChange(float prevScaleX, float prevScaleY,
-                                float newScaleX, float newScaleY);
+    native void windowDPIChange(int prevScreen, float prevScaleX, float prevScaleY,
+                                int newScreen, float newScaleX, float newScaleY);
 
     /*
      * The method maps the list of the active windows to the window's AppContext,
--- a/jdk/src/java.desktop/windows/native/libawt/windows/awt_Component.cpp	Tue Feb 28 22:16:00 2017 -0800
+++ b/jdk/src/java.desktop/windows/native/libawt/windows/awt_Component.cpp	Mon Feb 27 18:07:31 2017 -0800
@@ -1505,6 +1505,9 @@
           mr = WmSysCommand(static_cast<UINT>(wParam & 0xFFF0),
                             GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam));
           break;
+      case WM_ENTERSIZEMOVE:
+          mr = WmEnterSizeMove();
+          break;
       case WM_EXITSIZEMOVE:
           mr = WmExitSizeMove();
           break;
@@ -2051,6 +2054,11 @@
     return mrDoDefault;
 }
 
+MsgRouting AwtComponent::WmEnterSizeMove()
+{
+    return mrDoDefault;
+}
+
 MsgRouting AwtComponent::WmExitSizeMove()
 {
     return mrDoDefault;
--- a/jdk/src/java.desktop/windows/native/libawt/windows/awt_Component.h	Tue Feb 28 22:16:00 2017 -0800
+++ b/jdk/src/java.desktop/windows/native/libawt/windows/awt_Component.h	Mon Feb 27 18:07:31 2017 -0800
@@ -583,6 +583,7 @@
     virtual MsgRouting WmNcPaint(HRGN hrgn);
     virtual MsgRouting WmNcHitTest(UINT x, UINT y, LRESULT &retVal);
     virtual MsgRouting WmSysCommand(UINT uCmdType, int xPos, int yPos);
+    virtual MsgRouting WmEnterSizeMove();
     virtual MsgRouting WmExitSizeMove();
     virtual MsgRouting WmEnterMenuLoop(BOOL isTrackPopupMenu);
     virtual MsgRouting WmExitMenuLoop(BOOL isTrackPopupMenu);
--- a/jdk/src/java.desktop/windows/native/libawt/windows/awt_Robot.cpp	Tue Feb 28 22:16:00 2017 -0800
+++ b/jdk/src/java.desktop/windows/native/libawt/windows/awt_Robot.cpp	Mon Feb 27 18:07:31 2017 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2017, Oracle and/or its affiliates. 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
@@ -224,24 +224,11 @@
         AwtWin32GraphicsDevice::SelectPalette(hdcMem, primaryIndex);
     AwtWin32GraphicsDevice::RealizePalette(hdcMem, primaryIndex);
 
-    Devices::InstanceAccess devices;
-    AwtWin32GraphicsDevice *device = devices->GetDevice(primaryIndex);
-    int sWidth = (device == NULL) ? width : device->ScaleUpX(width);
-    int sHeight = (device == NULL) ? height : device->ScaleUpY(height);
-
     // copy screen image to offscreen bitmap
     // CAPTUREBLT flag is required to capture WS_EX_LAYERED windows' contents
     // correctly on Win2K/XP
-    if (width == sWidth && height == sHeight) {
-        VERIFY(::BitBlt(hdcMem, 0, 0, width, height, hdcScreen, x, y,
-               SRCCOPY | CAPTUREBLT) != 0);
-    } else {
-        int sX = (device == NULL) ? x : device->ScaleUpX(x);
-        int sY = (device == NULL) ? y : device->ScaleUpY(y);
-        VERIFY(::StretchBlt(hdcMem, 0, 0, width, height,
-               hdcScreen, sX, sY, sWidth, sHeight,
-               SRCCOPY | CAPTUREBLT) != 0);
-    }
+    VERIFY(::BitBlt(hdcMem, 0, 0, width, height, hdcScreen, x, y,
+           SRCCOPY | CAPTUREBLT) != 0);
 
     static const int BITS_PER_PIXEL = 32;
     static const int BYTES_PER_PIXEL = BITS_PER_PIXEL/8;
--- a/jdk/src/java.desktop/windows/native/libawt/windows/awt_Window.cpp	Tue Feb 28 22:16:00 2017 -0800
+++ b/jdk/src/java.desktop/windows/native/libawt/windows/awt_Window.cpp	Mon Feb 27 18:07:31 2017 -0800
@@ -156,8 +156,10 @@
 // struct for _WindowDPIChange() method
 struct ScaleStruct {
     jobject window;
+    jint prevScreen;
     jfloat prevScaleX;
     jfloat prevScaleY;
+    jint screen;
     jfloat scaleX;
     jfloat scaleY;
 };
@@ -236,6 +238,8 @@
     m_alwaysOnTop = false;
 
     fullScreenExclusiveModeState = FALSE;
+    m_winSizeMove = FALSE;
+    prevScaleRec = { -1, -1, -1 };
 }
 
 AwtWindow::~AwtWindow()
@@ -1761,9 +1765,6 @@
     (env)->SetIntField(peer, AwtWindow::sysYID, ScaleDownY(rect.top));
     SendComponentEvent(java_awt_event_ComponentEvent_COMPONENT_MOVED);
 
-    prevX = rect.left;
-    prevY = rect.top;
-
     env->DeleteLocalRef(target);
     return AwtComponent::WmMove(x, y);
 }
@@ -1803,6 +1804,19 @@
     return mrDoDefault;
 }
 
+MsgRouting AwtWindow::WmEnterSizeMove()
+{
+    m_winSizeMove = TRUE;
+    return mrDoDefault;
+}
+
+MsgRouting AwtWindow::WmExitSizeMove()
+{
+    m_winSizeMove = FALSE;
+    CheckWindowDPIChange();
+    return mrDoDefault;
+}
+
 /*
  * Override AwtComponent's size handling to first update the
  * java AWT target's dimension fields directly, since Windows
@@ -2064,8 +2078,6 @@
     int curScrn = GetScreenImOn();
 
     if (curScrn != m_screenNum) {  // we've been moved
-        int prevScrn = m_screenNum;
-
         JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2);
 
         jclass peerCls = env->GetObjectClass(m_peerObject);
@@ -2081,79 +2093,71 @@
         }
 
         env->CallVoidMethod(m_peerObject, draggedID);
-
         m_screenNum = curScrn;
-        WindowDPIChange(prevScrn, curScrn);
 
         env->DeleteLocalRef(peerCls);
     }
 }
 
-int Disposition(int x1, int x2, int x) {
-    return x < x1 ? -1 : (x > x2 ? 1 : 0);
-}
-
-void AwtWindow::WindowDPIChange(int prevScreen, int screen) {
-    Devices::InstanceAccess devices;
-    AwtWin32GraphicsDevice* prevDevice = devices->GetDevice(prevScreen);
-    AwtWin32GraphicsDevice* device = devices->GetDevice(screen);
-
-    if (prevDevice && device) {
-        RECT prevBounds;
-        RECT bounds;
-
-        if (MonitorBounds(prevDevice->GetMonitor(), &prevBounds)
-            && MonitorBounds(device->GetMonitor(), &bounds)) {
-            int x;
-            int y;
-            int dx;
-            int dy;
-            RECT rect;
-
-            ::GetWindowRect(GetHWnd(), &rect);
-            x = rect.left;
-            y = rect.top;
-            dx = x - prevX;
-            dy = y - prevY;
-
-            if (dx != 0 || dy != 0) {
-                int w = rect.right - rect.left;
-                int h = rect.bottom - rect.top;
-                int dispX = Disposition(prevBounds.left, prevBounds.right,
-                    (bounds.left + bounds.right) / 2);
-                int dispY = Disposition(prevBounds.top, prevBounds.bottom,
-                    (bounds.top + bounds.bottom) / 2);
-
-                w = w * device->GetScaleX() / prevDevice->GetScaleX();
-                h = h * device->GetScaleY() / prevDevice->GetScaleY();
-
-                prevX = x;
-                prevY = y;
-
-                if (dx != 0 && dispX != 0) {
-                    x = dispX > 0 ? bounds.left : bounds.right - w;
-                    y = min(y, bounds.top);
-                    ReshapeNoScale(x, y, w, h);
-                } else if (dy != 0 && dispY != 0) {
-                    x = max(x, bounds.left);
-                    y = dispY > 0 ? bounds.top : bounds.bottom - h;
-                    ReshapeNoScale(x, y, w, h);
+void AwtWindow::CheckWindowDPIChange() {
+
+    if (prevScaleRec.screen != -1 ) {
+        float prevScaleX = prevScaleRec.scaleX;
+        float prevScaleY = prevScaleRec.scaleY;
+
+        if (prevScaleX >= 1 && prevScaleY >= 1) {
+            Devices::InstanceAccess devices;
+            AwtWin32GraphicsDevice* device = devices->GetDevice(m_screenNum);
+            if (device) {
+                float scaleX = device->GetScaleX();
+                float scaleY = device->GetScaleY();
+                if (prevScaleX != scaleX || prevScaleY != scaleY) {
+                    WindowDPIChange(prevScaleRec.screen, prevScaleX, prevScaleY,
+                                    m_screenNum, scaleX, scaleY);
                 }
             }
         }
+        prevScaleRec.screen = -1;
     }
 }
 
-void AwtWindow::WindowDPIChange(float prevScaleX, float prevScaleY, float scaleX, float scaleY) {
+void AwtWindow::WindowDPIChange(int prevScreen,
+                                float prevScaleX, float prevScaleY,
+                                int screen, float scaleX,
+                                float scaleY)
+{
+    int x;
+    int y;
     int w;
     int h;
     RECT rect;
 
+    if (prevScaleX == scaleX && prevScaleY == scaleY) {
+        return;
+    }
+
     ::GetWindowRect(GetHWnd(), &rect);
-
+    x = rect.left;
+    y = rect.top;
     w = (rect.right - rect.left) * scaleX / prevScaleX;
     h = (rect.bottom - rect.top) * scaleY / prevScaleY;
-    ReshapeNoScale(rect.left, rect.top, w, h);
+
+    if (prevScreen != screen) {
+        Devices::InstanceAccess devices;
+        AwtWin32GraphicsDevice* device = devices->GetDevice(screen);
+        if (device) {
+            RECT bounds;
+            if (MonitorBounds(device->GetMonitor(), &bounds)) {
+                x = x < bounds.left ? bounds.left : x;
+                y = y < bounds.top ? bounds.top : y;
+
+                x = (x + w > bounds.right) ? bounds.right - w : x;
+                y = (y + h > bounds.bottom) ? bounds.bottom - h : y;
+            }
+        }
+    }
+
+    ReshapeNoScale(x, y, w, h);
 }
 
 BOOL AwtWindow::IsFocusableWindow() {
@@ -3191,8 +3195,10 @@
 
     ScaleStruct *ss = (ScaleStruct *)param;
     jobject self = ss->window;
+    jint prevScreen = ss->prevScreen;
     jfloat prevScaleX = ss->prevScaleX;
     jfloat prevScaleY = ss->prevScaleY;
+    jint screen = ss->screen;
     jfloat scaleX = ss->scaleX;
     jfloat scaleY = ss->scaleY;
 
@@ -3200,7 +3206,17 @@
     JNI_CHECK_PEER_GOTO(self, ret);
     AwtWindow *window = (AwtWindow *)pData;
 
-    window->WindowDPIChange(prevScaleX, prevScaleY, scaleX, scaleY);
+    if (window->m_winSizeMove) {
+        if (window->prevScaleRec.screen == -1) {
+            window->prevScaleRec.screen = prevScreen;
+            window->prevScaleRec.scaleX = prevScaleX;
+            window->prevScaleRec.scaleY = prevScaleY;
+        }
+    }
+    else {
+        window->WindowDPIChange(prevScreen, prevScaleX, prevScaleY,
+                                screen, scaleX, scaleY);
+    }
 
 ret:
     env->DeleteGlobalRef(self);
@@ -3908,18 +3924,21 @@
 /*
 * Class:     sun_awt_windows_WWindowPeer
 * Method:    windowDPIChange
-* Signature: (FFFF)V
+* Signature: (IFFIFF)V
 */
 JNIEXPORT void JNICALL
 Java_sun_awt_windows_WWindowPeer_windowDPIChange(JNIEnv *env, jobject self,
-    jfloat prevScaleX, jfloat prevScaleY, jfloat scaleX, jfloat scaleY)
+    jint prevScreen, jfloat prevScaleX, jfloat prevScaleY,
+    jint screen, jfloat scaleX, jfloat scaleY)
 {
     TRY;
 
     ScaleStruct *ss = new ScaleStruct;
     ss->window = env->NewGlobalRef(self);
+    ss->prevScreen = prevScreen;
     ss->prevScaleX = prevScaleX;
     ss->prevScaleY = prevScaleY;
+    ss->screen = screen;
     ss->scaleX = scaleX;
     ss->scaleY = scaleY;
 
--- a/jdk/src/java.desktop/windows/native/libawt/windows/awt_Window.h	Tue Feb 28 22:16:00 2017 -0800
+++ b/jdk/src/java.desktop/windows/native/libawt/windows/awt_Window.h	Mon Feb 27 18:07:31 2017 -0800
@@ -173,6 +173,8 @@
     virtual MsgRouting WmMove(int x, int y);
     virtual MsgRouting WmSize(UINT type, int w, int h);
     virtual MsgRouting WmSizing();
+    virtual MsgRouting WmEnterSizeMove();
+    virtual MsgRouting WmExitSizeMove();
     virtual MsgRouting WmPaint(HDC hDC);
     virtual MsgRouting WmSettingChange(UINT wFlag, LPCTSTR pszSection);
     virtual MsgRouting WmNcCalcSize(BOOL fCalcValidRects,
@@ -384,12 +386,20 @@
 
 private:
     int m_screenNum;
-    int prevX;
-    int prevY;
+
+    typedef struct {
+        jint screen;
+        jfloat scaleX;
+        jfloat scaleY;
+    } ScaleRec;
+
+    BOOL m_winSizeMove;
+    ScaleRec prevScaleRec;
 
     void InitOwner(AwtWindow *owner);
-    void WindowDPIChange(int prevScreen, int newScreen);
-    void WindowDPIChange(float prevScaleX, float prevScaleY, float scaleX, float scaleY);
+    void CheckWindowDPIChange();
+    void WindowDPIChange(int prevScreen, float prevScaleX, float prevScaleY,
+                         int newScreen, float scaleX, float scaleY);
 
     Type m_windowType;
     void InitType(JNIEnv *env, jobject peer);
--- a/jdk/src/jdk.accessibility/share/classes/module-info.java	Tue Feb 28 22:16:00 2017 -0800
+++ b/jdk/src/jdk.accessibility/share/classes/module-info.java	Mon Feb 27 18:07:31 2017 -0800
@@ -23,6 +23,11 @@
  * questions.
  */
 
+/**
+ * Defines JDK utility classes used by implementors of Assistive Technologies.
+ *
+ * @since 9
+ */
 module jdk.accessibility {
     requires transitive java.desktop;
     exports com.sun.java.accessibility.util;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/MouseInfo/ComponentMousePositionTest.java	Mon Feb 27 18:07:31 2017 -0800
@@ -0,0 +1,118 @@
+/*
+ * Copyright (c) 2017, Oracle and/or its affiliates. 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+ /*
+ @test
+ @key headful
+ @bug 4009555 7119774
+ @summary Test for Component's method getMousePosition()
+ @run main ComponentMousePositionTest
+ */
+import java.awt.Frame;
+import java.awt.Panel;
+import java.awt.Button;
+import java.awt.Dimension;
+import java.awt.Point;
+import java.awt.Robot;
+import java.awt.AWTException;
+
+public class ComponentMousePositionTest {
+
+    public void changeMousePosition() {
+        Frame frame = new Frame();
+        Panel panel = new Panel();
+        Button button = new Button("Button");
+        Button overlappedButton = new Button("Overlapped button");
+        Dimension BUTTON_DIMENSION = new Dimension(100, 100);
+        Dimension FRAME_DIMENSION = new Dimension(200, 200);
+        Point POINT_WITHOUT_COMPONENTS = new Point(10, 10);
+        Point FIRST_BUTTON_LOCATION = new Point(20, 20);
+        Point SECOND_BUTTON_LOCATION = new Point(30, 30);
+
+        button.setSize(BUTTON_DIMENSION);
+        button.setLocation(FIRST_BUTTON_LOCATION);
+        overlappedButton.setSize(BUTTON_DIMENSION);
+        overlappedButton.setLocation(SECOND_BUTTON_LOCATION);
+
+        panel.setLayout(null);
+        panel.add(button);
+        panel.add(overlappedButton);
+        frame.add(panel);
+        Robot robot;
+
+        try {
+            robot = new Robot();
+            frame.setSize(FRAME_DIMENSION);
+            frame.setVisible(true);
+            robot.delay(2000);
+
+            Point p = button.getLocationOnScreen();
+            robot.mouseMove(p.x + button.getWidth()
+                    / 2, p.y + button.getHeight() / 2);
+            robot.waitForIdle();
+
+            Point pMousePosition = button.getMousePosition();
+            if (pMousePosition == null) {
+                throw new RuntimeException("Test failed: "
+                        + "Component.getMousePosition() returned null result "
+                        + "inside Component");
+            }
+
+            if (pMousePosition.x != button.getWidth() / 2
+                    || pMousePosition.y != button.getHeight() / 2) {
+                throw new RuntimeException("Test failed: "
+                        + "Component.getMousePosition() returned incorrect "
+                        + "result inside Component");
+            }
+
+            pMousePosition = overlappedButton.getMousePosition();
+            if (pMousePosition != null) {
+                throw new RuntimeException("Test failed: Overlapped component "
+                        + "did not return null result when a pointer was inside"
+                        + " the components bounds.");
+            }
+            robot.mouseMove(panel.getLocationOnScreen().x
+                    + POINT_WITHOUT_COMPONENTS.x,
+                    panel.getLocationOnScreen().y
+                    + POINT_WITHOUT_COMPONENTS.y);
+            robot.waitForIdle();
+
+            pMousePosition = button.getMousePosition();
+            if (pMousePosition != null) {
+                throw new RuntimeException("FAILED: "
+                        + "Component.getMousePosition() returned non-null "
+                        + "results outside Component");
+            }
+
+        } catch (AWTException e) {
+            throw new RuntimeException("FAILED: AWTException by Robot" + e);
+        } finally {
+            frame.dispose();
+        }
+    }
+
+    public static void main(String args[]) {
+        ComponentMousePositionTest mousePos = new ComponentMousePositionTest();
+        mousePos.changeMousePosition();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/Robot/HiDPIScreenCapture/ScreenCaptureResolutionTest.java	Mon Feb 27 18:07:31 2017 -0800
@@ -0,0 +1,258 @@
+/*
+ * Copyright (c) 2017, Oracle and/or its affiliates. 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+ /*
+ * @test
+ * @bug 8162959
+ * @summary Visually validate multiresolution screencapture.
+ * @run main/othervm/manual -Dsun.java2d.uiScale=2 ScreenCaptureResolutionTest
+ */
+import java.awt.AWTException;
+import java.awt.Color;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.util.concurrent.CountDownLatch;
+import javax.swing.JPanel;
+import javax.swing.JTextArea;
+import javax.swing.SwingUtilities;
+import javax.swing.JButton;
+import javax.swing.JFrame;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.util.concurrent.TimeUnit;
+import javax.swing.ImageIcon;
+import javax.swing.JLabel;
+import java.awt.Robot;
+import java.awt.image.BufferedImage;
+import java.util.List;
+import java.awt.Image;
+import java.awt.image.MultiResolutionImage;
+
+public class ScreenCaptureResolutionTest {
+
+    public static void main(String args[]) throws Exception {
+
+        final CountDownLatch latch = new CountDownLatch(1);
+        TestUI test = new TestUI(latch);
+
+        SwingUtilities.invokeLater(new Runnable() {
+            @Override
+            public void run() {
+                try {
+                    test.createUI();
+                } catch (Exception ex) {
+                    throw new RuntimeException("Exception while creating UI");
+                }
+            }
+        });
+        latch.await(3, TimeUnit.SECONDS);
+        SwingUtilities.invokeLater(new Runnable() {
+            @Override
+            public void run() {
+                try {
+                    test.validateScreenCapture();
+                } catch (Exception ex) {
+                    throw new RuntimeException("Exception while"
+                        + " validating ScreenCapture");
+                }
+            }
+        });
+        boolean status = latch.await(5, TimeUnit.MINUTES);
+        if (!status) {
+            System.out.println("Test timed out.");
+        }
+
+        SwingUtilities.invokeAndWait(new Runnable() {
+            @Override
+            public void run() {
+                try {
+                    test.disposeUI();
+                } catch (Exception ex) {
+                    throw new RuntimeException("Exception while disposing UI");
+                }
+            }
+        });
+
+        if (test.testResult == false) {
+            throw new RuntimeException("Test Failed.");
+        }
+    }
+}
+
+class TestUI {
+
+    private static JFrame mainFrame;
+    private static JFrame outputImageFrame;
+    private static JFrame inputImageFrame;
+    private static JPanel outputControlPanel;
+    private static JPanel mainControlPanel;
+
+    private static JTextArea instructionTextArea;
+
+    private static JPanel inputImagePanel;
+    private static JPanel resultButtonPanel;
+    private static JButton passButton;
+    private static JButton failButton;
+
+    private static GridBagLayout layout;
+    private final CountDownLatch latch;
+    public boolean testResult = false;
+
+    public TestUI(CountDownLatch latch) throws Exception {
+        this.latch = latch;
+    }
+
+    public void validateScreenCapture() throws AWTException {
+        Robot robot = new Robot();
+        outputControlPanel = new JPanel(layout);
+        GridBagConstraints ogbc = new GridBagConstraints();
+
+        MultiResolutionImage image
+                = robot.createMultiResolutionScreenCapture(inputImageFrame.getBounds());
+        List<Image> imageList = image.getResolutionVariants();
+        int size = imageList.size();
+        BufferedImage lowResImage = (BufferedImage) imageList.get(0);
+        BufferedImage highResImage = (BufferedImage) imageList.get(1);
+
+        outputImageFrame = new JFrame("Output");
+        outputImageFrame.getContentPane().setLayout(new GridBagLayout());
+        ogbc.gridx = 0;
+        ogbc.gridy = 0;
+        ogbc.fill = GridBagConstraints.HORIZONTAL;
+        outputControlPanel.add(new JLabel(new ImageIcon(lowResImage)), ogbc);
+        int width = lowResImage.getWidth();
+        int height = lowResImage.getHeight();
+        JLabel labelImg1 = new JLabel("LEFT:Width: " + width
+                                      + " Height: " + height);
+        ogbc.gridx = 0;
+        ogbc.gridy = 1;
+        outputControlPanel.add(labelImg1, ogbc);
+        ogbc.gridx = 1;
+        ogbc.gridy = 0;
+        outputControlPanel.add(new JLabel(new ImageIcon(highResImage)), ogbc);
+        width = highResImage.getWidth();
+        height = highResImage.getHeight();
+        JLabel labelImg2 = new JLabel("RIGHT:Width: " + width
+                                      + " Height: " + height);
+        ogbc.gridx = 1;
+        ogbc.gridy = 1;
+        outputControlPanel.add(labelImg2, ogbc);
+        outputControlPanel.setBackground(Color.GRAY);
+        outputImageFrame.add(outputControlPanel);
+
+        outputImageFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+        outputImageFrame.setBounds(600, 0, 400, 300);
+        outputImageFrame.setLocationRelativeTo(null);
+        outputImageFrame.setVisible(true);
+    }
+
+    public final void createUI() throws Exception {
+
+        mainFrame = new JFrame("ScreenCaptureResolutionTest");
+
+        layout = new GridBagLayout();
+        mainControlPanel = new JPanel(layout);
+        resultButtonPanel = new JPanel(layout);
+
+        GridBagConstraints gbc = new GridBagConstraints();
+
+        // Create Test instructions
+        String instructions
+                = "INSTRUCTIONS:"
+                + "\n Test to Visually validate MultiResolutionn Image. "
+                + "\n 1. Check if output window contains two screenshot "
+                + "\n    of input window. "
+                + "\n 2. Right image should be twice the size of Left. "
+                + "\n 3. Quality of Right image should be better than Left. "
+                + "\n If all the three conditons are satisfied, then "
+                + "\n click pass else fail.";
+        instructionTextArea = new JTextArea();
+        instructionTextArea.setText(instructions);
+        instructionTextArea.setEnabled(false);
+        instructionTextArea.setDisabledTextColor(Color.black);
+        instructionTextArea.setBackground(Color.white);
+
+        gbc.gridx = 0;
+        gbc.gridy = 0;
+        gbc.fill = GridBagConstraints.HORIZONTAL;
+        mainControlPanel.add(instructionTextArea, gbc);
+
+        gbc.gridx = 0;
+        gbc.gridy = 1;
+
+        inputImagePanel = new JPanel(layout);
+        JLabel label = new JLabel("Resolution");
+        inputImagePanel.add(label);
+        inputImageFrame = new JFrame("Input");
+        inputImageFrame.add(inputImagePanel);
+
+        inputImageFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+        inputImageFrame.setBounds(100, 200, 100, 100);
+        inputImageFrame.setVisible(true);
+
+        passButton = new JButton("Pass");
+        passButton.setActionCommand("Pass");
+        passButton.addActionListener((ActionEvent e) -> {
+            outputImageFrame.dispose();
+            inputImageFrame.dispose();
+            testResult = true;
+            mainFrame.dispose();
+            latch.countDown();
+
+        });
+        failButton = new JButton("Fail");
+        failButton.setActionCommand("Fail");
+        failButton.addActionListener(new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent e) {
+                outputImageFrame.dispose();
+                inputImageFrame.dispose();
+                testResult = false;
+                mainFrame.dispose();
+                latch.countDown();
+            }
+        });
+        gbc.gridx = 0;
+        gbc.gridy = 0;
+        resultButtonPanel.add(passButton, gbc);
+        gbc.gridx = 1;
+        gbc.gridy = 0;
+        resultButtonPanel.add(failButton, gbc);
+
+        gbc.gridx = 0;
+        gbc.gridy = 2;
+        mainControlPanel.add(resultButtonPanel, gbc);
+
+        mainFrame.add(mainControlPanel);
+        mainFrame.pack();
+        mainFrame.setVisible(true);
+    }
+
+    public void disposeUI() {
+        outputImageFrame.dispose();
+        inputImageFrame.dispose();
+        mainFrame.setVisible(false);
+        mainFrame.dispose();
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/Robot/HiDPIScreenCapture/ScreenCaptureTest.java	Mon Feb 27 18:07:31 2017 -0800
@@ -0,0 +1,182 @@
+/*
+ * Copyright (c) 2017, Oracle and/or its affiliates. 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+ /*
+ * @test
+ * @bug 8162959
+ * @summary Validate output of createMultiResolutionScreenCapture
+ *          new API which returns MultiResolutionImage.
+ * @run main/othervm -Dsun.java2d.uiScale=1 ScreenCaptureTest
+ * @run main/othervm -Dsun.java2d.uiScale=2 ScreenCaptureTest
+ */
+import java.awt.Dimension;
+import java.awt.GraphicsEnvironment;
+import java.awt.Image;
+import java.awt.Rectangle;
+import java.awt.Toolkit;
+import java.awt.geom.AffineTransform;
+import java.awt.image.BufferedImage;
+import java.awt.image.MultiResolutionImage;
+import java.awt.BorderLayout;
+import java.awt.Canvas;
+import java.awt.Color;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.Panel;
+import java.awt.Robot;
+import java.util.List;
+
+public class ScreenCaptureTest {
+
+    private static Robot robot;
+    private static Frame frame;
+    private static boolean isHiDPI = true;
+    private static final Color[] COLORS = {
+        Color.GREEN, Color.BLUE, Color.ORANGE, Color.RED};
+
+    public static void main(String[] args) throws Exception {
+
+        frame = new Frame();
+        frame.setBounds(0, 0, 400, 400);
+        frame.setUndecorated(true);
+        robot = new Robot();
+        Panel panel = new Panel(new BorderLayout());
+        Canvas canvas = new Canvas() {
+            public void paint(Graphics g) {
+                super.paint(g);
+                int w = getWidth();
+                int h = getHeight();
+                g.setColor(COLORS[0]);
+                g.fillRect(0, 0, w / 2, h / 2);
+                g.setColor(COLORS[1]);
+                g.fillRect(w / 2, 0, w / 2, h / 2);
+                g.setColor(COLORS[2]);
+                g.fillRect(0, h / 2, w / 2, h / 2);
+                g.setColor(COLORS[3]);
+                g.fillRect(w / 2, h / 2, w / 2, h / 2);
+            }
+        };
+
+        panel.add(canvas);
+        frame.add(panel);
+        frame.setVisible(true);
+        robot.delay(500);
+        robot.waitForIdle();
+
+        int w = frame.getWidth();
+        int h = frame.getHeight();
+
+        // getPixelColor Test
+        // Check pixel color in first quardant GREEN; x=100, y=100
+        if (!robot.getPixelColor(w / 4, h / 4).equals(COLORS[0])) {
+            throw new RuntimeException("Wrong Pixel Color! Expected GREEN");
+        }
+        // Check pixel color in second quardant; BLUE, x=300, y=100
+        if (!robot.getPixelColor(3 * w / 4, h / 4).equals(COLORS[1])) {
+            throw new RuntimeException("Wrong Pixel Color! Expected BLUE");
+        }
+        // Check pixel color in third quardant; ORANGE, x=100, y=300
+        if (!robot.getPixelColor(w / 4, 3 * h / 4).equals(COLORS[2])) {
+            throw new RuntimeException("Wrong Pixel Color! Expected ORANGE");
+        }
+        // Check pixel color in fourth quardant; RED, x=300, y=300
+        if (!robot.getPixelColor(3 * w / 4, 3 * h / 4).equals(COLORS[3])) {
+            throw new RuntimeException("Wrong Pixel Color! Expected RED");
+        }
+
+        // createScreenCaptureTest
+        AffineTransform tx = GraphicsEnvironment.getLocalGraphicsEnvironment()
+                .getDefaultScreenDevice().getDefaultConfiguration()
+                .getDefaultTransform();
+
+        if (tx.getScaleX() == 1 && tx.getScaleY() == 1) {
+            isHiDPI = false;
+        }
+
+        MultiResolutionImage image
+                = robot.createMultiResolutionScreenCapture(frame.getBounds());
+        List<Image> imageList = image.getResolutionVariants();
+        int size = imageList.size();
+        BufferedImage lowResImage;
+        BufferedImage highResImage;
+
+        if (!isHiDPI) {
+            // Check if output is MultiResolutionImage with one variant
+            if (size != 1) {
+                throw new RuntimeException(" Invalid variant size");
+            }
+
+            lowResImage = (BufferedImage) imageList.get(0);
+            System.out.println(frame.getBounds());
+            System.out.println(lowResImage.getWidth()+" "+lowResImage.getHeight());
+            if (frame.getWidth() != lowResImage.getWidth()
+                        || frame.getHeight() != lowResImage.getHeight()) {
+                throw new RuntimeException(" Invalid Image size");
+            }
+
+        } else {
+            // Check if output contains two variants.
+            if (size != 2) {
+                throw new RuntimeException(" Invalid variant size");
+            }
+
+            // Check if hight resolution image size is scale times low resolution image.
+            lowResImage = (BufferedImage) imageList.get(0);
+            highResImage = (BufferedImage) imageList.get(1);
+
+            int lW = (int) lowResImage.getWidth();
+            int lH = (int) lowResImage.getHeight();
+            int hW = (int) highResImage.getWidth();
+            int hH = (int) highResImage.getHeight();
+
+            if ( hW != (tx.getScaleX() * lW) || hH != (tx.getScaleY() * lH)) {
+                throw new RuntimeException(" Invalid Resolution Variants");
+            }
+
+            // Check if both image colors are same at some location.
+            if (lowResImage.getRGB(lW / 4, lH / 4)
+                    != highResImage.getRGB(hW / 4, hH / 4)) {
+                throw new RuntimeException("Wrong image color!");
+            }
+
+            if (lowResImage.getRGB(3 * lW / 4, lH / 4)
+                    != highResImage.getRGB(3 * hW / 4, hH / 4)) {
+                throw new RuntimeException("Wrong image color!");
+            }
+
+            if (lowResImage.getRGB(lW / 4, 3 * lH / 4)
+                    != highResImage.getRGB(hW / 4, 3 * hH / 4)) {
+                throw new RuntimeException("Wrong image color!");
+            }
+
+            if (lowResImage.getRGB(3 * lW / 4, 3 * lH / 4)
+                    != highResImage.getRGB(3 * hW / 4, 3 * hH / 4)) {
+                throw new RuntimeException("Wrong image color!");
+            }
+
+        }
+
+        frame.dispose();
+    }
+
+}
--- a/jdk/test/java/awt/SplashScreen/FullscreenAfterSplash/FullScreenAfterSplash.java	Tue Feb 28 22:16:00 2017 -0800
+++ b/jdk/test/java/awt/SplashScreen/FullscreenAfterSplash/FullScreenAfterSplash.java	Mon Feb 27 18:07:31 2017 -0800
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
+* Copyright (c) 2013, 2017, Oracle and/or its affiliates. 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
@@ -21,8 +21,8 @@
 * questions.
 */
 
-import jdk.testlibrary.OSInfo;
-import java.awt.*;
+import java.awt.Point;
+import java.awt.Window;
 import java.awt.Robot;
 import java.awt.event.InputEvent;
 import java.lang.InterruptedException;
@@ -30,7 +30,9 @@
 import java.lang.Thread;
 import java.lang.reflect.Method;
 import java.lang.reflect.Proxy;
-import javax.swing.*;
+import javax.swing.JFrame;
+import javax.swing.SwingUtilities;
+import javax.swing.WindowConstants;
 
 /*
  * @test
@@ -41,7 +43,6 @@
  * @library ../../../../lib/testlibrary
  * @modules java.desktop/sun.awt
  *          java.desktop/com.apple.eawt
- * @build jdk.testlibrary.OSInfo
  * @build GenerateTestImage
  * @run main GenerateTestImage
  * @author Petr Pchelko area=awt.event
@@ -56,10 +57,6 @@
 
     public static void main(String[] args) throws Exception {
 
-        if (OSInfo.getOSType() != OSInfo.OSType.MACOSX) {
-            System.out.println("The test is applicable only to Mac OS X. Passed");
-            return;
-        }
         try {
             //Move the mouse out, because it could interfere with the test.
             Robot r = new Robot();
@@ -71,7 +68,10 @@
             sleep();
 
             Point fullScreenButtonPos = frame.getLocation();
-            fullScreenButtonPos.translate(frame.getWidth() - 10, 10);
+            if(System.getProperty("os.version").equals("10.9"))
+                fullScreenButtonPos.translate(frame.getWidth() - 10, frame.getHeight()/2);
+            else
+                fullScreenButtonPos.translate(55,frame.getHeight()/2);
             r.mouseMove(fullScreenButtonPos.x, fullScreenButtonPos.y);
 
             //Cant use waitForIdle for full screen transition.
--- a/jdk/test/java/awt/SplashScreen/GenerateTestImage.java	Tue Feb 28 22:16:00 2017 -0800
+++ b/jdk/test/java/awt/SplashScreen/GenerateTestImage.java	Mon Feb 27 18:07:31 2017 -0800
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+* Copyright (c) 2013, 2017, Oracle and/or its affiliates. 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
@@ -22,7 +22,8 @@
 */
 
 import javax.imageio.ImageIO;
-import java.awt.*;
+import java.awt.Color;
+import java.awt.Graphics2D;
 import java.awt.image.BufferedImage;
 import java.io.File;
 import java.io.FileOutputStream;
@@ -34,16 +35,16 @@
     private static final int IMAGE_SIZE = 20;
 
     public static void main(String[] args) throws Exception {
-        String path = System.getProperty("test.classes") + File.separator + "test.png";
-
+        File file = new File("test.png");
+        if (file.exists()) {
+            return;
+        }
         BufferedImage image = new BufferedImage(IMAGE_SIZE, IMAGE_SIZE, BufferedImage.TYPE_INT_ARGB);
         Graphics2D graphics2D = image.createGraphics();
         graphics2D.setColor(Color.red);
         graphics2D.fillOval(0, 0, IMAGE_SIZE, IMAGE_SIZE);
         graphics2D.dispose();;
 
-        try(FileOutputStream fos = new FileOutputStream(path)) {
-            ImageIO.write(image, "png", fos);
-        }
+       ImageIO.write(image, "png", file);
     }
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/TextField/DisabledUndoTest/DisabledUndoTest.java	Mon Feb 27 18:07:31 2017 -0800
@@ -0,0 +1,266 @@
+/*
+ * Copyright (c) 2005, 2017, Oracle and/or its affiliates. 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+ /*
+ * @test
+ * @key headful
+ * @bug 4302718 6753165
+ * @summary verifies that undo does not work in a disabled TextField on windows
+ * @requires (os.family == "windows")
+ * @run main/manual DisabledUndoTest
+ */
+import java.awt.Button;
+import java.awt.Dialog;
+import java.awt.Frame;
+import java.awt.Panel;
+import java.awt.TextArea;
+import java.awt.TextField;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+public class DisabledUndoTest {
+
+    private static void init() throws Exception {
+        String[] instructions
+                = {
+                    "1.Type a few symbols in the textfield.",
+                    "2.Then click the button Disable textfield to disable the textfield.",
+                    "3.Right-click on the textfield to invoke context menu and select \"Undo\".",
+                    "4.Verify that the symbols you typed are NOT undone.",
+                    "5.If they are not, press Pass, else press Fail."
+                };
+
+        Sysout.createDialog();
+        Sysout.printInstructions(instructions);
+    }
+
+    static Frame mainFrame;
+    static Button bt;
+    static TextField tf;
+    static Panel p1;
+
+    public static void initTestWindow() {
+        mainFrame = new Frame();
+        p1 = new Panel();
+        mainFrame.setTitle("TestWindow");
+        mainFrame.setBounds(700, 10, 400, 100);
+
+        tf = new TextField(20);
+        tf.select(0, 10);
+        bt = new Button("Disable textfield");
+        p1.add(tf);
+        p1.add(bt);
+        mainFrame.add(p1);
+        bt.addActionListener(new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent ae) {
+                tf.setEditable(false);
+            }
+        });
+        mainFrame.setVisible(true);
+    }
+
+    public static void dispose() {
+        Sysout.dispose();
+        mainFrame.dispose();
+    }
+
+    /**
+     * ***************************************************
+     * Standard Test Machinery Section DO NOT modify anything in this section --
+     * it's a standard chunk of code which has all of the synchronisation
+     * necessary for the test harness. By keeping it the same in all tests, it
+     * is easier to read and understand someone else's test, as well as insuring
+     * that all tests behave correctly with the test harness. There is a section
+     * following this for test-defined classes
+     * ****************************************************
+     */
+    private static boolean theTestPassed = false;
+    private static boolean testGeneratedInterrupt = false;
+    private static String failureMessage = "";
+    private static Thread mainThread = null;
+    final private static int sleepTime = 300000;
+
+    public static void main(String args[]) throws Exception {
+        mainThread = Thread.currentThread();
+        try {
+            init();
+            initTestWindow();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        try {
+            mainThread.sleep(sleepTime);
+        } catch (InterruptedException e) {
+            dispose();
+            if (testGeneratedInterrupt && !theTestPassed) {
+                throw new Exception(failureMessage);
+            }
+        }
+        if (!testGeneratedInterrupt) {
+            dispose();
+            throw new RuntimeException("Timed out after " + sleepTime / 1000
+                    + " seconds");
+        }
+    }
+
+    public static synchronized void pass() {
+        theTestPassed = true;
+        testGeneratedInterrupt = true;
+        mainThread.interrupt();
+    }
+
+    public static synchronized void fail(String whyFailed) {
+        theTestPassed = false;
+        testGeneratedInterrupt = true;
+        failureMessage = whyFailed;
+        mainThread.interrupt();
+    }
+}
+
+// *********** End Standard Test Machinery Section **********
+/**
+ * **************************************************
+ * Standard Test Machinery DO NOT modify anything below -- it's a standard chunk
+ * of code whose purpose is to make user interaction uniform, and thereby make
+ * it simpler to read and understand someone else's test.
+ * **************************************************
+ */
+/**
+ * This is part of the standard test machinery. It creates a dialog (with the
+ * instructions), and is the interface for sending text messages to the user. To
+ * print the instructions, send an array of strings to Sysout.createDialog
+ * WithInstructions method. Put one line of instructions per array entry. To
+ * display a message for the tester to see, simply call Sysout.println with the
+ * string to be displayed. This mimics System.out.println but works within the
+ * test harness as well as standalone.
+ */
+class Sysout {
+
+    private static TestDialog dialog;
+    private static Frame frame;
+
+    public static void createDialog() {
+        frame = new Frame();
+        dialog = new TestDialog(frame, "Instructions");
+        String[] defInstr = {"Instructions will appear here. ", ""};
+        dialog.printInstructions(defInstr);
+        dialog.show();
+        println("Any messages for the tester will display here.");
+    }
+
+    public static void printInstructions(String[] instructions) {
+        dialog.printInstructions(instructions);
+    }
+
+    public static void println(String messageIn) {
+        dialog.displayMessage(messageIn);
+    }
+
+    public static void dispose() {
+        dialog.dispose();
+        frame.dispose();
+    }
+}
+
+/**
+ * This is part of the standard test machinery. It provides a place for the test
+ * instructions to be displayed, and a place for interactive messages to the
+ * user to be displayed. To have the test instructions displayed, see Sysout. To
+ * have a message to the user be displayed, see Sysout. Do not call anything in
+ * this dialog directly.
+ */
+class TestDialog extends Dialog implements ActionListener {
+
+    TextArea instructionsText;
+    TextArea messageText;
+    int maxStringLength = 80;
+    Panel buttonP;
+    Button failB;
+    Button passB;
+
+    // DO NOT call this directly, go through Sysout
+    public TestDialog(Frame frame, String name) {
+        super(frame, name);
+        int scrollBoth = TextArea.SCROLLBARS_BOTH;
+        instructionsText = new TextArea("", 15, maxStringLength, scrollBoth);
+        add("North", instructionsText);
+
+        messageText = new TextArea("", 5, maxStringLength, scrollBoth);
+        add("Center", messageText);
+
+        buttonP = new Panel();
+        failB = new Button("Fail");
+        failB.setActionCommand("fail");
+        failB.addActionListener(this);
+        passB = new Button("Pass");
+        buttonP.add(passB);
+        buttonP.add(failB);
+        passB.addActionListener(new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent ae) {
+                DisabledUndoTest.pass();
+            }
+        });
+
+        add("South", buttonP);
+        pack();
+        setVisible(true);
+    }
+
+    // DO NOT call this directly, go through Sysout
+    public void printInstructions(String[] instructions) {
+        instructionsText.setText("");
+        String printStr, remainingStr;
+        for (int i = 0; i < instructions.length; i++) {
+            remainingStr = instructions[i];
+            while (remainingStr.length() > 0) {
+                if (remainingStr.length() >= maxStringLength) {
+                    int posOfSpace = remainingStr.
+                            lastIndexOf(' ', maxStringLength - 1);
+
+                    if (posOfSpace <= 0) {
+                        posOfSpace = maxStringLength - 1;
+                    }
+
+                    printStr = remainingStr.substring(0, posOfSpace + 1);
+                    remainingStr = remainingStr.substring(posOfSpace + 1);
+                } else {
+                    printStr = remainingStr;
+                    remainingStr = "";
+                }
+                instructionsText.append(printStr + "\n");
+            }
+        }
+    }
+
+    public void displayMessage(String messageIn) {
+        messageText.append(messageIn + "\n");
+    }
+
+    public void actionPerformed(ActionEvent e) {
+        if (e.getActionCommand() == "fail") {
+            DisabledUndoTest.fail("User Clicked Fail");
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/Window/WindowResizingOnDPIChanging/WindowResizingOnSetLocationTest.java	Mon Feb 27 18:07:31 2017 -0800
@@ -0,0 +1,307 @@
+/*
+ * Copyright (c) 2017, Oracle and/or its affiliates. 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.awt.Color;
+import java.awt.FlowLayout;
+import java.awt.Font;
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.GraphicsConfiguration;
+import java.awt.GraphicsDevice;
+import java.awt.GraphicsEnvironment;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.HeadlessException;
+import java.awt.Image;
+import java.awt.Insets;
+import java.awt.Rectangle;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.awt.geom.AffineTransform;
+import java.awt.image.AbstractMultiResolutionImage;
+import java.awt.image.BufferedImage;
+import java.awt.image.ImageObserver;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+import javax.swing.JButton;
+import javax.swing.JFrame;
+import javax.swing.JPanel;
+import javax.swing.JTextArea;
+import javax.swing.SwingUtilities;
+
+/* @test
+ * @bug 8175293
+ * @summary HiDPI (Windows): Swing components have incorrect sizes after
+ *          changing display resolution
+ * @run main/manual/othervm WindowResizingOnSetLocationTest
+ */
+public class WindowResizingOnSetLocationTest {
+
+    private static volatile boolean testResult = false;
+    private static volatile CountDownLatch countDownLatch;
+    private static TestFrame frame;
+    private static JFrame mainFrame;
+
+    private static final String INSTRUCTIONS = "INSTRUCTIONS:\n"
+            + "Verify that a window is properly resized after setting the location"
+            + " to a display with different DPI.\n"
+            + "\n"
+            + "The test is applicable for a multi-monitor system where displays"
+            + " are configured to have different DPI\n"
+            + "\n"
+            + "1. Press Show Frame button\n"
+            + "The frame appear.\n"
+            + "2. Check that the string \"scales [ScaleX, ScaleY]\" is painted on the window"
+            + " where ScaleX and ScaleY are the scales for current display.\n"
+            + "The scales are calculated as DPI / 96 and are 1 for the DPI value 96"
+            + " and 2 for the DPI value 192.\n"
+            + "3. Press 'Move to another display' button.\n"
+            + "4. Check that the frame appears on the another display.\n"
+            + "5. Check that the string \"scales [ScaleX, ScaleY]\" is updated"
+            + " to show the right display scales.\n"
+            + "6. Check that the window is properly resized.\n"
+            + "7. Check that the window is properly repainted and does not contain drawing artifacts\n"
+            + "Try different display positions (left, right, top, bottom).\n"
+            + "If all tests are passed, press PASS, else press FAIL.\n";
+
+    public static void main(String args[]) throws Exception {
+
+        countDownLatch = new CountDownLatch(1);
+        SwingUtilities.invokeLater(WindowResizingOnSetLocationTest::createUI);
+        countDownLatch.await(15, TimeUnit.MINUTES);
+        if (!testResult) {
+            throw new RuntimeException("Test fails!");
+        }
+    }
+
+    private static void createUI() {
+
+        mainFrame = new JFrame("DPI change test");
+        GridBagLayout layout = new GridBagLayout();
+        JPanel mainControlPanel = new JPanel(layout);
+        JPanel resultButtonPanel = new JPanel(layout);
+
+        GridBagConstraints gbc = new GridBagConstraints();
+
+        JPanel testPanel = new JPanel(new FlowLayout());
+        JButton frameButton = new JButton("Show Frame");
+        frameButton.addActionListener((e) -> {
+            int x = 20;
+            int y = 10;
+            int w = 400;
+            int h = 300;
+
+            frame = new TestFrame(w, h);
+            frame.setLocation(x, y);
+            frame.setVisible(true);
+
+        });
+        testPanel.add(frameButton);
+
+        gbc.gridx = 0;
+        gbc.gridy = 0;
+        gbc.fill = GridBagConstraints.HORIZONTAL;
+        mainControlPanel.add(testPanel, gbc);
+
+        JTextArea instructionTextArea = new JTextArea();
+        instructionTextArea.setText(INSTRUCTIONS);
+        instructionTextArea.setEditable(false);
+        instructionTextArea.setBackground(Color.white);
+
+        gbc.gridx = 0;
+        gbc.gridy = 1;
+        gbc.fill = GridBagConstraints.HORIZONTAL;
+        mainControlPanel.add(instructionTextArea, gbc);
+
+        JButton passButton = new JButton("Pass");
+        passButton.setActionCommand("Pass");
+        passButton.addActionListener((ActionEvent e) -> {
+            testResult = true;
+            disposeFrames();
+            countDownLatch.countDown();
+
+        });
+
+        JButton failButton = new JButton("Fail");
+        failButton.setActionCommand("Fail");
+        failButton.addActionListener(new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent e) {
+                disposeFrames();
+                countDownLatch.countDown();
+            }
+        });
+
+        gbc.gridx = 0;
+        gbc.gridy = 0;
+        resultButtonPanel.add(passButton, gbc);
+
+        gbc.gridx = 1;
+        gbc.gridy = 0;
+        resultButtonPanel.add(failButton, gbc);
+
+        gbc.gridx = 0;
+        gbc.gridy = 2;
+        mainControlPanel.add(resultButtonPanel, gbc);
+
+        mainFrame.add(mainControlPanel);
+        mainFrame.pack();
+
+        mainFrame.addWindowListener(new WindowAdapter() {
+
+            @Override
+            public void windowClosing(WindowEvent e) {
+                disposeFrames();
+                countDownLatch.countDown();
+            }
+        });
+        mainFrame.setVisible(true);
+    }
+
+    private static void disposeFrames() {
+        if (frame != null && frame.isVisible()) {
+            frame.dispose();
+        }
+
+        if (mainFrame != null && mainFrame.isVisible()) {
+            mainFrame.dispose();
+        }
+    }
+
+    static class TestFrame extends JFrame {
+
+        private final TestMultiResolutionImage mrImage;
+
+        public TestFrame(int width, int height) throws HeadlessException {
+            super("Test Frame");
+            setSize(width, height);
+            mrImage = new TestMultiResolutionImage(width, height);
+
+            JPanel panel = new JPanel(new FlowLayout()) {
+                @Override
+                public void paint(Graphics g) {
+                    super.paint(g);
+                    AffineTransform tx = ((Graphics2D) g).getTransform();
+                    mrImage.scaleX = tx.getScaleX();
+                    mrImage.scaleY = tx.getScaleY();
+                    Insets insets = getInsets();
+                    g.drawImage(mrImage, insets.left, insets.bottom, null);
+                }
+            };
+
+            JButton button = new JButton("Move to another display");
+            button.addActionListener((e) -> {
+                GraphicsConfiguration config = getGraphicsConfiguration();
+                GraphicsDevice device = config.getDevice();
+
+                GraphicsDevice[] devices = GraphicsEnvironment
+                        .getLocalGraphicsEnvironment()
+                        .getScreenDevices();
+
+                boolean found = false;
+                for (GraphicsDevice dev : devices) {
+                    if (!dev.equals(device)) {
+                        found = true;
+                        Rectangle bounds = dev.getDefaultConfiguration().getBounds();
+
+                        AffineTransform tx = config.getDefaultTransform();
+                        int x = (int) Math.round(bounds.x / tx.getScaleX()) + 15;
+                        int y = (int) Math.round(bounds.y / tx.getScaleY()) + 15;
+                        frame.setLocation(x, y);
+                        break;
+                    }
+                }
+
+                if (!found) {
+                    System.out.println("Another display not found!");
+                }
+            });
+
+            panel.add(button);
+            add(panel);
+        }
+    }
+
+    static class TestMultiResolutionImage extends AbstractMultiResolutionImage {
+
+        final int width;
+        final int height;
+        double scaleX;
+        double scaleY;
+
+        public TestMultiResolutionImage(int width, int height) {
+            this.width = width;
+            this.height = height;
+        }
+
+        @Override
+        public int getWidth(ImageObserver observer) {
+            return width;
+        }
+
+        @Override
+        public int getHeight(ImageObserver observer) {
+            return height;
+        }
+
+        @Override
+        protected Image getBaseImage() {
+            return getResolutionVariant(width, height);
+        }
+
+        @Override
+        public Image getResolutionVariant(double destImageWidth, double destImageHeight) {
+
+            int w = (int) destImageWidth;
+            int h = (int) destImageHeight;
+
+            BufferedImage img = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
+            Graphics2D g = img.createGraphics();
+            g.scale(scaleX, scaleY);
+            int red = (int) (255 / scaleX);
+            int green = (int) (250 / scaleX);
+            int blue = (int) (20 / scaleX);
+            g.setColor(new Color(red, green, blue));
+            g.fillRect(0, 0, width, height);
+
+            g.setColor(Color.decode("#87CEFA"));
+            Font f = g.getFont();
+            g.setFont(new Font(f.getName(), Font.BOLD, 24));
+            g.drawString(String.format("scales: [%1.2fx, %1.2fx]", scaleX, scaleY),
+                    width / 6, height / 2);
+
+            g.dispose();
+            return img;
+        }
+
+        @Override
+        public List<Image> getResolutionVariants() {
+            return Collections.unmodifiableList(Arrays.asList(getBaseImage()));
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/font/TextLayout/DiacriticsDrawingTest.java	Mon Feb 27 18:07:31 2017 -0800
@@ -0,0 +1,74 @@
+/*
+ * Copyright 2017 JetBrains s.r.o.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/* @test
+ * @bug 8170552
+ * @summary verify enabling text layout for complex text on macOS
+ * @requires os.family == "mac"
+ */
+
+import java.awt.Color;
+import java.awt.Font;
+import java.awt.Graphics;
+import java.awt.image.BufferedImage;
+
+public class DiacriticsDrawingTest {
+    private static final Font FONT = new Font("Menlo", Font.PLAIN, 12);
+    private static final int IMAGE_WIDTH = 20;
+    private static final int IMAGE_HEIGHT = 20;
+    private static final int TEXT_X = 5;
+    private static final int TEXT_Y = 15;
+
+    public static void main(String[] args) {
+        BufferedImage composed = drawString("\u00e1"); // latin small letter a with acute
+        BufferedImage decomposed = drawString("a\u0301"); // same letter in decomposed form
+
+        if (!imagesAreEqual(composed, decomposed)) {
+            throw new RuntimeException("Text rendering is supposed to be the same");
+        }
+    }
+
+    private static BufferedImage drawString(String text) {
+        BufferedImage image = new BufferedImage(IMAGE_WIDTH, IMAGE_HEIGHT, BufferedImage.TYPE_INT_RGB);
+        Graphics g = image.createGraphics();
+        g.setColor(Color.white);
+        g.fillRect(0, 0, IMAGE_WIDTH, IMAGE_HEIGHT);
+        g.setColor(Color.black);
+        g.setFont(FONT);
+        g.drawString(text, TEXT_X, TEXT_Y);
+        g.dispose();
+        return image;
+    }
+
+    private static boolean imagesAreEqual(BufferedImage i1, BufferedImage i2) {
+        if (i1.getWidth() != i2.getWidth() || i1.getHeight() != i2.getHeight()) return false;
+        for (int i = 0; i < i1.getWidth(); i++) {
+            for (int j = 0; j < i1.getHeight(); j++) {
+                if (i1.getRGB(i, j) != i2.getRGB(i, j)) {
+                    return false;
+                }
+            }
+        }
+        return true;
+    }
+}
--- a/jdk/test/javax/swing/plaf/windows/WindowsRootPaneUI/WrongAltProcessing/WrongAltProcessing.java	Tue Feb 28 22:16:00 2017 -0800
+++ b/jdk/test/javax/swing/plaf/windows/WindowsRootPaneUI/WrongAltProcessing/WrongAltProcessing.java	Mon Feb 27 18:07:31 2017 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2017, Oracle and/or its affiliates. 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
@@ -22,7 +22,7 @@
  */
 
 /* @test
-   @bug 8001633 8028271
+   @bug 8001633 8028271 8039888
    @summary Wrong alt processing during switching between windows
    @author mikhail.cherkasov@oracle.com
    @run main WrongAltProcessing
@@ -54,8 +54,8 @@
                 createWindows();
             }
         });
+        initRobot();
         robot.waitForIdle();
-        initRobot();
         runScript();
         SwingUtilities.invokeLater(new Runnable() {
             @Override
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sanity/client/SwingSet/src/DialogDemoTest.java	Mon Feb 27 18:07:31 2017 -0800
@@ -0,0 +1,104 @@
+
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+import org.jtregext.GuiTestListener;
+import com.sun.swingset3.demos.dialog.DialogDemo;
+import static com.sun.swingset3.demos.dialog.DialogDemo.*;
+import java.awt.Dimension;
+import java.awt.Point;
+import javax.swing.JDialog;
+import static org.testng.AssertJUnit.*;
+import org.testng.annotations.Test;
+import static org.jemmy2ext.JemmyExt.isIconified;
+import static org.jemmy2ext.JemmyExt.ByClassChooser;
+import org.netbeans.jemmy.ClassReference;
+import org.netbeans.jemmy.ComponentChooser;
+import static org.netbeans.jemmy.WindowWaiter.countWindows;
+import org.netbeans.jemmy.operators.JFrameOperator;
+import org.netbeans.jemmy.operators.JDialogOperator;
+import org.netbeans.jemmy.operators.JLabelOperator;
+import org.netbeans.jemmy.operators.JButtonOperator;
+import org.testng.annotations.Listeners;
+
+/*
+ * @test
+ * @key headful
+ * @summary Verifies SwingSet3 DialogDemo by checking that separate JDialog is
+ *          shown, it contains predefined label and no new dialogs are opened
+ *          when the "Show JDialog..." button is clicked.
+ *
+ * @library /sanity/client/lib/jemmy/src
+ * @library /sanity/client/lib/Extensions/src
+ * @library /sanity/client/lib/SwingSet3/src
+ * @modules java.desktop
+ *          java.logging
+ * @build org.jemmy2ext.JemmyExt
+ * @build com.sun.swingset3.demos.dialog.DialogDemo
+ * @run testng DialogDemoTest
+ */
+@Listeners(GuiTestListener.class)
+public class DialogDemoTest {
+
+    private final ComponentChooser jDialogClassChooser = new ByClassChooser(JDialog.class);
+
+    @Test
+    public void test() throws Exception {
+        new ClassReference(DialogDemo.class.getCanonicalName()).startApplication();
+        JFrameOperator mainFrame = new JFrameOperator(DIALOG_DEMO_TITLE);
+        JDialogOperator dialog = new JDialogOperator(DIALOG_TITLE);
+        JButtonOperator showJDialogButton = new JButtonOperator(mainFrame, SHOW_BUTTON_TITLE);
+        initialCheckWithLabel(mainFrame, dialog);
+        checkShowDialogButton(dialog, showJDialogButton);
+        TestHelpers.checkChangeSize(dialog, new Dimension(dialog.getSize().width * 2,
+                dialog.getSize().height * 2));
+        TestHelpers.checkChangeLocation(dialog, new Point(dialog.getLocation().x + 100,
+                dialog.getLocation().y + 100));
+    }
+
+    private void initialCheckWithLabel(JFrameOperator frame, JDialogOperator jdo) {
+        JLabelOperator label = new JLabelOperator(jdo);
+        assertFalse("JFrame is not iconified", isIconified(frame));
+        assertEquals("Only one JDialog is present", 1,
+                countWindows(jDialogClassChooser));
+        assertEquals(LABEL_CONTENT, label.getText());
+    }
+
+    private void checkShowDialogButton(JDialogOperator jdo, JButtonOperator jbo)
+            throws InterruptedException {
+        //Check that the button does not change the number of JDialog
+        jbo.push();
+        Thread.sleep(500);
+        assertEquals("Only one JDialog is present", 1,
+                countWindows(jDialogClassChooser));
+        assertTrue("Check JDialog is visible", jdo.isVisible());
+        jdo.requestClose();
+        jdo.waitClosed();
+        //Check that the button makes the JDialog visible
+        //and that 1 jDialog is present.
+        jbo.push();
+        jdo.waitComponentVisible(true);
+        Thread.sleep(500);
+        assertEquals("Only one JDialog is present", 1,
+                countWindows(jDialogClassChooser));
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sanity/client/SwingSet/src/SliderDemoTest.java	Mon Feb 27 18:07:31 2017 -0800
@@ -0,0 +1,235 @@
+
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+import org.jtregext.GuiTestListener;
+import com.sun.swingset3.demos.slider.SliderDemo;
+import java.awt.Component;
+import java.awt.event.KeyEvent;
+import java.util.function.Predicate;
+
+import static org.testng.AssertJUnit.*;
+import org.testng.annotations.Test;
+import org.netbeans.jemmy.ClassReference;
+import org.netbeans.jemmy.ComponentChooser;
+import org.netbeans.jemmy.operators.JFrameOperator;
+import org.netbeans.jemmy.operators.JSliderOperator;
+import org.netbeans.jemmy.accessibility.AccessibleNameChooser;
+import static com.sun.swingset3.demos.slider.SliderDemo.*;
+import org.testng.annotations.Listeners;
+
+/*
+ * @test
+ * @key headful
+ * @summary Verifies SwingSet3 SliderDemo by moving the sliders through
+ *  different means, checking the slider value corresponding to it,
+ *  checking maximum and minimum values, checking Snap to tick is working
+ *  and checking the presence of ticks and labels.
+ *
+ * @library /sanity/client/lib/jemmy/src
+ * @library /sanity/client/lib/Extensions/src
+ * @library /sanity/client/lib/SwingSet3/src
+ * @modules java.desktop
+ *          java.logging
+ * @build org.jemmy2ext.JemmyExt
+ * @build com.sun.swingset3.demos.slider.SliderDemo
+ * @run testng SliderDemoTest
+ */
+@Listeners(GuiTestListener.class)
+public class SliderDemoTest {
+
+    private static final int PLAIN_SLIDER_MINIMUM = -10;
+    private static final int PLAIN_SLIDER_MAXIMUM = 100;
+    private static final int HORIZONTAL_MINOR_TICKS_SLIDER_MINIMUM = 0;
+    private static final int HORIZONTAL_MINOR_TICKS_SLIDER_MAXIMUM = 11;
+    private static final int VERTICAL_MINOR_TICKS_SLIDER_MINIMUM = 0;
+    private static final int VERTICAL_MINOR_TICKS_SLIDER_MAXIMUM = 100;
+
+    @Test
+    public void test() throws Exception {
+        new ClassReference(SliderDemo.class.getCanonicalName()).startApplication();
+        JFrameOperator frame = new JFrameOperator(DEMO_TITLE);
+        plain(frame, HORIZONTAL_PLAIN_SLIDER);
+        majorTicks(frame, HORIZONTAL_MAJOR_TICKS_SLIDER);
+        minorTicks(frame, HORIZONTAL_MINOR_TICKS_SLIDER);
+        disabled(frame, HORIZONTAL_DISABLED_SLIDER);
+        plain(frame, VERTICAL_PLAIN_SLIDER);
+        majorTicks(frame, VERTICAL_MAJOR_TICKS_SLIDER);
+        minorTicks(frame, VERTICAL_MINOR_TICKS_SLIDER);
+        disabled(frame, VERTICAL_DISABLED_SLIDER);
+    }
+
+    private void plain(JFrameOperator jfo, String accessibleName) {
+        JSliderOperator jso = new JSliderOperator(jfo,
+                new AccessibleNameChooser(accessibleName));
+        if (accessibleName.equals(HORIZONTAL_PLAIN_SLIDER)) {
+            checkKeyboard(jso);
+            checkMouse(jso);
+        }
+        checkMaximum(jso, PLAIN_SLIDER_MAXIMUM);
+        checkMinimum(jso, PLAIN_SLIDER_MINIMUM);
+        checkMoveForward(jso, 10);
+    }
+
+    private void majorTicks(JFrameOperator jfo, String accessibleName) {
+        JSliderOperator jso = new JSliderOperator(jfo,
+                new AccessibleNameChooser(accessibleName));
+        checkMoveForward(jso, 40);
+        assertTrue(jso.getPaintTicks());
+        assertEquals(100, jso.getMajorTickSpacing());
+    }
+
+    private void minorTicks(JFrameOperator jfo, String accessibleName) {
+        JSliderOperator jso = new JSliderOperator(jfo,
+                new AccessibleNameChooser(accessibleName));
+        if (accessibleName.equals(HORIZONTAL_MINOR_TICKS_SLIDER)) {
+            checkMaximum(jso, HORIZONTAL_MINOR_TICKS_SLIDER_MAXIMUM);
+            checkMinimum(jso, HORIZONTAL_MINOR_TICKS_SLIDER_MINIMUM);
+            checkMoveForward(jso, 2);
+            checkSnapToTick(jso, 5, 6);
+            assertEquals(5, jso.getMajorTickSpacing());
+            assertEquals(1, jso.getMinorTickSpacing());
+        } else {
+            checkMaximum(jso, VERTICAL_MINOR_TICKS_SLIDER_MAXIMUM);
+            checkMinimum(jso, VERTICAL_MINOR_TICKS_SLIDER_MINIMUM);
+            checkMoveForward(jso, 10);
+            assertEquals(20, jso.getMajorTickSpacing());
+            assertEquals(5, jso.getMinorTickSpacing());
+        }
+        assertTrue(jso.getPaintTicks());
+        assertTrue(jso.getPaintLabels());
+    }
+
+    private void disabled(JFrameOperator jfo, String accessibleName)
+            throws InterruptedException {
+        JSliderOperator jso = new JSliderOperator(jfo,
+                new AccessibleNameChooser(accessibleName));
+        int initialvalue;
+        initialvalue = jso.getValue();
+        jso.clickMouse(jso.getCenterXForClick(), jso.getCenterYForClick(), 10);
+        Thread.sleep(500);
+        assertFalse(jso.hasFocus());
+        assertEquals(initialvalue, jso.getValue());
+    }
+
+    private void checkMaximum(JSliderOperator jso, int maxValue) {
+        jso.scrollToMaximum();
+        waitSliderValue(jso, jSlider -> jSlider.getValue() == maxValue);
+    }
+
+    private void checkMinimum(JSliderOperator jso, int minValue) {
+        jso.scrollToMinimum();
+        waitSliderValue(jso, jSlider -> jSlider.getValue() == minValue);
+    }
+
+    private void checkKeyboard(JSliderOperator jso) {
+        checkKeyPress(jso, KeyEvent.VK_HOME,
+                jSlider -> jSlider.getValue() == jso.getMinimum());
+
+        {
+            int expectedValue = jso.getValue() + 1;
+            checkKeyPress(jso, KeyEvent.VK_UP,
+                    jSlider -> jSlider.getValue() >= expectedValue);
+        }
+        {
+            int expectedValue = jso.getValue() + 1;
+            checkKeyPress(jso, KeyEvent.VK_RIGHT,
+                    jSlider -> jSlider.getValue() >= expectedValue);
+        }
+        {
+            int expectedValue = jso.getValue() + 11;
+            checkKeyPress(jso, KeyEvent.VK_PAGE_UP,
+                    jSlider -> jSlider.getValue() >= expectedValue);
+        }
+
+        checkKeyPress(jso, KeyEvent.VK_END,
+                jSlider -> jSlider.getValue() == jso.getMaximum());
+
+        {
+            int expectedValue = jso.getValue() - 1;
+            checkKeyPress(jso, KeyEvent.VK_DOWN,
+                    jSlider -> jSlider.getValue() <= expectedValue);
+        }
+        {
+            int expectedValue = jso.getValue() - 1;
+            checkKeyPress(jso, KeyEvent.VK_LEFT,
+                    jSlider -> jSlider.getValue() <= expectedValue);
+        }
+        {
+            int expectedValue = jso.getValue() - 11;
+            checkKeyPress(jso, KeyEvent.VK_PAGE_DOWN,
+                    jSlider -> jSlider.getValue() <= expectedValue);
+        }
+    }
+
+    private void checkKeyPress(JSliderOperator jso, int keyCode,
+            Predicate<JSliderOperator> predicate) {
+        jso.pushKey(keyCode);
+        waitSliderValue(jso, predicate);
+    }
+
+    private void waitSliderValue(JSliderOperator jso,
+            Predicate<JSliderOperator> predicate) {
+        jso.waitState(new ComponentChooser() {
+            public boolean checkComponent(Component comp) {
+                return predicate.test(jso);
+            }
+
+            public String getDescription() {
+                return "Wait till Slider attains the specified state.";
+            }
+        });
+    }
+
+    private void checkMoveForward(JSliderOperator jso, int value) {
+        jso.setValue(jso.getMinimum());
+        int finalValue = jso.getValue() + value;
+        jso.scrollToValue(finalValue);
+        waitSliderValue(jso, jSlider -> jSlider.getValue() == finalValue);
+    }
+
+    private void checkSnapToTick(JSliderOperator jso, int expectedLower,
+            int expectedHigher) {
+        jso.pressMouse(jso.getCenterXForClick(), jso.getCenterYForClick());
+        waitSliderValue(jso, jSlider -> jSlider.getValue() == expectedLower
+                || jSlider.getValue() == expectedHigher);
+        jso.releaseMouse();
+    }
+
+    private void checkMouse(JSliderOperator jso) {
+        // Check mouse dragging by pressing on the center of Slider and then
+        // dragging the mouse till the end of the track.
+        // We set the initial value of the slider as 45,
+        // which is the value of the slider at the middle.
+        jso.setValue((jso.getMaximum() + jso.getMinimum()) / 2);
+        jso.pressMouse(jso.getCenterXForClick(), jso.getCenterYForClick());
+        jso.dragMouse(jso.getWidth() + 10, jso.getHeight());
+        waitSliderValue(jso, jSlider -> jSlider.getValue() == jSlider.getMaximum());
+        jso.releaseMouse();
+
+        // Check mouse click by clicking on the center of the track 2 times
+        // and waiting till the slider value has changed from its previous
+        // value as a result of the clicks.
+        jso.clickMouse(jso.getCenterXForClick(), jso.getCenterYForClick(), 2);
+        waitSliderValue(jso, jSlider -> jSlider.getValue() != jSlider.getMaximum());
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sanity/client/SwingSet/src/TestHelpers.java	Mon Feb 27 18:07:31 2017 -0800
@@ -0,0 +1,24 @@
+
+import java.awt.Dimension;
+import java.awt.Point;
+
+import org.netbeans.jemmy.operators.ComponentOperator;
+
+public class TestHelpers {
+
+    public static void checkChangeLocation(ComponentOperator component,
+            Point finalLocation) {
+        Point initialLocation = component.getLocation();
+        component.setLocation(finalLocation);
+        component.waitComponentLocation(finalLocation);
+        component.setLocation(initialLocation);
+    }
+
+    public static void checkChangeSize(ComponentOperator component,
+            Dimension dimensionFinal) {
+        Dimension dimensionInitial = component.getSize();
+        component.setSize(dimensionFinal);
+        component.waitComponentSize(dimensionFinal);
+        component.setSize(dimensionInitial);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sanity/client/lib/SwingSet3/src/com/sun/swingset3/demos/dialog/DialogDemo.java	Mon Feb 27 18:07:31 2017 -0800
@@ -0,0 +1,162 @@
+/*
+ * Copyright (c) 2007, 2016, Oracle and/or its affiliates. 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package com.sun.swingset3.demos.dialog;
+
+import java.awt.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import javax.swing.*;
+import javax.swing.border.EmptyBorder;
+import com.sun.swingset3.DemoProperties;
+import com.sun.swingset3.demos.DemoUtilities;
+import com.sun.swingset3.demos.ResourceManager;
+import com.sun.swingset3.demos.slider.SliderDemo;
+
+/**
+ *
+ * @author aim
+ */
+@DemoProperties(
+        value = "JDialog Demo",
+        category = "Toplevel Containers",
+        description = "Demonstrates JDialog, Swing's top-level dialog container.",
+        sourceFiles = {
+            "com/sun/swingset3/demos/dialog/DialogDemo.java",
+            "com/sun/swingset3/demos/DemoUtilities.java",
+            "com/sun/swingset3/demos/dialog/resources/images/DialogDemo.gif"
+        }
+)
+public class DialogDemo extends JPanel {
+
+    private JDialog dialog;
+    private JComponent dialogSpaceholder;
+
+    public static final String DIALOG_TITLE = "Demo JDialog";
+    public static final String SHOW_BUTTON_TITLE = "Show JDialog...";
+    public static final String LABEL_CONTENT = "I'm content.";
+    public static final String DIALOG_DEMO_TITLE = DialogDemo.class
+            .getAnnotation(DemoProperties.class).value();
+
+    public DialogDemo() {
+        initComponents();
+    }
+
+    protected void initComponents() {
+        dialog = createDialog();
+
+        setLayout(new BorderLayout());
+
+        add(createControlPanel(), BorderLayout.WEST);
+        dialogSpaceholder = createDialogSpaceholder(dialog);
+        add(dialogSpaceholder, BorderLayout.CENTER);
+    }
+
+    private static JComponent createDialogSpaceholder(JDialog dialog) {
+        // Create placeholder panel to provide space in which to
+        // display the toplevel dialog so that the control panel is not
+        // obscured by it.
+        JPanel placeholder = new JPanel();
+        Dimension prefSize = dialog.getPreferredSize();
+        prefSize.width += 12;
+        prefSize.height += 12;
+        placeholder.setPreferredSize(prefSize);
+        return placeholder;
+    }
+
+    protected JComponent createControlPanel() {
+        // Create control panel on Left
+        Box panel = Box.createVerticalBox();
+        panel.setBorder(new EmptyBorder(8, 8, 8, 8));
+
+        // Create button to control visibility of frame
+        JButton showButton = new JButton(SHOW_BUTTON_TITLE);
+        showButton.addActionListener(new ShowActionListener());
+        panel.add(showButton);
+
+        return panel;
+    }
+
+    private static JDialog createDialog() {
+
+        //<snip>Create dialog
+        JDialog dialog = new JDialog(new JFrame(), DIALOG_TITLE, false);
+        //</snip>
+
+        //<snip>Add dialog's content
+        JLabel label = new JLabel(LABEL_CONTENT);
+        label.setHorizontalAlignment(JLabel.CENTER);
+        label.setPreferredSize(new Dimension(200, 140));
+        dialog.add(label);
+        //</snip>
+
+        //<snip>Initialize dialog's size
+        // which will shrink-to-fit its contents
+        dialog.pack();
+        //</snip>
+
+        return dialog;
+    }
+
+    public void start() {
+        DemoUtilities.setToplevelLocation(dialog, dialogSpaceholder, SwingConstants.CENTER);
+        showDialog();
+    }
+
+    public void stop() {
+        //<snip>Hide dialog
+        dialog.setVisible(false);
+        //</snip>
+    }
+
+    public void showDialog() {
+        //<snip>Show dialog
+        // if dialog already visible, then bring to the front
+        if (dialog.isShowing()) {
+            dialog.toFront();
+        } else {
+            dialog.setVisible(true);
+        }
+        //</snip>
+    }
+
+    private class ShowActionListener implements ActionListener {
+
+        public void actionPerformed(ActionEvent actionEvent) {
+            showDialog();
+        }
+    }
+
+    public static void main(String args[]) {
+        EventQueue.invokeLater(new Runnable() {
+            public void run() {
+                JFrame frame = new JFrame(DIALOG_DEMO_TITLE);
+                DialogDemo demo = new DialogDemo();
+                frame.add(demo);
+                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+                frame.pack();
+                frame.setVisible(true);
+                demo.start();
+            }
+        });
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sanity/client/lib/SwingSet3/src/com/sun/swingset3/demos/slider/SliderDemo.java	Mon Feb 27 18:07:31 2017 -0800
@@ -0,0 +1,280 @@
+/*
+ * Copyright (c) 2005, 2016, Oracle and/or its affiliates. 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package com.sun.swingset3.demos.slider;
+
+import java.awt.*;
+import javax.swing.*;
+import javax.swing.border.BevelBorder;
+import javax.swing.border.TitledBorder;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+import com.sun.swingset3.DemoProperties;
+import com.sun.swingset3.demos.ResourceManager;
+import com.sun.swingset3.demos.textfield.TextFieldDemo;
+
+/**
+ * JSlider Demo
+ *
+ * @version 1.9 11/17/05
+ * @author Dave Kloba
+ * @author Jeff Dinkins
+ */
+@DemoProperties(
+        value = "Slider Demo",
+        category = "Controls",
+        description = "Demonstrates the JSlider, a control which supports linear adjustment",
+        sourceFiles = {
+            "com/sun/swingset3/demos/slider/SliderDemo.java",
+            "com/sun/swingset3/demos/ResourceManager.java",
+            "com/sun/swingset3/demos/slider/resources/SliderDemo.properties",
+            "com/sun/swingset3/demos/slider/resources/images/SliderDemo.gif"
+        }
+)
+public class SliderDemo extends JPanel {
+
+    private static final Dimension HGAP5 = new Dimension(5, 1);
+    private static final Dimension VGAP5 = new Dimension(1, 5);
+    private static final Dimension HGAP10 = new Dimension(10, 1);
+    private static final Dimension VGAP10 = new Dimension(1, 10);
+    private static final Dimension HGAP20 = new Dimension(20, 1);
+    private static final Dimension HGAP25 = new Dimension(25, 1);
+    private final ResourceManager resourceManager = new ResourceManager(this.getClass());
+    public static final String DEMO_TITLE = SliderDemo.class.getAnnotation(DemoProperties.class).value();
+    public static final String HORIZONTAL_PLAIN_SLIDER = "Horizontal Plain Slider";
+    public static final String HORIZONTAL_MAJOR_TICKS_SLIDER = "Horizontal Major Ticks Slider";
+    public static final String HORIZONTAL_MINOR_TICKS_SLIDER = "Horizontal Minor Ticks Slider";
+    public static final String HORIZONTAL_DISABLED_SLIDER = "Horizontal Disabled Slider";
+    public static final String VERTICAL_PLAIN_SLIDER = "Vertical Plain Slider";
+    public static final String VERTICAL_MAJOR_TICKS_SLIDER = "Vertical Major Ticks Slider";
+    public static final String VERTICAL_MINOR_TICKS_SLIDER = "Vertical Minor Ticks Slider";
+    public static final String VERTICAL_DISABLED_SLIDER = "Vertical Disabled Slider";
+
+    /**
+     * main method allows us to run as a standalone demo.
+     */
+    public static void main(String[] args) {
+        JFrame frame = new JFrame(SliderDemo.class.getAnnotation(DemoProperties.class).value());
+        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+        frame.getContentPane().add(new SliderDemo());
+        frame.setPreferredSize(new Dimension(800, 600));
+        frame.pack();
+        frame.setLocationRelativeTo(null);
+        frame.setVisible(true);
+    }
+
+    /**
+     * SliderDemo Constructor
+     */
+    public SliderDemo() {
+        createSliderDemo();
+    }
+
+    private void createSliderDemo() {
+        JSlider s;
+        JPanel hp;
+        JPanel vp;
+        GridLayout g;
+        JPanel tp;
+        JLabel tf;
+        ChangeListener listener;
+
+        setLayout(new BorderLayout());
+        tf = new JLabel(resourceManager.getString("SliderDemo.slidervalue"));
+        add(tf, BorderLayout.SOUTH);
+        tp = new JPanel();
+        g = new GridLayout(1, 2);
+        g.setHgap(5);
+        g.setVgap(5);
+        tp.setLayout(g);
+        add(tp, BorderLayout.CENTER);
+        listener = new SliderListener(tf);
+        BevelBorder border = new BevelBorder(BevelBorder.LOWERED);
+        hp = new JPanel();
+        hp.setLayout(new BoxLayout(hp, BoxLayout.Y_AXIS));
+        hp.setBorder(new TitledBorder(
+                border,
+                resourceManager.getString("SliderDemo.horizontal"),
+                TitledBorder.LEFT,
+                TitledBorder.ABOVE_TOP));
+        tp.add(hp);
+        vp = new JPanel();
+        vp.setLayout(new BoxLayout(vp, BoxLayout.X_AXIS));
+        vp.setBorder(new TitledBorder(
+                border,
+                resourceManager.getString("SliderDemo.vertical"),
+                TitledBorder.LEFT,
+                TitledBorder.ABOVE_TOP));
+        tp.add(vp);
+
+        // Horizontal Slider 1
+        JPanel p = new JPanel();
+        p.setLayout(new BoxLayout(p, BoxLayout.Y_AXIS));
+        p.setBorder(new TitledBorder(resourceManager.getString("SliderDemo.plain")));
+        s = new JSlider(-10, 100, 20);
+        s.getAccessibleContext().setAccessibleName(HORIZONTAL_PLAIN_SLIDER);
+        s.getAccessibleContext().setAccessibleDescription(resourceManager.getString("SliderDemo.a_plain_slider"));
+        s.addChangeListener(listener);
+        p.add(Box.createRigidArea(VGAP5));
+        p.add(s);
+        p.add(Box.createRigidArea(VGAP5));
+        hp.add(p);
+        hp.add(Box.createRigidArea(VGAP10));
+
+        // Horizontal Slider 2
+        p = new JPanel();
+        p.setLayout(new BoxLayout(p, BoxLayout.Y_AXIS));
+        p.setBorder(new TitledBorder(resourceManager.getString("SliderDemo.majorticks")));
+        s = new JSlider(100, 1000, 400);
+        s.setPaintTicks(true);
+        s.setMajorTickSpacing(100);
+        s.getAccessibleContext().setAccessibleName(HORIZONTAL_MAJOR_TICKS_SLIDER);
+        s.getAccessibleContext().setAccessibleDescription(resourceManager.getString("SliderDemo.majorticksdescription"));
+        s.addChangeListener(listener);
+        p.add(Box.createRigidArea(VGAP5));
+        p.add(s);
+        p.add(Box.createRigidArea(VGAP5));
+        hp.add(p);
+        hp.add(Box.createRigidArea(VGAP10));
+
+        // Horizontal Slider 3
+        p = new JPanel();
+        p.setLayout(new BoxLayout(p, BoxLayout.Y_AXIS));
+        p.setBorder(new TitledBorder(resourceManager.getString("SliderDemo.ticks")));
+        s = new JSlider(0, 11, 6);
+        s.putClientProperty("JSlider.isFilled", Boolean.TRUE);
+        s.setPaintTicks(true);
+        s.setMajorTickSpacing(5);
+        s.setMinorTickSpacing(1);
+        s.setPaintLabels(true);
+        s.setSnapToTicks(true);
+        s.getLabelTable().put(new Integer(11), new JLabel(Integer.toString(11), JLabel.CENTER));
+        s.setLabelTable(s.getLabelTable());
+        s.getAccessibleContext().setAccessibleName(HORIZONTAL_MINOR_TICKS_SLIDER);
+        s.getAccessibleContext().setAccessibleDescription(resourceManager.getString("SliderDemo.minorticksdescription"));
+        s.addChangeListener(listener);
+        p.add(Box.createRigidArea(VGAP5));
+        p.add(s);
+        p.add(Box.createRigidArea(VGAP5));
+        hp.add(p);
+        hp.add(Box.createRigidArea(VGAP10));
+
+        // Horizontal Slider 4
+        p = new JPanel();
+        p.setLayout(new BoxLayout(p, BoxLayout.Y_AXIS));
+        p.setBorder(new TitledBorder(resourceManager.getString("SliderDemo.disabled")));
+        BoundedRangeModel brm = new DefaultBoundedRangeModel(80, 0, 0, 100);
+        s = new JSlider(brm);
+        s.setPaintTicks(true);
+        s.setMajorTickSpacing(20);
+        s.setMinorTickSpacing(5);
+        s.setEnabled(false);
+        s.getAccessibleContext().setAccessibleName(HORIZONTAL_DISABLED_SLIDER);
+        s.getAccessibleContext().setAccessibleDescription(resourceManager.getString("SliderDemo.disableddescription"));
+        s.addChangeListener(listener);
+        p.add(Box.createRigidArea(VGAP5));
+        p.add(s);
+        p.add(Box.createRigidArea(VGAP5));
+        hp.add(p);
+
+        //////////////////////////////////////////////////////////////////////////////
+        // Vertical Slider 1
+        p = new JPanel();
+        p.setLayout(new BoxLayout(p, BoxLayout.X_AXIS));
+        p.setBorder(new TitledBorder(resourceManager.getString("SliderDemo.plain")));
+        s = new JSlider(JSlider.VERTICAL, -10, 100, 20);
+        s.getAccessibleContext().setAccessibleName(VERTICAL_PLAIN_SLIDER);
+        s.getAccessibleContext().setAccessibleDescription(resourceManager.getString("SliderDemo.a_plain_slider"));
+        s.addChangeListener(listener);
+        p.add(Box.createRigidArea(HGAP10));
+        p.add(s);
+        p.add(Box.createRigidArea(HGAP10));
+        vp.add(p);
+        vp.add(Box.createRigidArea(HGAP10));
+
+        // Vertical Slider 2
+        p = new JPanel();
+        p.setLayout(new BoxLayout(p, BoxLayout.X_AXIS));
+        p.setBorder(new TitledBorder(resourceManager.getString("SliderDemo.majorticks")));
+        s = new JSlider(JSlider.VERTICAL, 100, 1000, 400);
+        s.putClientProperty("JSlider.isFilled", Boolean.TRUE);
+        s.setPaintTicks(true);
+        s.setMajorTickSpacing(100);
+        s.getAccessibleContext().setAccessibleName(VERTICAL_MAJOR_TICKS_SLIDER);
+        s.getAccessibleContext().setAccessibleDescription(resourceManager.getString("SliderDemo.majorticksdescription"));
+        s.addChangeListener(listener);
+        p.add(Box.createRigidArea(HGAP25));
+        p.add(s);
+        p.add(Box.createRigidArea(HGAP25));
+        vp.add(p);
+        vp.add(Box.createRigidArea(HGAP5));
+
+        // Vertical Slider 3
+        p = new JPanel();
+        p.setLayout(new BoxLayout(p, BoxLayout.X_AXIS));
+        p.setBorder(new TitledBorder(resourceManager.getString("SliderDemo.minorticks")));
+        s = new JSlider(JSlider.VERTICAL, 0, 100, 60);
+        s.setPaintTicks(true);
+        s.setMajorTickSpacing(20);
+        s.setMinorTickSpacing(5);
+        s.setPaintLabels(true);
+        s.getAccessibleContext().setAccessibleName(VERTICAL_MINOR_TICKS_SLIDER);
+        s.getAccessibleContext().setAccessibleDescription(resourceManager.getString("SliderDemo.minorticksdescription"));
+        s.addChangeListener(listener);
+        p.add(Box.createRigidArea(HGAP10));
+        p.add(s);
+        p.add(Box.createRigidArea(HGAP10));
+        vp.add(p);
+        vp.add(Box.createRigidArea(HGAP5));
+
+        // Vertical Slider 4
+        p = new JPanel();
+        p.setLayout(new BoxLayout(p, BoxLayout.X_AXIS));
+        p.setBorder(new TitledBorder(resourceManager.getString("SliderDemo.disabled")));
+        s = new JSlider(JSlider.VERTICAL, 0, 100, 80);
+        s.setPaintTicks(true);
+        s.setMajorTickSpacing(20);
+        s.setMinorTickSpacing(5);
+        s.setEnabled(false);
+        s.getAccessibleContext().setAccessibleName(VERTICAL_DISABLED_SLIDER);
+        s.getAccessibleContext().setAccessibleDescription(resourceManager.getString("SliderDemo.disableddescription"));
+        s.addChangeListener(listener);
+        p.add(Box.createRigidArea(HGAP20));
+        p.add(s);
+        p.add(Box.createRigidArea(HGAP20));
+        vp.add(p);
+    }
+
+    private class SliderListener implements ChangeListener {
+
+        private final JLabel tf;
+
+        public SliderListener(JLabel f) {
+            tf = f;
+        }
+
+        public void stateChanged(ChangeEvent e) {
+            JSlider s1 = (JSlider) e.getSource();
+            tf.setText(resourceManager.getString("SliderDemo.slidervalue") + s1.getValue());
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sanity/client/lib/SwingSet3/src/com/sun/swingset3/demos/slider/resources/SliderDemo.properties	Mon Feb 27 18:07:31 2017 -0800
@@ -0,0 +1,18 @@
+### Slider Demo ###
+
+SliderDemo.accessible_description=This demo shows an example of using the JSlider component.
+SliderDemo.tooltip=JSlider demo
+SliderDemo.name=Slider Demo
+
+SliderDemo.slidervalue=Slider Value:
+SliderDemo.horizontal=Horizontal
+SliderDemo.vertical=Vertical
+SliderDemo.plain=Plain
+SliderDemo.a_plain_slider=A Plain Slider
+SliderDemo.majorticks=Major Ticks
+SliderDemo.majorticksdescription=A slider showing major tick marks
+SliderDemo.ticks=Minor Ticks, Snap-to-ticks and Labels
+SliderDemo.minorticks=Minor Ticks
+SliderDemo.minorticksdescription=A slider showing major and minor tick marks, with slider action snapping to tick marks, with some ticks visibly labeled
+SliderDemo.disabled=Disabled
+SliderDemo.disableddescription=A slider showing major and minor tick marks that is not enabled (cannot be manipulated
--- a/jdk/test/sanity/client/lib/jemmy/src/org/netbeans/jemmy/WindowWaiter.java	Tue Feb 28 22:16:00 2017 -0800
+++ b/jdk/test/sanity/client/lib/jemmy/src/org/netbeans/jemmy/WindowWaiter.java	Mon Feb 27 18:07:31 2017 -0800
@@ -25,6 +25,7 @@
 import java.awt.Component;
 import java.awt.Frame;
 import java.awt.Window;
+import java.util.stream.Stream;
 
 /**
  * A WindowWaiter is a utility class used to look or wait for Windows. It
@@ -282,6 +283,91 @@
         return waitWindow(o, ch, 0);
     }
 
+    /**
+     * Wait till the count of windows which meet the the search criteria becomes
+     * equal to count.
+     *
+     * @param ch a component chooser used to define and apply the search
+     * criteria.
+     * @param count the number of expected windows meeting the search criteria.
+     * @throws InterruptedException
+     */
+    public static void waitWindowCount(ComponentChooser ch, int count)
+            throws InterruptedException {
+        waitWindowCount(null, ch, count);
+    }
+
+    /**
+     * Wait till the count of windows which meet the the search criteria becomes
+     * equal to count.
+     *
+     * @param owner The owner window of all the windows to be checked
+     * @param ch a component chooser used to define and apply the search
+     * criteria.
+     * @param count the number of expected windows meeting the search criteria.
+     * @throws InterruptedException
+     */
+    public static void waitWindowCount(Window owner, ComponentChooser ch, int count)
+            throws InterruptedException {
+        Waiter<String, Void> stateWaiter = new Waiter<>(new Waitable<String, Void>() {
+            @Override
+            public String actionProduced(Void obj) {
+                return countWindows(owner, ch) == count ? "" : null;
+            }
+
+            @Override
+            public String getDescription() {
+                return "Wait till the count of windows matching the criteria "
+                        + "specified by ComponentChooser reaches :" + count;
+            }
+
+            @Override
+            public String toString() {
+                return "Operator.waitState.Waitable{description = "
+                        + getDescription() + '}';
+            }
+        });
+        stateWaiter.waitAction(null);
+    }
+
+    /**
+     * Counts all the windows owned by the owner window which match the
+     * criterion specified by component chooser.
+     *
+     * @param owner The owner window of all the windows to be checked
+     * @param ch A component chooser used to define and apply the search
+     * criteria
+     * @return the number of matched windows
+     */
+    public static int countWindows(Window owner, ComponentChooser ch) {
+        return new QueueTool().invokeAndWait(new QueueTool.QueueAction<Integer>(null) {
+
+            @Override
+            public Integer launch() {
+                Window[] windows;
+                if (owner == null) {
+                    windows = Window.getWindows();
+                } else {
+                    windows = owner.getOwnedWindows();
+                }
+                return (int) Stream.of(windows)
+                        .filter(x -> ch.checkComponent(x)).count();
+            }
+        });
+    }
+
+    /**
+     * Counts all the windows which match the criterion specified by component
+     * chooser.
+     *
+     * @param ch A component chooser used to define and apply the search
+     * criteria
+     * @return the number of matched windows
+     */
+    public static int countWindows(ComponentChooser ch) {
+        return countWindows(null, ch);
+    }
+
     @Override
     public String getDescription() {
         return chooser.getDescription();
--- a/jdk/test/sanity/client/lib/jemmy/src/org/netbeans/jemmy/drivers/scrolling/JSliderAPIDriver.java	Tue Feb 28 22:16:00 2017 -0800
+++ b/jdk/test/sanity/client/lib/jemmy/src/org/netbeans/jemmy/drivers/scrolling/JSliderAPIDriver.java	Mon Feb 27 18:07:31 2017 -0800
@@ -66,20 +66,15 @@
         if (adj.getScrollDirection() == ScrollAdjuster.DECREASE_SCROLL_DIRECTION) {
             newValue = (scroll.getValue() > scroll.getMinimum()
                     + getUnitIncrement(scroll))
-                    ? scroll.getValue() - getUnitIncrement(scroll)
-                    : scroll.getMinimum();
+                            ? scroll.getValue() - getUnitIncrement(scroll)
+                            : scroll.getMinimum();
+            scroll.setValue(newValue);
         } else if (adj.getScrollDirection() == ScrollAdjuster.INCREASE_SCROLL_DIRECTION) {
             newValue = (scroll.getValue() < scroll.getMaximum()
                     - getUnitIncrement(scroll))
-                    ? scroll.getValue() + getUnitIncrement(scroll)
-                    : scroll.getMaximum();
-        }
-        setValue(oper, newValue);
-    }
-
-    private void setValue(ComponentOperator oper, int value) {
-        if (value != -1) {
-            ((JSliderOperator) oper).setValue(value);
+                            ? scroll.getValue() + getUnitIncrement(scroll)
+                            : scroll.getMaximum();
+            scroll.setValue(newValue);
         }
     }
 
@@ -96,15 +91,16 @@
         if (adj.getScrollDirection() == ScrollAdjuster.DECREASE_SCROLL_DIRECTION) {
             newValue = (scroll.getValue() > scroll.getMinimum()
                     + getBlockIncrement(scroll))
-                    ? scroll.getValue() - getBlockIncrement(scroll)
-                    : scroll.getMinimum();
+                            ? scroll.getValue() - getBlockIncrement(scroll)
+                            : scroll.getMinimum();
+            scroll.setValue(newValue);
         } else if (adj.getScrollDirection() == ScrollAdjuster.INCREASE_SCROLL_DIRECTION) {
             newValue = (scroll.getValue() < scroll.getMaximum()
                     - getBlockIncrement(scroll))
-                    ? scroll.getValue() + getBlockIncrement(scroll)
-                    : scroll.getMaximum();
+                            ? scroll.getValue() + getBlockIncrement(scroll)
+                            : scroll.getMaximum();
+            scroll.setValue(newValue);
         }
-        setValue(oper, newValue);
     }
 
     @Override
--- a/jdk/test/sanity/client/lib/jemmy/src/org/netbeans/jemmy/drivers/windows/DefaultFrameDriver.java	Tue Feb 28 22:16:00 2017 -0800
+++ b/jdk/test/sanity/client/lib/jemmy/src/org/netbeans/jemmy/drivers/windows/DefaultFrameDriver.java	Mon Feb 27 18:07:31 2017 -0800
@@ -22,9 +22,7 @@
  */
 package org.netbeans.jemmy.drivers.windows;
 
-import java.awt.Dimension;
 import java.awt.Frame;
-import java.awt.Toolkit;
 import java.awt.Window;
 import java.awt.event.WindowEvent;
 
@@ -61,16 +59,28 @@
         ((FrameOperator) oper).setState(Frame.NORMAL);
     }
 
+    /** Maximizes the frame.
+     *
+     * @param oper Frame operator.
+     * @throws UnsupportedOperatorException if operator class name is not in
+     *         the list of supported classes names
+     */
     @Override
     public void maximize(ComponentOperator oper) {
         checkSupported(oper);
-        oper.setLocation(0, 0);
-        Dimension ssize = Toolkit.getDefaultToolkit().getScreenSize();
-        oper.setSize(ssize.width, ssize.height);
+        ((FrameOperator) oper).setExtendedState(Frame.MAXIMIZED_BOTH);
     }
 
+    /** Demaximizes the frame.
+     *
+     * @param oper Frame operator.
+     * @throws UnsupportedOperatorException if operator class name is not in
+     *         the list of supported classes names
+     */
     @Override
     public void demaximize(ComponentOperator oper) {
         checkSupported(oper);
+        ((FrameOperator) oper).setExtendedState(Frame.NORMAL);
     }
+
 }
--- a/jdk/test/sanity/client/lib/jemmy/src/org/netbeans/jemmy/operators/ComponentOperator.java	Tue Feb 28 22:16:00 2017 -0800
+++ b/jdk/test/sanity/client/lib/jemmy/src/org/netbeans/jemmy/operators/ComponentOperator.java	Mon Feb 27 18:07:31 2017 -0800
@@ -57,6 +57,8 @@
 import java.util.Hashtable;
 import java.util.Locale;
 
+import static java.lang.Math.abs;
+
 import org.netbeans.jemmy.CharBindingMap;
 import org.netbeans.jemmy.ComponentChooser;
 import org.netbeans.jemmy.ComponentSearcher;
@@ -1137,6 +1139,87 @@
     }
 
     /**
+     * Wait till the Size of the component becomes as expected.
+     *
+     * @param exactSize the exact expected size.
+     */
+    public void waitComponentSize(Dimension exactSize) {
+        waitComponentSize(exactSize, exactSize);
+    }
+
+    /**
+     * Wait till the Size of the component becomes between minSize and maxSize.
+     *
+     * @param minSize the minimum allowed size.
+     * @param maxSize the maximum allowed size.
+     */
+    public void waitComponentSize(Dimension minSize, Dimension maxSize) {
+        waitState(new ComponentChooser() {
+            @Override
+            public boolean checkComponent(Component comp) {
+                Dimension componentSize = comp.getSize();
+                return componentSize.height >= minSize.height
+                        && componentSize.height <= maxSize.height
+                        && componentSize.width >= minSize.width
+                        && componentSize.width <= maxSize.width;
+            }
+
+            @Override
+            public String getDescription() {
+                return "Component Size becomes between: " + minSize
+                        + "and " + maxSize;
+            }
+
+            @Override
+            public String toString() {
+                return "ComponentOperator.waitComponentSize"
+                        + ".Waitable{description = " + getDescription() + '}';
+            }
+        });
+    }
+
+    /**
+     * Wait till the component reaches exact location.
+     *
+     * @param exactlocation exact expected location.
+     */
+    public void waitComponentLocation(Point exactlocation) {
+        waitComponentLocation(exactlocation, exactlocation);
+    }
+
+    /**
+     * Wait till the component reaches location between minLocation and
+     * maxLocation
+     *
+     * @param minLocation minimum expected location.
+     * @param maxLocation maximum expected location.
+     */
+    public void waitComponentLocation(Point minLocation, Point maxLocation) {
+        waitState(new ComponentChooser() {
+            @Override
+            public boolean checkComponent(Component comp) {
+                Point componentLocation = comp.getLocation();
+                return componentLocation.x >= minLocation.x
+                        && componentLocation.x <= maxLocation.x
+                        && componentLocation.y >= minLocation.y
+                        && componentLocation.y <= maxLocation.y;
+            }
+
+            @Override
+            public String getDescription() {
+                return "Component reaches location between :" + minLocation
+                        + "and " + maxLocation;
+            }
+
+            @Override
+            public String toString() {
+                return "ComponentOperator.waitComponentLocation"
+                        + ".Waitable{description = " + getDescription() + '}';
+            }
+        });
+    }
+
+    /**
      * Returns information about component.
      */
     @Override
--- a/jdk/test/sanity/client/lib/jemmy/src/org/netbeans/jemmy/operators/FrameOperator.java	Tue Feb 28 22:16:00 2017 -0800
+++ b/jdk/test/sanity/client/lib/jemmy/src/org/netbeans/jemmy/operators/FrameOperator.java	Mon Feb 27 18:07:31 2017 -0800
@@ -274,7 +274,7 @@
         output.printGolden("Maximizing frame");
         driver.maximize(this);
         if (getVerification()) {
-            waitState(Frame.NORMAL);
+            waitState(Frame.MAXIMIZED_BOTH);
         }
     }
 
@@ -306,7 +306,7 @@
         waitState(new ComponentChooser() {
             @Override
             public boolean checkComponent(Component comp) {
-                return ((Frame) comp).getState() == state;
+                return ((Frame) comp).getExtendedState() == state;
             }
 
             @Override
@@ -376,6 +376,19 @@
     }
 
     /**
+     * Maps {@code Frame.getExtendedState()} through queue
+     * @return the state of the frame
+     */
+    public int getExtendedState() {
+        return (runMapping(new MapAction<Integer>("getExtendedState") {
+            @Override
+            public Integer map() {
+                return ((Frame) getSource()).getExtendedState();
+            }
+        }));
+    }
+
+    /**
      * Maps {@code Frame.getTitle()} through queue
      */
     public String getTitle() {
@@ -448,6 +461,21 @@
     }
 
     /**
+     * Maps {@code Frame.setExtendedState(int)} through queue
+     * @param state of the frame
+     */
+    public void setExtendedState(final int state) {
+        runMapping(new MapAction<Void>("setExtendedState") {
+            @Override
+            public Void map() {
+                ((Frame) getSource()).setExtendedState(state);
+                return null;
+            }
+        });
+
+    }
+
+    /**
      * Maps {@code Frame.setTitle(String)} through queue
      */
     public void setTitle(final String string) {