CHANGES SINCE THE PREVIOUS RELEASE This file summarizes changes made since Swing 1.1. Documentation improvements and look-and-feel cosmetic changes are not listed here. For the latest, detailed information about Swing, be sure to check our Web site, The Swing Connection: http://java.sun.com/products/jfc/tsc/ This file has three sections: - HTML Text in Buttons and Labels - Known Problems - Bug Fixes =============================== HTML Text in Buttons and Labels =============================== Although this release is largely a bug fix update, there is one new feature: buttons, labels, and menu items can now contain HTML text. If the text property of an AbstractButton subclass or a JLabel contains a string that begins with "" the rest of the string be used to create a lightweight HTML docuemnt and the text will be rendered by the full Swing styled text engine. For example to create a JLabel that displays multiple lines of text in different fonts and colors, one could write: String htmlText = "A JLabel with various text styles
" + "And a new line!
"; JLabel myLabel = new JLabel(htmlText); Look for more information about this feature in an upcoming "Swing Connection" article, at http://java.sun.com/products/jfc/tsc/, and in an upcoming update of The Java Tutorial, at http://java.sun.com/docs/books/tutorial/uiswing/. ============== Known Problems ============== We're aware of two problems with this release. We don't believe they'll affect developers, but they might affect some end users. The first problem is that applets that download swing.jar can fail on Netscape on Windows 95. The symptom of the problem is an inexplicable "class not found" error. For example: Applet exception: error: java.lang.NoClassDefFoundError: javax/swing/JApplet Other platforms (such as Windows 98, other browsers, and appletviewer), don't exhibit the problem. The second problem is that medium-sized and larger Swing applications, such as the SwingSet example, might perform poorly on Windows machines with 32 MB of memory or less. The working set for a typical Swing application increased a little in this release, which appears to have caused the performance of some applications to now be dominated by paging. We don't believe this will affect most Swing developers, as a typical development machine has 64 MB or more of main memory. ========= Bug Fixes ========= Here's a list of the more than 200 bugs that were fixed for this release. You can find more information about each bug by searching for it on http://developer.java.sun.com/. 4170786 javax/accessibility/AccessibleResourceBundle not being built on Solaris. 4171588 basic_ja.properties is now encoded in unicode. 4171983 JPasswordFields getPassword could return the wrong string. 4168561 Motif look and feel caret will now properly erase itself. 4163591 DefaultTreeCellRenderer's getDefaultXXXIcons where returning the wrong thing. 4167396 Changing font of JTree will now force recalculating sizes. 4169679 DefaultTreeCellRenderer's paint didn't check for null color (1.2 exception). 4172220 The JTree showing the Elements of the Document in Notepad/ Stylepad will now update when a new document is created, or opened. 4172434 Client side maps now supported for images. 4174543 JTree no longer throws exception after being serialized. Also implemented StyleSheet.getDeclaration, which previously had no implementation. 4174954 JComponent will now revalidate when setVisible is invoked with a different value. Also: Fixed bug in rectangleIsObscured that could result in wrong value being returned. The result of which could cause a previous version of the offscreen image to show through. 4177411 JViewport was causing visual garbage with nested scrollpanes. 4177725, 4177715 JTree was using wrong property name when firing property change events for setModel and setInvokesStopCellEditing. 4149666 DefaultEditorKit.read will now map \r to \n. This is needed for Macs which represent end of line as \r. 4168298 Lists were not using the type attribute correctly, which resulted in not drawing correct type. 4170605 An extra bullet for lists was displayed if a comment was embedded in a list. Also: Improved CSS support. Fixed problem that was causing make to fail on windows for swing-1.1 Added support for style and link tags. Added support for writing out map/area tags. Improved CSS support to be closer to the spec. Moved conversion logic that was in StyleSheet to CSS. Fixed bug where font size, when specified with font tag was wrong. Implemented StyleSheet.MuxingAttributeNames.getAttributeNames. Changed writing out of CSS style to include type=text/css. Fixed bug where getAttributeSet when invoked on LabelFragment could return wrong AttributeSet. Fixed bug that was causing input attributes to contain the wrong value under certain conditions. Fixed bug where MUNGE_FILES were not being compiled under windows. Fixed bug that was causing deadlock. Fixed bug that was causing exception when inserting HTML via the InsertHTMLTextAction class at offset of 0. 4161044 Unable to see flashing caret in JTextField with windows LAF. Highlight will not highlight where caret will be drawn if selection is not empty. 4161030 JTextField, for windows, will only select all of its text when gaining focus if that last time it lost focus was not temporary. Previously it would always select all the text when gaining focus. 4165339 JPasswordField.modelToView now considers horizontal alignment so that selection functions correctly for centered or right aligned password fields. 4158291 Text would scroll to wrong places in JTextField when deleting and text did not completely fit in bounds. 4128483 Input attributes would not correctly update if document changed. 4180658 JViewport will now validate its component (acutally the parent validateRoot) if scrollRectToVisible is invoked and the viewport's view is not currently valid. Fixed bug that could result in ElementSpec having wrong Direction when inserting HTML into an existing document. Added HTML action for inserting HR. Fixes bug in VariableHeightLayoutCache.getVisibleChildCount that would result in wrong value being returned. 4100143 There are no longer empty image directories for the swing demos under windows. 4150996 Demos have the same directory structure (and the same files) under windows and solaris now. 4185513 src.zip, for 1.1 builds, no longer has preprocessor statements in it. 4185513 When StyledEditorKit is updating the input attributes it will only get a character Element once (previously it might have done it twice). Also: Fixed bug that was causing style attributes to not work when using the style attribute on a character level HTML tag. Changed major portions of HTMLWriter to produce better HTML. Removed unused variable in method in StyleSheet. Changed DefaultEditorKit to only update end of line property if document was empty. 4154267 LabeView will paint background if background attribute is defined. Also: Fixed bug in JTree that was causing editing to stop when any property changed on the tree. Added support for determining what end of line string is in HTML documents. Added methods (package private) to HTMLDocument for inserting arbirtary HTML. Fixed bug that could cause selection listeners added to JTree to not be notified. Added EmptyAttributeSet.equals, and tweaked SimpleAttributeSet.equals to notice if asking equals(this). 4188924 NullPointerException when editing tree. Also: Fixed bug where styles would not be output if document did not contain head tag. Fixed bug where removeStyle was not properly cleaning up styles that may have been in Style. Also fixed bug that was causing imported/linked styles to be written out with document. Tweaked javadoc in DefaultTreeCellRenderer. Added support for specifying that JDialog/JInternalFrame/JFrame should cause a System.exit when closed. The define for this (in WindowConstants) is currently commented out, but can be used by specifying the integer value directly. Also fixed bug that could cause close operation specified in internal frame to have no effect. 4188955 When typing text into a JTextArea that caused a newline to be created due to wrapping, the JTextArea would not properly repaint itself. 4186163 Unserializing a StyleContext could throw a NPE. Updated javadoc in TreeSelectionModel/DefaultTreeSelectionModel to reflect expected behavior. 4165393 Regarding incorrect ACTIVE state. 4170868 On-the-spot pre-editing causes exception in HTML document. 4170871 The position of the candidate list window is wrong. Change to merge character attributes in the Styled document (HTMLDocument and DefaultStyledDocument) with composed text element for more wysiwyg on-the-spot editing. 4166242 HTML updates should update bidi structure. 4164887 JDK1.2FCS-E: HTMLDocument api doc was not created properly. 4172050 In solaris, highlight string make caret invisible in JTextComponent. 4170915 PlainDocument should use superclasses createLeafElement method instead of calling new directly so subclasses can change Element type. Some work toward 4171509, HTMLEditorKit support of conversion of StyleConstants attributes to/from CSS attributes. 4174856 Custom caret is not redrawn in JTextPane. This actually is part of finishing 4172050. Fix regression in html support that resulted in null pointer exceptions being thrown. Fixed a problem in the html package that caused the following exception whenever a paragraph with nothing but a newline was encountered. javax.swing.text.StateInvariantError: infinite loop in formatting The above exception is generated when a paragraph is asked to format to a zero or negative size (which can never be satisfied). The html package was erroneously causing such a situation. The fix does not fix the problem reported by QA on the Netscape browser, which also produces this message. That problem is still being investigated. 4168158 Constructor GapContent(int i) throws NPE when i = 1. 4174891 JEditorPane ignores new lines in
 tag.

4166962 JEditorPane can't display non-Latin1 character in 
 region
	Substantial progress toward 4171509 (HTMLEditorKit should
	support StyleConstants).  This is now handled properly in the
	in-memory model, however more work is yet required to make file
	I/O also cause attributes that have a StyleConstants mapping to
	be stored in the model as CSS attributes or saved as html
	tag/attribute or html style attribute.  The fix for 4171509
	involved a fair amount of work, and therefore likely has some
	bugs associated with it that can be filed seperately.  I
	included a hacked version to Stylepad in the evaluation which
	uses the html support to provide the stylepad functionality,
	and uses html as the I/O format.  It functions as a very simple
	html editor.  Added suggested change from swing-feedback to
	DefaultCaret to not blink while users are actively changing the
	text.

4176571 WordApplet in Netscape on Windows NT throws
	javax.swing.text.StateInvariantError.

4158124 Should JTextComponent.copy use getToolkit (vs.
	Toolkit.getDefaultToolkit())?

4170050 Unintentional memory retention in CompositeView.

4156303 CompositeView.loadChildren doesn't remove old child views.

4165774 com.sun.java.swing.text.html.HTML.Attribute.allAttributes[]
	does not contain FACE.

4136083 HTMLWriter fails to write out alignment.

4178097 JTextPane throws IllegalArgumentException when PgUp.

4148697 Empty JTextArea - IllegalArgumentException thrown - releasing
	'page down' key.

4168917 Background color in HTML body does not fill page in small pages.

4147392 JEditorPane.setHighlighter(null) throws nullPointerException.

4131271 DefaultEditorKit.BeginLineAction/EndLineAction should set
	MagicCaretPosition.

4131267 DefaultEditorKit needs a "selection-off" capability (for the
	ESCAPE key).

4138304 JTextField dosen't update focus border at Motif L&F. Updated
	the javadoc for some views, and started making the DocumentEvent
	forwarding updating of the view hierarchy easier for composite
	view implementations.  Fixed BasicTextAreaUI so that it looks
	for the correct property names (the wrap-related names were
	changed).

4181804 DefaultCaret.equals() not implemented.

4180803 HTML viewer:  and  tags don't display Courier.

4179239 JEditorPane uses wrong editor kit for default.

4175754 Untidy syntax in BoxLayout.java.

4123386 swing.text.ComponentView.modelToView(int, Shape) doesn't throw
	BadLocationExcept.

4155127 setFont() has no visual effect on JTextField; repaint() has to
	be invoked.

4164239 BoxLayout sizes Components wrong if minimumSize is larger than
	preferredSize.

4166782 Swing1.1 PERF: BasicTextUI erases background twice.

4176211 Undo/redo for the input method composed text is incorrect in
	JTextComponent.

4108577 Disabled text fields allow selection.

4134280 No specification of document notification protocol.

4171509 HTMLEditorKit should support StyleConstants.  This is a fixup
	to the previous fix.  It turns out that newly constructed
	elements were using a copy of the AttributeSet they were given
	rather than creating a set from the associated AttributeContext
	like they were supposed to.  This meant the converting sets
	provided by the html StyleSheet weren't being installed into
	the html elements.  It also means that attribute compression
	that was supposed to be taking place wasn't!!!

4178193 Baseline is different between composed text and backing store
	in LabelView.  Also: Fixed HTML paragraph to render the css box
	attributes.  The insets were considering these attributes, but
	they weren't being rendered.  Fixed spurious
	NullPointerExceptions being generated by BoxView after the
	DocumentEvent handling rewrite.  Some fixes to HTML table
	editing. It now works (but doesn't necessarily repaint
	properly) unless the table has multi-row or multi-column cells,
	or a caption.  More work is needed on this.  Fixed minor
	javadoc error in Document.

4173018 replaceSelection fails if JTextField is not editable.

4183255 Calling setText on styled text components swaps out the
	document model.  This was easy to fix by simply leaving the old
	model and calling remove() for the entire model.  However,
	doing this exposed a bug in the model that left it corrupted if
	the entire content was removed.  Fixing that meant fixing
	ElementBuffer.create() to do a better job.

4181934 AccessControlException generated in ImageView within browsers
	Hardcoded refresh rate values that were trying to be fetched by
	calling System.getProperty().  Fixed calculation of source URL
	for the image.  It should have been using the getBase() method
	on the associated document for it's calculation of the source
	URL.

4173008 Fail to serialize JTextField with highlighted text.
	Also: Added support for displaying html in the ComponentUI
	implementations.  This is currently package private to the
	basic package so that it adds no new api.  It is enabled by
	setting the text of the component to a string that starts with
	.  Initially, only BasicLabelUI and BasicButtonUI have
	been converted to use it.  We now have multi-line styled labels
	(There must be an RFE laying around that can now be closed :-)
	You can add HMTL strings to JLabel and JButton and interesting
	things will happen.  Fixed up BasicHTML support to load the
	EditorKit implementation when first accessed, and changed to
	not effect default StyleSheet Fixed View.preferenceChanged to
	use the proper child View in the default implementation.  This
	is needed by the asynchronous layout view currently in
	experimental status.  Performance results are quite promising.
	Layout for large views is computed incrementally and
	asynchronously (able to adapt to size changes before the job is
	done, etc).  Substantially improved the View javadoc
	specification.  Changed BoxView to not throw away layout
	information when the number of children changes.  This makes it
	possible to repaint while changing the view structure to
	reflect a changed model.  BoxView still needs more work to
	actually guarantee it repaints everything needed.
	Substantially reduced the number of Rectangles created when
	computing child view allocations.  CompositeView now holds a
	rectangle it reuses when communicating with a child view.
	CompositeView also avoids calling Shape.getBounds() (which
	allocates a new Rectangle) if the Shape can be narrowed to a
	Rectangle to extract it's bounds.  Fixed concurrency holes that
	appeared in BasicTextUI apparently with the addition of the
	i18n position bias.  Improved the javadoc to reduce the chance
	of this happening again, and to warn developers that use the
	getRootView method that they must arrange for their own
	concurrency protection.

4191780 Programmatic selection in JTextPane causes NPE in
	BoxView.childAllocation().

4193508 javax.swing.text.CompositeView not threadsafe.

4166778 Typo in inner class JEditorPaneAccesssibleHypertextSupport.

4172586 AccessibleJTableHeader.getAccessibleStateSet works.
        
4172235 Basic class depends on Windows class.

4172751 IntrospectionException trying to load swingall.jar.

4161565 Maximized Internal Frames don't resize.

4176733 REGRESSION: JDesktopPane setVisible/setSize need before adding
	JInternalFrame.

4177469 JPopupMenu wrong bound property fix.

4115273 Double click close to check isClosable() on internalFrame.

4228140 Minimize menu to work when isMaximizable isn't checked.
	
4165234	Serialization error: made desktopManager transient.

4172083 Need to disable rootpane check for JInternalFrame in
	EnableSerializationFocusListener.

4118140, 4115273
	Minimize on control menu not working. Double click closes a
	nonclosable motif internal frame. Fix for CloseAction NPE when
	there are no JInternal.  JFrame doesn't check for null
	desktopPane.

4172083 Need to disable rootpane check in EnableSerializationFocus for
	JInternalFrame's JDesktopPane.

4165234 Made desktopManager transient.
        
4127970 JPopupMenu.setDefaultLightWeightPopupEnabled(false) doesn't work.

4160735 AncestorNotifier.propertyChange() throws NullPointerException.

4167902 AbstractAction.putValue(...) implementation is incorrect.                       
4169490 JMenu's method remove(JMenuItem mi) throws NPE.

4171254 JMenu.setEnabled doesn't work.

4168483 Medium weight menu popup problem (workaround).

4146684 Closing a window by a lightweight menu causes error.

4113572 Mixed components in JToolBar don't align well.

4176981 Menus are too wide.

4177696 setSelectionModel() of JMenuBar: Property change listener
	doesn't get notified.

4177688 setMargin() of JMenuBar: Property change listener doesn't get
	notified.

4177452 setAccelerator doesn't fire property change event.

4177424 Exception in JMenu.setModel.

4174983 JMenu doesn't show Icon on inserting subclass of AbstractAction
	(last time...).

4089005 Swing add/remove Listeners do not accept null.

4110669 Named property changes don't work with JComponents. Fix to
	comment.

4178391 NPE in RemoveAction. KeyEvent.VK_KP_* -> SwingUtilities.VK_KP_*

4169490 JMenu's method remove(JMenuItem mi) throws NPE.
	Fixes to listener registry for Action GC.

4183227 PERFORMANCE: AbstractActions.

4183360 PERFORMANCE: JMenuBar creates too many Component[] objects.

4186484 ClassCastException in AbstractAction.

4186500 Localize VK_KP knowledge to KeyStroke.

4179541 JMenu installs its UIs twice!

4186626 JCheckBoxMenuItem installs its UI twice.

4186627 JRadioButtonMenuItem installs its UI twice.

4146598 JMenu delay property misleading.

4186925 Make AbstractAction.ArrayTable serializable.

4186809 borderPainted of JMenuBar is incorrectly marked as bound.

4187573 NPE in BasicDesktopPaneUI.

4189288 JInternalFrame Title panes turn black.

4190357 Popup sub-menus aren't dismissed.

4190759 Disappearing Actions syndrome.

4188027 Regression: Swing MenuDragMouseEvents aren't working in 1.1.7
	and 1.2 RC1.

4126109 Setting defaultButton to null causes NPE.

4158813 Workaround for AWT#4135218 ("..." in OptionPane).

4171856 setDefaultButton() broken under JDialog.

4178562  incorrectly activates button with focus.

4135809 setBorder doesn't work on ScrollPane's containing JTables.

4153446 JDialog.setLocationRelativeTo sometimes fails after setLocation
	call.

4166149 JTabbedPane preferredSize incorrect with multiple tab runs.

4164301 JFrame with JXXX member cannot be deserialized.

4164084 Default button doesn't activate if combobox has focus.

4182204 TitleBorder.getBorderInsets(Component,Insets) broken if
        border not instanceof AbstractBorder.

4169763 Fixed recursion in JFileChooser.

4181146 setCurrentDirectory not entered in ComboBox if root but
	not in FileSystemView.getRoots().
        
4158821 ToolBars create unnecessary frames.

4166167 Floating JToolbar can be maximized.

4177032 Inconsistent bound property name, borderPainted.

4177320 Placement of JComboBox in JToolBar.  Added defaults for
	setAlignmentX and setAlignmentY to JComboBox.  Also cleaned up
	constructors in JComboBox.

4166246 Metal Button size in JToolBar was not restored after switch
	back from Windows l&f.  This turned out to be 2 bugs in 1:
	MetalToolBarUI ignoring the insets on the button borders, and
	ButtonUI setting the border on the buttons after the toolbar
	sets them during a L&F switch (which caused additional problems
	with rollover borders and L&F switching).

4183337 WindowsLookAndFeel painting of JSeparator edges is not correct.
	Fixed painting for Windows and Motif separators and popup menu
	separators.  Also fixed bug where Windows and Motif separators
	were not using background and foreground colors correctly.

4179006 DefaultListModel description references JListDataModel.
	Fixed a javadoc typo.

4179162 Bound property, value on JScrollBar doesn't notify its property
	listener.

4179141 Bound property, maximumSize[sic] on JScrollBar doesn't notify
	its property listener.  The maximum and value JScrollBar
	properties were incorrectly marked as bound in their
	@beaninfo.

