SmartGWT 4.1p 2014-05-19
I don't even know how to begin explaining this...so bear with me. :)
This app uses Gin injection to bind and show each master 'place', which is an extension of VLayout. It uses gin to inject the class at runtime and it does so as a singleton.
The entry point creates the ginjector and draws the initial place:
Each "view" (a VLayout) is injected as a gin module singleton. For example:
The issue I'm seeing is a "ghosting" effect for form items. For example we have a tabset in that above view. One can enter the view, double click the tab to rename it, and hit enter to see the new name. After hitting enter the text item used to rename the tab is gone, of course, showing just the new name.
Now if I click to a different "page" (a different VLayout singleton created by gin injection), and I click back to this original "page" with the tabset the text box has reappeared. At that time there is an exception thrown in ISC_Containers.js. It's also stuck - I have to double click on another tab to get the other tab to create its own text item in order for the 'ghosted' one to disappear.
The ISC_Container error:
Here's the interesting part. The ghosting issue goes away if I don't bind that layout as a singleton. When I get a new instance of the VLayout there's no issue. So I change this....
to this....
it's good.
So it's definitely related to reusing the same VLayout as a singleton. I am not sure if I'll be successful creating a standalone test case because it's going to require all the gin modules and setup. I'm hoping in the meantime the error in ISC_Containers.js can help you to uncover some clues.
Thanks,
-B
I don't even know how to begin explaining this...so bear with me. :)
This app uses Gin injection to bind and show each master 'place', which is an extension of VLayout. It uses gin to inject the class at runtime and it does so as a singleton.
The entry point creates the ginjector and draws the initial place:
Code:
final IClientGinjector ginjector = GWT.create(IClientGinjector.class); ginjector.getAppWidget().draw(); //appWidget returns the landing view which is a class that extends VLayout ginjector.getPlaceHistoryHandler().handleCurrentHistory();
Code:
public class DataGinModule extends AbstractGinModule { @Override protected void configure() { bind(DataProcessingActivity.class); bind(IDataProcessingView.class).to(DataProcessingView.class).in(Singleton.class); } }
Now if I click to a different "page" (a different VLayout singleton created by gin injection), and I click back to this original "page" with the tabset the text box has reappeared. At that time there is an exception thrown in ISC_Containers.js. It's also stuck - I have to double click on another tab to get the other tab to create its own text item in order for the 'ghosted' one to disappear.
The ISC_Container error:
Code:
10:59:43.126 [ERROR] 10:59:43.126:MDN6:WARN:Log:TypeError: _3 is null Stack from error.stack: TabSet.saveTabTitle() @ sc/modules/ISC_Containers.js:280 TabSet._clickOutsideDuringTitleEdit() @ sc/modules/ISC_Containers.js:290 TabSet.showTitleEditor/_8() @ sc/modules/ISC_Containers.js:289 [c]Page.handleEvent() @ sc/modules/ISC_Core.js:1119 [c]EventHandler.doHandleMouseDown() @ sc/modules/ISC_Core.js:1181 [c]EventHandler.handleMouseDown() @ sc/modules/ISC_Core.js:1174 [c]EventHandler.dispatch() @ sc/modules/ISC_Core.js:1429 anonymous() @ sc/modules/ISC_Core.js:49 unnamed() @
Here's the interesting part. The ghosting issue goes away if I don't bind that layout as a singleton. When I get a new instance of the VLayout there's no issue. So I change this....
Code:
bind(IDataProcessingView.class).to(DataProcessingView.class).in(Singleton.class);
Code:
bind(IDataProcessingView.class).to(DataProcessingView.class);
So it's definitely related to reusing the same VLayout as a singleton. I am not sure if I'll be successful creating a standalone test case because it's going to require all the gin modules and setup. I'm hoping in the meantime the error in ISC_Containers.js can help you to uncover some clues.
Thanks,
-B