package com.cast.gwt.client;
import java.util.ArrayList;
import com.cast.gwt.receiver.client.JavaScriptObjectHelper;
import com.cast.gwt.receiver.client.Receiver;
import com.cast.gwt.receiver.client.RemoteMedia;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.dom.client.Style.Display;
import com.google.gwt.media.client.Video;
import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.SimplePanel;
/**
* Entry point classes define <code>onModuleLoad()</code>.
*/
public class GWTChromeCast implements EntryPoint
{
Video video;
Receiver receiver;
RemoteMedia remoteMedia;
SimplePanel status;
@Override
public void onModuleLoad()
{
video = Video.createIfSupported();
video.addStyleName("vidEl");
RootPanel.get().add(video);
Image img = new Image("../images/loading.gif");
status = new SimplePanel(img);
status.getElement().setId("status");
status.addStyleName("loading");
RootPanel.get().add(status);
RootPanel.get().add(new HTML("TEST"));
String appId = "ce2ad55e-2181-44bb-b5e7-9e65e0510d86";
ArrayList<String> protocol = new ArrayList<String>(1);
protocol.add(RemoteMedia.NAMESPACE());
receiver = Receiver.create(appId, protocol,
JavaScriptObject.createObject(), 5);
remoteMedia = RemoteMedia.create();
remoteMedia.addChannelFactory(receiver.createChannelFactory(RemoteMedia
.NAMESPACE()));
receiver.start();
remoteMedia.setMediaElement(video.getElement());
new Timer()
{
@Override
public void run()
{
JavaScriptObject remoteMediaStatus = remoteMedia.getStatus();
int st = JavaScriptObjectHelper.getAttributeAsInt(remoteMediaStatus,
"state");
int currentTime = 0;
try
{
currentTime = JavaScriptObjectHelper.getAttributeAsInt(
remoteMediaStatus, "current_time");
}
catch (Exception E)
{
}
if (st == 0 || currentTime == 0)
{
status.getElement().getStyle().setDisplay(Display.BLOCK);
}
else
{
if (st == 1 && currentTime > 0)
{
status.getElement().setInnerHTML("Paused...");
status.getElement().getStyle().setDisplay(Display.BLOCK);
}
else
{
status.getElement().setInnerHTML(currentTime + "");
status.getElement().getStyle().setDisplay(Display.NONE);
video.getElement().getStyle().setDisplay(Display.BLOCK);
}
}
}
}.scheduleRepeating(1000);
}
private final native JavaScriptObject getJSObjectForString(String s)
/*-{
var string = s;
return string;
}-*/;
}