4178533 JScrollPane SCROLLBAR_ALWAYS options do not work. 

4178544 JScrollPane SCROLLBAR_NEVER options do not work correctly.
	The fix installed some time ago to enable SCROLLBAR_AS_NEEDED
	to do the right thing if Scrollable.getScrollableTracksViewportWidth()
	and/or Scrollable.getScrollableTracksViewportWidth() was true
	broke these simple cases.

4181977 DefaultBoundedRangeModel(..) constructor doesn't throw
	IllegalArgumentException.

4183413 JComponent.setForeground,setBackground repaint needlessly.
	Removed some dead clipping code from JViewport.setViewPosition().
	The original code did force view positions to always be > 0 in
	x,y which clearly wasn't all the code was intended to do (the
	rest was dead).  This wasn't ever a documented feature of
	JViewport and JScrollPane and the scrollbars enforce
	constraints like this properly when it matters.  Fixed a JList
	class javadoc error - the cell renderer example was
	incomplete.  Fixed JComponent.setForeground() typo and adjusted
	the logic to account for another corner case.

4127960 AbstractListModel.fireContentsChanged ignores source arg.

4128942 Setting JList model to null causes JVM to hang.  Throw an
	IllegalArgumentException in this case.  The setSelectionModel()
	method already does this.

4097718 DefaultBoundedRangeModel.setRangeProperties(...) works
	incorrectly.  Use longs in one place to avoid overflow problems.

4179719 JSplitPane component may not show if its minimum size is 0.

4182564 Mouse clicks on the non-continuous JSplitPane divider make it
	move.

4174850 ProgressMonitorInputStream error.

4132946 OK button on ProgressMonitor progress dialog.

4160137 Timer.setInitialDelay does not reset the timer.

4163364 JSplitPane does not check if components visible when
	determining min/max location.

4184808 JSplitPane.setOrientation() needs beaninfo.

4177030, 4177026, 4177022, 4177283, 4179213, 4179185, 4179199,
4179180, 4179184, 4179197, 4179219
	Fixes for unfired or misnamed bound PropertyChanged events.

4177884 Fixed PropertyChanged event firing.

4181204 Return number of errors on exit.

4157427 SwingUtilities.computeIntersection fixed to handle case where
	rectangles don't intersect.

4157446 Modified isEventDispatchThread to use EventQueue.isDispatchThread
	with 1.2 AWT.

4181976 Added logging and flash support to drawImage methods where it
	wasn't implemented.

4168619 Fixed memory leak which prevented JComponents from being GC'd.

4182587 Removed redundant INTERNAL_FRAME_CLOSING event posting from
	JInternalFrame.dispose().

4180820 Fixed SwingGraphics.setXORMode so it no longer scrambles
	graphics translation values.  Cleaned up SwingGraphics so its
	naming follows JLS recommendations (no API change).

4148450 Overrode Container.findComponentAt in JRootPane so it ignores
	glassPanes when searching.  Previously an enabled glassPane
	would cause any drag&drop processing to ignore child components
	beneath the glass pane.  Drag&drop fix is 1.2-specific.

4184807 Modified variable initialization so loading RepaintManager
	doesn't cause java.awt.Toolkit to be initialized (needed for 
	automated testing).

4185824 Cleaned up uninstallUI so everything it installs is removed.

4184807 Used Class.getProtectionDomain as the 1.2 API test method,
	instead of a Toolkit API to avoid loading the Toolkit
        unnecessarily.

4187686 Eliminated synchronizing on class objects in favor of a per-
	class private static Object.  This is necessary because 1.1.X
	has a "will not fix" bug where class object locking can
	conflict with the classloader's locking, causing occasional
	deadlocks.  The 30 places we either synchronized using a class
	object or entered a synchronized static method (which does the
	same thing) were caught by Metamata Audit.  APIChangesTest and
	supporting files, pulled over from the JCK.  This allows us to
	verify we don't have any unknown API changes during our build.

