0

在一个简单的库存管理应用程序中,我有一个活动来处理将设备类型分配给员工(如果用户签出某些东西)。我想知道的是:

目前我已经拖放到可以将设备拖到员工身上的位置。我想要的是,一旦拖动设备,就会打开一个弹出窗口,要求用户确认以及他希望分配的数量。这将基本上充当围绕两个实体(设备检查和设备检查)的编辑器。

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

2. 每个弹出窗口是否都有自己的类和 ui.xml 文件 - 这就是我最初打算采用的方式然后只需在 drop 事件上调用 set visible 为 true (我认为这是正确的方法)

我想我在这里要问的主要是验证如何执行其中一些操作,我找不到这个东西的好例子。

对于任何使用谷歌音乐的人,在我想完全按照他们在编辑专辑或歌曲信息时所做的事情之前 - 我想在幕后他们正在使用带有弹出窗口的编辑器 - 我只是想知道什么是正确的真正做到这一点的方法是在我破解解决方案之前

4

1 回答 1

1

我认为您走在正确的轨道上,使弹出窗口自成一体,并在您可以提供帮助的情况下仅保留它的一个实例。

至于编辑器的细节,什么是没有意义的?一般的想法是,您可以创建一次驱动程序,使用弹出窗口(实现编辑器)对其进行初始化,然后在每次准备好使用新模型显示它时调用驱动程序上的编辑。

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

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 可能应该控制驱动程序,以便它可以检查错误、在需要时从服务器传递错误、编辑新模型并清除结果。

于 2012-01-29T03:28:03.193 回答