src/macosx/classes/sun/lwawt/LWToolkit.java
Print this page
@@ -216,10 +216,27 @@
targetCreatedPeer(target, peer);
peer.initialize();
return peer;
}
+ private LWLightweightFramePeer createDelegatedLwPeer(LightweightFrame target,
+ PlatformComponent platformComponent,
+ PlatformWindow platformWindow)
+ {
+ LWLightweightFramePeer peer = new LWLightweightFramePeer(target, platformComponent, platformWindow);
+ targetCreatedPeer(target, peer);
+ peer.initialize();
+ return peer;
+ }
+
+ @Override
+ public FramePeer createLightweightFrame(LightweightFrame target) {
+ PlatformComponent platformComponent = createLwPlatformComponent();
+ PlatformWindow platformWindow = createPlatformWindow(LWWindowPeer.PeerType.LW_FRAME);
+ return createDelegatedLwPeer(target, platformComponent, platformWindow);
+ }
+
@Override
public WindowPeer createWindow(Window target) {
PlatformComponent platformComponent = createPlatformComponent();
PlatformWindow platformWindow = createPlatformWindow(LWWindowPeer.PeerType.SIMPLEWINDOW);
return createDelegatedPeer(target, platformComponent, platformWindow, LWWindowPeer.PeerType.SIMPLEWINDOW);
@@ -500,10 +517,12 @@
*/
protected abstract PlatformWindow createPlatformWindow(LWWindowPeer.PeerType peerType);
protected abstract PlatformComponent createPlatformComponent();
+ protected abstract PlatformComponent createLwPlatformComponent();
+
protected abstract FileDialogPeer createFileDialogPeer(FileDialog target);
// ---- UTILITY METHODS ---- //
/*
@@ -529,17 +548,31 @@
postEvent(targetToAppContext(event.getSource()), event);
}
@Override
public void grab(Window w) {
+ // When grab/ungrab API is public,
+ // it should go through Window.grab(),
+ // not via SunToolkit.grab(Window).
+ if (w instanceof LightweightFrame) {
+ ((LightweightFrame)w).grabFocus();
+ return;
+ }
if (w.getPeer() != null) {
((LWWindowPeer)w.getPeer()).grab();
}
}
@Override
public void ungrab(Window w) {
+ // When grab/ungrab API is public,
+ // it should go through Window.ungrab(boolean),
+ // not via SunToolkit.ungrab(Window).
+ if (w instanceof LightweightFrame) {
+ ((LightweightFrame)w).ungrabFocus(false);
+ return;
+ }
if (w.getPeer() != null) {
((LWWindowPeer)w.getPeer()).ungrab(false);
}
}
}