4187686 Removed synchronized attribute from characterSets accessor
	methods, both because 1.1.X VMs have problems with deadlocking
	when class objects are synchronized, and because Hashtable is
	already threadsafe.

4191140 Sped up listener notification a bit by caching loop test.

4188850 Fixed case where java.security.manager is defined when running
	1.2, which caused a SecurityException accessing the EventQueue.

4189352 Set child's font and foreground color before calling its paint
	method.

4193032 Sped up UIManager.getLAFState by caching the LAFState of the
	current thread (most accesses are via either main in the
	beginning or the EventDispatchThread after the main frame
	shows).  This was suggested by an IBM engineer -- it doesn't
	speed up SwingMarks much because that test doesn't create that
	many different JComponents, but apps like SwingSet will see a
	bigger improvement.

4129394 JTable doesn't repaint correctly when removing rows from data model.

4127939 JTable.tableRowsDeleted() is incorrect.  (Make sure that lines
	are clipped correctly in the edge cases.)

4128135 Deleting last row doesn't change selection.

4128385 JTable: getselectedRow() and getSelectedColumn().

4181151 JTable: JTable:selectRow call clearSelection(); getSelectedRow
	still returns index.  Also fixed some javadoc in TableColumn
	explaining the effect of having a null editor.  Also fixed
	javadoc in ListSelectionModel explaining that
	removeselectionInterval also causes changes to
	anchorSelectionIndex.

4106574 Proper keyboad naviagtion must be verified on Jtable for Windows L&F. 
	Nearly all commands are now supported. (This is an extra 17 bindings). 

4185144 Win L&F uses wrong ResourceBundle.

4179116 getSystemLookAndFeel doesn't work on Mac.
        
4178458 Javax_swing classes do not respond to both sets of arrow keys.
	Adds bindings for numeric keypad arrow keys, fixing this bug
	and probably others.
        
4189562 All L&Fs are allowed to have an initialize() and uninitialize()
	method.  initialize() should get called before anything else
	happens when a L&F is being instantiated.  uninitialize()
	should get called called as the last operation when a L&F is
	being unloaded.  Auxiliary L&Fs now have these two methods
	called at the appropriate times.

4135833 Popup height wrong if first item is null or empty string.

4139900 Empty combo boxes have incorrect size.

4157329 Editable combo box not informed of font change.

4166593 Combo boxes don't fire action events properly.

4167394 Font size changes don't update combo boxes.

4167850 The RemoveAllItems() bug.

4171464 ComboBox shouldn't be throwing InternalErrors.

4171819 Windows combo boxes don't have the right border.

4174876 Tool tips don't work with combo boxes.

4180054 DefaultComboBoxModel fires too many contentsChanged events.

4201917 Shift-click in table with no selection causes exception.

4170418 Single click does not work in check boxes (Boolean table
	columns) in JTable.

4144067 JTable handling of phantom mouse events faulty when dialogs
	present.

4115930 JCheckBox in JTable: checkbox doesn't alaways respond to the
	first mouse click.

4202966 Wrong coordinates in events retargetted to subcomponents of
	JInternalFrame.

4202954 Deals with ArrowButton's response to mouse button events
	that are not generated by the left mouse button.

4174867 JEditorPane ignores pixel value of width attribute in 
	tag.  The pixel specification is now handled (tranlated to
	css).  The percentage values are still ignored, but that is a
	separate bugid.

