GWT弹出式编辑器框架



在一个简单的库存管理应用程序中,我有一个活动来处理将设备类型分配给员工(如果用户检查了什么)。我想知道的是:

目前,我有拖放到设备可以拖到员工那里。我想要的是,一旦拖动设备,就会弹出一个弹出窗口,要求用户确认以及他希望分配的金额。这基本上将充当两个实体(设备检入和设备检出)的编辑器。

以下是我遇到的问题:
1.弹出窗口是否应该在视图中初始化,然后在放置事件中设置为可见(这是我计划要做的)-在这样做的过程中,你如何正确初始化编辑器(是否应该在放置上调用一个单独的活动-我想不会,但编辑器部分让我困惑)

2.每个弹出窗口都应该有自己的类和ui.xml文件吗?这是我最初的做法,然后在drop事件中调用可见的集合为true(我认为这是正确的做法)

我想我在这里问的主要是验证如何做到这一点,我找不到一个合适的例子。

对于任何以前使用过谷歌音乐的人,我想当你编辑专辑或歌曲信息时,他们到底在做什么-我想在幕后他们使用的是带弹出窗口的编辑器-我只想知道在我破解解决方案

之前,真正做到这一点的正确方法是什么

我认为你走在了正确的轨道上,使弹出窗口成为独立的,如果你能帮助的话,只保留它的一个实例。

就编辑所说的细节而言,有什么是没有意义的?一般的想法是,你可以创建一次驱动程序,用弹出窗口初始化它(实现编辑器),然后在每次准备用新模型显示驱动程序时调用edit。

我通常会得到这样的结果(假设类扩展了Popup,实现了Editor,并在内部定义了驱动程序)

public MyPopup() {
  //uibinder or other layout
  this.driver = GWT.create(Driver.class);
  driver.initialize(this);
}
public void edit(MyModel model) {
  driver.edit(model);
  show();
}

为了用我自己的方法/偏见来丰富这个答案,我喜欢MVP设置,其中视图和演示者都是接口,演示者impl不知道视图最终会如何绘制。对我来说,通常看起来像这样

public interface MyModelEditorView extends Editor<MyModel> {
  // this param is used in a mobile/table situation, where popups aren't as friendly
  void show(AcceptsOneWidget parent);
  // exposes the driver for the presenter * 
  SimpleBeanEditorDriver<MyModel, ?> getDriver();
  void setPresenter(Presenter presenter);
  public interface Presenter {
    // this is the only method that is called externally
    void show(AcceptsOneWidget parent, MyModel model);
    // called by click handlers in the view impl, probably by @UiHandler methods
    void onSaveClicked();
    void onCancelClicked();
  }
}

*Presenter可能应该控制驱动程序,这样它就可以检查错误,在需要时从服务器传递错误,编辑新模型,并刷新结果。

最新更新