From pavel.porvatov at sun.com Thu May 1 10:50:59 2008 From: pavel.porvatov at sun.com (pavel.porvatov at sun.com) Date: Thu, 01 May 2008 10:50:59 +0000 Subject: hg: jdk7/swing/jdk: 6688203: Memory leak and performance problems in the method getFileSystemView of FileSystemView Message-ID: <20080501105117.8094427B1E@hg.openjdk.java.net> Changeset: 06916e21e10f Author: rupashka Date: 2008-05-01 14:47 +0400 URL: http://hg.openjdk.java.net/jdk7/swing/jdk/rev/06916e21e10f 6688203: Memory leak and performance problems in the method getFileSystemView of FileSystemView Summary: Removed from the "FileSystemView#getFileSystemView" method creation of a new listener and adding it to UIManager Reviewed-by: peterz ! src/share/classes/javax/swing/filechooser/FileSystemView.java + test/javax/swing/JFileChooser/6688203/bug6688203.java From linuxhippy at gmail.com Sat May 3 15:00:44 2008 From: linuxhippy at gmail.com (Clemens Eisserer) Date: Sat, 3 May 2008 17:00:44 +0200 Subject: Inefficiencies with custom TableCellRenderer and Applets Message-ID: <194f62550805030800tad50359racbcfbec30230de9@mail.gmail.com> Hi, I've created a library which has to use custom TableCellRenderers for its tables. I experienced a large performance difference between running my application as Application inside an JFrame and as an JApplet. Parented inside of the JFrame scrolling the table was smooth, however scrolling inside the applet was slow, especially if the mouse is over the table while scrolling. I did some profiling with netbeans-profiler and found the root-cause: BasicTableUI.paintCell->CellRendererPane.paintComponent->Container.validate->Component.updateCursorImmediatly->GlobalCursorManager.updateCursorImmediatly()->_updateCursor.... The updateCursorImmediatly was called both times about 16.000 times, with JFrame it consumed 22% of the cycles which is already inefficient. As JApplet it calls into getLocationOnScreen() which calls down till XBaseWindow.toOtherWindow even slower which is about as slow as updating the Cursor itself, so as applet it consumes 48% of all EDT cycles. The DefaultTableCellRenderer simply overrides validate with an empty method, therefor no such calls are done. But why does CellRendererPane.paintComponent() call validate at all? If it cannot be avoided, is there no way to cache stuff in XBaseWindow.toOtherWindow at all? Thanks, lg Clemens Very simple TableCellRenderer which triggers the slowness: JLabel renderer = new JLabel(); public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { renderer.setText((String)value); renderer.setOpaque(true); return renderer; } From sergey.malenkov at sun.com Wed May 7 13:33:17 2008 From: sergey.malenkov at sun.com (sergey.malenkov at sun.com) Date: Wed, 07 May 2008 13:33:17 +0000 Subject: hg: jdk7/swing/jdk: 6625450: javax.swing.border.TitledBorder.getBaseline() doesn't throw IAE when width is < 0 Message-ID: <20080507133330.4D23827DB2@hg.openjdk.java.net> Changeset: c25ed95b96a8 Author: malenkov Date: 2008-05-07 16:08 +0400 URL: http://hg.openjdk.java.net/jdk7/swing/jdk/rev/c25ed95b96a8 6625450: javax.swing.border.TitledBorder.getBaseline() doesn't throw IAE when width is < 0 Summary: necessary check is added Reviewed-by: peterz, alexp ! src/share/classes/javax/swing/border/TitledBorder.java + test/javax/swing/border/Test6625450.java From pavel.porvatov at sun.com Wed May 7 16:31:10 2008 From: pavel.porvatov at sun.com (pavel.porvatov at sun.com) Date: Wed, 07 May 2008 16:31:10 +0000 Subject: hg: jdk7/swing/jdk: 6635277: Incorrect text seen when creating a new folder, when selection is on the image file in JFileChooser Message-ID: <20080507163124.CCF4627DCF@hg.openjdk.java.net> Changeset: 4cf10bc1973d Author: rupashka Date: 2008-05-07 20:26 +0400 URL: http://hg.openjdk.java.net/jdk7/swing/jdk/rev/4cf10bc1973d 6635277: Incorrect text seen when creating a new folder, when selection is on the image file in JFileChooser Summary: Corrected bounds of editor area Reviewed-by: loneid ! src/share/classes/sun/swing/FilePane.java From sergey.malenkov at sun.com Wed May 7 17:57:20 2008 From: sergey.malenkov at sun.com (sergey.malenkov at sun.com) Date: Wed, 07 May 2008 17:57:20 +0000 Subject: hg: jdk7/swing/jdk: 6348456: BasicColorChooserUI ignores JColorChooser selection model changes Message-ID: <20080507175744.3164F27DE3@hg.openjdk.java.net> Changeset: 56cae54e668c Author: malenkov Date: 2008-05-07 21:54 +0400 URL: http://hg.openjdk.java.net/jdk7/swing/jdk/rev/56cae54e668c 6348456: BasicColorChooserUI ignores JColorChooser selection model changes Summary: Some methods are moved from AbstractColorChooserPanel to BasicColorChooserUI Reviewed-by: peterz, alexp ! src/share/classes/javax/swing/colorchooser/AbstractColorChooserPanel.java ! src/share/classes/javax/swing/plaf/basic/BasicColorChooserUI.java + test/javax/swing/JColorChooser/Test6348456.html + test/javax/swing/JColorChooser/Test6348456.java From sergey.malenkov at sun.com Wed May 7 19:20:39 2008 From: sergey.malenkov at sun.com (sergey.malenkov at sun.com) Date: Wed, 07 May 2008 19:20:39 +0000 Subject: hg: jdk7/swing/jdk: 4935607: RFE: LTP: Should be possible to set the TRANSIENT attribute of propertiies to FALSE Message-ID: <20080507192053.6C4A327DEE@hg.openjdk.java.net> Changeset: 5bcff22d837d Author: malenkov Date: 2008-05-07 23:20 +0400 URL: http://hg.openjdk.java.net/jdk7/swing/jdk/rev/5bcff22d837d 4935607: RFE: LTP: Should be possible to set the TRANSIENT attribute of propertiies to FALSE Summary: Add the Transient annotation and support it (JSR-273) Reviewed-by: peterz, loneid ! src/share/classes/java/awt/Component.java ! src/share/classes/java/awt/Dimension.java ! src/share/classes/java/awt/Point.java ! src/share/classes/java/awt/Rectangle.java ! src/share/classes/java/awt/ScrollPane.java ! src/share/classes/java/awt/geom/RectangularShape.java ! src/share/classes/java/awt/im/InputContext.java ! src/share/classes/java/beans/DefaultPersistenceDelegate.java ! src/share/classes/java/beans/EventSetDescriptor.java ! src/share/classes/java/beans/FeatureDescriptor.java ! src/share/classes/java/beans/IndexedPropertyDescriptor.java ! src/share/classes/java/beans/MetaData.java ! src/share/classes/java/beans/PropertyDescriptor.java + src/share/classes/java/beans/Transient.java ! src/share/classes/javax/swing/AbstractButton.java ! src/share/classes/javax/swing/DefaultListSelectionModel.java ! src/share/classes/javax/swing/ImageIcon.java ! src/share/classes/javax/swing/JComboBox.java ! src/share/classes/javax/swing/JComponent.java ! src/share/classes/javax/swing/JLabel.java ! src/share/classes/javax/swing/JList.java ! src/share/classes/javax/swing/JMenuBar.java ! src/share/classes/javax/swing/JScrollPane.java ! src/share/classes/javax/swing/JTabbedPane.java ! src/share/classes/javax/swing/JViewport.java ! src/share/classes/javax/swing/table/JTableHeader.java ! src/share/classes/javax/swing/text/JTextComponent.java ! test/java/beans/Introspector/BeanUtils.java ! test/java/beans/Introspector/Test4896879.java + test/java/beans/Introspector/Test4935607.java + test/java/beans/XMLEncoder/Test4935607.java From fbrunnerlist at gmx.ch Tue May 13 21:36:43 2008 From: fbrunnerlist at gmx.ch (Florian Brunner) Date: Tue, 13 May 2008 23:36:43 +0200 Subject: [PATCH] 6179357-related: warnings removal In-Reply-To: <481720DC.1060900@gmx.ch> References: <200708262033.16074.fbrunnerlist@gmx.ch> <48171C78.9070403@sun.com> <481720DC.1060900@gmx.ch> Message-ID: <200805132336.44357.fbrunnerlist@gmx.ch> Hi Pavel, it took a little longer than I thought, but now I've updated my patches to base on http://hg.openjdk.java.net/jdk7/swing/jdk and removed all the tabs. Unfortunatly it wasn't easily possible to port all patches. So I send here the big part and after integration I will try to remove some of the other warnings again before I start with adding generics to the Swing framework. When compiling with -Xlint -J-Xms80m -J-Xmx256m -Xlint:-serial -Xlint:-deprecation -Xlint:-fallthrough -Xmaxwarns 2300 this patch reduces the number of reported warnings from 1263 to 240. Again, I tried only to change things related to the warnings and not to change any public or protected APIs in public or protected classes in this patch. At many places I tried to add type parameters as meaningful as possible, but with some cases I just used Object, if a more meaningful type parameter was not so trivial. You might want to refactor this if needed. (Though everything should work as it is.) -Florian Am Dienstag, 29. April 2008 schrieb Florian Brunner: > Hi Pavel, > > > Send me all remaining fixes at once. I changed my opinion because > > 1. I don't want to produce a lot of CRs for every part of fix > > 2. I'm going to do a small correction (if needed of course) in your > > fix myself. It'll save a lot of our time > > Ok, great, I will do that as soon as I find some spare time (probably > during the coming long week-end). > > -Florian -------------- next part -------------- A non-text attachment was scrubbed... Name: swing-patch-20080513-warnings.tar.gz Type: application/x-tgz Size: 63640 bytes Desc: not available URL: From Ben.Loud at rlmgroup.com.au Wed May 14 01:10:41 2008 From: Ben.Loud at rlmgroup.com.au (Ben Loud) Date: Wed, 14 May 2008 10:40:41 +0930 Subject: [PATCH] 6695389: Vertical scrollbar should occupy empty top corner space Message-ID: <993F95453DDC3643B662C62D8D2D4ED56742E1@srv013.rlmgroup.com.au> This patch is for 6695389 which I submitted recently. I saw that a new L&F property "ScrollPane.fillUpperCorner" was added recently for the GTK L&F. Windows also fills the upper corner, see any native file chooser in details view for example. This patch just sets this property to TRUE for Windows so we match this behaviour. If there's no objection, I'd be in favour if setting this for all of the look and feels, including Metal. It just looks odd with the gap there. This is my first attempt at a patch. If all goes well, I have quite a few minor visual tweaks like this that I'd like to fix, mostly for the Windows L&F. -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: export.txt URL: From Pavel.Porvatov at Sun.COM Wed May 14 07:30:49 2008 From: Pavel.Porvatov at Sun.COM (Pavel Porvatov) Date: Wed, 14 May 2008 11:30:49 +0400 Subject: [PATCH] 6179357-related: warnings removal In-Reply-To: <200805132336.44357.fbrunnerlist@gmx.ch> References: <200708262033.16074.fbrunnerlist@gmx.ch> <48171C78.9070403@sun.com> <481720DC.1060900@gmx.ch> <200805132336.44357.fbrunnerlist@gmx.ch> Message-ID: <482A9529.4060508@sun.com> Hi Florian, Great! I'll start work on it shortly. Thanks, Pavel. > Hi Pavel, > > it took a little longer than I thought, but now I've updated my patches to > base on http://hg.openjdk.java.net/jdk7/swing/jdk and removed all the tabs. > > Unfortunatly it wasn't easily possible to port all patches. So I send here the > big part and after integration I will try to remove some of the other > warnings again before I start with adding generics to the Swing framework. > > When compiling with > -Xlint -J-Xms80m -J-Xmx256m -Xlint:-serial -Xlint:-deprecation -Xlint:-fallthrough -Xmaxwarns > 2300 > this patch reduces the number of reported warnings from 1263 to 240. > > Again, I tried only to change things related to the warnings and not to change > any public or protected APIs in public or protected classes in this patch. > > At many places I tried to add type parameters as meaningful as possible, > but with some cases I just used Object, if a more meaningful type > parameter was not so trivial. You might want to refactor this if needed. > (Though everything should work as it is.) > > -Florian > > Am Dienstag, 29. April 2008 schrieb Florian Brunner: >> Hi Pavel, >> >>> Send me all remaining fixes at once. I changed my opinion because >>> 1. I don't want to produce a lot of CRs for every part of fix >>> 2. I'm going to do a small correction (if needed of course) in your >>> fix myself. It'll save a lot of our time >> Ok, great, I will do that as soon as I find some spare time (probably >> during the coming long week-end). >> >> -Florian > From mikhail.lapshin at sun.com Thu May 15 08:31:09 2008 From: mikhail.lapshin at sun.com (mikhail.lapshin at sun.com) Date: Thu, 15 May 2008 08:31:09 +0000 Subject: hg: jdk7/swing/jdk: 37 new changesets Message-ID: <20080515083845.959832812A@hg.openjdk.java.net> Changeset: de9e902b1f24 Author: dav Date: 2008-03-24 18:24 +0300 URL: http://hg.openjdk.java.net/jdk7/swing/jdk/rev/de9e902b1f24 6638872: invalid links Summary: removed invalid links Reviewed-by: dcherepanov ! src/share/classes/java/awt/event/TextEvent.java ! src/share/classes/java/awt/event/TextListener.java Changeset: 58c90502785d Author: dav Date: 2008-03-25 15:16 +0300 URL: http://hg.openjdk.java.net/jdk7/swing/jdk/rev/58c90502785d 6610244: modal dialog closes with fatal error if -Xcheck:jni is set Summary: obtain WWindowPeer class every time it is required Reviewed-by: art ! src/windows/native/sun/windows/awt_Dialog.cpp ! src/windows/native/sun/windows/awt_Window.cpp ! src/windows/native/sun/windows/awt_Window.h + test/java/awt/Dialog/CrashXCheckJni/CrashXCheckJni.java Changeset: f72baf3b4419 Author: ant Date: 2008-03-24 15:51 +0300 URL: http://hg.openjdk.java.net/jdk7/swing/jdk/rev/f72baf3b4419 6637607: 1st char. is discarded after a modal dialogue shows up and disappears Summary: Reset consuming next KEY_TYPED on every subsequent KEY_PRESS. Reviewed-by: son ! src/share/classes/java/awt/DefaultKeyboardFocusManager.java ! src/windows/native/sun/windows/awt_Component.cpp + test/java/awt/Focus/ConsumeNextKeyTypedOnModalShowTest/ConsumeNextKeyTypedOnModalShowTest.java Changeset: 8b34e2cde06f Author: ant Date: 2008-03-25 18:08 +0300 URL: http://hg.openjdk.java.net/jdk7/swing/jdk/rev/8b34e2cde06f 6613426: two WM_TAKE_FOCUS messages on one mouse click in GNOME Metacity 2.16.0 Summary: A workaround to the metacity issue 485016. Reviewed-by: son ! src/solaris/classes/sun/awt/X11/XDecoratedPeer.java Changeset: 401d820d0b4a Author: ant Date: 2008-03-25 18:14 +0300 URL: http://hg.openjdk.java.net/jdk7/swing/jdk/rev/401d820d0b4a Merge Changeset: c58ca64469bb Author: anthony Date: 2008-03-27 11:08 +0300 URL: http://hg.openjdk.java.net/jdk7/swing/jdk/rev/c58ca64469bb 6603312: Segmentation fault running java -jar SwingSet2.jar in 256 color mode Summary: Force hiding the splashscreen if the code cannot allocate a reasonable number of color cells on PseudoColor displays Reviewed-by: son, art ! src/solaris/native/sun/awt/splashscreen/splashscreen_sys.c Changeset: 3b0cd0389985 Author: ant Date: 2008-03-26 16:20 +0300 URL: http://hg.openjdk.java.net/jdk7/swing/jdk/rev/3b0cd0389985 6680135: A number of test/closed/java/awt/Focus/* tests should be opened Summary: The tests moved from the closed repository. Reviewed-by: son + test/java/awt/Focus/ActualFocusedWindowTest/ActualFocusedWindowBlockingTest.java + test/java/awt/Focus/ActualFocusedWindowTest/ActualFocusedWindowRetaining.java + test/java/awt/Focus/AppletInitialFocusTest/AppletInitialFocusTest.html + test/java/awt/Focus/AppletInitialFocusTest/AppletInitialFocusTest.java + test/java/awt/Focus/AppletInitialFocusTest/AppletInitialFocusTest1.html + test/java/awt/Focus/AppletInitialFocusTest/AppletInitialFocusTest1.java + test/java/awt/Focus/FrameJumpingToMouse/FrameJumpingToMouse.java + test/java/awt/Focus/NonFocusableWindowTest/NonfocusableOwnerTest.java + test/java/awt/Focus/NonFocusableWindowTest/Test.java + test/java/awt/Focus/TypeAhead/TestFocusFreeze.java + test/java/awt/Focus/WrongKeyTypedConsumedTest/WrongKeyTypedConsumedTest.java Changeset: 72a4f94cd2f7 Author: ant Date: 2008-03-26 16:56 +0300 URL: http://hg.openjdk.java.net/jdk7/swing/jdk/rev/72a4f94cd2f7 6609607: test/closed/java/awt/Focus/AppletInitialFocusTest should be rewritten Summary: Using test.java.awt.regtesthelpers.Util. Refactoring. Reviewed-by: volk ! test/java/awt/Focus/AppletInitialFocusTest/AppletInitialFocusTest.html ! test/java/awt/Focus/AppletInitialFocusTest/AppletInitialFocusTest.java ! test/java/awt/Focus/AppletInitialFocusTest/AppletInitialFocusTest1.html ! test/java/awt/Focus/AppletInitialFocusTest/AppletInitialFocusTest1.java Changeset: 4a6dd11fe9fc Author: ant Date: 2008-03-26 17:38 +0300 URL: http://hg.openjdk.java.net/jdk7/swing/jdk/rev/4a6dd11fe9fc 6616792: five AWT focus regression tests should be fixed Summary: Fixed/refactored the tests. Reviewed-by: volk ! test/java/awt/Focus/ActualFocusedWindowTest/ActualFocusedWindowBlockingTest.java ! test/java/awt/Focus/ActualFocusedWindowTest/ActualFocusedWindowRetaining.java ! test/java/awt/Focus/FrameJumpingToMouse/FrameJumpingToMouse.java + test/java/awt/Focus/NonFocusableWindowTest/NoEventsTest.java ! test/java/awt/Focus/NonFocusableWindowTest/NonfocusableOwnerTest.java - test/java/awt/Focus/NonFocusableWindowTest/Test.java ! test/java/awt/Focus/TypeAhead/TestFocusFreeze.java ! test/java/awt/Focus/WrongKeyTypedConsumedTest/WrongKeyTypedConsumedTest.java Changeset: 5d98f1b8a6bb Author: ant Date: 2008-03-27 11:35 +0300 URL: http://hg.openjdk.java.net/jdk7/swing/jdk/rev/5d98f1b8a6bb Merge Changeset: c2252f113414 Author: dav Date: 2008-03-25 16:23 +0300 URL: http://hg.openjdk.java.net/jdk7/swing/jdk/rev/c2252f113414 6255653: REGRESSION: Override isLightweight() causes access violation in awt.dll Summary: verufy that the component to restack is a HW component by checking for instanceof WComponentPeer Reviewed-by: son, anthony ! src/windows/classes/sun/awt/windows/WPanelPeer.java + test/java/awt/Component/isLightweightCrash/IsLightweightCrash.java + test/java/awt/Component/isLightweightCrash/StubPeerCrash.java Changeset: 6e2a17c648a4 Author: dav Date: 2008-03-27 12:31 +0300 URL: http://hg.openjdk.java.net/jdk7/swing/jdk/rev/6e2a17c648a4 Merge Changeset: 4a06c0b6fdef Author: yan Date: 2008-03-28 03:06 -0700 URL: http://hg.openjdk.java.net/jdk7/swing/jdk/rev/4a06c0b6fdef Merge Changeset: ada64880c5d0 Author: dcherepanov Date: 2008-03-31 15:41 +0400 URL: http://hg.openjdk.java.net/jdk7/swing/jdk/rev/ada64880c5d0 6508505: JComboBox collapses immediately if it is placed to embedded frame Summary: XWindowPeer should translate absolute coordinates to local Reviewed-by: son ! src/solaris/classes/sun/awt/X11/XWindowPeer.java Changeset: b0bc376a5360 Author: dcherepanov Date: 2008-03-31 15:56 +0400 URL: http://hg.openjdk.java.net/jdk7/swing/jdk/rev/b0bc376a5360 6637204: TrayIcon.displayMessage fails to show icon twice Summary: the icon canvas should be validated to finalize its layout Reviewed-by: ant ! src/solaris/classes/sun/awt/X11/XTrayIconPeer.java Changeset: 908cab7b2f1c Author: anthony Date: 2008-04-01 17:38 +0400 URL: http://hg.openjdk.java.net/jdk7/swing/jdk/rev/908cab7b2f1c 6681889: JSN security test headline/noWarningApp failed with NPE exception Summary: The java.awt.Component.changeSupportLock field should be initialized in the readObject() method. Reviewed-by: son, art ! src/share/classes/java/awt/Component.java + test/java/awt/Window/PropertyChangeListenerLockSerialization/PropertyChangeListenerLockSerialization.java Changeset: 58b6b665424a Author: son Date: 2008-04-02 17:45 +0400 URL: http://hg.openjdk.java.net/jdk7/swing/jdk/rev/58b6b665424a 6677332: incorrect signatures for JNI methods in XWindow.c and XlibWrapper.c Summary: int replaced with jint in XWindow.c and WlibWrapper.c, and BOOL replaced with Bool in MouseInfo.c. Reviewed-by: anthony Contributed-by: roman.kennke at aicas.com ! src/solaris/native/sun/awt/MouseInfo.c ! src/solaris/native/sun/xawt/XWindow.c ! src/solaris/native/sun/xawt/XlibWrapper.c Changeset: a1bef1a012e0 Author: dcherepanov Date: 2008-04-03 15:00 +0400 URL: http://hg.openjdk.java.net/jdk7/swing/jdk/rev/a1bef1a012e0 6619458: testcase depends on a file with the name te{st.html Summary: using test.html instead of te{st.html in reg test Reviewed-by: son + test/java/awt/appletviewer/IOExceptionIfEncodedURLTest/IOExceptionIfEncodedURLTest.java + test/java/awt/appletviewer/IOExceptionIfEncodedURLTest/IOExceptionIfEncodedURLTest.sh + test/java/awt/appletviewer/IOExceptionIfEncodedURLTest/test.html Changeset: e80d1e36f553 Author: dcherepanov Date: 2008-04-03 15:48 +0400 URL: http://hg.openjdk.java.net/jdk7/swing/jdk/rev/e80d1e36f553 6615015: Typo in javadoc for Component.getTreeLock() Summary: fix for typo Reviewed-by: son ! src/share/classes/java/awt/Component.java Changeset: 9ca7032ada2b Author: dav Date: 2008-04-04 20:20 +0400 URL: http://hg.openjdk.java.net/jdk7/swing/jdk/rev/9ca7032ada2b 6573289: api/java_awt/Color/index.html#CreateContextTesttestCase4,5,6,7 fail since JDK 7 b14 Summary: specify current behavior - not caching the painting context Reviewed-by: flar, son ! src/share/classes/java/awt/Color.java ! src/share/classes/java/awt/GradientPaint.java ! src/share/classes/java/awt/LinearGradientPaint.java ! src/share/classes/java/awt/Paint.java ! src/share/classes/java/awt/RadialGradientPaint.java ! src/share/classes/java/awt/TexturePaint.java Changeset: 5c5a54b9d08d Author: dav Date: 2008-04-04 20:32 +0400 URL: http://hg.openjdk.java.net/jdk7/swing/jdk/rev/5c5a54b9d08d Merge Changeset: 664def01b886 Author: dav Date: 2008-04-07 14:53 +0400 URL: http://hg.openjdk.java.net/jdk7/swing/jdk/rev/664def01b886 6613529: Avoid duplicate object creation within JDK packages Summary: avoid using constructors when unique values are not necessary Reviewed-by: volk, igor, peterz ! src/share/classes/com/sun/imageio/plugins/gif/GIFImageReader.java ! src/share/classes/com/sun/imageio/plugins/gif/GIFWritableImageMetadata.java ! src/share/classes/com/sun/java/swing/plaf/gtk/GTKColorChooserPanel.java ! src/share/classes/com/sun/java/swing/plaf/gtk/GTKLookAndFeel.java ! src/share/classes/com/sun/java/swing/plaf/gtk/GTKStyle.java ! src/share/classes/com/sun/java/swing/plaf/gtk/Metacity.java ! src/share/classes/com/sun/java/swing/plaf/motif/MotifLookAndFeel.java ! src/share/classes/com/sun/java/swing/plaf/windows/WindowsLookAndFeel.java ! src/share/classes/java/awt/Button.java ! src/share/classes/java/awt/MenuItem.java ! src/share/classes/java/awt/datatransfer/SystemFlavorMap.java ! src/share/classes/java/awt/image/BufferedImage.java ! src/share/classes/java/text/DictionaryBasedBreakIterator.java ! src/share/classes/java/text/MessageFormat.java ! src/share/classes/javax/imageio/stream/ImageInputStreamImpl.java ! src/share/classes/javax/swing/AbstractButton.java ! src/share/classes/javax/swing/DebugGraphicsInfo.java ! src/share/classes/javax/swing/JInternalFrame.java ! src/share/classes/javax/swing/JOptionPane.java ! src/share/classes/javax/swing/JProgressBar.java ! src/share/classes/javax/swing/JScrollBar.java ! src/share/classes/javax/swing/JSlider.java ! src/share/classes/javax/swing/JSplitPane.java ! src/share/classes/javax/swing/JTabbedPane.java ! src/share/classes/javax/swing/JTable.java ! src/share/classes/javax/swing/JTextArea.java ! src/share/classes/javax/swing/SpinnerNumberModel.java ! src/share/classes/javax/swing/TablePrintable.java ! src/share/classes/javax/swing/plaf/basic/BasicButtonUI.java ! src/share/classes/javax/swing/plaf/basic/BasicLookAndFeel.java ! src/share/classes/javax/swing/plaf/basic/BasicMenuItemUI.java ! src/share/classes/javax/swing/plaf/basic/BasicOptionPaneUI.java ! src/share/classes/javax/swing/plaf/basic/BasicTabbedPaneUI.java ! src/share/classes/javax/swing/plaf/basic/BasicToolBarUI.java ! src/share/classes/javax/swing/plaf/metal/MetalLookAndFeel.java ! src/share/classes/javax/swing/plaf/synth/SynthArrowButton.java ! src/share/classes/javax/swing/plaf/synth/SynthDesktopPaneUI.java ! src/share/classes/javax/swing/plaf/synth/SynthSplitPaneUI.java ! src/share/classes/javax/swing/table/TableColumn.java ! src/share/classes/javax/swing/text/AbstractDocument.java ! src/share/classes/javax/swing/text/NumberFormatter.java ! src/share/classes/javax/swing/text/PlainDocument.java ! src/share/classes/javax/swing/text/Segment.java ! src/share/classes/javax/swing/text/StyleConstants.java ! src/share/classes/javax/swing/text/html/AccessibleHTML.java ! src/share/classes/javax/swing/text/html/CSS.java ! src/share/classes/javax/swing/text/html/HTMLEditorKit.java ! src/share/classes/javax/swing/text/html/parser/AttributeList.java ! src/share/classes/javax/swing/text/html/parser/DTD.java ! src/share/classes/javax/swing/text/html/parser/Element.java ! src/share/classes/javax/swing/text/html/parser/Entity.java ! src/share/classes/javax/swing/text/html/parser/Parser.java ! src/share/classes/javax/swing/text/rtf/RTFAttributes.java ! src/share/classes/javax/swing/text/rtf/RTFGenerator.java ! src/share/classes/javax/swing/tree/DefaultTreeSelectionModel.java ! src/share/classes/sun/applet/AppletPanel.java ! src/share/classes/sun/applet/AppletViewer.java ! src/share/classes/sun/awt/FontConfiguration.java ! src/share/classes/sun/awt/im/InputContext.java ! src/share/classes/sun/font/FileFontStrike.java ! src/share/classes/sun/font/FontManager.java ! src/share/classes/sun/font/FontResolver.java ! src/share/classes/sun/font/PhysicalStrike.java ! src/share/classes/sun/java2d/SunGraphics2D.java ! src/share/classes/sun/java2d/loops/SurfaceType.java ! src/share/classes/sun/print/PSPrinterJob.java ! src/share/classes/sun/print/RasterPrinterJob.java ! src/share/classes/sun/text/normalizer/VersionInfo.java ! src/solaris/classes/sun/awt/X11/XDropTargetProtocol.java ! src/solaris/classes/sun/awt/X11/XDropTargetRegistry.java ! src/solaris/classes/sun/awt/X11/XEmbedServerTester.java ! src/solaris/classes/sun/awt/X11/XFileDialogPeer.java ! src/solaris/classes/sun/awt/X11/XScrollbar.java ! src/solaris/classes/sun/awt/X11GraphicsConfig.java ! src/solaris/classes/sun/awt/X11GraphicsDevice.java ! src/solaris/classes/sun/print/UnixPrintJob.java ! src/windows/classes/sun/awt/windows/WDataTransferer.java ! src/windows/classes/sun/awt/windows/WInputMethod.java ! src/windows/classes/sun/awt/windows/WWindowPeer.java ! src/windows/classes/sun/print/Win32PrintService.java Changeset: 840f49e23a40 Author: dav Date: 2008-04-07 16:52 +0400 URL: http://hg.openjdk.java.net/jdk7/swing/jdk/rev/840f49e23a40 6623459: Get rid of XConstant, XProtocolConstants and XUtilConstants antipattern Summary: Access to interface's fiels via their name rather then implementation Reviewed-by: volk, son ! src/solaris/classes/sun/awt/X11/MWMConstants.java ! src/solaris/classes/sun/awt/X11/MotifDnDConstants.java ! src/solaris/classes/sun/awt/X11/MotifDnDDragSourceProtocol.java ! src/solaris/classes/sun/awt/X11/MotifDnDDropTargetProtocol.java ! src/solaris/classes/sun/awt/X11/WindowPropertyGetter.java ! src/solaris/classes/sun/awt/X11/XAWTXSettings.java ! src/solaris/classes/sun/awt/X11/XAtom.java ! src/solaris/classes/sun/awt/X11/XBaseMenuWindow.java ! src/solaris/classes/sun/awt/X11/XBaseWindow.java ! src/solaris/classes/sun/awt/X11/XClipboard.java ! src/solaris/classes/sun/awt/X11/XComponentPeer.java ! src/solaris/classes/sun/awt/X11/XConstants.java ! src/solaris/classes/sun/awt/X11/XContentWindow.java ! src/solaris/classes/sun/awt/X11/XCursorFontConstants.java ! src/solaris/classes/sun/awt/X11/XCustomCursor.java ! src/solaris/classes/sun/awt/X11/XDecoratedPeer.java ! src/solaris/classes/sun/awt/X11/XDialogPeer.java ! src/solaris/classes/sun/awt/X11/XDnDDragSourceProtocol.java ! src/solaris/classes/sun/awt/X11/XDnDDropTargetProtocol.java ! src/solaris/classes/sun/awt/X11/XDragSourceContextPeer.java ! src/solaris/classes/sun/awt/X11/XDragSourceProtocol.java ! src/solaris/classes/sun/awt/X11/XDropTargetEventProcessor.java ! src/solaris/classes/sun/awt/X11/XDropTargetProtocol.java ! src/solaris/classes/sun/awt/X11/XDropTargetRegistry.java ! src/solaris/classes/sun/awt/X11/XEmbedCanvasPeer.java ! src/solaris/classes/sun/awt/X11/XEmbedChildProxyPeer.java ! src/solaris/classes/sun/awt/X11/XEmbedClientHelper.java ! src/solaris/classes/sun/awt/X11/XEmbedHelper.java ! src/solaris/classes/sun/awt/X11/XEmbedServerTester.java ! src/solaris/classes/sun/awt/X11/XEmbeddedFramePeer.java ! src/solaris/classes/sun/awt/X11/XEmbeddingContainer.java ! src/solaris/classes/sun/awt/X11/XFocusProxyWindow.java ! src/solaris/classes/sun/awt/X11/XFramePeer.java ! src/solaris/classes/sun/awt/X11/XGlobalCursorManager.java ! src/solaris/classes/sun/awt/X11/XIconWindow.java ! src/solaris/classes/sun/awt/X11/XMSelection.java ! src/solaris/classes/sun/awt/X11/XNETProtocol.java ! src/solaris/classes/sun/awt/X11/XProtocol.java ! src/solaris/classes/sun/awt/X11/XProtocolConstants.java ! src/solaris/classes/sun/awt/X11/XSelection.java ! src/solaris/classes/sun/awt/X11/XSystemTrayPeer.java ! src/solaris/classes/sun/awt/X11/XToolkit.java ! src/solaris/classes/sun/awt/X11/XTrayIconPeer.java ! src/solaris/classes/sun/awt/X11/XUtilConstants.java ! src/solaris/classes/sun/awt/X11/XWINProtocol.java ! src/solaris/classes/sun/awt/X11/XWM.java ! src/solaris/classes/sun/awt/X11/XWindow.java ! src/solaris/classes/sun/awt/X11/XWindowPeer.java ! src/solaris/classes/sun/awt/X11/XlibUtil.java ! src/solaris/classes/sun/awt/X11/XlibWrapper.java Changeset: 0a053f373969 Author: dav Date: 2008-04-08 12:46 +0400 URL: http://hg.openjdk.java.net/jdk7/swing/jdk/rev/0a053f373969 6520716: event classes lack info about parameters Summary: clarify allowed values for event constructors Reviewed-by: son, denis ! src/share/classes/java/awt/dnd/DragGestureEvent.java ! src/share/classes/java/awt/dnd/DropTargetEvent.java ! src/share/classes/java/awt/event/ActionEvent.java ! src/share/classes/java/awt/event/AdjustmentEvent.java ! src/share/classes/java/awt/event/ComponentEvent.java ! src/share/classes/java/awt/event/ContainerEvent.java ! src/share/classes/java/awt/event/FocusEvent.java ! src/share/classes/java/awt/event/HierarchyEvent.java ! src/share/classes/java/awt/event/InputEvent.java ! src/share/classes/java/awt/event/InvocationEvent.java ! src/share/classes/java/awt/event/ItemEvent.java ! src/share/classes/java/awt/event/KeyEvent.java ! src/share/classes/java/awt/event/MouseEvent.java ! src/share/classes/java/awt/event/MouseWheelEvent.java ! src/share/classes/java/awt/event/PaintEvent.java ! src/share/classes/java/awt/event/TextEvent.java ! src/share/classes/java/awt/event/WindowEvent.java Changeset: dd05b5b0e7bd Author: ant Date: 2008-04-08 13:32 +0400 URL: http://hg.openjdk.java.net/jdk7/swing/jdk/rev/dd05b5b0e7bd 6607170: Focus not set by requestFocus Summary: fixing/refactoring focus auto-transfer mechanism. Reviewed-by: son ! src/share/classes/java/awt/Component.java ! src/share/classes/java/awt/Container.java ! src/share/classes/java/awt/DefaultKeyboardFocusManager.java ! src/share/classes/java/awt/KeyboardFocusManager.java ! src/solaris/classes/sun/awt/X11/XKeyboardFocusManagerPeer.java ! src/windows/native/sun/windows/awt_Component.cpp + test/java/awt/Focus/ContainerFocusAutoTransferTest/ContainerFocusAutoTransferTest.java Changeset: ddfd2acb2347 Author: ant Date: 2008-04-09 09:37 +0400 URL: http://hg.openjdk.java.net/jdk7/swing/jdk/rev/ddfd2acb2347 6522725: Component in a minimized Frame has focus and receives key events Summary: XAWT: a window natively focused may request focus in it only synthetically Reviewed-by: son ! src/solaris/classes/sun/awt/X11/XComponentPeer.java ! src/solaris/classes/sun/awt/X11/XDecoratedPeer.java ! src/solaris/classes/sun/awt/X11/XWindowPeer.java + test/java/awt/Focus/IconifiedFrameFocusChangeTest/IconifiedFrameFocusChangeTest.java Changeset: 61ea2d05afba Author: volk Date: 2008-04-13 23:41 +0400 URL: http://hg.openjdk.java.net/jdk7/swing/jdk/rev/61ea2d05afba 6686273: Some AWT reg. tests should be moved to open repository (for CRs 6444769, 6480547, and 6560348) Summary: Some AWT reg. tests are moved to open repository (for CRs 6444769, 6480547, and 6560348) Reviewed-by: ant + test/java/awt/Insets/WindowWithWarningTest/WindowWithWarningTest.html + test/java/awt/Insets/WindowWithWarningTest/WindowWithWarningTest.java + test/java/awt/TextField/ScrollSelectionTest/ScrollSelectionTest.html + test/java/awt/TextField/ScrollSelectionTest/ScrollSelectionTest.java + test/java/awt/xembed/server/JavaClient.java + test/java/awt/xembed/server/RunTestXEmbed.java + test/java/awt/xembed/server/TestXEmbedServer.java + test/java/awt/xembed/server/TestXEmbedServerJava.java + test/java/awt/xembed/server/TesterClient.java Changeset: 5a9dcfdf856d Author: volk Date: 2008-04-13 23:56 +0400 URL: http://hg.openjdk.java.net/jdk7/swing/jdk/rev/5a9dcfdf856d Merge Changeset: 863b81ff642c Author: dcherepanov Date: 2008-04-14 15:21 +0400 URL: http://hg.openjdk.java.net/jdk7/swing/jdk/rev/863b81ff642c 6471693: Moving the vertical scroll bar of List in FileDialog leads Flickering in solaris Summary: unite paint() calls in one call Reviewed-by: son ! src/solaris/classes/sun/awt/X11/XListPeer.java Changeset: 9d15a1989b84 Author: dcherepanov Date: 2008-04-14 15:53 +0400 URL: http://hg.openjdk.java.net/jdk7/swing/jdk/rev/9d15a1989b84 6688067: regression test for 6471693 is missed Summary: added regression test Reviewed-by: son + test/java/awt/List/ListFlickers/ListFlickers.java Changeset: adae10f1c14d Author: dav Date: 2008-04-15 14:00 +0400 URL: http://hg.openjdk.java.net/jdk7/swing/jdk/rev/adae10f1c14d 6430553: MouseClick event should not be fired if MouseRelease happened without MousePress Summary: verify that the there was a PRESS event before sending CLICK event Reviewed-by: son, dcherepanov ! src/solaris/classes/sun/awt/X11/XWindow.java ! src/windows/native/sun/windows/awt_Component.cpp ! src/windows/native/sun/windows/awt_Component.h ! src/windows/native/sun/windows/awt_TrayIcon.cpp ! src/windows/native/sun/windows/awt_TrayIcon.h Changeset: e2e1127aed7b Author: dav Date: 2008-04-15 14:14 +0400 URL: http://hg.openjdk.java.net/jdk7/swing/jdk/rev/e2e1127aed7b Merge Changeset: 29a4bb79a0fd Author: son Date: 2008-04-18 11:38 +0400 URL: http://hg.openjdk.java.net/jdk7/swing/jdk/rev/29a4bb79a0fd 6690036: some code cleanup for insets-related code Summary: all insets-related code from XWindowPeer, XFramePeer, and XDialogPeer has been moved to XDecoratedPeer. Reviewed-by: anthony ! src/solaris/classes/sun/awt/X11/XDecoratedPeer.java ! src/solaris/classes/sun/awt/X11/XDialogPeer.java ! src/solaris/classes/sun/awt/X11/XFramePeer.java ! src/solaris/classes/sun/awt/X11/XWindowPeer.java Changeset: a35e9e11d907 Author: yan Date: 2008-04-23 14:35 +0400 URL: http://hg.openjdk.java.net/jdk7/swing/jdk/rev/a35e9e11d907 6627324: Alt Graph doesnot generate any key event when pressing in German locale Summary: This Unix only problem solved by mapping XK_ISO_Level3_Shift keysym to Java keycode VK_ALT_GRAPH. Reviewed-by: son ! src/solaris/classes/sun/awt/X11/XKeysym.java ! src/solaris/classes/sun/awt/X11/genhash.awk ! src/solaris/classes/sun/awt/X11/keysym2ucs.h Changeset: 8da00cb83d01 Author: yan Date: 2008-05-04 07:05 -0700 URL: http://hg.openjdk.java.net/jdk7/swing/jdk/rev/8da00cb83d01 Merge Changeset: c1e547a4c0ef Author: yan Date: 2008-05-13 21:58 -0700 URL: http://hg.openjdk.java.net/jdk7/swing/jdk/rev/c1e547a4c0ef Merge ! src/share/classes/javax/swing/JTextArea.java Changeset: ec3bbc3f675a Author: mlapshin Date: 2008-05-14 07:53 -0700 URL: http://hg.openjdk.java.net/jdk7/swing/jdk/rev/ec3bbc3f675a Merge ! src/share/classes/com/sun/java/swing/plaf/gtk/GTKLookAndFeel.java ! src/share/classes/com/sun/java/swing/plaf/motif/MotifLookAndFeel.java ! src/share/classes/java/awt/Component.java ! src/share/classes/javax/swing/AbstractButton.java ! src/share/classes/javax/swing/JTabbedPane.java ! src/share/classes/javax/swing/plaf/basic/BasicLookAndFeel.java From Ben.Loud at rlmgroup.com.au Wed May 21 00:56:17 2008 From: Ben.Loud at rlmgroup.com.au (Ben Loud) Date: Wed, 21 May 2008 10:26:17 +0930 Subject: JLayeredPane Questions Message-ID: <993F95453DDC3643B662C62D8D2D4ED56B41D6@srv013.rlmgroup.com.au> I'm puzzled by JLayeredPane. It seems I can't change the layer of component after it's been added to the layered pane and still get proper repainting behaviour (except for JInternalFrames, because there's a special case hack for those). The reason is that if I call setLayer(), it doesn't revalidate the "optimizedDrawingEnabled" property. It remains true even though there are now components on different layers, so a component on layer 0 can paint on top of a component on layer 1. I've attached a simple test case that demonstrates the problem. Now, I was going to say that's a bug with an easy fix (call validateOptimizedDrawing() in setLayer()), except that the JavaDoc for setLayer(c, layer) says "Should be called before adding to parent". I don't any justification for this limitation. It's a little odd, since setLayer(c, layer) just calls straight in to setLayer(c, layer, position), whose JavaDoc says nothing about when it should or should not be called, so one would assume it should be safe to call it at any time and still have things paint correctly. Surely this must be the case, since why would the method take a position, if it's only meant to be called before the component is added! A component doesn't even have a position until it's added! But no, calling it will not affect optimizedDrawingEnabled, so things will start painting incorrectly. I'd like to remove that line from the JavaDoc, and validate the optimizedDrawingEnabled property whenever the layer of a component in the layered pane changes, so that things always paint properly. I see two ways of doing this: The simplest is to simple call validateOptimizedDrawing() at the end of setLayer(c, layer, position). This is the only possible way for AWT Components. The way I'd probably prefer, atleast for JComponents, is to add a listener for any changes to the LAYER_PROPERTY client property, for any JComponents in the layered pane, and revalidate optimizedDrawingEnabled whenever there's a change. The only downside to this is that there's a static method putLayer() that sets this property, but specifies in the JavaDoc that the method does not cause any side effects, including repainting. But I don't see why you'd want that. Thoughts? PS: It might be useful for any subclasses to make validateOptimizedDrawing() protected. PPS: validateOptimizedDrawing()'s criteria for disabling optimized drawing is whenever any JInternalFrames or added, or if a component is found whose layer is not FRAME_CONTENT_LAYER. Perhaps this could be simplified to disabling whenever there are components on more than one layer. -------------- next part -------------- A non-text attachment was scrubbed... Name: Main.java Type: application/octet-stream Size: 2275 bytes Desc: Main.java URL: From peter.zhelezniakov at sun.com Thu May 22 11:13:10 2008 From: peter.zhelezniakov at sun.com (peter.zhelezniakov at sun.com) Date: Thu, 22 May 2008 11:13:10 +0000 Subject: hg: jdk7/swing/jdk: 6606443: Infinite loop in FlowView.layout when using HTML tables in JEditorPane Message-ID: <20080522111334.72A022852D@hg.openjdk.java.net> Changeset: e733eea7d585 Author: peterz Date: 2008-05-22 15:06 +0400 URL: http://hg.openjdk.java.net/jdk7/swing/jdk/rev/e733eea7d585 6606443: Infinite loop in FlowView.layout when using HTML tables in JEditorPane Summary: FlowStrategy.damageStart now tracks position changes Reviewed-by: gsm ! src/share/classes/javax/swing/text/FlowView.java From Shannon.Hickey at Sun.COM Thu May 22 19:22:48 2008 From: Shannon.Hickey at Sun.COM (Shannon Hickey) Date: Thu, 22 May 2008 15:22:48 -0400 Subject: Inefficiencies with custom TableCellRenderer and Applets In-Reply-To: <194f62550805030800tad50359racbcfbec30230de9@mail.gmail.com> References: <194f62550805030800tad50359racbcfbec30230de9@mail.gmail.com> Message-ID: <4835C808.9030009@sun.com> Clemens Eisserer wrote: > Hi, > > I've created a library which has to use custom TableCellRenderers for > its tables. > I experienced a large performance difference between running my > application as Application inside an JFrame and as an JApplet. > Parented inside of the JFrame scrolling the table was smooth, however > scrolling inside the applet was slow, especially if the mouse is over > the table while scrolling. > > I did some profiling with netbeans-profiler and found the root-cause: > BasicTableUI.paintCell->CellRendererPane.paintComponent->Container.validate->Component.updateCursorImmediatly->GlobalCursorManager.updateCursorImmediatly()->_updateCursor.... > > The updateCursorImmediatly was called both times about 16.000 times, > with JFrame it consumed 22% of the cycles which is already > inefficient. > As JApplet it calls into getLocationOnScreen() which calls down till > XBaseWindow.toOtherWindow even slower which is about as slow as > updating the Cursor itself, so as applet it consumes 48% of all EDT > cycles. > > The DefaultTableCellRenderer simply overrides validate with an empty > method, therefor no such calls are done. > But why does CellRendererPane.paintComponent() call validate at all? CellRendererPain takes an argument that dictates whether or not it validates. In most cases it's told to validate by the caller since the renderer may need to do layout on its children. I suggest you override validate() on your custom renderer to do nothing, the same way the DefaultTableCellRenderer does. > If it cannot be avoided, is there no way to cache stuff in > XBaseWindow.toOtherWindow at all? You'll have to ask the AWT team about this. I've CC'd them. Shannon > > Thanks, lg Clemens > > > > > > > > > > > > > > Very simple TableCellRenderer which triggers the slowness: > JLabel renderer = new JLabel(); > public Component getTableCellRendererComponent(JTable table, Object value, > boolean isSelected, boolean hasFocus, int row, int column) { > renderer.setText((String)value); > renderer.setOpaque(true); > return renderer; > } -- Shannon Hickey shannon.hickey at sun.com Swing Team - Sun Microsystems, Inc. http://java.sun.com/javase/technologies/desktop From Artem.Ananiev at Sun.COM Fri May 23 07:12:25 2008 From: Artem.Ananiev at Sun.COM (Artem Ananiev) Date: Fri, 23 May 2008 11:12:25 +0400 Subject: Inefficiencies with custom TableCellRenderer and Applets In-Reply-To: <4835C808.9030009@sun.com> References: <194f62550805030800tad50359racbcfbec30230de9@mail.gmail.com> <4835C808.9030009@sun.com> Message-ID: <48366E59.2060509@sun.com> Shannon Hickey wrote: > Clemens Eisserer wrote: >> Hi, >> >> I've created a library which has to use custom TableCellRenderers for >> its tables. >> I experienced a large performance difference between running my >> application as Application inside an JFrame and as an JApplet. >> Parented inside of the JFrame scrolling the table was smooth, however >> scrolling inside the applet was slow, especially if the mouse is over >> the table while scrolling. >> >> I did some profiling with netbeans-profiler and found the root-cause: >> BasicTableUI.paintCell->CellRendererPane.paintComponent->Container.validate->Component.updateCursorImmediatly->GlobalCursorManager.updateCursorImmediatly()->_updateCursor.... >> >> >> The updateCursorImmediatly was called both times about 16.000 times, >> with JFrame it consumed 22% of the cycles which is already >> inefficient. >> As JApplet it calls into getLocationOnScreen() which calls down till >> XBaseWindow.toOtherWindow even slower which is about as slow as >> updating the Cursor itself, so as applet it consumes 48% of all EDT >> cycles. What a sad story... I will file a bug against AWT about this problem. >> The DefaultTableCellRenderer simply overrides validate with an empty >> method, therefor no such calls are done. >> But why does CellRendererPane.paintComponent() call validate at all? > > CellRendererPain takes an argument that dictates whether or not it > validates. In most cases it's told to validate by the caller since the > renderer may need to do layout on its children. > > I suggest you override validate() on your custom renderer to do nothing, > the same way the DefaultTableCellRenderer does. > >> If it cannot be avoided, is there no way to cache stuff in >> XBaseWindow.toOtherWindow at all? We have some kind of caching for this call, however in the case of applets (embedded frames) it doesn't work very well... Artem > You'll have to ask the AWT team about this. I've CC'd them. > > Shannon > >> >> Thanks, lg Clemens >> >> >> >> >> >> >> >> >> >> >> >> >> >> Very simple TableCellRenderer which triggers the slowness: >> JLabel renderer = new JLabel(); >> public Component getTableCellRendererComponent(JTable table, >> Object value, >> boolean isSelected, boolean hasFocus, int row, int column) { >> renderer.setText((String)value); >> renderer.setOpaque(true); >> return renderer; >> } > From Artem.Ananiev at Sun.COM Fri May 23 07:23:15 2008 From: Artem.Ananiev at Sun.COM (Artem Ananiev) Date: Fri, 23 May 2008 11:23:15 +0400 Subject: Inefficiencies with custom TableCellRenderer and Applets In-Reply-To: <48366E59.2060509@sun.com> References: <194f62550805030800tad50359racbcfbec30230de9@mail.gmail.com> <4835C808.9030009@sun.com> <48366E59.2060509@sun.com> Message-ID: <483670E3.1080909@sun.com> Artem Ananiev wrote: > Shannon Hickey wrote: >> Clemens Eisserer wrote: >>> Hi, >>> >>> I've created a library which has to use custom TableCellRenderers for >>> its tables. >>> I experienced a large performance difference between running my >>> application as Application inside an JFrame and as an JApplet. >>> Parented inside of the JFrame scrolling the table was smooth, however >>> scrolling inside the applet was slow, especially if the mouse is over >>> the table while scrolling. >>> >>> I did some profiling with netbeans-profiler and found the root-cause: >>> BasicTableUI.paintCell->CellRendererPane.paintComponent->Container.validate->Component.updateCursorImmediatly->GlobalCursorManager.updateCursorImmediatly()->_updateCursor.... >>> >>> >>> The updateCursorImmediatly was called both times about 16.000 times, >>> with JFrame it consumed 22% of the cycles which is already >>> inefficient. >>> As JApplet it calls into getLocationOnScreen() which calls down till >>> XBaseWindow.toOtherWindow even slower which is about as slow as >>> updating the Cursor itself, so as applet it consumes 48% of all EDT >>> cycles. > > What a sad story... I will file a bug against AWT about this problem. The bug ID is 6706534 - it must be visible in the web in a couple of days. Artem >>> The DefaultTableCellRenderer simply overrides validate with an empty >>> method, therefor no such calls are done. >>> But why does CellRendererPane.paintComponent() call validate at all? >> >> CellRendererPain takes an argument that dictates whether or not it >> validates. In most cases it's told to validate by the caller since the >> renderer may need to do layout on its children. >> >> I suggest you override validate() on your custom renderer to do >> nothing, the same way the DefaultTableCellRenderer does. >> >>> If it cannot be avoided, is there no way to cache stuff in >>> XBaseWindow.toOtherWindow at all? > > We have some kind of caching for this call, however in the case of > applets (embedded frames) it doesn't work very well... > > Artem > >> You'll have to ask the AWT team about this. I've CC'd them. >> >> Shannon >> >>> >>> Thanks, lg Clemens >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> Very simple TableCellRenderer which triggers the slowness: >>> JLabel renderer = new JLabel(); >>> public Component getTableCellRendererComponent(JTable table, >>> Object value, >>> boolean isSelected, boolean hasFocus, int row, int column) { >>> renderer.setText((String)value); >>> renderer.setOpaque(true); >>> return renderer; >>> } >> From sergey.malenkov at sun.com Fri May 23 16:16:42 2008 From: sergey.malenkov at sun.com (sergey.malenkov at sun.com) Date: Fri, 23 May 2008 16:16:42 +0000 Subject: hg: jdk7/swing/jdk: 6668273: Example given in java.beans.EventHandler shows incorrect order of parameters Message-ID: <20080523161701.2782A285EE@hg.openjdk.java.net> Changeset: e0951cd6e7b9 Author: malenkov Date: 2008-05-23 20:14 +0400 URL: http://hg.openjdk.java.net/jdk7/swing/jdk/rev/e0951cd6e7b9 6668273: Example given in java.beans.EventHandler shows incorrect order of parameters Summary: Very simple misprint Reviewed-by: peterz, loneid ! src/share/classes/java/beans/EventHandler.java From mikhail.lapshin at sun.com Mon May 26 14:00:39 2008 From: mikhail.lapshin at sun.com (mikhail.lapshin at sun.com) Date: Mon, 26 May 2008 14:00:39 +0000 Subject: hg: jdk7/swing/jdk: 6694823: A popup menu can be partially hidden under the task bar in applets Message-ID: <20080526140058.95E2B286A4@hg.openjdk.java.net> Changeset: 5e0172d58a1c Author: mlapshin Date: 2008-05-26 17:58 +0400 URL: http://hg.openjdk.java.net/jdk7/swing/jdk/rev/5e0172d58a1c 6694823: A popup menu can be partially hidden under the task bar in applets Summary: In applets popup menu is shifted above the task bar Reviewed-by: peterz ! src/share/classes/javax/swing/JPopupMenu.java ! src/share/classes/javax/swing/PopupFactory.java + test/javax/swing/JPopupMenu/6694823/bug6694823.java From Ben.Loud at rlmgroup.com.au Thu May 29 04:02:17 2008 From: Ben.Loud at rlmgroup.com.au (Ben Loud) Date: Thu, 29 May 2008 13:32:17 +0930 Subject: [PATCH] Provide correct cell borders for Win L&F Message-ID: <993F95453DDC3643B662C62D8D2D4ED572A441@srv013.rlmgroup.com.au> The attached patch provides correct borders for the Windows L&F (including 2k, XP & Vista) for use by DefaultListCellRenderer and DefaultTableCellRenderer. It also adds a 1-pixel empty border to JList. For screenshots before and after the fix, see http://benloud.com/Borders.png. This addresses a couple of problems with the default list and table cell renderers. The first problem is that the no-focus border is null, so the text appears right up against the edge. The second problem is that since the focussed border has 1-pixel thick insets (vs no insets when non-focussed), the text position shifts to the right by 1 pixel when the cell is selected. When fixing this, I didn't want to change the preferred height of cells, so the top and bottom insets are unchanged. This also closely matches the cell heights in native windows. But the left and right insets now have correct padding (2 pixel empty when non-focussed, 1 pixel dashed + 1 pixel empty when focussed). The left and right insets are now the same between focussed and non-focussed states, so the text doesn't move. Table cells are given the same borders, but the table itself still has no border. This also closely matches native windows. Now, important note: When doing this, I needed support for a no-focus cell border UI property for Tables to add an empty border that ensures the left/right padding is consistent between focussed and non-focussed states. But no such property exists in the current OpenJDK sources. I almost submitted a patch to add it, until I noticed it has already been added in JDK6u10. I also noticed that in JDK6u10, the name of the List cell no-focus border has changed! So what I decided to do was submit this patch using the names as they are in update 10. Hopefully the change in 6u10 will make its way in to OpenJDK7 very soon, and when that happens, and they will pick up these new properties and things will look fine. Until then, this patch has little effect. -------------- next part -------------- A non-text attachment was scrubbed... Name: borders.patch Type: application/octet-stream Size: 3516 bytes Desc: borders.patch URL: From ronald_chen at plugpower.com Fri May 30 17:53:05 2008 From: ronald_chen at plugpower.com (Chen, Ronald) Date: Fri, 30 May 2008 10:53:05 -0700 Subject: JViewport Performance issues Message-ID: Hello Swing Dev, Could we get some visibility on bugs 4478765 and 4486696? I noticed there are a lot of flash based applications that use the mouse drag to scroll in all directions. This is a great user interface device, but it currently cannot be implemented in Swing due to performance bug 4486696. The current work around is to do something like what JadeDisplay did using their JViewportImage http://downloads.openchannelsoftware.org/JadeDisplay/jade_display_2_0.ta r.gz If you look at the implementation, you'll see that bug 4478765 made it very difficult. This is one of those bugs that developers run into and just continue to think Java has poor performance, while this is actually just an API performance issue. I've tested JViewportImage, and while it only works for opaque components (but can be implemented to work with all components), it improved perceived performance by an order of magnitude when implementing drag scroll. Thanks, Ronald Chen -------------- next part -------------- An HTML attachment was scrubbed... URL: