<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Tahoma
}
--></style></head>
<body class='hmmessage'><div dir='ltr'>
Oleg,<BR>
&nbsp;<BR>
The inability to use a Choice as an "action" driver could be a huge change for some applications as they upgrade to 7.0 and definitely warrants re-consideration.<BR>
&nbsp;<BR>
It seemed like a reasonable enhancement request, and as developers we just LOVE creating new stuff and fixing stuff that is not working.&nbsp; I fell into the same trap... find the fix for the current problem. <BR>
&nbsp;<BR>
I am thinking of various action, validation or navigation strategies&nbsp;based on Choices that are affected.&nbsp; e.g. Choice selection opens certain detail dialog. User closes dialog, adjusts values on main form, &nbsp;and wants to view the same detail dialog again. (No event fired!)<BR>
&nbsp;<BR>
Cross platform is why&nbsp;I use and love Java. Windows, Mac, Linux,&nbsp;etc.&nbsp; consistency is the key<BR>&nbsp;<BR>
Thanks for the diligence,<BR>
Tim<BR>
&nbsp;<BR>
P.S. The QA person who made the regression entry about failing a test is probably thinking "No one ever listens to QA."&nbsp; :-) Maybe they can update comments or documentation around the original QA test case&nbsp;that failed that captures the "action driver" aspect of why this should not fail.<BR>
&nbsp;<BR>
<DIV>
<DIV id=SkyDrivePlaceholder></DIV>&gt; Date: Mon, 15 Oct 2012 11:09:17 +0400<BR>&gt; From: oleg.pekhovskiy@oracle.com<BR>&gt; To: tim_english@hotmail.com<BR>&gt; CC: denis.fokin@oracle.com; artem.ananiev@oracle.com; awt-dev@openjdk.java.net<BR>&gt; Subject: Re: [8] Review request for 7171412: awt Choice doesn't fire ItemStateChange when selecting item after select() call - approved<BR>&gt; <BR>&gt; Hi Tim,<BR>&gt; <BR>&gt; I'm researching changes made for 6770017 in order to decide whether we <BR>&gt; could revert them<BR>&gt; or do it another way and return back firing of ItemStateChange always <BR>&gt; for all platforms.<BR>&gt; <BR>&gt; Thanks,<BR>&gt; Oleg<BR>&gt; <BR>&gt; 10/8/2012 4:39 PM, Tim English wrote:<BR>&gt; &gt; Oleg,<BR>&gt; &gt; I just saw your earlier email as well. I apologize that I do not have <BR>&gt; &gt; an automated test. I did review the ".2" change and I am glad that you <BR>&gt; &gt; all went with the better fix by eliminating the duplicate/triplicate <BR>&gt; &gt; state. Thank you for keeping me in the loop directly as I have not <BR>&gt; &gt; been keeping up with the digests.<BR>&gt; &gt; All,<BR>&gt; &gt;<BR>&gt; &gt; Thought in hindsight... maybe the original enhancement request should <BR>&gt; &gt; have just been rejected. If the user keeps picking the same item from <BR>&gt; &gt; the list, they are probably expecting the software to do something! It <BR>&gt; &gt; is possible for an event listener to check against previous state and <BR>&gt; &gt; ignore extra messages(work around possible), it is NOT possible for an <BR>&gt; &gt; event listener to react to an event that is NEVER fired (no work <BR>&gt; &gt; around, must redesign UI).<BR>&gt; &gt; &gt; BTW, native Choice controls fire event always on all platforms.<BR>&gt; &gt; Similar reasoning might lie behind why the native platforms choose to <BR>&gt; &gt; always fire: more flexibility to the developer.<BR>&gt; &gt; Another possiblity would be to add a new control state to the Choice <BR>&gt; &gt; control [ set/isFireAlreadySelected() ] and/or the selection Event [ <BR>&gt; &gt; isAlreadySelected() ]. Default state for isFireAlreadySelecteded() <BR>&gt; &gt; defaults to true to retain compatibility for older JVMs. User <BR>&gt; &gt; requesting the original enhacement could set this to false to silence <BR>&gt; &gt; the repeated selection methods.<BR>&gt; &gt; Note that the original enhancement requester could have created a <BR>&gt; &gt; Choice subclass to solve the duplicate firing result. (pseudo code)<BR>&gt; &gt; class SingleFireChoice extends Choice {<BR>&gt; &gt; Listeners singleFirelisteners;<BR>&gt; &gt; addSingleFireListener(Listener onlyWantsToKnowIfChanged);<BR>&gt; &gt; ... code to filter out duplicate selects<BR>&gt; &gt; }<BR>&gt; &gt;<BR>&gt; &gt; I normally consider that the behavior between radio groups and choice <BR>&gt; &gt; lists should operate on the same rules. (Just 2 different views of the <BR>&gt; &gt; same information) I wonder if radio groups fire an extra message if <BR>&gt; &gt; you keep clicking the same radio button over and over again? It might <BR>&gt; &gt; be an interesting experiment.<BR>&gt; &gt;<BR>&gt; &gt; I just happened to run an old Java utility that I wrote in 2000. I <BR>&gt; &gt; had not run it since Java7 has been released.<BR>&gt; &gt; It is still using an old 1.4 runtime, and as I was running it, I <BR>&gt; &gt; realized that it will NOT work with the Java 7 JVM since it performs <BR>&gt; &gt; an operation when a choice item is selected. The user might want to <BR>&gt; &gt; perform the same operation repeatedly via the choice on different inputs.<BR>&gt; &gt;<BR>&gt; &gt; Basic test case that will now fail in the application is<BR>&gt; &gt; 1. enter some text in TextArea "left"<BR>&gt; &gt; 2. enter some text in TextArea "right"<BR>&gt; &gt; 3. select an operation from the choice (left difference, right <BR>&gt; &gt; difference, symmetric difference, union, intersection)<BR>&gt; &gt; 4. review result in TextArea "result"<BR>&gt; &gt; 5. change the text in "left" or "right" or both of the areas<BR>&gt; &gt; 6. select the SAME operation again from the choice.<BR>&gt; &gt; In J6 and lower, it will perform the operation on the new inputs.<BR>&gt; &gt; In J7, nothing will happen and there is no way to know that the <BR>&gt; &gt; user has attempted something.<BR>&gt; &gt;<BR>&gt; &gt; For step 6 to work in Java7 even after the patch for 7171412, I will <BR>&gt; &gt; have to switch to a different item and then switch back to the desired <BR>&gt; &gt; item.<BR>&gt; &gt; For upgrading the application to work reasonably with Java7 I will <BR>&gt; &gt; need to add a separate "evaluate" button to "fire" the choice or else <BR>&gt; &gt; change the choice items into individual buttons.<BR>&gt; &gt;<BR>&gt; &gt; Thanks for looking into this. With all the recent press on the <BR>&gt; &gt; security items recently, I wasn't sure when someone would get a chance <BR>&gt; &gt; to look into it. (My Personal Rant about security: Why do people allow <BR>&gt; &gt; untrusted sites to run active X or applets in the first place? duh?)<BR>&gt; &gt; I thank you all for your work on this,<BR>&gt; &gt; Tim English<BR>&gt; &gt;<BR>&gt; &gt;<BR>&gt; &gt; &gt; Date: Thu, 4 Oct 2012 13:33:59 +0400<BR>&gt; &gt; &gt; From: oleg.pekhovskiy@oracle.com<BR>&gt; &gt; &gt; To: denis.fokin@oracle.com<BR>&gt; &gt; &gt; CC: artem.ananiev@oracle.com; awt-dev@openjdk.java.net; <BR>&gt; &gt; tim_english@hotmail.com<BR>&gt; &gt; &gt; Subject: Re: [8] Review request for 7171412: awt Choice doesn't fire <BR>&gt; &gt; ItemStateChange when selecting item after select() call - approved<BR>&gt; &gt; &gt;<BR>&gt; &gt; &gt; Hi Denis,<BR>&gt; &gt; &gt;<BR>&gt; &gt; &gt; there are behavior differences for Choice across the platforms.<BR>&gt; &gt; &gt; on Windows - if we choose the same item twice ItemStateChange is not<BR>&gt; &gt; &gt; fired twice but for other platform it is so.<BR>&gt; &gt; &gt; There is a separate issue about that 7159935, so all platform should<BR>&gt; &gt; &gt; behave like Windows does.<BR>&gt; &gt; &gt;<BR>&gt; &gt; &gt; BTW, native Choice controls fire event always on all platforms.<BR>&gt; &gt; &gt;<BR>&gt; &gt; &gt; Thanks,<BR>&gt; &gt; &gt; Oleg<BR>&gt; &gt; &gt;<BR>&gt; &gt; &gt; 10/3/2012 5:47 PM, Denis S. Fokin wrote:<BR>&gt; &gt; &gt; &gt; Hi Oleg,<BR>&gt; &gt; &gt; &gt;<BR>&gt; &gt; &gt; &gt; the fix looks good. It was interesting to verify the functionality on<BR>&gt; &gt; &gt; &gt; Linux. On my Ubuntu everything works properly.<BR>&gt; &gt; &gt; &gt;<BR>&gt; &gt; &gt; &gt; Thank you,<BR>&gt; &gt; &gt; &gt; Denis.<BR>&gt; &gt; &gt; &gt;<BR>&gt; &gt; &gt; &gt; On 10/2/2012 6:48 PM, Artem Ananiev wrote:<BR>&gt; &gt; &gt; &gt;&gt; Hi, Oleg,<BR>&gt; &gt; &gt; &gt;&gt;<BR>&gt; &gt; &gt; &gt;&gt; the new version looks fine.<BR>&gt; &gt; &gt; &gt;&gt;<BR>&gt; &gt; &gt; &gt;&gt; Thanks,<BR>&gt; &gt; &gt; &gt;&gt;<BR>&gt; &gt; &gt; &gt;&gt; Artem<BR>&gt; &gt; &gt; &gt;&gt;<BR>&gt; &gt; &gt; &gt;&gt; On 10/2/2012 4:30 PM, Oleg Pekhovskiy wrote:<BR>&gt; &gt; &gt; &gt;&gt;&gt; Hi Artem,<BR>&gt; &gt; &gt; &gt;&gt;&gt;<BR>&gt; &gt; &gt; &gt;&gt;&gt; thank you for the review, I made changes you proposed there:<BR>&gt; &gt; &gt; &gt;&gt;&gt; http://cr.openjdk.java.net/~bagiras/8/7171412.2<BR>&gt; &gt; &gt; &gt;&gt;&gt;<BR>&gt; &gt; &gt; &gt;&gt;&gt; Please tell if everything is ok.<BR>&gt; &gt; &gt; &gt;&gt;&gt;<BR>&gt; &gt; &gt; &gt;&gt;&gt; Thanks,<BR>&gt; &gt; &gt; &gt;&gt;&gt; Oleg<BR>&gt; &gt; &gt; &gt;&gt;&gt;<BR>&gt; &gt; &gt; &gt;&gt;&gt; 10/1/2012 2:23 PM, Artem Ananiev wrote:<BR>&gt; &gt; &gt; &gt;&gt;&gt;&gt; Hi, Oleg,<BR>&gt; &gt; &gt; &gt;&gt;&gt;&gt;<BR>&gt; &gt; &gt; &gt;&gt;&gt;&gt; (adding Tim to copy)<BR>&gt; &gt; &gt; &gt;&gt;&gt;&gt;<BR>&gt; &gt; &gt; &gt;&gt;&gt;&gt; the fix looks fine. Could you please make selectedIndexID just a<BR>&gt; &gt; &gt; &gt;&gt;&gt;&gt; static variable in awt_Choice.cpp instead of AwtChoice member?<BR>&gt; &gt; &gt; &gt;&gt;&gt;&gt;<BR>&gt; &gt; &gt; &gt;&gt;&gt;&gt; Thanks,<BR>&gt; &gt; &gt; &gt;&gt;&gt;&gt;<BR>&gt; &gt; &gt; &gt;&gt;&gt;&gt; Artem<BR>&gt; &gt; &gt; &gt;&gt;&gt;&gt;<BR>&gt; &gt; &gt; &gt;&gt;&gt;&gt; On 10/1/2012 2:09 PM, Oleg Pekhovskiy wrote:<BR>&gt; &gt; &gt; &gt;&gt;&gt;&gt;&gt; Hi!<BR>&gt; &gt; &gt; &gt;&gt;&gt;&gt;&gt;<BR>&gt; &gt; &gt; &gt;&gt;&gt;&gt;&gt; Please review the fix for CR:<BR>&gt; &gt; &gt; &gt;&gt;&gt;&gt;&gt; http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7171412<BR>&gt; &gt; &gt; &gt;&gt;&gt;&gt;&gt;<BR>&gt; &gt; &gt; &gt;&gt;&gt;&gt;&gt; Webrev:<BR>&gt; &gt; &gt; &gt;&gt;&gt;&gt;&gt; http://cr.openjdk.java.net/~bagiras/8/7171412.1/<BR>&gt; &gt; &gt; &gt;&gt;&gt;&gt;&gt;<BR>&gt; &gt; &gt; &gt;&gt;&gt;&gt;&gt; I left the idea of the fix CR 6770017 but refused of using <BR>&gt; &gt; doubling<BR>&gt; &gt; &gt; &gt;&gt;&gt;&gt;&gt; native variable for storing previously selected index<BR>&gt; &gt; &gt; &gt;&gt;&gt;&gt;&gt; (that also caused the problem described in the current issue).<BR>&gt; &gt; &gt; &gt;&gt;&gt;&gt;&gt;<BR>&gt; &gt; &gt; &gt;&gt;&gt;&gt;&gt; Thanks,<BR>&gt; &gt; &gt; &gt;&gt;&gt;&gt;&gt; Oleg<BR>&gt; &gt; &gt; &gt;&gt;&gt;<BR>&gt; &gt; &gt; &gt;<BR>&gt; &gt; &gt;<BR>&gt; <BR></DIV>                                               </div></body>
</html>