Всплывающее окно GWT с редактором Framework

В простом приложении для управления запасами у меня есть действие для назначения типов оборудования сотрудникам (если пользователь что-то проверяет). Что мне интересно, так это:

В настоящее время у меня есть перетаскивание туда, где оборудование можно перетащить сотруднику. Что я хочу, так это то, что как только оборудование перетаскивается, открывается всплывающее окно с запросом у пользователя подтверждения, а также суммы, которую он хочет назначить. Это в основном будет действовать как редактор для двух объектов (equipmentCheckin и EquipmentCheckout).

Вот проблемы, с которыми я сталкиваюсь:
1. должно ли всплывающее окно быть инициализировано в представлении, а затем установлено видимое в событии перетаскивания (это то, что я планировал сделать) - при этом, как вы на самом деле инициализируете редактор должным образом (должно ли быть отдельное действие, вызываемое при удалении - я не думаю, что это будет, но часть редактора меня смущает)

2. должно ли каждое всплывающее окно иметь свой собственный класс и файл ui.xml - это это то, как я собирался пойти изначально, а затем просто назвать набор visible равным true в событии drop (я думаю, что это правильный путь)

я думаю, что я спрашиваю здесь в основном просто проверка того, как это сделать, я не могу найти достойный пример для этого материала.

для всех, кто использовал Google Music до того, как я хочу делать именно то, что они делают, когда вы переходите к редактированию информации об альбоме или песне - я представляю, что за кулисами они используют редактор с всплывающим окном - я просто хочу знать, как правильно это сделать, прежде чем я найду решение


person sean christe    schedule 28.01.2012    source источник


Ответы (1)


Я думаю, вы на правильном пути, делая всплывающее окно автономным и сохраняя только один экземпляр, если можете.

Что касается деталей редактора, что не имеет смысла? Общая идея заключается в том, что вы можете создать драйвер один раз, инициализировать его с помощью всплывающего окна (реализация редактора), а затем вызывать редактирование драйвера каждый раз, когда вы готовы отобразить его с новой моделью.

Обычно я получаю что-то вроде (при условии, что класс расширяет всплывающее окно, реализует редактор и имеет внутренний драйвер, определенный)

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, в которой представление и ведущий являются интерфейсами, и где ведущий не знает, как в конечном итоге будет отображаться представление. В целом выглядит примерно так для меня

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, вероятно, должен управлять драйвером, чтобы он мог проверять наличие ошибок, передавать ошибки с сервера, если это необходимо, редактировать новые модели и сбрасывать результаты.

person Colin Alworth    schedule 29.01.2012
comment
Спасибо, в итоге я сделал то же самое - я использовал 1 действие для 3 представлений: фактический основной assignView, checkoutPopup и checkinPopup и использовал 1 действие в качестве редактора для всплывающих окон проверки и проверки - я не знаю, есть ли проблема с этим, но, кажется, работает нормально - person sean christe; 30.01.2012