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

Source Code of com.gadglet.client.gwt.core.ui.ShareWithDialogPanel$ViewFriendsRequest

/**
* 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.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.ProfPrivacyStatus;
import com.gadglet.params.ProfileFields;
import com.gadglet.params.ReqActionTypes;
import com.gadglet.params.ReqParamNames;
import com.gadglet.params.ResParamNames;
import com.gadglet.params.SharingType;
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.DialogBox;
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.RadioButton;
import com.google.gwt.user.client.ui.ScrollPanel;
import com.google.gwt.user.client.ui.VerticalPanel;


/**
* UI class which enables the user to share content items with his friends
*
*/
public class ShareWithDialogPanel {

  private static ShareWithDialogPanel shareWithDialogPanel;
  final DebugDialogBox debug = DebugDialogBox.getErrorNotifier();
  private static DialogBox dialogBox = new DialogBox();

  protected final PreferencesUtil prefs = PreferencesUtil.nativeInitPrefs();

  private final VerticalPanel remoteFrindsList = new VerticalPanel();
  private final VerticalPanel mainPanel = new VerticalPanel();

  private final ScrollPanel scrollPanel = new ScrollPanel();

  final GadgletQuery viewFriendsQry = new GadgletQuery();
 
  final GadgletQuery updateShareWithQry = new GadgletQuery();

  final UpdateShareWithRequest updateShareWithRequest = new UpdateShareWithRequest(
      updateShareWithQry);
 
  final ViewFriendsRequest viewFriendsRequest = new ViewFriendsRequest(
      viewFriendsQry);
 
  private String itemId;
 
  public String getItemId(){
    return this.itemId;
  }

  private ShareWithDialogPanel() {
   
    updateShareWithQry.setRequestAction(ReqActionTypes.SHARE);

   

    final Button closeButton = new Button(prefs.getMsg("gadgetLabelClose"));
    closeButton.addClickHandler(new ClickHandler() {
      @Override
      public void onClick(ClickEvent event) {

        dialogBox.hide();
      }
    });

    int width = GadgetNativeUtils.getGadgetWidth() - 100;
    int height = GadgetNativeUtils.getGadgetHeight() - 100;
    if (GadgetUtils.isCanvasView())
      height = height / 2;
   
   
    scrollPanel.setPixelSize(width + 10, height + 10);
    mainPanel.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER);

    scrollPanel.add(remoteFrindsList);

    mainPanel.add(scrollPanel);

    mainPanel.add(closeButton);

