0

我正在寻找例如使用 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?在我的示例应用程序中,我只需要使用代码拆分按需加载窗口,并且该窗口必须位于 gin 模块中。

4

1 回答 1

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) {
           ...
          }
        }

      }
    });
  }
于 2013-03-20T14:07:48.813 回答