changeset 10296:342b86d4ee27

8065098: JColorChooser no longer supports drag and drop between two JVM instances Reviewed-by: serb, pchelko
author alexsch
date Thu, 27 Nov 2014 16:20:25 +0300
parents e0b805374969
children fc4f55464170
files src/share/classes/sun/awt/datatransfer/DataTransferer.java src/share/classes/sun/awt/dnd/SunDropTargetContextPeer.java test/javax/swing/JColorChooser/8065098/JColorChooserDnDTest.java test/javax/swing/JColorChooser/8065098/bug8065098.html test/javax/swing/JColorChooser/8065098/bug8065098.java
diffstat 5 files changed, 137 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/src/share/classes/sun/awt/datatransfer/DataTransferer.java	Wed Nov 26 13:58:33 2014 -0800
+++ b/src/share/classes/sun/awt/datatransfer/DataTransferer.java	Thu Nov 27 16:20:25 2014 +0300
@@ -1295,6 +1295,15 @@
         // bytes and dump them into a byte array. For text flavors, decode back
         // to a String and recur to reencode according to the requested format.
         } else if (flavor.isRepresentationClassInputStream()) {
+
+            // Workaround to JDK-8024061: Exception thrown when drag and drop
+            //      between two components is executed quickly.
+            // and JDK-8065098:  JColorChooser no longer supports drag and drop
+            //      between two JVM instances
+            if (!(obj instanceof InputStream)) {
+                return new byte[0];
+            }
+
             try (ByteArrayOutputStream bos = new ByteArrayOutputStream()) {
                 try (InputStream is = (InputStream)obj) {
                     boolean eof = false;
--- a/src/share/classes/sun/awt/dnd/SunDropTargetContextPeer.java	Wed Nov 26 13:58:33 2014 -0800
+++ b/src/share/classes/sun/awt/dnd/SunDropTargetContextPeer.java	Thu Nov 27 16:20:25 2014 +0300
@@ -239,13 +239,6 @@
 
         if (localTransferable != null) {
             return localTransferable.getTransferData(df);
-        } else if (df.isMimeTypeEqual(DataFlavor.javaJVMLocalObjectMimeType)) {
-            // Workaround to JDK-8024061: Exception thrown when drag and drop
-            //      between two components is executed quickly.
-            // It is expected localTransferable is not null if javaJVMLocalObjectMimeType
-            // is used. Executing further results in ClassCastException, so null is
-            // returned here as no transfer data is available in this case.
-            return null;
         }
 
         if (dropStatus != STATUS_ACCEPT || dropComplete) {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/swing/JColorChooser/8065098/JColorChooserDnDTest.java	Thu Nov 27 16:20:25 2014 +0300
@@ -0,0 +1,54 @@
+/*
+ * Copyright (c) 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.
+ *
+ * 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 javax.swing.BorderFactory;
+import javax.swing.JColorChooser;
+import javax.swing.JFrame;
+import javax.swing.JPanel;
+import javax.swing.SwingUtilities;
+
+/*
+ * @bug 8065098
+ * @summary JColorChooser no longer supports drag and drop
+ *     between two JVM instances
+ */
+public class JColorChooserDnDTest {
+
+    public static void main(String[] args) {
+        SwingUtilities.invokeLater(new Runnable() {
+
+            @Override
+            public void run() {
+                JFrame frame = new JFrame();
+                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+                JPanel panel = new JPanel();
+                JColorChooser colorChooser = new JColorChooser();
+                colorChooser.setDragEnabled(true);
+                panel.setBorder(BorderFactory.createTitledBorder("JColorChoosers"));
+                panel.add(colorChooser);
+                frame.setContentPane(panel);
+                frame.pack();
+                frame.setVisible(true);
+            }
+        });
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/swing/JColorChooser/8065098/bug8065098.html	Thu Nov 27 16:20:25 2014 +0300
@@ -0,0 +1,40 @@
+<!--
+ Copyright (c) 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.
+
+ 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.
+-->
+
+<html>
+    <body>
+        1. Compile the java test JColorChooserDnDTest.java: 
+            > <path-to-the-tested-jdk>/bin/javac JColorChooserDnDTest.java
+        2. Run the first instance of the java test: 
+            > <path-to-the-tested-jdk>/bin/java JColorChooserDnDTest
+        3. Select a color in the color chooser
+        4. Run the second instance of the java test: 
+            > <path-to-the-tested-jdk>/bin/java JColorChooserDnDTest
+        5. Drag and drop the selected color from the first color chooser
+           preview panel to the second color chooser preview panel
+        6. If the color is dragged to the second color chooser then the test passes.
+
+    <applet width="500" height="1" code="bug8065098.class">
+    </applet>        
+</body>
+</html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/swing/JColorChooser/8065098/bug8065098.java	Thu Nov 27 16:20:25 2014 +0300
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 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.
+ *
+ * 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 javax.swing.JApplet;
+
+/*
+ * @test
+ * @bug 8065098
+ * @summary JColorChooser no longer supports drag and drop
+ *     between two JVM instances
+ * @run applet/manual=yesno bug8065098.html
+ */
+public class bug8065098 extends JApplet {
+
+}