From 8a2e2f79447e8ae8d9e9bb7a10c3a605fb09874a Mon Sep 17 00:00:00 2001 From: Edwin Kempin Date: Wed, 14 Jul 2010 14:12:39 +0200 Subject: [PATCH] Set focus on SignIn Button in NotSignedInDialog Initially set the keyboard focus on the SignIn Button when the NotSignedInDialog is shown. This allows the user to handle this dialog without using the mouse. In addition allow the user to cancel this dialog by pressing ESC. Signed-off-by: Edwin Kempin Change-Id: I2bf66b73e84a96f238bda868c0e2964a54a076e8 --- .../gerrit/client/NotSignedInDialog.java | 32 +++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) 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); } }