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

Source Code of com.gadglet.client.gwt.core.ui.LocalFriendsPanel$InviteRequest

/**
* 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 java.util.ArrayList;

import com.gadglet.client.gwt.GadgetNativeUtils;
import com.gadglet.client.gwt.GadgetUtils;
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.gadgets.client.osapi.Callback;
import com.google.gwt.gadgets.client.osapi.OsapiCollection;
import com.google.gwt.gadgets.client.osapi.OsapiError;
import com.google.gwt.gadgets.client.osapi.OsapiRequest;
import com.google.gwt.gadgets.client.osapi.people.GetPeopleRequestBuilder;
import com.google.gwt.gadgets.client.osapi.people.PeopleService;
import com.google.gwt.gadgets.client.osapi.people.Person;
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;





/**
* UI class that present the user a list of his friends from the OpenSocial Container.
* The user will be able to "invite" those friends to join him on the Gadget service
*
*/
public class LocalFriendsPanel {

  DebugDialogBox debug = DebugDialogBox.getErrorNotifier();
 
  protected final PreferencesUtil prefs = PreferencesUtil.nativeInitPrefs();
 
  private final VerticalPanel localFrindsContainer = new VerticalPanel();
  private final VerticalPanel localFrindsList = new VerticalPanel();
  private final ArrayList <LocalFriendItem> localFriendItem = new ArrayList <LocalFriendItem>();
  private static LocalFriendsPanel friendsPanel;
 
  private final HTML messageDispaly = new HTML();
  final GadgletQuery inviteQry = new GadgletQuery();
 
  final InviteRequest inviteRequest = new InviteRequest(
      inviteQry);
 
  public static LocalFriendsPanel getFriendsPanel() {
    if (friendsPanel == null) {
      friendsPanel = new LocalFriendsPanel();
    }
    return friendsPanel;
  }
 
  VerticalPanel getLocalFrindsContainer(){
    return this.localFrindsContainer;
  }


 
 
  private LocalFriendsPanel() {
   
    inviteQry.setRequestAction(ReqActionTypes.INVITE_FRIEND);
    Label localFrindsLabel = new Label();
    localFrindsLabel.setWidth("250px");

    localFrindsLabel.setStylePrimaryName("friendsLabel");
    localFrindsLabel.setText(prefs.getMsg("gadgetLabelLocalFriends") );
    localFrindsContainer.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER);
    localFrindsContainer.add(localFrindsLabel);
    localFrindsContainer.add(messageDispaly);
    localFrindsContainer.add(localFrindsList);
       
  }

  public void viewLocalFriends() {
    messageDispaly.setText("");
    messageDispaly.setVisible(false);
    localFrindsList.clear();

    try {
     
       
      PeopleService peopleService = PeopleService.getInstance();
     
      GetPeopleRequestBuilder builder = peopleService
          .newGetViewersFriendsRequestBuilder();
     
      builder.setFields("thumbnailUrl","email","id","name");
     
      if (GadgetUtils.isCanvasView())
        builder.setCount(100);
      else
        builder.setCount(20);

      OsapiRequest<OsapiCollection<Person>> friends = builder.build();

      Callback<OsapiCollection<Person>> callback = new Callback<OsapiCollection<Person>>() {
        @Override
        public void onFail(OsapiError error) {

          if (error.getCode() == 403) {
            messageDispaly.setVisible(true);
            messageDispaly.setHTML(prefs
                .getMsg("gadgetMsgFriendsAccessError"));
          }

        }
     

        @Override
        public void onSuccess(OsapiCollection<Person> collection) {
          Iterable<Person> iter = collection.iterable();
       
          for (Person person : iter)
          {
       
            if (person.getId()!=null)
            {
              LocalFriendItem item = new LocalFriendItem(person);
              localFriendItem.add(item);
              localFrindsList.add(item.getPersonItem());
             
            }
          }
         
          if(localFriendItem.size()<1)
          {
            messageDispaly.setVisible(true);
            messageDispaly.setHTML(prefs
                .getMsg("gadgetMsgFriendsLocalListEmpty"));
          }

        }
      };

      friends.execute(callback);
    } catch (Exception e) {
      debug.showError(104, e.getMessage());
    }
   
 
  }

 
  private class LocalFriendItem{
    private Person person;
   
    LocalFriendItem (Person person){
      this.person = person;
    }
   
    Person getPerson(){
      return this.person;
    }
   
    HorizontalPanel getPersonItem(){
      HorizontalPanel item = new HorizontalPanel();
     
      item.setVerticalAlignment(HasVerticalAlignment.ALIGN_MIDDLE);
      item.setHeight("40px");
      HTML displayName =null;
      displayName = new HTML(person.getDisplayName());
      item.add(displayName);
      item.setCellWidth(displayName, "100px");
      item.add(UIUtils.getSpace());
     
      if(person.getThumbnailUrl()!=null){
        Image img = new Image(person.getThumbnailUrl());
        img.setPixelSize(30, 30);
        item.add(img);
      }
      else
      {
        HTML replaceImg = new HTML();
        item.setCellWidth(replaceImg, "30px");
      }
      item.add(UIUtils.getSpace())
     
      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(),getPerson().getId() );
          inviteRequest.makeRequest();
          try {
            GadgetNativeUtils.requestShareApp(getPerson().getId(),prefs.getMsg("gadgetMsgFriendsInvitationNote"));
          } catch (Exception e) {
            // TODO Auto-generated catch block
            debug.showError(105,e.getMessage());
          }
          inviteButton.setEnabled(false);
        }
      });
     
      item.add(inviteButton);
     
      return item;
    }
   
   
  }
 
 
 
  public class InviteRequest extends GadgletRequest {
    InviteRequest(GadgletQuery req) {
      super(req);
    }

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

      if (jResponse.isSuccessful()) {
   
       

      } else {

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

    }
  }
 
}
TOP

Related Classes of com.gadglet.client.gwt.core.ui.LocalFriendsPanel$InviteRequest

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.