Package com.gadglet.client.gwt.core.ui

Source Code of com.gadglet.client.gwt.core.ui.DomainUsersPanel$DomainUser

/**
* Copyright (C)  Gadglet .
*
* This file is part of Gadglet
*
* Gadglet is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Gadglet is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Gadglet. If not, see <http://www.gnu.org/licenses/>.
*/
package com.gadglet.client.gwt.core.ui;

import com.gadglet.client.gwt.core.GadgletQuery;
import com.gadglet.client.gwt.core.GadgletRequest;
import com.gadglet.client.gwt.core.GadgletResponse;
import com.gadglet.client.gwt.ui.DebugDialogBox;
import com.gadglet.client.gwt.ui.UIUtils;
import com.gadglet.params.ProfileFields;
import com.gadglet.params.ReqActionTypes;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.gadgets.client.impl.PreferencesUtil;
import com.google.gwt.json.client.JSONObject;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HasHorizontalAlignment;
import com.google.gwt.user.client.ui.HasVerticalAlignment;
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.VerticalPanel;

/**
* Used to present a list of ALL the users from a specific Google Apps account
* that are using this Gadget service
*
*/
/**
* @author user
*
*/
public class DomainUsersPanel {
DebugDialogBox debug = DebugDialogBox.getErrorNotifier();
 
  protected final PreferencesUtil prefs = PreferencesUtil.nativeInitPrefs();
 
  private final VerticalPanel domainUsersContainer = new VerticalPanel();
  private final VerticalPanel domainUsersList = new VerticalPanel();

   
  final GadgletQuery inviteQry = new GadgletQuery();
 
  final InviteRequest inviteRequest = new InviteRequest(
      inviteQry);
 
  final GadgletQuery viewDomainUsersQry = new GadgletQuery();

  final ViewDomainUsersRequest viewDomainUsersRequest = new ViewDomainUsersRequest(
      viewDomainUsersQry);
   
   
  private static DomainUsersPanel domainUsersPanel = null;
 
  public VerticalPanel getDomainUsersContainer(){
    return this.domainUsersContainer;
  }
   
 
  public static DomainUsersPanel getDomainUsersPanel() {
    if (domainUsersPanel == null) {
      domainUsersPanel = new DomainUsersPanel();
    }
    return domainUsersPanel;
  }
 
  DomainUsersPanel(){
    inviteQry.setRequestAction(ReqActionTypes.INVITE_FRIEND);
   
    domainUsersContainer.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER);

    Label domainUsersLabel = new Label();
    domainUsersLabel.setWidth("250px");
    domainUsersLabel.setStylePrimaryName("friendsLabel");
    domainUsersLabel.setText(prefs.getMsg("gadgetLabelDomainColleagues") );
   
    domainUsersContainer.add(domainUsersLabel);
    domainUsersContainer.add(domainUsersList);
     
  }
 
 
 
  /**
   *  This method activate the request
   */
  public void viewDomainUsers(){
    domainUsersList.clear();
    viewDomainUsersQry.setRequestAction(ReqActionTypes.GET_DOMAIN_USERS);
    viewDomainUsersRequest.makeRequest();
   
  }
 

 
 
  /**
   * Representing a request to the Domian users list. The method processResults
   * is called to process the returning results
   *
   */
 
  public class ViewDomainUsersRequest extends GadgletRequest {
    ViewDomainUsersRequest(GadgletQuery req) {
      super(req);
    }

    @Override
    protected void processResults(GadgletResponse jResponse) {

      if (jResponse.isSuccessful()) {
 
        int inviteNum = jResponse.getRootItemsNum();
       
       

        for (int index = 0; index < inviteNum; index++) {
          JSONObject item = jResponse.getItem(index);
               
          String photo = null;
          String nickName = null;
          String title= null;
          String userId = null;
         
          if(item.get(ProfileFields.PROFILE_THUMBNAILURL.getParamName())!=null)
            photo = item.get(ProfileFields.PROFILE_THUMBNAILURL.getParamName()).isString().stringValue();
         
          if(item.get(ProfileFields.PROFILE_NICKNAME.getParamName())!=null)
            nickName = item.get(ProfileFields.PROFILE_NICKNAME.getParamName()).isString().stringValue();
       
          if(item.get(ProfileFields.PROFILE_TITLE.getParamName())!=null)
            title = item.get(ProfileFields.PROFILE_TITLE.getParamName()).isString().stringValue();
         
          if(item.get(ProfileFields.PROFILE_FRIEND_ID.getParamName())!=null)
            userId = item.get(ProfileFields.PROFILE_FRIEND_ID.getParamName()).isString().stringValue();

         
          try {
            DomainUser domainUser = new DomainUser(nickName,photo,title,userId);

            domainUsersList
                .add(domainUser.getDomainUserItem());
            domainUsersList
            .add(UIUtils.getSpace());
           
          } catch (Exception e) {
            debug.showError(111, e.getMessage());
          }
        }

      } else
        debug.showError(101, jResponse.getError());
     
     
    }
  }
 
 
 
 
  /**
   * A single domain user class
   *
   */
  private class DomainUser {
 
    private String invitedByNickName;
   
    private String friendPhoto;
   
    private String title;
   
    private final String userId;

    public DomainUser(
        String invitedByNickName, String photo, String title, String userId) {
      this.friendPhoto = photo;
      this.title = title;
      this.invitedByNickName = invitedByNickName;
      this.userId = userId;
    }


    HorizontalPanel getDomainUserItem() {
      HorizontalPanel item = new HorizontalPanel();
      VerticalPanel name = new VerticalPanel();
     
      name.add(new HTML(invitedByNickName));
      name.add(new HTML(title));
     
     
      item.setVerticalAlignment(HasVerticalAlignment.ALIGN_MIDDLE);
      item.add(name);
      item.add(UIUtils.getSpace());
     
      if(this.friendPhoto!=null && this.friendPhoto.length()>0){
        Image img = new Image(this.friendPhoto);
        img.setPixelSize(30, 30);
          item.add(img);
       
        item.add(UIUtils.getSpace());
      }
     
      if(userId!=null){
      final Button inviteButton = new Button(prefs.getMsg("gadgetLabelInvite"));
      inviteButton.addClickHandler(new ClickHandler() {
        @Override
        public void onClick(ClickEvent event) {
          inviteQry.clearParamList();
          inviteQry.addParam(ProfileFields.PROFILE_FRIEND_ID.getParamName(), userId);
          inviteRequest.makeRequest();
       
          inviteButton.setEnabled(false);
        }
      });
     
      item.add(inviteButton);
      }
     
     
      return item;
    }

  }
 
 
  /**
   * A request class for user invitation
   *
   */
  public class InviteRequest extends GadgletRequest {
    InviteRequest(GadgletQuery req) {
      super(req);
    }

    @Override
    protected void processResults(GadgletResponse data) {
      GadgletResponse jResponse = data;

      if (jResponse.isSuccessful()) {
        DomainFriendsPanel.getDomainFriendsPanel().viewDomainFriends();
       

      } else {

        debug.showError(101, jResponse.getError());
      }

    }
  }

}
TOP

Related Classes of com.gadglet.client.gwt.core.ui.DomainUsersPanel$DomainUser

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.