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

Nandita Mangal nmangal at sdsc.edu
Tue Feb 14 17:19:07 PST 2006


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
>  
>



More information about the Kepler-dev mailing list