/ / non-singleton PresenterWidgets / Перегляди в проекті GWTP - gwt, gwtp, gwt-platform

non-singleton PresenterWidgets / Перегляди в проекті GWTP - gwt, gwtp, gwt-платформа

Я використовую GWT з Структура GWTP в моїх проектах. До цих пір всі презентатори / перегляди типу singleton (одне виділене вікно для кожного типу реалізації). Тепер у мене є спеціальний (документ) вікно, де я хочу створити новий ведучий / перегляд (вікно) для кожного документа, який користувач хоче відкрити.

Клас GWTP com.gwtplatform.mvp.client.gin.AbstractPresenterModule містить методи для зв'язування недінгтонних PresenterWidgets / Views, наприклад з фабрикою PresenterWidget;

введіть опис зображення тут

Але я не можу знайти будь-яку документацію або приклади про це використання GWTP PresenterWidget фабрики. Як реалізувати цей завод PresenterWidget?

Відповіді:

1 для відповіді № 1

Існує різниця між використанням com.gwtplatform.mvp.client.PresenterWidget і com.gwtplatform.mvp.client.Presenter під час реалізації власних класів презентаторів.

При використанні Presenter (з PresenterProxy) GWTP обробляє презентатор як одиночний.

public class MyPresenter extends Presenter<MyPresenter.MyView, MyPresenter.MyProxy>

При використанні PresenterWidget презентатор буде створено декілька разів (наприклад, область Spring prototype)

public class MyPresenter extends PresenterWidget<MyPresenter.MyView>

Потім використовуйте com.google.inject.Provider get () для інстанції презентатора. При використанні PresenterWidget це призведе до декількох екземплярів. При використанні Ведуча повертається одиночний доповідач. Наприклад:

@Inject
MySecondPresenter(EventBus eventBus, MySecondView view, MySecondProxy proxy, Provider<MyPresenter> myProvider) {
super(eventBus, view, proxy, RevealType.Root);
setMyProvider(myProvider);
}

і

MyPresenter p = getMyProvider().get();
getView().addMyPresenter(p);

Сподіваюся, це допоможе