[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