Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
Clear All
new posts

    Tab rename TextItem reappears when revisiting the layout with the tabset

    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
    Last edited by beckyo; 24 Jun 2014, 11:18.
Working...
X