package com.sksamuel.jqm4gwt.plugins.datatables;
import com.google.gwt.core.client.Callback;
import com.sksamuel.jqm4gwt.ScriptUtils;
import com.sksamuel.jqm4gwt.ScriptUtils.InjectCallback;
public interface Resources {
class Loader {
/**
* Must be set to true explicitly in static constructor of your application
* in case you are going to manage JS and CSS loading manually, e.g. combined files.
**/
public static boolean manualLoading;
/**
* Must be set to true explicitly in static constructor of your application if you need
* default visual support for <a href="https://www.datatables.net/examples/api/row_details.html">
* Show extra/detailed row information</a>
**/
public static boolean loadCssRowDetails;
public static boolean loadFooterOnTop;
private static final String DATATABLES_CSS = "css/jquery.dataTables.min.css";
private static final String DATATABLES_CSS_ADJUST = "css/dataTables-adjust.css";
private static final String DATATABLES_CSS_FOOTER_ON_TOP = "css/dataTables-footer-on-top.css";
private static final String DATATABLES_CSS_ROW_DETAILS = "css/dataTables-row-details.css";
private static final String DATATABLES_JS = "js/jquery.dataTables.min.js";
private static final String DATATABLES_API_JS = "js/jquery.dataTables.api.js";
public static void injectAll(final InjectCallback done) {
ScriptUtils.waitJqmLoaded(new Callback<Void, Throwable>() {
@Override
public void onSuccess(Void result) {
if (manualLoading) {
if (done != null) done.onSuccess(null);
return;
}
ScriptUtils.injectCss(DATATABLES_CSS, DATATABLES_CSS_ADJUST);
if (loadCssRowDetails) ScriptUtils.injectCss(DATATABLES_CSS_ROW_DETAILS);
if (loadFooterOnTop) ScriptUtils.injectCss(DATATABLES_CSS_FOOTER_ON_TOP);
ScriptUtils.injectJs(done, DATATABLES_JS, DATATABLES_API_JS);
}
@Override
public void onFailure(Throwable reason) {
throw new RuntimeException(reason);
}
});
}
}
}