On 01/05/2018 10:16 PM, Sergey Bylokhov wrote:
On 05/01/2018 18:01, Semyon Sadetsky wrote:
Can you explain what is wrong with the suggested approach? It is
flexible to handle both null and non-null containing JList.
Because it is wrong direction try to support some approach which is
undefined behavior. The null has a special meaning in
JList.getSelectedValue/setSelectedValue() as well as in a few other
methods mentioned below. The usage of unspecified null values may
result in a run time exception either immediately or at some later time.
I didn't find any spec that mentions null as a special value as well as
any pointer that JList couldn't contain null.
getSelectedValue() may not be an indicator because there are several
replacements setSelectedIndex(), setSelectedIndices(),
getSelectedValues(), getSelectedValuesList() which supports null.
Other components are unrelated.
On 01/05/2018 04:25 PM, Sergey Bylokhov wrote:
I doubt that support of null values in the data model is intentional
because JList is "A component that displays a list of *objects* and
allows the user to select one or more items."
The null behavior was not specified and work in most cases because
some of the getXXX methods in ListModel sub-classes and JList have a
special meaning of null:
JList.getSelectedValue(): Returns {@code null} if there is no
selection.
ListModel.getElementAt(int index): In most cases implemented to
return null if index is incorrect.
Similar method TableModel.getValueAt(int,int) is also usually
implemented to return null if value is not found or some error occured.
JComboBox.setSelectedItem(): use <code>null</code> to clear the
selection
ComboBoxModel.setSelectedItem(): <code>null</code> to clear the
selection
ComboBoxModel.getSelectedItem(): <code>null</code> if there is no
selection
So I suggest to follow initial intention here, because it is too
late to add validation of the values.
- The null value in get() will mean no-selection.
- The null value passed to set() will clear selection.
On 05/01/2018 02:15, Pankaj Bansal wrote:
Hi Semyon/Sergey,
Yes, JList can contain null elements as it can be added to data
model. I think this changes a lot in this bug. I think the
selection needs to be cleared when the object passed is not present
in the list, irrespective of it being null or not. I have made code
changes. Please have a look.
Webrev: http://cr.openjdk.java.net/~pbansal/5076761/webrev.02/
Regards,
Pankaj Bansal
-----Original Message-----
From: Semyon Sadetsky
Sent: Friday, January 5, 2018 6:59 AM
To: Pankaj Bansal; swing-dev@openjdk.java.net
Subject: Re: <Swing Dev> [11] Review Request: JDK-5076761 :
JList.setSelectedValue(null, ...) doesn't do anything
Hi Pankaj,
Can JList contain null value?
--Semyon
On 01/02/2018 11:26 PM, Pankaj Bansal wrote:
Hi Sergey,
Thanks for the review.
I have made the suggested changes. Please have a look.
webrev: http://cr.openjdk.java.net/~pbansal/5076761/webrev.01/
Regards,
Pankaj Bansal
-----Original Message-----
From: Sergey Bylokhov
Sent: Wednesday, January 3, 2018 3:31 AM
To: Pankaj Bansal; swing-dev@openjdk.java.net; Prasanta Sadhukhan
Subject: Re: [11] Review Request: JDK-5076761 :
JList.setSelectedValue(null, ...) doesn't do anything
Hi, Pankaj.
The fix looks fine, but I suggest to update the spec as well and
describe the behavior if "null" value is passed.
On 02/01/2018 02:07, Pankaj Bansal wrote:
Hi All,
Please review the fix for JDK 11.
Bug:
https://bugs.openjdk.java.net/browse/JDK-5076761
Webrev:
http://cr.openjdk.java.net/~pbansal/5076761/webrev.00/
Issue:
When setSelectedValue is called on JList with null object, it should
clear all selection. But it is not doing anything.
Fix:
In setSelectedValue if the object is null, the setSelectedIndex is
called with -1. but this does not clear the selection. We should be
calling clearSelection instead of SetSelectedIndex.
Regards,
Pankaj Bansal
--
Best regards, Sergey.