On 15.04.16 19:22, Alexander Scherbatiy wrote:
On 15/04/16 18:27, Sergey Bylokhov wrote:
  When a JFileChooser is created it always adds Accept All file filter
in the constructor because useAcceptAllFileFilter filed is true by default.
  Because of this the AquaFileChooserUI.FilterComboBoxModel initially
has the Accept All file filter as the first item.

  After that it is possible to unset the Accept All file filter by
calling JFileChooser.setAcceptAllFileFilterUsed(false).

But what will happen if the user will update the filter before the Aqua will be set as default l&f(for example if Metal is set as default via commandline)?

On 15.04.16 16:46, Alexander Scherbatiy wrote:

Hello,

Could you review the fix:
   bug: https://bugs.openjdk.java.net/browse/JDK-8152677
   webrev: http://cr.openjdk.java.net/~alexsch/8152677/webrev.00

   FilterComboBoxModel from AquaFileChooserUI overrides
getSelectedItem() method to always return the selected filter from the
file chooser.

   JFileChooser.setFileFilter(FileFilter) first assign the passed filter
to fileFilter field and then fire "fileFilterChanged" property change
event. This leads that FilterComboBoxModel compares new file filter with
the selected one (which has the same value because it is obtained from
JFileChooser.fileFilter field) and do not updated JComboBox internal
structure so JComboBox.selectedItemReminder field still points to the
old one.

   When a user selects “All Files” filter which is the first item from a
JFileChooser the JComboBox does not fire the action event because
selectedItemReminder points to the same first item.

   The proposed solution is to remember the previous selected item in
the AquaFileChooserUI.FilterComboBoxModel.

   Thanks,
   Alexandr.





--
Best regards, Sergey.

Reply via email to