package net.thesocialos.client.chat.view; import net.thesocialos.client.chat.ChatMenuPresenter.Display; import net.thesocialos.client.helper.RPCXSRF; import net.thesocialos.client.service.UserService; import net.thesocialos.client.service.UserServiceAsync; import net.thesocialos.shared.ChannelApiEvents.ChApiContactNew; import net.thesocialos.shared.model.User; import com.google.gwt.cell.client.AbstractCell; import com.google.gwt.core.client.GWT; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.safehtml.shared.SafeHtmlBuilder; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.uibinder.client.UiHandler; import com.google.gwt.user.cellview.client.CellList; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.Button; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.FocusPanel; import com.google.gwt.user.client.ui.HTMLPanel; import com.google.gwt.user.client.ui.HorizontalPanel; import com.google.gwt.user.client.ui.Image; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.Widget; public class ChatMenuView extends Composite implements Display { interface ChatMenuViewUiBinder extends UiBinder<Widget, ChatMenuView> { } private static ChatMenuViewUiBinder uiBinder = GWT.create(ChatMenuViewUiBinder.class); @UiField(provided = true) CellList<User> cellList = new CellList<User>(new AbstractCell<User>() { @Override public void render(Context context, User value, SafeHtmlBuilder sb) { if (value == null) return; switch (value.chatState) { case ONLINE: sb.appendHtmlConstant("<table class='chat_state_online' width= '100%'>"); break; case BUSY: sb.appendHtmlConstant("<table class='chat_state_busy' width= '100%'>"); break; case AFK: sb.appendHtmlConstant("<table class='chat_state_away' width= '100%'>"); break; case OFFLINE: sb.appendHtmlConstant("<table class='chat_state_offline' width= '100%'>"); break; default: break; } // Add the contact image. sb.appendHtmlConstant("<tr><td rowspan='3' align='center' class='chat_contactTable_imageCell'>"); if (value.getUrlAvatar() == null) sb .appendHtmlConstant("<img src='./images/anonymous_avatar.png' width='30px' height='35px' />"); else sb.appendHtmlConstant("<img src=" + value.getUrlAvatar() + " width='30px' height='35px' />"); sb.appendHtmlConstant("</td>"); // Add the name and address. sb.appendHtmlConstant("<td style='font-size:95%;' align='left'>"); sb.appendEscaped(value.chatState.toString()); sb.appendHtmlConstant("</td></tr><tr><td>"); sb.appendEscaped(value.getName() + " " + value.getLastName()); sb.appendHtmlConstant("</td></tr></table>"); } }); @UiField HorizontalPanel ConversationsPanel; @UiField Label lblState; @UiField Button button; @UiField Label lblName; @UiField Label lblSurname; @UiField HTMLPanel htmlState; @UiField FocusPanel FocusPanelState; @UiField Image imgAvatar; @UiField Label lblMinimize; @UiField Label lblUnreadMessages; @UiField Label lblUserEmail; public ChatMenuView() { initWidget(uiBinder.createAndBindUi(this)); } @Override public CellList<User> getCellContacts() { // TODO Auto-generated method stub return cellList; } @Override public HorizontalPanel getConversationsPanel() { // TODO Auto-generated method stub return ConversationsPanel; } @UiHandler("button") void onButtonClick(ClickEvent event) { final UserServiceAsync userService = GWT.create(UserService.class); new RPCXSRF<Void>(userService) { @Override protected void XSRFcallService(AsyncCallback<Void> cb) { userService.checkChannel(new ChApiContactNew("topota"), cb); }; @Override public void onSuccess(Void nada) { } }.retry(3); } @Override public Label getName() { // TODO Auto-generated method stub return lblName; } @Override public Label getSurname() { // TODO Auto-generated method stub return lblSurname; } @Override public Label getStateLabel() { // TODO Auto-generated method stub return lblState; } @Override public FocusPanel getStateFocus() { // TODO Auto-generated method stub return FocusPanelState; } @Override public HTMLPanel getStateCircle() { // TODO Auto-generated method stub return htmlState; } @Override public Image getAvatar() { // TODO Auto-generated method stub return imgAvatar; } @Override public Label getEmail() { // TODO Auto-generated method stub return lblUserEmail; } @Override public Label getMinimizeButton() { // TODO Auto-generated method stub return lblMinimize; } @Override public Label getUnreadMessages() { // TODO Auto-generated method stub return lblUnreadMessages; } }