[kepler-dev] Found simple fix was Re: Splash screen and corresponding changes

Matthew Brooke brooke at nceas.ucsb.edu
Tue Feb 14 17:27:41 PST 2006


Nandita -

see Christopher's details/discussion in bug #2352:

http://bugzilla.ecoinformatics.org/show_bug.cgi?id=2352

m



Nandita Mangal wrote:
> Hi Kevin,
> I had a question, regarding the KeplerApplication ....I need to remember 
> a setting from the user (i.e if welcome dialog should be displayed at 
> everystartup) via
> the welcome screen (which is currently instantiated in 
> KeplerApplication)....I guess I can write setting to a general file and 
> check before starting welcome screen...Is there any particular file
> where i should put such kind of setting?....I dont know how/where in 
> vergil a user will be able to turn this setting back on though ...:)
> thanks,
> nandita.
> 
> 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
>>    
>>    
>>    *** ../ptII/ptolemy/vergil/VergilApplication.java    Mon Feb 13 08:57:11
>>    2006
>>    --- src/exp/ptolemy/vergil/VergilApplication.java    Tue Feb 14 11:39:40
>>    2006
>>    ***************
>>    *** 45,50 ****
>>    --- 45,51 ----
>>      import ptolemy.actor.gui.PtolemyPreferences;
>>      import ptolemy.data.expr.Parameter;
>>      import ptolemy.gui.GraphicalMessageHandler;
>>    + import ptolemy.gui.SwingWorker;
>>      import ptolemy.kernel.CompositeEntity;
>>      import ptolemy.kernel.attributes.URIAttribute;
>>      import ptolemy.kernel.util.ChangeRequest;
>>    ***************
>>    *** 139,161 ****
>>              // weird things happens at the user interface level.  This
>>              // seems to prevent occasional errors rending HTML under Web
>>    Start.
>>              try {
>>    !             // NOTE: This is unfortunate... It would be nice
>>    !             // if this could be run inside a PtolemyThread, since
>>    !             // getting read access the workspace is much more efficient
>>    !             // in PtolemyThread.
>>    !             SwingUtilities.invokeLater(new Runnable() {
>>    !                 public void run() {
>>                          try {
>>    !                         new VergilApplication(args);
>>                          } catch (Throwable throwable) {
>>                              System.err.println("xxxxxxxxxxxxxxxxxxxx");
>>     
>>                              // If we get an Error or and Exception while
>>                              // configuring, we will end up here.
>>                              _errorAndExit("Command failed", args, throwable);
>>                          }
>>                      }
>>    !             });
>>              } catch (Throwable throwable2) {
>>                  // We are not likely to get here, but just to be safe
>>                  // we try to print the error message and display it in a
>>    --- 140,160 ----
>>              // weird things happens at the user interface level.  This
>>              // seems to prevent occasional errors rending HTML under Web
>>    Start.
>>              try {
>>    !             SwingWorker w = new SwingWorker() {
>>    !                 public Object construct() {
>>                          try {
>>    !                     return new VergilApplication(args);
>>                          } catch (Throwable throwable) {
>>                              System.err.println("xxxxxxxxxxxxxxxxxxxx");
>>     
>>                              // If we get an Error or and Exception while
>>                              // configuring, we will end up here.
>>                              _errorAndExit("Command failed", args, throwable);
>>    +                         return null;
>>                          }
>>                      }
>>    !             };
>>    !             w.start();
>>              } catch (Throwable throwable2) {
>>                  // We are not likely to get here, but just to be safe
>>                  // we try to print the error message and display it in a
>>    ***************
>>    *** 439,445 ****
>>           *  @exception Exception If the configuration cannot be opened.
>>           */
>>          protected Configuration _createEmptyConfiguration() throws Exception 
>>   {
>>    !         Configuration configuration = _createDefaultConfiguration();
>>              URL welcomeURL = null;
>>              URL introURL = null;
>>     
>>    --- 438,444 ----
>>           *  @exception Exception If the configuration cannot be opened.
>>           */
>>          protected Configuration _createEmptyConfiguration() throws Exception 
>>   {
>>    !         final Configuration configuration = _createDefaultConfiguration()
>>   ;
>>              URL welcomeURL = null;
>>              URL introURL = null;
>>     
>>    ***************
>>    *** 449,456 ****
>>                  new PtolemyEffigy.Factory(directory,
>>                          directory.uniqueName("ptolemyEffigy"));
>>                     
>>    !         Effigy effigy = factory.createEffigy(directory, null, null);
>>              configuration.createPrimaryTableau(effigy);
>>     
>>              try {
>>                  // First, we see if we can find the welcome window by
>>    --- 448,459 ----
>>                  new PtolemyEffigy.Factory(directory,
>>                          directory.uniqueName("ptolemyEffigy"));
>>                     
>>    !         final Effigy effigy = factory.createEffigy(directory, null, null)
>>   ;
>>    !         SwingUtilities.invokeLater( new Runnable() {
>>    !             public void run() {
>>                      configuration.createPrimaryTableau(effigy);
>>    +             }
>>    +         });
>>     
>>              try {
>>                  // First, we see if we can find the welcome window by
>>    ***************
>>    *** 483,491 ****
>>                  _parser.parse(welcomeURL, welcomeURL);
>>              }
>>     
>>    !         Effigy doc = (Effigy) configuration.getEntity("directory.doc");
>>     
>>    !         doc.identifier.setExpression(introURL.toExternalForm());
>>     
>>     
>>              return configuration;
>>    --- 486,507 ----
>>                  _parser.parse(welcomeURL, welcomeURL);
>>              }
>>     
>>    !         final Effigy doc = (Effigy)
>>    configuration.getEntity("directory.doc");
>>     
>>    !         /* Need to have a final variable to hold the introURL in order
>>    !          * to use in an anonymous class.
>>    !          */
>>    !         final URL finalIntroURL = introURL;
>>    !         SwingUtilities.invokeLater( new Runnable() {
>>    !             public void run() {
>>    !                 try {
>>    !                    
>>    doc.identifier.setExpression(finalIntroURL.toExternalForm());
>>    !                 }
>>    !                 catch( IllegalActionException ex ) {
>>    !                     /* Not certain what to do with this here */
>>    !                 }
>>    !             }
>>    !         });
>>     
>>     
>>              return configuration;
>>    
>>    
>> --------
>> _______________________________________________
>> Kepler-dev mailing list
>> Kepler-dev at ecoinformatics.org
>> http://mercury.nceas.ucsb.edu/ecoinformatics/mailman/listinfo/kepler-dev
>>  
>>
> 
> _______________________________________________
> Kepler-dev mailing list
> Kepler-dev at ecoinformatics.org
> http://mercury.nceas.ucsb.edu/ecoinformatics/mailman/listinfo/kepler-dev

-- 

---------------------------------------------
Matthew Brooke, Ph.D.
Marine Sciences Research Building, Room #3407
University of California
Santa Barbara, CA  93106-6150
ph: (805) 893-7108   fx: 805-893-8062
brooke at nceas.ucsb.edu
---------------------------------------------


More information about the Kepler-dev mailing list