smartgwt + gin Code Splitting

时间:2013-03-20 13:47:10

标签: gwt smartgwt gwt2 gin

我正在寻找使用gin和smartgwt代码分割的例子......

在我的简单应用程序中,我有2个模块AutoLoadModuleWindowModule。在我的简单应用程序中,我只需要在单击某个按钮时加载窗口。

我的窗口模块包含:

   
@Override
protected void configure() {
    bind(MainWindow.class).in(Singleton.class);

}

和我的MainWindow

@Singleton
public class MainWindow extends Window implements SessionStatusChangedEvent.Handler {

    private final XmppSession session;

    @Inject
    private MainWindow(XmppSession session) {

        Log.debug("Constructor ImMainWindow... !");

        this.session = session;
        initComponent();
    }
    ....................

在我AutoLoadModule我绑定AutoLoad asEagerSingleton();

    @Override
    protected void configure() {
    bind(StartButton.class).toProvider(StartChatButtonProvider.class);
        bind(AutoLoader.class).asEagerSingleton();

    }

我的AutoLoader课程:

@Singleton
public class AutoLoader implements Scheduler.ScheduledCommand {

private final XmppConnection connection;
@Nullable
private final ImStartButton startButton;

    @Inject
    protected AutoLoader(final XmppConnection connection, final XmppSession session,
             final StartButton startButton) {
    this.startButton = startButton;

    Scheduler.get().scheduleDeferred(this);
    }

    @Override
    public final void execute() {
    startButton.addClickHandler(new ClickHandler() {

        @Override
        public void onClick(ClickEvent event) {
            Log.debug("StartButton click handler...");
                    //load window in this point but how ? ....
        }
    });
    }
}

当窗口在WindowModule时,可以使用Code Splitting加载窗口实例吗?在我的示例应用程序中,我只需要使用代码拆分按需加载窗口,该窗口必须位于gin模块中。

1 个答案:

答案 0 :(得分:1)

不确定要拆分代码的位置,但使用gin可以利用AsyncProviders并让git拆分代码。

@Inject
protected AutoLoader(
         final XmppConnection connection, 
         final XmppSession session,
         final StartButton startButton, 
         final AsyncProvider<MainWindow> mainProvider) {

  ...

  @Override
  public final void execute() {
    startButton.addClickHandler(new ClickHandler() {
      @Override
      public void onClick(ClickEvent event) {

        // Here Gin would split the code
        mainProvider.get(new AsyncCallback<MainWindow>() {
          public void onSuccess(MainWindow main) {
           ...
          }
        }

      }
    });
  }