--- old/modules/javafx.swing/src/main/java/javafx/embed/swing/SwingNode.java 2018-05-05 14:08:42.264040100 +0530 +++ new/modules/javafx.swing/src/main/java/javafx/embed/swing/SwingNode.java 2018-05-05 14:08:41.328038500 +0530 @@ -53,7 +53,6 @@ import java.awt.dnd.DragSource; import java.awt.dnd.DropTarget; import java.awt.dnd.InvalidDnDOperationException; -import java.awt.dnd.peer.DragSourceContextPeer; import java.awt.event.InputEvent; import java.awt.event.MouseWheelEvent; import java.awt.event.WindowEvent; @@ -80,9 +79,10 @@ import com.sun.javafx.PlatformUtil; import com.sun.javafx.embed.swing.SwingNodeHelper; import com.sun.javafx.scene.NodeHelper; -import sun.awt.UngrabEvent; -import sun.swing.JLightweightFrame; -import sun.swing.LightweightContent; + +import jdk.swing.interop.LightweightFrameWrapper; +import jdk.swing.interop.LightweightContentWrapper; +import jdk.swing.interop.DragSourceContextWrapper; import static javafx.stage.WindowEvent.WINDOW_HIDDEN; @@ -176,8 +176,8 @@ private int swingMinHeight; private volatile JComponent content; - private volatile JLightweightFrame lwFrame; - final JLightweightFrame getLightweightFrame() { return lwFrame; } + private volatile LightweightFrameWrapper lwFrame; + final LightweightFrameWrapper getLightweightFrame() { return lwFrame; } private NGExternalNode peer; @@ -331,21 +331,21 @@ } /** - * Calls JLightweightFrame.notifyDisplayChanged. + * Calls LightweightFrameWrapper.notifyDisplayChanged. * Must be called on EDT only. */ - private static OptionalMethod jlfNotifyDisplayChanged; - private static OptionalMethod jlfOverrideNativeWindowHandle; + private static OptionalMethod jlfNotifyDisplayChanged; + private static OptionalMethod jlfOverrideNativeWindowHandle; static { - jlfNotifyDisplayChanged = new OptionalMethod<>(JLightweightFrame.class, + jlfNotifyDisplayChanged = new OptionalMethod<>(LightweightFrameWrapper.class, "notifyDisplayChanged", Double.TYPE, Double.TYPE); if (!jlfNotifyDisplayChanged.isSupported()) { jlfNotifyDisplayChanged = new OptionalMethod<>( - JLightweightFrame.class,"notifyDisplayChanged", Integer.TYPE); + LightweightFrameWrapper.class,"notifyDisplayChanged", Integer.TYPE); } - jlfOverrideNativeWindowHandle = new OptionalMethod<>(JLightweightFrame.class, + jlfOverrideNativeWindowHandle = new OptionalMethod<>(LightweightFrameWrapper.class, "overrideNativeWindowHandle", Long.TYPE, Runnable.class); } @@ -359,7 +359,7 @@ lwFrame = null; } if (content != null) { - lwFrame = new JLightweightFrame(); + lwFrame = new LightweightFrameWrapper(); SwingNodeWindowFocusListener snfListener = new SwingNodeWindowFocusListener(this); @@ -559,7 +559,8 @@ private final EventHandler ungrabHandler = event -> { if (!skipBackwardUnrgabNotification) { if (lwFrame != null) { - AccessController.doPrivileged(new PostEventAction(new UngrabEvent(lwFrame))); + AccessController.doPrivileged(new PostEventAction( + lwFrame.createUngrabEvent(lwFrame))); } } }; @@ -673,11 +674,11 @@ } /** - * Calls JLightweightFrame.setHostBounds. + * Calls LightweightFrameWrapper.setHostBounds. * Must be called on EDT only. */ - private static final OptionalMethod jlfSetHostBounds = - new OptionalMethod<>(JLightweightFrame.class, "setHostBounds", + private static final OptionalMethod jlfSetHostBounds = + new OptionalMethod<>(LightweightFrameWrapper.class, "setHostBounds", Integer.TYPE, Integer.TYPE, Integer.TYPE, Integer.TYPE); private void locateLwFrame() { @@ -797,9 +798,9 @@ } private static class SwingNodeDisposer implements DisposerRecord { - JLightweightFrame lwFrame; + LightweightFrameWrapper lwFrame; - SwingNodeDisposer(JLightweightFrame ref) { + SwingNodeDisposer(LightweightFrameWrapper ref) { this.lwFrame = ref; } public void dispose() { @@ -838,7 +839,7 @@ } } - private static class SwingNodeContent implements LightweightContent { + private static class SwingNodeContent extends LightweightContentWrapper { private JComponent comp; private volatile FXDnD dnd; private WeakReference swingNodeRef; @@ -866,9 +867,7 @@ } } - // Note: we skip @Override annotation and implement both pre-hiDPI and post-hiDPI versions - // of the method for compatibility. - //@Override + @Override public void imageBufferReset(int[] data, int x, int y, int width, int height, int linestride) { imageBufferReset(data, x, y, width, height, linestride, 1); } @@ -879,7 +878,7 @@ swingNode.setImageBuffer(data, x, y, width, height, linestride, scale, scale); } } - //@Override + @Override public void imageBufferReset(int[] data, int x, int y, int width, int height, int linestride, double scaleX, double scaleY) { SwingNode swingNode = swingNodeRef.get(); if (swingNode != null) { @@ -984,7 +983,7 @@ } } - //@Override + @Override public synchronized T createDragGestureRecognizer( Class abstractRecognizerClass, DragSource ds, Component c, int srcActions, @@ -994,20 +993,20 @@ return dnd.createDragGestureRecognizer(abstractRecognizerClass, ds, c, srcActions, dgl); } - //@Override - public DragSourceContextPeer createDragSourceContextPeer(DragGestureEvent dge) throws InvalidDnDOperationException + @Override + public DragSourceContextWrapper createDragSourceContextPeer(DragGestureEvent dge) throws InvalidDnDOperationException { initDnD(); return dnd.createDragSourceContextPeer(dge); } - //@Override + @Override public void addDropTarget(DropTarget dt) { initDnD(); dnd.addDropTarget(dt); } - //@Override + @Override public void removeDropTarget(DropTarget dt) { initDnD(); dnd.removeDropTarget(dt); @@ -1049,7 +1048,7 @@ @Override public void handle(MouseEvent event) { - JLightweightFrame frame = lwFrame; + LightweightFrameWrapper frame = lwFrame; if (frame == null) { return; } @@ -1087,7 +1086,7 @@ int absX = (int) Math.round(event.getScreenX()); int absY = (int) Math.round(event.getScreenY()); java.awt.event.MouseEvent mouseEvent = - new java.awt.event.MouseEvent( + frame.createMouseEvent( frame, swingID, swingWhen, swingModifiers, relX, relY, absX, absY, event.getClickCount(), swingPopupTrigger, swingButton); @@ -1098,7 +1097,7 @@ private class SwingScrollEventHandler implements EventHandler { @Override public void handle(ScrollEvent event) { - JLightweightFrame frame = lwFrame; + LightweightFrameWrapper frame = lwFrame; if (frame == null) { return; } @@ -1122,7 +1121,7 @@ } } - private void sendMouseWheelEvent(Component source, double fxX, double fxY, int swingModifiers, double delta) { + private void sendMouseWheelEvent(LightweightFrameWrapper source, double fxX, double fxY, int swingModifiers, double delta) { int wheelRotation = (int) delta; int signum = (int) Math.signum(delta); if (signum * delta < 1) { @@ -1131,9 +1130,7 @@ int x = (int) Math.round(fxX); int y = (int) Math.round(fxY); MouseWheelEvent mouseWheelEvent = - new MouseWheelEvent(source, java.awt.event.MouseEvent.MOUSE_WHEEL, - System.currentTimeMillis(), swingModifiers, x, y, 0, 0, - 0, false, MouseWheelEvent.WHEEL_UNIT_SCROLL, 1 , -wheelRotation); + lwFrame.createMouseWheelEvent(source, swingModifiers, x, y, -wheelRotation); AccessController.doPrivileged(new PostEventAction(mouseWheelEvent)); } } @@ -1141,7 +1138,7 @@ private class SwingKeyEventHandler implements EventHandler { @Override public void handle(KeyEvent event) { - JLightweightFrame frame = lwFrame; + LightweightFrameWrapper frame = lwFrame; if (frame == null) { return; } @@ -1176,9 +1173,9 @@ } } long swingWhen = System.currentTimeMillis(); - java.awt.event.KeyEvent keyEvent = new java.awt.event.KeyEvent( - frame, swingID, swingWhen, swingModifiers, - swingKeyCode, swingChar); + java.awt.event.KeyEvent keyEvent = frame.createKeyEvent(frame, + swingID, swingWhen, swingModifiers, swingKeyCode, + swingChar); AccessController.doPrivileged(new PostEventAction(keyEvent)); } }