[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