<Swing Dev> [PATCH] 100153: Generics: JComboBox
Florian Brunner
fbrunnerlist at gmx.ch
Sun Nov 28 15:20:40 UTC 2010
Hi Pavel,
Thanks for your response. I will have a look at it.
Regards,
Florian
Am Dienstag 23 November 2010 10:58:15 schrieb Pavel Porvatov:
> Hi Florian,
>
> I have several comment about your patch:
> 1. Run an attached test, enter some text (e.g. "aa") and press enter.
> The text disappears, but if you reenter text it stays.
>
> 2. The following changes in the
> javax.swing.plaf.basic.BasicComboBoxEditor#getItem() looks strange for
> me, could you describe them please?
> + if (oldValue instanceof String) {
> + return (E) newValue;
> + } else {...
>
> BTW: The code "Method method = cls.getMethod("valueOf", new
> Class[]{String.class});" and other stuff like that were added with the
> fix of CR 4239610
> (http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4239610). That code
> looks strange for me, I believe the check
> "newValue.equals(oldValue.toString())" is enough for that bug...
> Moreover the "valueof" method cannot be used as a universal solution for
> String->AnyClass conversion because of that's impossible to use in case
> oldValue is null.
>
> Therefore I think we should not change the WindowsComboBoxUI.java,
> ComboBoxEditor.java, BasicComboBoxEditor.java and
> MetalComboBoxEditor.java files at all, because there are no available
> API for converting string into *any* class. What do you think about
> that? Logically it means that editor can edit only strings but not any
> class.
>
> 3. After item 2 we will see that it's not possible to generify the
> set/getSelectedItem methods in the javax.swing.ComboBoxModel interface
> because of some code in the javax.swing.JComboBox#actionPerformed
> method. The same set/getSelectedItem methods in the JComboBox class
> shouldn't be generified as well. That's also correspondent to my old
> proposal:
> http://mail.openjdk.java.net/pipermail/swing-dev/2009-December/000878.html
>
> 4. As the result of item 3 we can generify
> javax.swing.JComboBox#dataModel like this:
> protected ComboBoxModel<? extends E> dataModel;
>
> I remember our discussion about JList model generification:
> http://mail.openjdk.java.net/pipermail/swing-dev/2009-March/000443.html
>
> So we can improve JList generification as well (it's possible to do
> without backward incompatibility because of JList generification is a
> jdk7 feature)
>
> 5. Some regression tests are needed (like this one
> http://hg.openjdk.java.net/jdk7/swing/jdk/file/7bcb1864f424/test/javax/swing/JList/6823603/bug6823603.java).
> We should write them after generification will be fully discussed and
> coordinated.
>
> I attached a raw patch that contains all changes that I described above.
> What do you think about this way of generification?
>
> Regards, Pavel
>
> > Hi Pavel,
> >
> > here is a patch to "generify" JComboBox along with: ComboBoxEditor, ComboBoxModel,
> > DefaultComboBoxModel and MutableComboBoxModel.
> >
> > I fixed the BasicComboBoxEditor as I proposed in my last post.
> >
> > MutableComboBoxModel.removeElement is not generified currently and thus still takes an Object as argument. This is consistent with the Collection Framework (eg. java.util.List.remove). Please tell me if you prefer this method to take a generic parameter as well.
> >
> >
> > I also created a new issue in the OpenJDK Bugzilla system:
> > https://bugs.openjdk.java.net/show_bug.cgi?id=100153
> >
> > Regards,
> > Florian
> >
>
>
More information about the swing-dev
mailing list