package org.ovirt.engine.ui.common.presenter;
import org.ovirt.engine.ui.common.auth.CurrentUser;
import org.ovirt.engine.ui.common.uicommon.model.OptionsProvider;
import org.ovirt.engine.ui.common.utils.WebUtils;
import org.ovirt.engine.ui.uicommonweb.models.OptionsModel;
import com.google.gwt.event.dom.client.HasClickHandlers;
import com.google.gwt.event.shared.EventBus;
import com.google.gwt.safehtml.shared.SafeHtmlUtils;
import com.gwtplatform.mvp.client.PresenterWidget;
import com.gwtplatform.mvp.client.View;
public abstract class AbstractHeaderPresenterWidget<V extends AbstractHeaderPresenterWidget.ViewDef> extends PresenterWidget<V> {
public interface ViewDef extends View {
void setUserName(String userName);
HasClickHandlers getOptionsLink();
HasClickHandlers getLogoutLink();
HasClickHandlers getGuideLink();
}
private final CurrentUser user;
private final String windowName;
private String guideUrl;
private final OptionsProvider optionsProvider;
public AbstractHeaderPresenterWidget(EventBus eventBus, V view, CurrentUser user,
OptionsProvider optionsProvider, String windowName, String guideUrl) {
super(eventBus, view);
this.user = user;
this.windowName = windowName;
this.optionsProvider = optionsProvider;
setGuideUrl(guideUrl);
}
@Override
protected void onBind() {
super.onBind();
registerHandler(getView().getLogoutLink().addClickHandler(event -> user.logout()));
registerHandler(getView().getGuideLink().addClickHandler(event -> WebUtils.openUrlInNewWindow(windowName, guideUrl)));
registerHandler(getView().getOptionsLink().addClickHandler(event -> {
OptionsModel model = optionsProvider.getModel();
model.executeCommand(model.getEditCommand());
}));
}
/**
* Set the URL of the guide link. This string is escaped.
* @param guideUrlString The new URL as a string.
*/
public void setGuideUrl(String guideUrlString) {
this.guideUrl = SafeHtmlUtils.htmlEscapeAllowEntities(guideUrlString);
}
@Override
protected void onReset() {
super.onReset();
getView().setUserName(user.getFullUserName());
}
}