[kepler-dev] Splash screen and corresponding changes

Matt Jones jones at nceas.ucsb.edu
Tue Apr 18 16:20:14 PDT 2006


Christopher,

Kevin is no longer with SEEK -- he took another job.  We'll have to 
piece together his rationale for these changes from his emails on the 
subject (see the kepler-dev archive), cvs logs, and code. Sorry.

Matt

Christopher Brooks wrote:
> Hi Kevin,
> I'm trying to merge the Kepler exp version of VergilApplication back
> in to the Ptolemy tree.
> 
> The thread is long and convoluted, but the summary is the the Ptolemy
> version call invokeLater() in VergilApplication.main().  Your version
> calls invokeLater in a couple of places instead of main().
> 
> What was the precise bug that you were seeing that was fixed by
> changing VergilApplication?  The splash screen seems fairly responsive
> if I use the Ptolemy version of VergilApplication.  I want
> to be sure I see the bug before I do anything.
> 
> One issue I'm seeing in the Kepler version is that when we parse the
> welcome URL:
>             _parser.parse(welcomeURL, welcomeURL);
> We may need to put that inside invokeLater because it ends up bringing
> up the welcome URL.  We would need to do this in two places.
> 
> One issue I'm facing is that when I was experimenting setting the
> Windows icon, the icon was not fully rendering.  This points to
> a thread problem.  Indeed, the TableauFrame._getDefaultIconImage()
> method was getting called outside the Swing event thread.  However,
> putting it inside the event thread has no yet solved it for me.
> It could be operator error on my part, but it makes me suspicious.
> 
> Nandita suggested using this as a workaround:
>   setIconImage(new BufferedImage(1, 1, BufferedImage.TYPE_INT_ARGB));
> 
> 
> _Christopher
> 
> On Tue, 14 Feb 2006 19:52:16 -0600, Kevin wrote:
> 
>>
>>I've certainly seen many poorly written ui's with redraw bugs.  Without 
>>the source code, we can only rely on the documentation.   It is rather 
>>unfortunate that Sun recommends creating the entire UI in the event 
>>handler thread (note the big red footnote in 
>>http://java.sun.com/docs/books/tutorial/uiswing/misc/threads.html)  Such 
>>a requirement completely eliminates the possibility of doing things like 
>>a splash screen.  I do hope that they cleaned this up for Mustang since 
>>they are releasing splash code in that release.
>>
>>BTW - after I removed invokeLater completely from 
>>VergilApplication.main() the application rendered all three initial 
>>windows (splash, empty graph tableau, and welcome html) flawlessly.  
>>Perhaps the issues you've had were with previous releases of awt/swing.
>>
>>Kevin
>>
>>Edward A. Lee wrote:
>>
>>>At 09:13 AM 2/14/2006, Kevin Ruland wrote:
>>>
>>>> However, separate thread can construct new Swing components, but 
>>>>once they are displayed all interaction with the component - through 
>>>>display, keyboard or mouse events - must be through the event handler.
>>>
>>>I don't think this is true...
>>>I have seen rendering artifacts when swing components are
>>>constructed in other threads...
>>>
>>>Edward
> 
> 
> 
> 
>>Christopher Brooks wrote:
>>
>>
>>>Hi Kevin
>>>Sorry, we don't have particular test cases.
>>>
>>>You could try running the demo in $PTII/demo, which starts up multiple
>>>vergil processes.
>>>
>>>I'm afraid I don't have the time to do a detailed analysis before I
>>>go.  Sorry.  This is sort of lame on my part, but other tasks call.
>>>
>>>_Christopher
>>>
>>>--------
>>>
>>>   Christopher,
>>>   
>>>   These changes are perhaps quite a bit safer since they indeed put the
>>>   gui parts in invokeLater.  The two calls I refer to are the display of
>>>   the documentation effigy and the createPrimaryTableau() calls.  Both of
>>>   these methods are pretty heavy and do cause the Splash to become
>>>   non-responsive.
>>>   
>>>   Without great analysis of where pack(), or show() or setVisible(true) is
>>>   first called in the various tableau classes, I don't know how much finer
>>>   grained we can get.  My gut feeling is
>>>   Configuration.createPrimaryTableau() should really call Tableau.show()
>>>   only in the event handler thread.  But that would be a much deeper
>>>   change than I am comfortable with.
>>>   
>>>   Do you have any bug reports or test cases which were fixed by placing
>>>   VergilApplication(String[]) in invokeLater()?  That would help me out.
>>>   
>>>   Kevin
> 
> _______________________________________________
> Kepler-dev mailing list
> Kepler-dev at ecoinformatics.org
> http://mercury.nceas.ucsb.edu/ecoinformatics/mailman/listinfo/kepler-dev

-- 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Matt Jones                                   Ph: 907-789-0496
jones at nceas.ucsb.edu                    SIP #: 1-747-626-7082
National Center for Ecological Analysis and Synthesis (NCEAS)
UC Santa Barbara     http://www.nceas.ucsb.edu/ecoinformatics
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


More information about the Kepler-dev mailing list