< prev index next >

modules/javafx.swing/src/main/java/javafx/embed/swing/SwingNode.java

Print this page

        

@@ -51,11 +51,10 @@
 import java.awt.dnd.DragGestureListener;
 import java.awt.dnd.DragGestureRecognizer;
 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;
 import java.awt.event.WindowFocusListener;
 import java.lang.reflect.Method;

@@ -78,13 +77,14 @@
 import com.sun.javafx.stage.WindowHelper;
 import com.sun.javafx.tk.TKStage;
 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;
 
 /**
  * This class is used to embed a Swing content into a JavaFX application.

@@ -174,12 +174,12 @@
     private int swingMaxHeight;
     private int swingMinWidth;
     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;
 
     private final ReentrantLock paintLock = new ReentrantLock();
 

@@ -329,25 +329,25 @@
             }
         }
     }
 
     /**
-     * Calls JLightweightFrame.notifyDisplayChanged.
+     * Calls LightweightFrameWrapper.notifyDisplayChanged.
      * Must be called on EDT only.
      */
-    private static OptionalMethod<JLightweightFrame> jlfNotifyDisplayChanged;
-    private static OptionalMethod<JLightweightFrame> jlfOverrideNativeWindowHandle;
+    private static OptionalMethod<LightweightFrameWrapper> jlfNotifyDisplayChanged;
+    private static OptionalMethod<LightweightFrameWrapper> 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);
 
     }
 
     /*

@@ -357,11 +357,11 @@
         if (lwFrame != null) {
             lwFrame.dispose();
             lwFrame = null;
         }
         if (content != null) {
-            lwFrame = new JLightweightFrame();
+            lwFrame = new LightweightFrameWrapper();
 
             SwingNodeWindowFocusListener snfListener =
                                  new SwingNodeWindowFocusListener(this);
             lwFrame.addWindowFocusListener(snfListener);
 

@@ -557,11 +557,12 @@
     };
 
     private final EventHandler<FocusUngrabEvent> ungrabHandler = event -> {
         if (!skipBackwardUnrgabNotification) {
             if (lwFrame != null) {
-                AccessController.doPrivileged(new PostEventAction(new UngrabEvent(lwFrame)));
+                AccessController.doPrivileged(new PostEventAction(
+                    lwFrame.createUngrabEvent(lwFrame)));
             }
         }
     };
 
     private final ChangeListener<Boolean> windowVisibleListener = (observable, oldValue, newValue) -> {

@@ -671,15 +672,15 @@
             peer.markContentDirty();
         }
     }
 
     /**
-     * Calls JLightweightFrame.setHostBounds.
+     * Calls LightweightFrameWrapper.setHostBounds.
      * Must be called on EDT only.
      */
-    private static final OptionalMethod<JLightweightFrame> jlfSetHostBounds =
-        new OptionalMethod<>(JLightweightFrame.class, "setHostBounds",
+    private static final OptionalMethod<LightweightFrameWrapper> jlfSetHostBounds =
+        new OptionalMethod<>(LightweightFrameWrapper.class, "setHostBounds",
                 Integer.TYPE, Integer.TYPE, Integer.TYPE, Integer.TYPE);
 
     private void locateLwFrame() {
         if (getScene() == null
                 || lwFrame == null

@@ -795,13 +796,13 @@
         tx.transform(bounds, bounds);
         return bounds;
     }
 
     private static class SwingNodeDisposer implements DisposerRecord {
-         JLightweightFrame lwFrame;
+         LightweightFrameWrapper lwFrame;
 
-         SwingNodeDisposer(JLightweightFrame ref) {
+         SwingNodeDisposer(LightweightFrameWrapper ref) {
              this.lwFrame = ref;
          }
          public void dispose() {
              if (lwFrame != null) {
                  lwFrame.dispose();

@@ -836,11 +837,11 @@
                 }
             });
         }
     }
 
-    private static class SwingNodeContent implements LightweightContent {
+    private static class SwingNodeContent extends LightweightContentWrapper {
         private JComponent comp;
         private volatile FXDnD dnd;
         private WeakReference<SwingNode> swingNodeRef;
 
         SwingNodeContent(JComponent comp, SwingNode swingNode) {

@@ -864,24 +865,22 @@
             if (swingNode != null) {
                 swingNode.paintLock.unlock();
             }
         }
 
-        // 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);
         }
         //@Override
         public void imageBufferReset(int[] data, int x, int y, int width, int height, int linestride, int scale) {
             SwingNode swingNode = swingNodeRef.get();
             if (swingNode != null) {
                 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) {
                 swingNode.setImageBuffer(data, x, y, width, height, linestride, scaleX, scaleY);
             }

@@ -982,34 +981,34 @@
                     }
                 }
             }
         }
 
-        //@Override
+        @Override
         public synchronized <T extends DragGestureRecognizer> T createDragGestureRecognizer(
                 Class<T> abstractRecognizerClass,
                 DragSource ds, Component c, int srcActions,
                 DragGestureListener dgl)
         {
             initDnD();
             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);
         }
     }

@@ -1047,11 +1046,11 @@
     private class SwingMouseEventHandler implements EventHandler<MouseEvent> {
         private final Set<MouseButton> mouseClickedAllowed = new HashSet<>();
 
         @Override
         public void handle(MouseEvent event) {
-            JLightweightFrame frame = lwFrame;
+            LightweightFrameWrapper frame = lwFrame;
             if (frame == null) {
                 return;
             }
             int swingID = SwingEvents.fxMouseEventTypeToMouseID(event);
             if (swingID < 0) {

@@ -1085,22 +1084,22 @@
             int relX = (int) Math.round(event.getX());
             int relY = (int) Math.round(event.getY());
             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);
             AccessController.doPrivileged(new PostEventAction(mouseEvent));
         }
     }
 
     private class SwingScrollEventHandler implements EventHandler<ScrollEvent> {
         @Override
         public void handle(ScrollEvent event) {
-            JLightweightFrame frame = lwFrame;
+            LightweightFrameWrapper frame = lwFrame;
             if (frame == null) {
                 return;
             }
 
             int swingModifiers = SwingEvents.fxScrollModsToMouseWheelMods(event);

@@ -1120,30 +1119,28 @@
                 sendMouseWheelEvent(frame, event.getX(), event.getY(),
                         swingModifiers, delta);
             }
         }
 
-        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) {
                 wheelRotation = signum;
             }
             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));
         }
     }
 
     private class SwingKeyEventHandler implements EventHandler<KeyEvent> {
         @Override
         public void handle(KeyEvent event) {
-            JLightweightFrame frame = lwFrame;
+            LightweightFrameWrapper frame = lwFrame;
             if (frame == null) {
                 return;
             }
             if (event.getCharacter().isEmpty()) {
                 // TODO: should we post an "empty" character?

@@ -1174,12 +1171,12 @@
                 if (text.length() == 1) {
                     swingChar = text.charAt(0);
                 }
             }
             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));
         }
     }
 }
< prev index next >