package net.thesocialos.client.helper;
import net.thesocialos.client.TheSocialOS;
import net.thesocialos.client.api.DriveAPI;
import net.thesocialos.client.api.FacebookAPI;
import net.thesocialos.client.api.FlickrAPI;
import net.thesocialos.client.api.Media;
import net.thesocialos.client.api.MediaPicture;
import net.thesocialos.client.api.PicasaAPI;
import net.thesocialos.client.api.YoutubeAPI;
import net.thesocialos.client.app.AppConstants;
import net.thesocialos.client.desktop.DesktopEventOnOpen;
import net.thesocialos.client.desktop.window.FolderWindow;
import net.thesocialos.client.desktop.window.FrameWindow;
import com.google.gwt.event.dom.client.DoubleClickEvent;
import com.google.gwt.event.dom.client.DoubleClickHandler;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.DecoratedPopupPanel;
import com.google.gwt.user.client.ui.Image;
public class DblClickHandlerHelper {
final FolderWindow folder;
final Media media;
private DoubleClickHandler picasaAlbum = new DoubleClickHandler() {
@Override
public void onDoubleClick(DoubleClickEvent event) {
prepareFolder();
openPicasaAlbum();
}
};
private void openPicasaAlbum() {
new PicasaAPI().loadPicturesInFolder((PicasaAPI.Album) media, folder);
}
private DoubleClickHandler picasaPicture = new DoubleClickHandler() {
@Override
public void onDoubleClick(DoubleClickEvent event) {
openImage();
}
};
private DoubleClickHandler facebookAlbum = new DoubleClickHandler() {
@Override
public void onDoubleClick(DoubleClickEvent event) {
prepareFolder();
openFacebookAlbum();
}
};
private void openFacebookAlbum() {
new FacebookAPI().loadPicturesInFolder((FacebookAPI.Album) media, folder);
}
private DoubleClickHandler facebookPicture = new DoubleClickHandler() {
@Override
public void onDoubleClick(DoubleClickEvent event) {
openImage();
}
};
private DoubleClickHandler flickrAlbum = new DoubleClickHandler() {
@Override
public void onDoubleClick(DoubleClickEvent event) {
prepareFolder();
openFlickrAlbum();
}
};
private void openFlickrAlbum() {
prepareFolder();
new FlickrAPI().loadPicturesInFolder((FlickrAPI.Album) media, folder);
}
private DoubleClickHandler flickrPicture = new DoubleClickHandler() {
@Override
public void onDoubleClick(DoubleClickEvent event) {
openImage();
}
};
private DoubleClickHandler youtubeAlbum = new DoubleClickHandler() {
@Override
public void onDoubleClick(DoubleClickEvent event) {
prepareFolder();
openYoutubeAlbum();
}
};
private void openYoutubeAlbum() {
new YoutubeAPI().loadPlaylistVideosInFolder((YoutubeAPI.Album) media, folder);
}
private DoubleClickHandler youtubeVideo = new DoubleClickHandler() {
@Override
public void onDoubleClick(DoubleClickEvent event) {
openVideo();
}
};
private DoubleClickHandler youtubeFolder = new DoubleClickHandler() {
@Override
public void onDoubleClick(DoubleClickEvent event) {
prepareFolder();
openYoutubeFolder();
}
};
private DoubleClickHandler driveFile = new DoubleClickHandler() {
@Override
public void onDoubleClick(DoubleClickEvent event) {
Window.alert(media.getName());
}
};
private void openYoutubeFolder() {
switch (((YoutubeAPI.Folder) media).getType()) {
case UPLOADS:
new YoutubeAPI().loadUploadsInFolder(folder);
break;
case PLAYLIST:
new YoutubeAPI().loadPlaylistsInFolder(folder);
break;
case FAVORITES:
new YoutubeAPI().loadFavoritesInFolder(folder);
break;
}
TheSocialOS.getEventBus().fireEvent(new DesktopEventOnOpen(folder));
}
public DblClickHandlerHelper(FolderWindow folder, Media media) {
this.folder = folder;
this.media = media;
}
public DoubleClickHandler getDoubleClickHandler() {
if (media instanceof PicasaAPI.Album) return picasaAlbum;
else if (media instanceof PicasaAPI.Picture) return picasaPicture;
else if (media instanceof FacebookAPI.Album) return facebookAlbum;
else if (media instanceof FacebookAPI.Picture) return facebookPicture;
else if (media instanceof FlickrAPI.Album) return flickrAlbum;
else if (media instanceof FlickrAPI.Picture) return flickrPicture;
else if (media instanceof YoutubeAPI.Album) return youtubeAlbum;
else if (media instanceof YoutubeAPI.Video) return youtubeVideo;
else if (media instanceof YoutubeAPI.Folder) return youtubeFolder;
else if (media instanceof DriveAPI.File) return driveFile;
return null;
}
protected void openImage() {
DecoratedPopupPanel popup = new DecoratedPopupPanel(true);
popup.add(new Image(((MediaPicture) media).getUrl()));
popup.setAnimationEnabled(true);
popup.setGlassEnabled(true);
popup.getElement().getStyle().setZIndex(850);
popup.center();
}
protected void openVideo() {
FrameWindow window = new FrameWindow(((MediaPicture) media).getUrl(), "VIDEO", AppConstants.VIDEOPLAYER);
TheSocialOS.getEventBus().fireEvent(new DesktopEventOnOpen(window));
/*
* DecoratedPopupPanel popup = new DecoratedPopupPanel(true); Frame frame = new Frame(((MediaPicture)
* media).getUrl()); frame.setSize("560px", "315px"); popup.add(frame); popup.setAnimationEnabled(true);
* popup.setGlassEnabled(true); popup.getElement().getStyle().setZIndex(850); popup.center();
*/
}
public void prepareFolder() {
folder.setTitle(media.getName());
folder.clearMedia();
folder.next();
folder.setParent(media);
}
public void simulateDblClick() {
if (media instanceof PicasaAPI.Album) openPicasaAlbum();
else if (media instanceof FacebookAPI.Album) openFacebookAlbum();
else if (media instanceof FlickrAPI.Album) openFlickrAlbum();
else if (media instanceof YoutubeAPI.Album) openYoutubeAlbum();
else if (media instanceof YoutubeAPI.Folder) openYoutubeFolder();
}
}