【问题标题】:GWT Popup with Editor Framework带有编辑器框架的 GWT 弹出窗口
【发布时间】:2012-01-29 11:28:03
【问题描述】:

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

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

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

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

我想我在这里问的主要是验证如何做这件事,我找不到一个像样的例子。

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

【问题讨论】:

    标签: gwt popup gwt-editors


    【解决方案1】:

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

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

    我通常会得到类似的结果(假设类扩展了 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 可能应该控制驱动程序,以便它可以检查错误、根据需要从服务器传递错误、编辑新模型并清除结果。

    【讨论】:

    • 谢谢,我最终做了类似的事情——我为 3 个视图使用了 1 个活动:实际的主 assignView、checkoutPopup 和 checkinPopup,并使用 1 个活动作为结帐和签入弹出窗口的编辑器 -我不知道这是否有问题,但它似乎工作正常
    猜你喜欢
    • 2011-08-24
    • 1970-01-01
    • 2011-06-26
    • 1970-01-01
    • 2016-04-07
    • 2013-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多