EmbeddedBrowserPrototypingJWebPane
Prototyping JWebPane integration (May/2009 - June/2009)
- uses Swing's default look and feel to render some HTML widgets (buttons, combo boxes etc) - this means the rendering looks different on different OS/LaF combinations and definitely does not render nice as native browsers
- noticeably slower rendering and page scrolling in comparison to a native browser solution
- experienced JVM crashes when playing with the prototype
- problems with keyboard input (e.g. ENTER in a search field did not work, TAB does not move keyboard focus between input fields)
- cookies are not persisted (e.g. login to netbeans.org websites does not work)
- no API for cookies management
- JavaScript support not working 100% (e.g. download page on netbeans.org does not detect and set your OS as the default target platform for the download)
- doesn't work well with some browser plugins, e.g. Flash (as of June 30th)
- doesn't allow manipulations with HTML document (no access to DOM tree) (as of June 30th)
- doesn't work on Windows Vista 64bit
- native binaries must be placed in netbeans/bin folder when running under Windows XP and in JDK's bin folder when running under Linux
- not possible to locate selected element in DOM tree (required to implement pop-up menu)
- no SVG support
- OutOfMemoryError when setting fontsize:
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space at java.awt.image.DataBufferByte.<init>(DataBufferByte.java:59) at java.awt.image.ComponentSampleModel.createDataBuffer(ComponentSampleModel.java:397) at sun.awt.image.ByteInterleavedRaster.<init>(ByteInterleavedRaster.java:72) at sun.awt.image.ByteInterleavedRaster.createCompatibleWritableRaster(ByteInterleavedRaster.java:1310) at java.awt.image.AffineTransformOp.createCompatibleDestImage(AffineTransformOp.java:448) at java.awt.image.AffineTransformOp.filter(AffineTransformOp.java:209) at org.webkit.webcore.platform.graphics.WCGraphics2DContext.drawPattern(WCGraphics2DContext.java:357) at org.webkit.webcore.platform.WCWidget.twkUpdateContents(Native Method) at org.webkit.webcore.platform.WidgetDelegate$2.run(WidgetDelegate.java:94) at org.webkit.webcore.platform.SimplifiedWebKitFlow.invokeAndWait(SimplifiedWebKitFlow.java:25) at org.webkit.webcore.platform.WidgetDelegate.paintComponent(WidgetDelegate.java:90) at javax.swing.JComponent.paint(JComponent.java:1027) at javax.swing.JComponent.paintChildren(JComponent.java:864) at javax.swing.JComponent.paint(JComponent.java:1036) at javax.swing.JViewport.paint(JViewport.java:747) at javax.swing.JComponent.paintChildren(JComponent.java:864) at javax.swing.JComponent.paint(JComponent.java:1036) at javax.swing.JComponent.paintChildren(JComponent.java:864) at javax.swing.JComponent.paint(JComponent.java:1036) at javax.swing.JComponent.paintChildren(JComponent.java:864) at javax.swing.JComponent.paint(JComponent.java:1036) at javax.swing.JComponent.paintChildren(JComponent.java:864) at javax.swing.JComponent.paint(JComponent.java:1036) at javax.swing.JComponent.paintChildren(JComponent.java:864) at javax.swing.JSplitPane.paintChildren(JSplitPane.java:1030) at javax.swing.JComponent.paint(JComponent.java:1036) at javax.swing.JComponent.paintChildren(JComponent.java:864) at javax.swing.JComponent.paint(JComponent.java:1036) at javax.swing.JComponent.paintChildren(JComponent.java:864) at javax.swing.JComponent.paint(JComponent.java:1036) at javax.swing.JLayeredPane.paint(JLayeredPane.java:564) at javax.swing.JComponent.paintChildren(JComponent.java:864)

