Привет, я только изучаю структуру gwtp и столкнулся с дилеммой. У меня есть LayoutPresenter на верхнем уровне, который имеет слот основного контента и слот контента меню, и я пытаюсь найти способ связать моих докладчиков для каждого слота вместе, если это возможно, чтобы при раскрытии основного контента он автоматически отображал правильную сторону меню. В настоящее время у меня есть статическое логическое значение в презентаторе меню, которое обновляется onReveal и onHide. Затем я могу проверить, видно ли меню, когда раскрывается основной контент, и если нет, я открываю его.
public class MenuPresenter extends Presenter<MenuPresenter.MyView, MenuPresenter.MyProxy> {
private static boolean hidden = true;
...
@Override
protected void revealInParent() {
RevealContentEvent.fire(this, LayoutPresenter.SIDE, this);
}
@Override
protected void onReveal(){
super.onReveal();
hidden = false;
}
@Override
protected void onHide(){
super.onHide();
hidden = true;
}
public static boolean isHidden(){
return hidden;
}
}
Затем в основном содержании Presenter:
public class ContentPresenter extends
Presenter<ContentPresenter.MyView, ContentPresenter.MyProxy> {
...
private final DispatchAsync dispather;
private final PlaceManager placeManager;
@Inject
public PhoneCallPresenter(final EventBus eventBus, final MyView view, final MyProxy proxy, final DispatchAsync dispatcher, final PlaceManager placeManager) {
super(eventBus, view, proxy);
this.dispather = dispatcher;
this.placeManager = placeManager;
}
@Override
protected void revealInParent() {
RevealContentEvent.fire(this, LayoutPresenter.CONTENT, this);
}
@Override
protected void onReveal() {
super.onReveal();
if (MenuPresenter.isHidden()){
placeManager.revealPlace(new PlaceRequest(NameTokens.menu));
}
}
}