We're doing some business logic in one of our ULCTextFields that displays a confirmation dialog when the value change event occurs. In almost all situations this is working great for us, however, there is a situation where there is some 'background' view that is auto-refreshing values in a table (Quartz job) and this is triggering the change event in our text field to fire. The problem is when the user enters part of their value and the change event is fired the confirmation dialog pops up before the user has entered their value. Also, the refresh is occurring every 5 seconds (in our case) so the confirmation dialog pops up every five seconds.
The real problem is that we are using value change events in place of focus events (we used the fact that ULC doesn't fire a change event until the focus is lost). What is happening (order is important). 1. user enters a partial value in text field (with the registered change listener that pops up confirmation dialog). 2. background refresh occurs 3. UI component of text field fires value changed event. 4. ULC text component displays confirmation dialog. 5. UI component fires focus changed. 6. ... It is the fact that the value changed event (client synchronization) is occurring before the focus event is fired, yet it is the focus event change that is causing the client to synchronize. I'd like to register for focus change events on the client (UI) and if it is temporary then not send the value change event but because of the order I can't find a way to do this. Any suggestions as to how I can intercept this value change event AND have the focus event that triggered it so I can decide if I really want to send the value change event? I can override the fireValueChanged(..) method but at the time it's called I don't have the triggering focus event so I can't make the check. Or any other recommendations?? Sincerely, Amos Navis
