summaryrefslogtreecommitdiffstats
path: root/src/main/java/com/google/gerrit/client/account/AccountSettings.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/gerrit/client/account/AccountSettings.java')
-rw-r--r--src/main/java/com/google/gerrit/client/account/AccountSettings.java177
1 files changed, 177 insertions, 0 deletions
diff --git a/src/main/java/com/google/gerrit/client/account/AccountSettings.java b/src/main/java/com/google/gerrit/client/account/AccountSettings.java
new file mode 100644
index 0000000000..0ee7d22944
--- /dev/null
+++ b/src/main/java/com/google/gerrit/client/account/AccountSettings.java
@@ -0,0 +1,177 @@
+// Copyright 2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.client.account;
+
+import static com.google.gerrit.client.FormatUtil.mediumFormat;
+
+import com.google.gerrit.client.Gerrit;
+import com.google.gerrit.client.Link;
+import com.google.gerrit.client.reviewdb.Account;
+import com.google.gerrit.client.rpc.Common;
+import com.google.gerrit.client.rpc.GerritCallback;
+import com.google.gerrit.client.ui.AccountScreen;
+import com.google.gerrit.client.ui.LazyTabChild;
+import com.google.gerrit.client.ui.Screen;
+import com.google.gwt.i18n.client.LocaleInfo;
+import com.google.gwt.user.client.ui.Grid;
+import com.google.gwt.user.client.ui.SourcesTabEvents;
+import com.google.gwt.user.client.ui.TabListener;
+import com.google.gwt.user.client.ui.TabPanel;
+import com.google.gwt.user.client.ui.HTMLTable.CellFormatter;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class AccountSettings extends AccountScreen {
+ private String initialTabToken;
+ private int labelIdx, fieldIdx;
+ private Grid info;
+
+ private List<String> tabTokens;
+ private TabPanel tabs;
+ private PreferencePanel prefsPanel;
+
+ public AccountSettings(final String tabToken) {
+ super(Util.C.accountSettingsHeading());
+ initialTabToken = tabToken;
+ }
+
+ @Override
+ public Object getScreenCacheToken() {
+ return getClass();
+ }
+
+ @Override
+ public Screen recycleThis(final Screen newScreen) {
+ final AccountSettings s = (AccountSettings) newScreen;
+ initialTabToken = s.initialTabToken;
+ return this;
+ }
+
+ @Override
+ public void onLoad() {
+ if (info == null) {
+ initUI();
+ }
+
+ super.onLoad();
+ display(Gerrit.getUserAccount());
+ tabs.selectTab(tabTokens.indexOf(initialTabToken));
+
+ Util.ACCOUNT_SVC.myAccount(new GerritCallback<Account>() {
+ public void onSuccess(final Account result) {
+ if (isAttached()) {
+ display(result);
+ }
+ }
+ });
+ }
+
+ private void initUI() {
+ if (LocaleInfo.getCurrentLocale().isRTL()) {
+ labelIdx = 1;
+ fieldIdx = 0;
+ } else {
+ labelIdx = 0;
+ fieldIdx = 1;
+ }
+
+ info = new Grid(4, 2);
+ info.setStyleName("gerrit-InfoBlock");
+ info.addStyleName("gerrit-AccountInfoBlock");
+ add(info);
+
+ infoRow(0, Util.C.fullName());
+ infoRow(1, Util.C.preferredEmail());
+ infoRow(2, Util.C.sshUserName());
+ infoRow(3, Util.C.registeredOn());
+
+ final CellFormatter fmt = info.getCellFormatter();
+ fmt.addStyleName(0, 0, "topmost");
+ fmt.addStyleName(0, 1, "topmost");
+ fmt.addStyleName(2, 0, "bottomheader");
+
+ prefsPanel = new PreferencePanel();
+
+ tabTokens = new ArrayList<String>();
+ tabs = new TabPanel();
+ tabs.setWidth("98%");
+ add(tabs);
+
+ tabs.add(prefsPanel, Util.C.tabPreferences());
+ tabTokens.add(Link.SETTINGS);
+
+ tabs.add(new LazyTabChild<ContactPanel>() {
+ @Override
+ protected ContactPanel create() {
+ return new ContactPanel(AccountSettings.this);
+ }
+ }, Util.C.tabContactInformation());
+ tabTokens.add(Link.SETTINGS_CONTACT);
+
+ tabs.add(new LazyTabChild<SshKeyPanel>() {
+ @Override
+ protected SshKeyPanel create() {
+ return new SshKeyPanel();
+ }
+ }, Util.C.tabSshKeys());
+ tabTokens.add(Link.SETTINGS_SSHKEYS);
+
+ switch (Common.getGerritConfig().getLoginType()) {
+ case OPENID:
+ tabs.add(new LazyTabChild<ExternalIdPanel>() {
+ @Override
+ protected ExternalIdPanel create() {
+ return new ExternalIdPanel();
+ }
+ }, Util.C.tabWebIdentities());
+ tabTokens.add(Link.SETTINGS_WEBIDENT);
+ break;
+ }
+
+ if (Common.getGerritConfig().isUseContributorAgreements()) {
+ tabs.add(new LazyTabChild<AgreementPanel>() {
+ @Override
+ protected AgreementPanel create() {
+ return new AgreementPanel();
+ }
+ }, Util.C.tabAgreements());
+ tabTokens.add(Link.SETTINGS_AGREEMENTS);
+ }
+
+ tabs.addTabListener(new TabListener() {
+ public boolean onBeforeTabSelected(SourcesTabEvents sender, int tabIndex) {
+ return true;
+ }
+
+ public void onTabSelected(SourcesTabEvents sender, int tabIndex) {
+ Gerrit.display(tabTokens.get(tabIndex), false);
+ }
+ });
+ }
+
+ private void infoRow(final int row, final String name) {
+ info.setText(row, labelIdx, name);
+ info.getCellFormatter().addStyleName(row, 0, "header");
+ }
+
+ void display(final Account account) {
+ info.setText(0, fieldIdx, account.getFullName());
+ info.setText(1, fieldIdx, account.getPreferredEmail());
+ info.setText(2, fieldIdx, account.getSshUserName());
+ info.setText(3, fieldIdx, mediumFormat(account.getRegisteredOn()));
+ prefsPanel.display(account);
+ }
+}