< prev index next >

modules/javafx.graphics/src/main/java/com/sun/javafx/tk/quantum/EmbeddedScene.java

Print this page
rev 10032 : 8143596: Ensure FXCanvas properly forwards SWT gesture events to its embedded scene.
Summary: Ensured SWT magnify, rotate, pan, and swipe events are properly forwarded to the embedded scene.
Reviewed-by: XXXX


 277     {
 278         Platform.runLater(() -> {
 279             AccessController.doPrivileged((PrivilegedAction<Void>) () -> {
 280                 if (sceneListener == null) {
 281                     return null;
 282                 }
 283                 // Click events are generated in Scene, so we don't expect them here
 284                 assert type != AbstractEvents.MOUSEEVENT_CLICKED;
 285                 EventType<MouseEvent> eventType = AbstractEvents.mouseIDToFXEventID(type);
 286                 sceneListener.mouseEvent(eventType, x, y, xAbs, yAbs,
 287                             AbstractEvents.mouseButtonToFXMouseButton(button),
 288                             popupTrigger, false, // do we know if it's synthesized? RT-20142
 289                             shift, ctrl, alt, meta,
 290                             primaryBtnDown, middleBtnDown, secondaryBtnDown);
 291                 return null;
 292             }, getAccessControlContext());
 293         });
 294     }
 295 
 296     @Override
 297     public void scrollEvent(final int type, final double scrollX, final double scrollY,



 298                             final double x, final double y,
 299                             final double xAbs, final double yAbs,
 300                             final boolean shift, final boolean ctrl, final boolean alt, final boolean meta) {

 301         {
 302             Platform.runLater(() -> {
 303                 AccessController.doPrivileged((PrivilegedAction<Void>) () -> {
 304                     if (sceneListener == null) {
 305                         return null;
 306                     }
 307                     sceneListener.scrollEvent(ScrollEvent.SCROLL, scrollX, scrollY, 0, 0, 40.0, 40.0,
 308                             0, 0, 0, 0, 0,
 309                             x, y, xAbs, yAbs, shift, ctrl, alt, meta, false, false);
 310                     return null;
 311                 }, getAccessControlContext());
 312             });
 313         }
 314     }
 315 
 316     @Override
 317     public void inputMethodEvent(final EventType<InputMethodEvent> type,
 318                                  final ObservableList<InputMethodTextRun> composed, final String committed,
 319                                  final int caretPosition) {
 320         Platform.runLater(() -> {
 321             AccessController.doPrivileged((PrivilegedAction<Void>) () -> {
 322                 if (sceneListener != null) {
 323                     sceneListener.inputMethodEvent(type, composed, committed, caretPosition);
 324                 }
 325                 return null;
 326             });
 327         });
 328     }
 329 


 347                     boolean shiftDown = (modifiers & AbstractEvents.MODIFIER_SHIFT) != 0;
 348                     boolean controlDown = (modifiers & AbstractEvents.MODIFIER_CONTROL) != 0;
 349                     boolean altDown = (modifiers & AbstractEvents.MODIFIER_ALT) != 0;
 350                     boolean metaDown = (modifiers & AbstractEvents.MODIFIER_META) != 0;
 351 
 352                     String str = new String(ch);
 353                     String text = str; // TODO: this must be a text like "HOME", "F1", or "A"
 354                     javafx.scene.input.KeyEvent keyEvent = new javafx.scene.input.KeyEvent(
 355                             AbstractEvents.keyIDToFXEventType(type),
 356                             str, text,
 357                             KeyCodeMap.valueOf(key),
 358                             shiftDown, controlDown, altDown, metaDown);
 359                     sceneListener.keyEvent(keyEvent);
 360                 }
 361                 return null;
 362             }, getAccessControlContext());
 363         });
 364     }
 365 
 366     @Override























































 367     public void setCursor(final Object cursor) {
 368         super.setCursor(cursor);
 369         host.setCursor((CursorFrame) cursor);
 370     }
 371 
 372     @Override
 373     public void setDragStartListener(HostDragStartListener l) {
 374         embeddedDnD.setDragStartListener(l);
 375     }
 376 
 377     @Override
 378     public EmbeddedSceneDTInterface createDropTarget() {
 379         return embeddedDnD.createDropTarget();
 380     }
 381 
 382     @Override
 383     public InputMethodRequests getInputMethodRequests() {
 384         return inputMethodRequests;
 385     }
 386 }


 277     {
 278         Platform.runLater(() -> {
 279             AccessController.doPrivileged((PrivilegedAction<Void>) () -> {
 280                 if (sceneListener == null) {
 281                     return null;
 282                 }
 283                 // Click events are generated in Scene, so we don't expect them here
 284                 assert type != AbstractEvents.MOUSEEVENT_CLICKED;
 285                 EventType<MouseEvent> eventType = AbstractEvents.mouseIDToFXEventID(type);
 286                 sceneListener.mouseEvent(eventType, x, y, xAbs, yAbs,
 287                             AbstractEvents.mouseButtonToFXMouseButton(button),
 288                             popupTrigger, false, // do we know if it's synthesized? RT-20142
 289                             shift, ctrl, alt, meta,
 290                             primaryBtnDown, middleBtnDown, secondaryBtnDown);
 291                 return null;
 292             }, getAccessControlContext());
 293         });
 294     }
 295 
 296     @Override
 297     public void scrollEvent(final int type,
 298                             final double scrollX, final double scrollY,
 299                             final double totalScrollX, final double totalScrollY,
 300                             double xMultiplier, double yMultiplier,
 301                             final double x, final double y,
 302                             final double xAbs, final double yAbs,
 303                             final boolean shift, final boolean ctrl, final boolean alt, final boolean meta,
 304                             final boolean inertia) {
 305         {
 306             Platform.runLater(() -> {
 307                 AccessController.doPrivileged((PrivilegedAction<Void>) () -> {
 308                     if (sceneListener == null) {
 309                         return null;
 310                     }
 311                     sceneListener.scrollEvent(AbstractEvents.scrollIDToFXEventType(type), scrollX, scrollY, totalScrollX, totalScrollY, xMultiplier, yMultiplier,
 312                             0, 0, 0, 0, 0, x, y, xAbs, yAbs, shift, ctrl, alt, meta, false, inertia);

 313                     return null;
 314                 }, getAccessControlContext());
 315             });
 316         }
 317     }
 318 
 319     @Override
 320     public void inputMethodEvent(final EventType<InputMethodEvent> type,
 321                                  final ObservableList<InputMethodTextRun> composed, final String committed,
 322                                  final int caretPosition) {
 323         Platform.runLater(() -> {
 324             AccessController.doPrivileged((PrivilegedAction<Void>) () -> {
 325                 if (sceneListener != null) {
 326                     sceneListener.inputMethodEvent(type, composed, committed, caretPosition);
 327                 }
 328                 return null;
 329             });
 330         });
 331     }
 332 


 350                     boolean shiftDown = (modifiers & AbstractEvents.MODIFIER_SHIFT) != 0;
 351                     boolean controlDown = (modifiers & AbstractEvents.MODIFIER_CONTROL) != 0;
 352                     boolean altDown = (modifiers & AbstractEvents.MODIFIER_ALT) != 0;
 353                     boolean metaDown = (modifiers & AbstractEvents.MODIFIER_META) != 0;
 354 
 355                     String str = new String(ch);
 356                     String text = str; // TODO: this must be a text like "HOME", "F1", or "A"
 357                     javafx.scene.input.KeyEvent keyEvent = new javafx.scene.input.KeyEvent(
 358                             AbstractEvents.keyIDToFXEventType(type),
 359                             str, text,
 360                             KeyCodeMap.valueOf(key),
 361                             shiftDown, controlDown, altDown, metaDown);
 362                     sceneListener.keyEvent(keyEvent);
 363                 }
 364                 return null;
 365             }, getAccessControlContext());
 366         });
 367     }
 368 
 369     @Override
 370     public void zoomEvent(final int type, final double zoomFactor, final double totalZoomFactor,
 371                           final double x, final double y, final double screenX, final double screenY,
 372                           boolean shift, boolean ctrl, boolean alt, boolean meta, boolean inertia)
 373     {
 374         Platform.runLater(() -> {
 375             AccessController.doPrivileged((PrivilegedAction<Void>) () -> {
 376                 if (sceneListener == null) {
 377                     return null;
 378                 }
 379                 sceneListener.zoomEvent(AbstractEvents.zoomIDToFXEventType(type),
 380                         zoomFactor, totalZoomFactor,
 381                         x, y, screenX, screenY,
 382                         shift, ctrl, alt, meta, false, inertia);
 383                 return null;
 384             }, getAccessControlContext());
 385         });
 386     }
 387 
 388     @Override
 389     public void rotateEvent(final int type, final double angle, final double totalAngle,
 390                           final double x, final double y, final double screenX, final double screenY,
 391                           boolean shift, boolean ctrl, boolean alt, boolean meta, boolean inertia)
 392     {
 393         Platform.runLater(() -> {
 394             AccessController.doPrivileged((PrivilegedAction<Void>) () -> {
 395                 if (sceneListener == null) {
 396                     return null;
 397                 }
 398                 sceneListener.rotateEvent(AbstractEvents.rotateIDToFXEventType(type),
 399                         angle, totalAngle,
 400                         x, y, screenX, screenY,
 401                         shift, ctrl, alt, meta, false, inertia);
 402                 return null;
 403             }, getAccessControlContext());
 404         });
 405     }
 406 
 407     @Override
 408     public void swipeEvent(final int type, final double x, final double y, final double screenX, final double screenY,
 409                             boolean shift, boolean ctrl, boolean alt, boolean meta)
 410     {
 411         Platform.runLater(() -> {
 412             AccessController.doPrivileged((PrivilegedAction<Void>) () -> {
 413                 if (sceneListener == null) {
 414                     return null;
 415                 }
 416                 sceneListener.swipeEvent(AbstractEvents.swipeIDToFXEventType(type),
 417                         0, x, y, screenX, screenY,
 418                         shift, ctrl, alt, meta, false);
 419                 return null;
 420             }, getAccessControlContext());
 421         });
 422     }
 423 
 424     @Override
 425     public void setCursor(final Object cursor) {
 426         super.setCursor(cursor);
 427         host.setCursor((CursorFrame) cursor);
 428     }
 429 
 430     @Override
 431     public void setDragStartListener(HostDragStartListener l) {
 432         embeddedDnD.setDragStartListener(l);
 433     }
 434 
 435     @Override
 436     public EmbeddedSceneDTInterface createDropTarget() {
 437         return embeddedDnD.createDropTarget();
 438     }
 439 
 440     @Override
 441     public InputMethodRequests getInputMethodRequests() {
 442         return inputMethodRequests;
 443     }
 444 }
< prev index next >