package xapi.test.gwtc.cases;
import xapi.annotation.compile.Dependency;
import xapi.annotation.compile.Dependency.DependencyType;
import xapi.annotation.compile.Resource;
import xapi.annotation.inject.SingletonOverride;
import xapi.annotation.ui.UiTemplate;
import xapi.collect.api.Fifo;
import xapi.gwt.log.JsLog;
import xapi.gwtc.api.Gwtc;
import xapi.gwtc.api.GwtcProperties;
import xapi.gwtc.api.ObfuscationLevel;
import xapi.log.X_Log;
import xapi.log.api.LogLevel;
import xapi.log.api.LogService;
import xapi.platform.GwtPlatform;
import xapi.test.junit.JUnit4Runner;
import xapi.test.junit.JUnitUi;
import xapi.util.X_Namespace;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.ext.TreeLogger.Type;
import com.google.gwt.dom.client.Document;
import com.google.gwt.dom.client.Element;
@Gwtc(
includeGwtXml={
@Resource("xapi.X_Inherit"),
@Resource("xapi.X_Inject"),
@Resource("com.google.gwt.core.Core"),
},
inheritClasses = {
JUnitUi.class, JUnit4Runner.class
}
,includeSource=""
,includeHostHtml={
@UiTemplate("<div id='logger' />")
}
,dependencies={
@Dependency(dependencyType=DependencyType.MAVEN,
groupId="net.wetheinter", value="gwt-user",version=X_Namespace.GWT_VERSION),
@Dependency(dependencyType=DependencyType.MAVEN,
groupId="net.wetheinter", value="gwt-dev",version=X_Namespace.GWT_VERSION),
@Dependency(dependencyType=DependencyType.MAVEN,
groupId="net.wetheinter", value="xapi-gwt",version=X_Namespace.XAPI_VERSION),
}
,propertiesLaunch=@GwtcProperties(
obfuscationLevel=ObfuscationLevel.PRETTY
,logLevel=Type.INFO
)
)
public class CaseEntryPoint implements EntryPoint {
@GwtPlatform
@SingletonOverride(implFor=LogService.class, priority=1)
public static class ElementLogger extends JsLog {
private final Element logEl = getLogger();
@Override
public void doLog(LogLevel level, Fifo<Object> items) {
Element pre = Document.get().createPreElement();
pre.setInnerHTML("<span>"+items.join("</span> <span>")+"</span>");
getLogger().appendChild(pre);
super.doLog(level, items);
}
private native Element getLogger()
/*-{
var el = $doc.getElementById('logger');
return el || (
el = $doc.createElement('div'),
el.id = 'logger',
$doc.body.appendChild(el),
el
);
}-*/;
}
@Override
public void onModuleLoad() {
X_Log.info(getClass(), "Hello World");
}
}