4181842 HTML viewer: width attribute not supported in 
tag. Actually the css width and height were being ignored for all block level elements. It is now used to adjust the views requirements if specified. Fixed ImageView to not assume it is being hosted by a JTextComponent so that it works properly in JLabel and JButton. 4139102 Timer will not barf on a null ActionListener in the constuctor now. 4140983 Metal split pane divider was not completely redrawing its background. 4165874 JSplitPane will now work if a MouseListener has been added to the divider. 4197328 JSplitPane would throw exception on serializing in 1.2. 4194021 Serializing JSplitPane could cause NPE to be thrown. 4139349 Clarified documentation for HTMLEditor.read() and fixed implementation to insert new HTML into body (as one would expect). 4199472 There is now a way to specify the root node has changed (there was previously no way to do this) with TreeModelListener. 4203287 BasicTreeUI was not removing a listener it installed in uninstallUI. 4199523 It was possible for FixedHeightLayoutCache to throw an NPE when collapsing a node and the selection model was null. 4202896, 4202899 VariableHeightLayoutCache had some rather lame try/catch blocks in it. Workaround for bug 4155532, BasicSplitPaneUI now validates immediately after a resize. 4184412 HTML TableView doesn't support editing. The table view has been fixed to support editing when it contains cells that span multiple rows and/or columns. Because it now supports editing, the reader has also been updated to broadcast partial table results so that display can be asynchronous. To enable usage of views that layout asynchronously (such as the upcoming AsyncBoxView example) the restriction of using a special view for table cells has been removed. There is also better support for child views that are not table rows (such as captions, column groups, etc). Also: Substantial improvements to the handling of HTML tables. HTML tables now load asynchronously, although it requires a custom EditorKit implementation that extends HTMLEditorKit. 4170603 JEditorPane displays table elements with "rowspan" incorrectly. The table now uses bit fields to mark areas occupied by multi-column, multi-row, and erroneous table cells. The ProxyCell is no longer used. This gives better control over marking the table cell overflow into other grid points of the table. 4174849 JEditorPane ignores caption HTML tag while document model has correct element. There is better support for child views that are not table rows (such as captions, column groups, etc). Captions are displayed using ParagraphView. 4174873 JEditorPane ignores CELLPADDING attribute in tag. The HTML CELLPADDING attribute is now converted to the CSS padding attributes on TD and TH element views. 4202664 Complex HTML pages with nested tables layout too wide. Distribution of space for multi-column and multi-row cells has been substantially improved. There was also an error in the old calculations. 4179938 PERFORMANCE: JDesktopPane's "outline" drag mode doesn't include resizing. 4187974 PERFORMANCE: Fly-weight UI classes talk to defaults table too often. 4188895 JTableHeader font not correctly set. 4197752 Bulletproof references to popupMenu. 4200837 The fake end element in an HTMLDocument is now of the right structure. 4200839 Inserting pre, in certain cases, was creating an unnecessary newline. 4200841 Selection wasn't adjusting correctly when using html insert actions. 4200843 ListView/TableView/BlockView weren't obtaining its for a change event. 4200845 Actions to style text provided by StyledEditorKit could change too many attributes. 4200846 Inserting a new structure (using ElementBuffer) at offset 0 could cause some elements of length 0 to remain after removal. 4200847 Under certain circumstances JTree would ask the renderer for the size of a node that was being removed during the remove notification. 4191601 Overrode Container.remove() to pass the remove invocation on to the content pane. This avoids a common cause of object leakage in client apps. 4197719 Avoid NPE caused by AWT bug. 4195235 javax.swing.text.ComponentView not thread-safe. The methods getMinimumSize(), getPreferredSize(), getMaximumSize(), getAlignmentX(), getAlignmentY() access the component tree lock and are therefore deadlock opportunities. These values are now cached by the wrapping component that detects invalidation. 4195232 javax.swing.text.html.ImageView not thread-safe. 4169406 HTMLEditorKit.write would not honor offsets passed in when writing text. 4189236 DefaultCaret would cause NullPointException after serialization. 4190537 Disabled trees would not show the expand/collapse icons. 4191142 Paint could throw NullPointException as getClipBounds returns null under certain circumstances in 1.2. Fixes bug where expand controls in tree would be painted for root, or roots children even if not explicitly set to. Fixed bug where length of DocumentEvent for style changes on paragraph was wrong. Fixed bug where insertint into DefaultStyledDocument would create unnecessary Elements under certain conditions. Inserting into DefaultStyledDocument will know allow inserted text to join with fake end Element. Fixed bug that was causing bias, in DefaultCaret, to be set incorrectly when deleting text. Removed a couple of unused variables in methods in DefaultCaret. Fixed bug that could cause NullPointerException to be thrown if TabStop.equals(null) was invoked.