    dialogBox.setWidget(mainPanel);
  }

  public static ShareWithDialogPanel getShareWithDialogPanel() {
    if (shareWithDialogPanel == null) {
      shareWithDialogPanel = new ShareWithDialogPanel();
    }
    return shareWithDialogPanel;
  }

  public void showShareWithDialogPanel(String itemId,String title) {
    this.itemId = itemId;
    dialogBox.setText(prefs.getMsg("gadgetLabelSharingItem")+" : "+title);
    remoteFrindsList.clear();
   
    viewFriendsQry.setRequestAction(ReqActionTypes.SHARED_LIST);
    viewFriendsQry.setRequestItemkey(itemId);
    viewFriendsRequest.makeRequest();

    if (GadgetUtils.isCanvasView())
      GadgetUtils.dialogBoxTop(dialogBox);
    else
      dialogBox.center();
  }

  public class ViewFriendsRequest extends GadgletRequest {
    ViewFriendsRequest(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 nickName = null;
          String photo = null;
          String shareType = null;
          String frindId = null;
          try {
            if(item.get(ProfileFields.PROFILE_NICKNAME.getParamName())==null)
              continue;
            if(item.get(ResParamNames.RES_SHARE_WITH.getParamName())==null)
              continue;
           
            if (item.get(ProfileFields.PROFILE_THUMBNAILURL
                .getParamName()) != null)
              photo = item
                  .get(ProfileFields.PROFILE_THUMBNAILURL
                      .getParamName()).isString()
                  .stringValue();
            if (item.get(ResParamNames.RES_SHARE_TYPE
                .getParamName()) != null)
              shareType = item
                  .get(ResParamNames.RES_SHARE_TYPE
                      .getParamName()).isString()
                  .stringValue();

            frindId = item
                .get(ResParamNames.RES_SHARE_WITH
                    .getParamName()).isString()
                .stringValue();

            if (item.get(
                ProfileFields.PROFILE_NICKNAME.getParamName())
                .isString()
                .stringValue()
                .equals(ProfPrivacyStatus.PRIVATE
                    .getPrivacyStatus()))
              nickName = prefs
                  .getMsg("gadgetLabelPrivateProfile");
            else
              nickName = item
                  .get(ProfileFields.PROFILE_NICKNAME
                      .getParamName()).isString()
                  .stringValue();

            SharedItemFriend remoteFriend = new SharedItemFriend(
                nickName, photo, shareType, frindId);

            remoteFrindsList
                .add(remoteFriend.getRemoteFriendItem());
          } catch (Exception e) {
            debug.showError(111, e.getMessage());
          }
        }
       

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

    }
  }

  private class SharedItemFriend {

    private String invitedByNickName;
    private String friendPhoto;
    private String friendId;
   
    private RadioButton noShare;
    private RadioButton viewShare;
    private RadioButton editShare;
 
    final HorizontalPanel shareTypePanel = new HorizontalPanel();
   

    public SharedItemFriend(String invitedByNickName, String photo,
        String shareType, String friendId) {
      this.friendPhoto = photo;
      this.invitedByNickName = invitedByNickName;
      this.friendId = friendId;
           
       noShare = new RadioButton(friendId,
          prefs.getMsg("gadgetLabelNoShare"));
       viewShare = new RadioButton(friendId,
          prefs.getMsg("gadgetLabelViewShare"));
       editShare = new RadioButton(friendId,
          prefs.getMsg("gadgetLabelEditShare"));
   
      noShare.addClickHandler(new ClickHandler() {
        @Override
        public void onClick(ClickEvent event) {
         
          updateShareWithQry.clearParamList();
          updateShareWithQry.setRequestItemkey(getItemId());
          updateShareWithQry.addParam(ReqParamNames.SHARE_WITH,
              getFriendId());
          updateShareWithRequest.makeRequest();
        }
      });

      viewShare.addClickHandler(new ClickHandler() {
        @Override
        public void onClick(ClickEvent event) {
          updateShareWithQry.clearParamList();
         
          updateShareWithQry.setRequestItemkey(getItemId());
          updateShareWithQry.addParam(ReqParamNames.SHARE_WITH,
              getFriendId());
          updateShareWithQry.addParam(ReqParamNames.SHARE_TYPE,
              SharingType.READ_ONLY.getSharingType());

          updateShareWithRequest.makeRequest();
        }
      });

      editShare.addClickHandler(new ClickHandler() {
        @Override
        public void onClick(ClickEvent event) {
         
            updateShareWithQry.clearParamList();
            updateShareWithQry.setRequestItemkey(getItemId());
            updateShareWithQry.addParam(ReqParamNames.SHARE_WITH,
                getFriendId());
            updateShareWithQry.addParam(ReqParamNames.SHARE_TYPE,
                SharingType.EDIT.getSharingType());

            updateShareWithRequest.makeRequest();
       
        }
      });

      if (shareType == null)
        noShare.setValue(true);
      else if (shareType.equals(SharingType.READ_ONLY
          .getSharingType()))
        viewShare.setValue(true);
      else if (shareType.equals(SharingType.EDIT.getSharingType()))
        editShare.setValue(true);
      else
        noShare.setValue(true);

      shareTypePanel.add(noShare);
      shareTypePanel.add(viewShare);
      shareTypePanel.add(editShare);
     
    }

    SharedItemFriend getSharedItemFriend(){
       return this;
    }
   
    String getFriendId(){
      return this.friendId;
    }
   
    HorizontalPanel getRemoteFriendItem() {
      HorizontalPanel item = new HorizontalPanel();
      item.setVerticalAlignment(HasVerticalAlignment.ALIGN_MIDDLE);
      item.setHeight("40px");
      item.add(new HTML(invitedByNickName));
      item.add(UIUtils.getSpace());

      if (this.friendPhoto != null) {
        Image img = new Image(this.friendPhoto);
        img.setPixelSize(30, 30);
        item.add(img);
      }
      item.add(UIUtils.getSpace());
      item.add(shareTypePanel);
      return item;
    }

   
  }
 
  public class UpdateShareWithRequest extends GadgletRequest {

    public UpdateShareWithRequest(GadgletQuery req) {
      super(req);

    }

    @Override
    protected void processResults(GadgletResponse data) {
      // do nothing

    }
  }

}
TOP

Related Classes of com.gadglet.client.gwt.core.ui.ShareWithDialogPanel$ViewFriendsRequest

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.