201 202 public static LWToolkit getLWToolkit() { 203 return (LWToolkit)Toolkit.getDefaultToolkit(); 204 } 205 206 // ---- TOPLEVEL PEERS ---- // 207 208 /* 209 * Note that LWWindowPeer implements WindowPeer, FramePeer 210 * and DialogPeer interfaces. 211 */ 212 private LWWindowPeer createDelegatedPeer(Window target, PlatformComponent platformComponent, 213 PlatformWindow platformWindow, LWWindowPeer.PeerType peerType) 214 { 215 LWWindowPeer peer = new LWWindowPeer(target, platformComponent, platformWindow, peerType); 216 targetCreatedPeer(target, peer); 217 peer.initialize(); 218 return peer; 219 } 220 221 @Override 222 public WindowPeer createWindow(Window target) { 223 PlatformComponent platformComponent = createPlatformComponent(); 224 PlatformWindow platformWindow = createPlatformWindow(LWWindowPeer.PeerType.SIMPLEWINDOW); 225 return createDelegatedPeer(target, platformComponent, platformWindow, LWWindowPeer.PeerType.SIMPLEWINDOW); 226 } 227 228 @Override 229 public FramePeer createFrame(Frame target) { 230 PlatformComponent platformComponent = createPlatformComponent(); 231 PlatformWindow platformWindow = createPlatformWindow(LWWindowPeer.PeerType.FRAME); 232 return createDelegatedPeer(target, platformComponent, platformWindow, LWWindowPeer.PeerType.FRAME); 233 } 234 235 public LWWindowPeer createEmbeddedFrame(CEmbeddedFrame target) { 236 PlatformComponent platformComponent = createPlatformComponent(); 237 PlatformWindow platformWindow = createPlatformWindow(LWWindowPeer.PeerType.EMBEDDED_FRAME); 238 return createDelegatedPeer(target, platformComponent, platformWindow, LWWindowPeer.PeerType.EMBEDDED_FRAME); 239 } 240 485 486 synchronized (this) { 487 if (clipboard == null) { 488 clipboard = createPlatformClipboard(); 489 } 490 } 491 return clipboard; 492 } 493 494 // ---- DELEGATES ---- // 495 496 public abstract Clipboard createPlatformClipboard(); 497 498 /* 499 * Creates a delegate for the given peer type (window, frame, dialog, etc.) 500 */ 501 protected abstract PlatformWindow createPlatformWindow(LWWindowPeer.PeerType peerType); 502 503 protected abstract PlatformComponent createPlatformComponent(); 504 505 protected abstract FileDialogPeer createFileDialogPeer(FileDialog target); 506 507 // ---- UTILITY METHODS ---- // 508 509 /* 510 * Expose non-public targetToPeer() method. 511 */ 512 public final static Object targetToPeer(Object target) { 513 return SunToolkit.targetToPeer(target); 514 } 515 516 /* 517 * Expose non-public targetDisposedPeer() method. 518 */ 519 public final static void targetDisposedPeer(Object target, Object peer) { 520 SunToolkit.targetDisposedPeer(target, peer); 521 } 522 523 /* 524 * Returns the current cursor manager. 525 */ 526 public abstract LWCursorManager getCursorManager(); 527 528 public static void postEvent(AWTEvent event) { 529 postEvent(targetToAppContext(event.getSource()), event); 530 } 531 532 @Override 533 public void grab(Window w) { 534 if (w.getPeer() != null) { 535 ((LWWindowPeer)w.getPeer()).grab(); 536 } 537 } 538 539 @Override 540 public void ungrab(Window w) { 541 if (w.getPeer() != null) { 542 ((LWWindowPeer)w.getPeer()).ungrab(false); 543 } 544 } 545 } | 201 202 public static LWToolkit getLWToolkit() { 203 return (LWToolkit)Toolkit.getDefaultToolkit(); 204 } 205 206 // ---- TOPLEVEL PEERS ---- // 207 208 /* 209 * Note that LWWindowPeer implements WindowPeer, FramePeer 210 * and DialogPeer interfaces. 211 */ 212 private LWWindowPeer createDelegatedPeer(Window target, PlatformComponent platformComponent, 213 PlatformWindow platformWindow, LWWindowPeer.PeerType peerType) 214 { 215 LWWindowPeer peer = new LWWindowPeer(target, platformComponent, platformWindow, peerType); 216 targetCreatedPeer(target, peer); 217 peer.initialize(); 218 return peer; 219 } 220 221 private LWLightweightFramePeer createDelegatedLwPeer(LightweightFrame target, 222 PlatformComponent platformComponent, 223 PlatformWindow platformWindow) 224 { 225 LWLightweightFramePeer peer = new LWLightweightFramePeer(target, platformComponent, platformWindow); 226 targetCreatedPeer(target, peer); 227 peer.initialize(); 228 return peer; 229 } 230 231 @Override 232 public FramePeer createLightweightFrame(LightweightFrame target) { 233 PlatformComponent platformComponent = createLwPlatformComponent(); 234 PlatformWindow platformWindow = createPlatformWindow(LWWindowPeer.PeerType.LW_FRAME); 235 return createDelegatedLwPeer(target, platformComponent, platformWindow); 236 } 237 238 @Override 239 public WindowPeer createWindow(Window target) { 240 PlatformComponent platformComponent = createPlatformComponent(); 241 PlatformWindow platformWindow = createPlatformWindow(LWWindowPeer.PeerType.SIMPLEWINDOW); 242 return createDelegatedPeer(target, platformComponent, platformWindow, LWWindowPeer.PeerType.SIMPLEWINDOW); 243 } 244 245 @Override 246 public FramePeer createFrame(Frame target) { 247 PlatformComponent platformComponent = createPlatformComponent(); 248 PlatformWindow platformWindow = createPlatformWindow(LWWindowPeer.PeerType.FRAME); 249 return createDelegatedPeer(target, platformComponent, platformWindow, LWWindowPeer.PeerType.FRAME); 250 } 251 252 public LWWindowPeer createEmbeddedFrame(CEmbeddedFrame target) { 253 PlatformComponent platformComponent = createPlatformComponent(); 254 PlatformWindow platformWindow = createPlatformWindow(LWWindowPeer.PeerType.EMBEDDED_FRAME); 255 return createDelegatedPeer(target, platformComponent, platformWindow, LWWindowPeer.PeerType.EMBEDDED_FRAME); 256 } 257 502 503 synchronized (this) { 504 if (clipboard == null) { 505 clipboard = createPlatformClipboard(); 506 } 507 } 508 return clipboard; 509 } 510 511 // ---- DELEGATES ---- // 512 513 public abstract Clipboard createPlatformClipboard(); 514 515 /* 516 * Creates a delegate for the given peer type (window, frame, dialog, etc.) 517 */ 518 protected abstract PlatformWindow createPlatformWindow(LWWindowPeer.PeerType peerType); 519 520 protected abstract PlatformComponent createPlatformComponent(); 521 522 protected abstract PlatformComponent createLwPlatformComponent(); 523 524 protected abstract FileDialogPeer createFileDialogPeer(FileDialog target); 525 526 // ---- UTILITY METHODS ---- // 527 528 /* 529 * Expose non-public targetToPeer() method. 530 */ 531 public final static Object targetToPeer(Object target) { 532 return SunToolkit.targetToPeer(target); 533 } 534 535 /* 536 * Expose non-public targetDisposedPeer() method. 537 */ 538 public final static void targetDisposedPeer(Object target, Object peer) { 539 SunToolkit.targetDisposedPeer(target, peer); 540 } 541 542 /* 543 * Returns the current cursor manager. 544 */ 545 public abstract LWCursorManager getCursorManager(); 546 547 public static void postEvent(AWTEvent event) { 548 postEvent(targetToAppContext(event.getSource()), event); 549 } 550 551 @Override 552 public void grab(Window w) { 553 // When grab/ungrab API is public, 554 // it should go through Window.grab(), 555 // not via SunToolkit.grab(Window). 556 if (w instanceof LightweightFrame) { 557 ((LightweightFrame)w).grabFocus(); 558 return; 559 } 560 if (w.getPeer() != null) { 561 ((LWWindowPeer)w.getPeer()).grab(); 562 } 563 } 564 565 @Override 566 public void ungrab(Window w) { 567 // When grab/ungrab API is public, 568 // it should go through Window.ungrab(boolean), 569 // not via SunToolkit.ungrab(Window). 570 if (w instanceof LightweightFrame) { 571 ((LightweightFrame)w).ungrabFocus(false); 572 return; 573 } 574 if (w.getPeer() != null) { 575 ((LWWindowPeer)w.getPeer()).ungrab(false); 576 } 577 } 578 } |