// Copyright (C) 2008 The Android Open Source Project // // 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.AvatarImage; import com.google.gerrit.client.Gerrit; import com.google.gerrit.client.GerritUiExtensionPoint; import com.google.gerrit.client.info.AccountInfo; import com.google.gerrit.client.rpc.NativeString; import com.google.gerrit.client.rpc.RestApi; import com.google.gwt.i18n.client.LocaleInfo; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.Anchor; import com.google.gwt.user.client.ui.Grid; import com.google.gwt.user.client.ui.HTMLTable.CellFormatter; import com.google.gwt.user.client.ui.HorizontalPanel; import com.google.gwt.user.client.ui.VerticalPanel; public class MyProfileScreen extends SettingsScreen { private AvatarImage avatar; private Anchor changeAvatar; private int labelIdx; private int fieldIdx; private Grid info; @Override protected void onInitUI() { super.onInitUI(); HorizontalPanel h = new HorizontalPanel(); add(h); if (Gerrit.info().plugin().hasAvatars()) { VerticalPanel v = new VerticalPanel(); v.addStyleName(Gerrit.RESOURCES.css().avatarInfoPanel()); h.add(v); avatar = new AvatarImage(); v.add(avatar); changeAvatar = new Anchor(Util.C.changeAvatar(), "", "_blank"); changeAvatar.setVisible(false); v.add(changeAvatar); } if (LocaleInfo.getCurrentLocale().isRTL()) { labelIdx = 1; fieldIdx = 0; } else { labelIdx = 0; fieldIdx = 1; } info = new Grid((Gerrit.info().auth().siteHasUsernames() ? 1 : 0) + 4, 2); info.setStyleName(Gerrit.RESOURCES.css().infoBlock()); info.addStyleName(Gerrit.RESOURCES.css().accountInfoBlock()); h.add(info); int row = 0; if (Gerrit.info().auth().siteHasUsernames()) { infoRow(row++, Util.C.userName()); } infoRow(row++, Util.C.fullName()); infoRow(row++, Util.C.preferredEmail()); infoRow(row++, Util.C.registeredOn()); infoRow(row++, Util.C.accountId()); final CellFormatter fmt = info.getCellFormatter(); fmt.addStyleName(0, 0, Gerrit.RESOURCES.css().topmost()); fmt.addStyleName(0, 1, Gerrit.RESOURCES.css().topmost()); fmt.addStyleName(row - 1, 0, Gerrit.RESOURCES.css().bottomheader()); } @Override protected void onLoad() { super.onLoad(); add(createExtensionPoint(GerritUiExtensionPoint.PROFILE_SCREEN_BOTTOM)); display(Gerrit.getUserAccount()); display(); } private void infoRow(final int row, final String name) { info.setText(row, labelIdx, name); info.getCellFormatter().addStyleName(row, 0, Gerrit.RESOURCES.css().header()); } void display(AccountInfo account) { if (Gerrit.info().plugin().hasAvatars()) { avatar.setAccount(account, 93, false); new RestApi("/accounts/") .id("self") .view("avatar.change.url") .get( new AsyncCallback<NativeString>() { @Override public void onSuccess(NativeString changeUrl) { changeAvatar.setHref(changeUrl.asString()); changeAvatar.setVisible(true); } @Override public void onFailure(Throwable caught) {} }); } int row = 0; if (Gerrit.info().auth().siteHasUsernames()) { info.setWidget(row++, fieldIdx, new UsernameField()); } info.setText(row++, fieldIdx, account.name()); info.setText(row++, fieldIdx, account.email()); info.setText(row++, fieldIdx, mediumFormat(account.registeredOn())); info.setText(row, fieldIdx, account.getId().toString()); } }