diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/NotSignedInDialog.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/NotSignedInDialog.java index af86a21501..f3544964fe 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/NotSignedInDialog.java +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/NotSignedInDialog.java @@ -16,26 +16,35 @@ package com.google.gerrit.client; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; +import com.google.gwt.event.logical.shared.CloseEvent; +import com.google.gwt.event.logical.shared.CloseHandler; import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.History; import com.google.gwt.user.client.ui.Button; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.HTML; +import com.google.gwt.user.client.ui.PopupPanel; +import com.google.gwtexpui.globalkey.client.GlobalKey; import com.google.gwtexpui.user.client.AutoCenterDialogBox; /** A dialog box telling the user they are not signed in. */ -public class NotSignedInDialog extends AutoCenterDialogBox { +public class NotSignedInDialog extends AutoCenterDialogBox implements CloseHandler { + + private Button signin; + private boolean buttonClicked = false; + public NotSignedInDialog() { super(/* auto hide */false, /* modal */true); setGlassEnabled(true); setText(Gerrit.C.notSignedInTitle()); final FlowPanel buttons = new FlowPanel(); - final Button signin = new Button(); + signin = new Button(); signin.setText(Gerrit.C.menuSignIn()); signin.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { + buttonClicked = true; hide(); Gerrit.doSignIn(History.getToken()); } @@ -48,6 +57,7 @@ public class NotSignedInDialog extends AutoCenterDialogBox { close.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { + buttonClicked = true; Gerrit.deleteSessionCookie(); hide(); } @@ -60,5 +70,23 @@ public class NotSignedInDialog extends AutoCenterDialogBox { add(center); center.setWidth("400px"); + + addCloseHandler(this); + } + + @Override + public void onClose(CloseEvent event) { + if (!buttonClicked) { + // the dialog was closed without one of the buttons being pressed + // e.g. the user pressed ESC to close the dialog + Gerrit.deleteSessionCookie(); + } + } + + @Override + public void center() { + super.center(); + GlobalKey.dialog(this); + signin.setFocus(true); } }