Quantcast
Channel: SmartClient Forums
Viewing all articles
Browse latest Browse all 4756

Tab rename TextItem reappears when revisiting the layout with the tabset

$
0
0
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:

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();

Each "view" (a VLayout) is injected as a gin module singleton. For example:
Code:

public class DataGinModule extends AbstractGinModule
{
  @Override
  protected void configure()
  {
    bind(DataProcessingActivity.class);
    bind(IDataProcessingView.class).to(DataProcessingView.class).in(Singleton.class);
  }
}

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:
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);
to this....
Code:

bind(IDataProcessingView.class).to(DataProcessingView.class);
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

Viewing all articles
Browse latest Browse all 4756

Trending Articles