Meeting with AWT Team / Lightweight WebKit Developers
Attendees:
- Artem Ananiev
- Ed Burns
- Sandip Chitale
- Mark Dey
- Devananda Jayaraman
- Joelle Lam
- Winston Prakash
- Oleg Sukhodolsky
- Jayashari Visvanathan
Outcome:
In general it continues to remain clear the need for the two separate areas. Additionally, we who are trying to embedded XULRunner may be able to use features added to JDK7 (that can be backported) to dramatically increase the initial workload for embedding this browser.
Team Requirements Deltas: Why two efforts?
The lightweight WebKit work varies from the embedded browser work in that there are different (as some counter) requirements.
- Netbeans IDE Tools Requirements:
- Deep integration
- DHTML
- CSS
- JavaSCript running and Debugging.
- DOM Access and Editing
- Multiplatform Browser (this eliminates any use of IE).
- Does not need to be 100% lightweight, but must interact with our lightweight components.
- Must render like a target native browser. For it to render in it's own L&F would be a disadvantage.
- We need this ASAP.
- JavaFX Requirements:
- Requirement to use Webkit - Webkit (itself) is used on several mobile platforms (such as iPhone, S40, and S60).
- They want the browser to look exactly the same on all platforms. So re-implementation of primitive widgets required for better control of L&F.
- Must be 100% lightweight to have features like translucency.
- Immediate time frame is not necessary, a fully SWING browser will take some time.
Possibility of Forwarding Events
- Artem says that in the past he was able to easily forward events from the onscreen painting of the browser to the actual offscreen browser.
- Sandip could use this to make is DoppleGanger approach work with out bring forward the actual heavy-weight component.
JDK7.0 mixing of lightweight and heavyweight.
1.0 jdk7 will allow for the integration of lightweight and heavyweight.
- AWT does this but cutting any native window regions in which an opaque light weight component has a greater Z order.
- Joelle demo'ed last minute which demostrated drop down windows over the native browser with jdk7.0. It worked perfectly.
- To run it:
2.0 Availability on other JDKs
- this functionality may be backported to jdk6 update
- It is possible that it could also be backported to jdk5 if there is an escalation.
- A backport is not difficult since this requires no API changes, minimal implementation modifications and limited scope.
3.0 MAC?
- MAC only has JDK1.4 as of today.
- Even is someone happens to have JDK1.6 (MAC Leapord release) they still won't get the update.
- We did find out that Cocoa popups are all heavyweight and therefore all popups and drop down menus happen to show over the native widget, however, other components in cocoa are lightweight and therefore will show up in the necessary order.
- Options:
- Use the Doppleganger Approach for Mac only.
- It is possible to talk to Apple about an alternative solution in which they may be willing to embed Safari. They may have an API to support embedding in a light-weight manner.
- OR we could access their windows using a native implementation of CustomWindow in cocoa and use the same algorithm the AWT team is using at the higher level (for Mac Only).
- Demo of HeavyWeight vs. LightWeight interaction on Mac.
- Note: This shows that on Mac Popups are heavyweight components and can interact nicely with drop downs and popups. However, we still have an issues with lightweight components that need to drawn over it.
* Download the jar attached.
* java -jar "HWLWonMac.jar"
* Notice in the drop down menus clear drop over the Red AWT panel.
* But when you modify the screen size so that button "should" be over the Red Native regions, it will get painted beneath.
4.0 What about draggable components over a glasspane
- There are two options:
- Create an opaque panel within a transparent glass-pane in which you put your widget.
- With the appropriate escalation the AWT could provide a contracted interface in which we implement their interface and give them the opaque region to draw.