/*
* Copyright 2013 ArcBees Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.arcbees.facebook.client;
import com.google.gwt.dom.client.Document;
import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.ScriptElement;
import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.Window;
public class JavaScriptFacebook extends AbstractFacebook {
private static final String FB_ROOT = "fb-root";
private static final String FB_SCRIPT_SRC = Window.Location.getProtocol()
+ "//connect.facebook.net/en_US/all.js";
private static final String FB_SCRIPT_TYPE = "text/javascript";
@Override
public void injectFacebookApi(final FacebookCallback facebookCallback) {
Element firstElement = Document.get().getBody().getFirstChildElement();
Element fbRoot = Document.get().createDivElement();
fbRoot.setId(FB_ROOT);
firstElement.getParentNode().insertBefore(fbRoot, firstElement);
ScriptElement fbScript = Document.get().createScriptElement();
fbScript.setSrc(FB_SCRIPT_SRC);
fbScript.setType(FB_SCRIPT_TYPE);
fbRoot.getParentNode().insertAfter(fbScript, fbRoot);
Timer ensureFbIsLoaded = new Timer() {
@Override
public void run() {
if (isLoaded()) {
facebookCallback.onSuccess();
cancel();
}
}
};
ensureFbIsLoaded.scheduleRepeating(100);
}
@Override
public native void init(String appId,
boolean status,
boolean cookie,
boolean xfbml) /*-{
$wnd.FB.init({
'appId': appId,
'status': status,
'cookie': cookie,
'xfbml': xfbml
});
}-*/;
}