<AWT Dev> [8] Review request for CR 8006406: lightweight embedding in other Java UI toolkits

Anton V. Tarasov anton.tarasov at oracle.com
Fri Feb 8 09:27:15 PST 2013


Hi All,

Please, review the changes for the CR: 
http://bugs.sun.com/view_bug.do?bug_id=8006406

webrev: http://cr.openjdk.java.net/~ant/8006406/webrev.6

It introduces sun.swing.JLightweightFrame class, aimed at lightweight 
embedding of Swing components into java-based toolkits.
The primary target is JavaFX toolkit, however the class is not limited 
to this usage and the API it provides is quite generic.

Below I'm giving a link to the jfx side implementation. This 
implementation should not be reviewed in this thread (it is in a 
pre-review phase),
it should just clarify how the introduced API is supposed to be used. 
Namely, SwingNode.SwingNodeContent which implements
sun.swing.LightweightContent and forwards requests from 
sun.swing.JLightweightFrame to NGExternalNode which does the rendering.

webrev: http://cr.openjdk.java.net/~ant/RT-27887/webrev.1

Some comments on the awt/swing part:

- Only Win and Mac implementation is currently available, X11 will come 
lately.

- Win implementation uses a heavyweight window behind the lightweight 
frame, while it is not actually needed for lightweight embedding.
    This is due to the architecture of the Win AWT peers which are 
strongly tight to the native code, and it's not a trivial task to 
separate them.
    On Mac the lightweight frame peer is truly lightweight, meaning that 
it doesn't create an NSWindow object behind it. The Mac port LW abstraction
    allows to override and substitute CPlatform* classes with their 
lightweight stubs.

- LightweightFrame, among others, introduces two new methods - 
grabFocus() and ungrabFocus(boolean). Ideally, these methods should go to
    the super Window class where the grab API becomes public (which is a 
long-term project...). Current host of the grab API is SunToolkit, which
    now forwards the calls to LightweightFrame. This is necessary to 
intercommunicate with the client when grab/ungrab happens on both sides.

- Unresolved issues exist, like modal dialogs, d&d etc. They are to be 
addressed further.

Thanks,
Anton.




More information about the awt-dev mailing list