From 69d0a7dba198ed85d24bfc30c4744312d2280069 Mon Sep 17 00:00:00 2001 From: "Shawn O. Pearce" Date: Wed, 11 Mar 2009 11:25:21 -0700 Subject: [PATCH] Hide the SSH key add field if we already have keys registered This just makes the UI shorter in this panel, before we add more data, like the server's own host key information. Signed-off-by: Shawn O. Pearce --- .../client/account/AccountConstants.java | 2 + .../account/AccountConstants.properties | 2 + .../gerrit/client/account/SshKeyPanel.java | 110 ++++++++++++------ 3 files changed, 77 insertions(+), 37 deletions(-) diff --git a/src/main/java/com/google/gerrit/client/account/AccountConstants.java b/src/main/java/com/google/gerrit/client/account/AccountConstants.java index 0d734cad8e..49d494e1f8 100644 --- a/src/main/java/com/google/gerrit/client/account/AccountConstants.java +++ b/src/main/java/com/google/gerrit/client/account/AccountConstants.java @@ -33,6 +33,8 @@ public interface AccountConstants extends Constants { String tabWebIdentities(); String tabAgreements(); + String buttonShowAddSshKey(); + String buttonCloseAddSshKey(); String buttonDeleteSshKey(); String buttonClearSshKeyInput(); String buttonOpenSshKey(); diff --git a/src/main/java/com/google/gerrit/client/account/AccountConstants.properties b/src/main/java/com/google/gerrit/client/account/AccountConstants.properties index 2b6ff97382..c8616bdd69 100644 --- a/src/main/java/com/google/gerrit/client/account/AccountConstants.properties +++ b/src/main/java/com/google/gerrit/client/account/AccountConstants.properties @@ -14,6 +14,8 @@ tabSshKeys = SSH Keys tabWebIdentities = Identities tabAgreements = Agreements +buttonShowAddSshKey = Add Key ... +buttonCloseAddSshKey = Close buttonDeleteSshKey = Delete buttonClearSshKeyInput = Clear buttonOpenSshKey = Open Key ... diff --git a/src/main/java/com/google/gerrit/client/account/SshKeyPanel.java b/src/main/java/com/google/gerrit/client/account/SshKeyPanel.java index d672522b7f..a83cc6ebbf 100644 --- a/src/main/java/com/google/gerrit/client/account/SshKeyPanel.java +++ b/src/main/java/com/google/gerrit/client/account/SshKeyPanel.java @@ -33,6 +33,9 @@ import com.google.gwt.user.client.ui.ClickListener; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.HTML; +import com.google.gwt.user.client.ui.HasHorizontalAlignment; +import com.google.gwt.user.client.ui.HorizontalPanel; +import com.google.gwt.user.client.ui.Panel; import com.google.gwt.user.client.ui.RootPanel; import com.google.gwt.user.client.ui.SourcesTableEvents; import com.google.gwt.user.client.ui.TableListener; @@ -54,6 +57,9 @@ class SshKeyPanel extends Composite { private SshKeyTable keys; + private Button showAddKeyBlock; + private Panel addKeyBlock; + private Button closeAddKeyBlock; private Button clearNew; private Button addNew; private Button browse; @@ -63,6 +69,13 @@ class SshKeyPanel extends Composite { SshKeyPanel() { final FlowPanel body = new FlowPanel(); + showAddKeyBlock = new Button(Util.C.buttonShowAddSshKey()); + showAddKeyBlock.addClickListener(new ClickListener() { + public void onClick(Widget sender) { + showAddKeyBlock(true); + } + }); + keys = new SshKeyTable(); body.add(keys); { @@ -74,51 +87,63 @@ class SshKeyPanel extends Composite { } }); fp.add(delSel); + fp.add(showAddKeyBlock); body.add(fp); } - { - final VerticalPanel fp = new VerticalPanel(); - fp.setStyleName("gerrit-AddSshKeyPanel"); - fp.add(new SmallHeading(Util.C.addSshKeyPanelHeader())); - fp.add(new HTML(Util.C.addSshKeyHelp())); + addKeyBlock = new VerticalPanel(); + addKeyBlock.setVisible(false); + addKeyBlock.setStyleName("gerrit-AddSshKeyPanel"); + addKeyBlock.add(new SmallHeading(Util.C.addSshKeyPanelHeader())); + addKeyBlock.add(new HTML(Util.C.addSshKeyHelp())); - addTxt = new TextArea(); - addTxt.setVisibleLines(12); - addTxt.setCharacterWidth(80); - DOM.setElementPropertyBoolean(addTxt.getElement(), "spellcheck", false); - fp.add(addTxt); + addTxt = new TextArea(); + addTxt.setVisibleLines(12); + addTxt.setCharacterWidth(80); + DOM.setElementPropertyBoolean(addTxt.getElement(), "spellcheck", false); + addKeyBlock.add(addTxt); - final FlowPanel buttons = new FlowPanel(); - fp.add(buttons); + final HorizontalPanel buttons = new HorizontalPanel(); + addKeyBlock.add(buttons); - clearNew = new Button(Util.C.buttonClearSshKeyInput()); - clearNew.addClickListener(new ClickListener() { - public void onClick(final Widget sender) { - addTxt.setText(""); - addTxt.setFocus(true); - } - }); - buttons.add(clearNew); + clearNew = new Button(Util.C.buttonClearSshKeyInput()); + clearNew.addClickListener(new ClickListener() { + public void onClick(final Widget sender) { + addTxt.setText(""); + addTxt.setFocus(true); + } + }); + buttons.add(clearNew); - browse = new Button(Util.C.buttonOpenSshKey()); - browse.addClickListener(new ClickListener() { - public void onClick(final Widget sender) { - doBrowse(); - } - }); - browse.setVisible(GWT.isScript() && (!loadedApplet || applet != null)); - buttons.add(browse); + browse = new Button(Util.C.buttonOpenSshKey()); + browse.addClickListener(new ClickListener() { + public void onClick(final Widget sender) { + doBrowse(); + } + }); + browse.setVisible(GWT.isScript() && (!loadedApplet || applet != null)); + buttons.add(browse); - addNew = new Button(Util.C.buttonAddSshKey()); - addNew.addClickListener(new ClickListener() { - public void onClick(final Widget sender) { - doAddNew(); - } - }); - buttons.add(addNew); - body.add(fp); - } + addNew = new Button(Util.C.buttonAddSshKey()); + addNew.addClickListener(new ClickListener() { + public void onClick(final Widget sender) { + doAddNew(); + } + }); + buttons.add(addNew); + + closeAddKeyBlock = new Button(Util.C.buttonCloseAddSshKey()); + closeAddKeyBlock.addClickListener(new ClickListener() { + public void onClick(final Widget sender) { + showAddKeyBlock(false); + } + }); + buttons.add(closeAddKeyBlock); + buttons.setCellWidth(closeAddKeyBlock, "100%"); + buttons.setCellHorizontalAlignment(closeAddKeyBlock, + HasHorizontalAlignment.ALIGN_RIGHT); + + body.add(addKeyBlock); initWidget(body); } @@ -249,10 +274,18 @@ class SshKeyPanel extends Composite { public void onSuccess(final List result) { keys.display(result); keys.finishDisplay(true); + if (result.isEmpty()) { + showAddKeyBlock(true); + } } }); } + private void showAddKeyBlock(final boolean show) { + showAddKeyBlock.setVisible(!show); + addKeyBlock.setVisible(show); + } + private class SshKeyTable extends FancyFlexTable { private static final String S_INVALID = "gerrit-SshKeyPanel-Invalid"; @@ -330,6 +363,9 @@ class SshKeyPanel extends Composite { row++; } } + if (table.getRowCount() == 1) { + showAddKeyBlock(true); + } } }); }