package net.thesocialos.client.view.profile;
import gwtupload.client.SingleUploader;
import net.thesocialos.client.CacheLayer;
import net.thesocialos.client.TheSocialOS;
import net.thesocialos.client.presenter.ProfilePanelPresenter.Display;
import net.thesocialos.client.view.ChngPasswordPopUP;
import net.thesocialos.shared.model.User;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
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.client.ui.Button;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.FileUpload;
import com.google.gwt.user.client.ui.FormPanel;
import com.google.gwt.user.client.ui.FormPanel.SubmitCompleteEvent;
import com.google.gwt.user.client.ui.FormPanel.SubmitCompleteHandler;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
public class ProfilePanel extends Composite implements Display {
interface ProfilePanelUiBinder extends UiBinder<Widget, ProfilePanel> {
}
private String googleURL = "https://accounts.google.com/o/oauth2/auth?"
+ "redirect_uri=http%3A%2F%2Fwww.thesocialos.net%2Foauth2callback&"
+ "response_type=code&client_id=398121744591.apps.googleusercontent.com&"
+ "approval_prompt=force&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcalendar+"
+ "https%3A%2F%2Fwww.google.com%2Fm8%2Ffeeds%2F+https%3A%2F%2Fdocs.google.com%2Ffeeds%2F+"
+ "https%3A%2F%2Fmail.google.com%2Fmail%2Ffeed%2Fatom+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fplus.me+"
+ "https%3A%2F%2Fpicasaweb.google.com%2Fdata%2F+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Ftasks+"
+ "https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email+"
+ "https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.profile+https%3A%2F%2Fgdata.youtube.com&"
+ "access_type=offline";
private String facebookURL = "https://graph.facebook.com/oauth/authorize?client_id=124427357682835&"
+ "display=page&redirect_uri=http://www.thesocialos.net/oauth2callbackFB&scope=user_status,"
+ "publish_stream,offline_access,email,user_about_me,friends_about_me,user_birthday,friends_birthday,"
+ "user_events,friends_events,user_groups,friends_groups,friends_hometown,user_likes,friends_likes,"
+ "user_notes,friends_notes,user_photos,friends_photos,user_questions,friends_questions,user_status,"
+ "friends_status,user_videos,friends_videos,read_insights,read_mailbox,read_requests,read_stream,"
+ "xmpp_login,create_event,manage_notifications,publish_checkins,publish_stream,publish_actions,user_actions.music,"
+ "friends_actions.music,user_actions.video,friends_actions.video";
private String twitterURL = "http://www.thesocialos.net/oauthlogin?serviceType=twitter"; /*
* "https://api.twitter.com/oauth/request_token?"
* +
* "oauth_callback=http://www.thesocialos.net/oauthcallback&x_auth_access_type=write"
* ;
*/
private String flickrURL = "http://www.thesocialos.net/oauthlogin?serviceType=flickr";
private static ProfilePanelUiBinder uiBinder = GWT.create(ProfilePanelUiBinder.class);
@UiField ProfileAttr name;
@UiField ProfileAttr title;
@UiField ProfileAttr email;
@UiField ProfileAttr mobile;
@UiField ProfileAttr address;
@UiField ProfileAttr google;
@UiField ProfileAttr facebook;
@UiField ProfileAttr twitter;
@UiField ProfileAttr flickr;
@UiField ProfileAttrArea bio;
@UiField Button btnEdit;
@UiField ProfileAttr surname;
@UiField Image imageAvatar;
@UiField FormPanel uploadForm;
@UiField VerticalPanel vertical;
@UiField Button button;
public ProfilePanel() {
initWidget(uiBinder.createAndBindUi(this));
User user = CacheLayer.UserCalls.getUser();
// btnExamine.setName("Image");
name.attrName.setText(TheSocialOS.getConstants().name());
name.attrValue.setText(user.getName());
surname.attrName.setText((TheSocialOS.getConstants().lastName()));
surname.attrValue.setText(user.getLastName());
title.attrName.setText(TheSocialOS.getConstants().title());
title.attrValue.setText(user.getRole());
// email.attrName.setText(TheSocialOS.getConstants()); Email is always email
email.attrValue.setText(user.getEmail());
mobile.attrName.setText(TheSocialOS.getConstants().mobile());
mobile.attrValue.setText(user.getMobilePhone());
address.attrName.setText(TheSocialOS.getConstants().address());
address.attrValue.setText(user.getAddress());
bio.attrName.setText(TheSocialOS.getConstants().Bio());
bio.attrValue.setText(user.getBio());
if (user.getUrlAvatar() != null) imageAvatar.setUrl(user.getUrlAvatar());
else
imageAvatar.setUrl("./images/anonymous_avatar.png");
SingleUploader defaultUploader = new SingleUploader();
defaultUploader.setAutoSubmit(false);
defaultUploader.setServletPath("/upload");
defaultUploader.getForm().addSubmitCompleteHandler(new SubmitCompleteHandler() {
@Override
public void onSubmitComplete(SubmitCompleteEvent event) {
CacheLayer.UserCalls.updateAvatar();
}
});
vertical.add(defaultUploader);
}
@Override
public ProfileAttr getAddress() {
return address;
}
@Override
public ProfileAttr getEmail() {
return email;
}
@Override
public ProfileAttr getMobile() {
return mobile;
}
@Override
public ProfileAttr getName() {
return name;
}
@Override
public ProfileAttr getUserTitle() {
return title;
}
@Override
public ProfileAttrArea getBio() {
// TODO Auto-generated method stub
return bio;
}
@Override
public Button getButton() {
// TODO Auto-generated method stub
return btnEdit;
}
@Override
public void setEditable(Boolean editable) {
name.setEditable(editable);
address.setEditable(editable);
mobile.setEditable(editable);
name.setEditable(editable);
bio.setEditable(editable);
surname.setEditable(editable);
}
@Override
public boolean getEditable() {
return name.getEditable();
}
@Override
public ProfileAttr getSurname() {
// TODO Auto-generated method stub
return surname;
}
@Override
public Image getAvatar() {
// TODO Auto-generated method stub
return imageAvatar;
}
@Override
public FileUpload getExamineButton() {
// TODO Auto-generated method stub
return null;
}
@Override
public ProfileAttr getFacebook() {
// TODO Auto-generated method stub
return facebook;
}
@Override
public ProfileAttr getTwitter() {
// TODO Auto-generated method stub
return twitter;
}
@Override
public ProfileAttr getFlickR() {
// TODO Auto-generated method stub
return flickr;
}
@Override
public ProfileAttr getGoogle() {
// TODO Auto-generated method stub
return google;
}
@Override
public String getGoogleURL() {
// TODO Auto-generated method stub
return googleURL;
}
@Override
public String getFlickRURL() {
// TODO Auto-generated method stub
return flickrURL;
}
@Override
public String getTwitterURL() {
// TODO Auto-generated method stub
return twitterURL;
}
@Override
public String getFacebookURL() {
// TODO Auto-generated method stub
return facebookURL;
}
@UiHandler("button")
void onButtonClick(ClickEvent event) {
new ChngPasswordPopUP();
}
}