package com.ui4j.sample;
import java.io.IOException;
import com.ui4j.api.browser.BrowserEngine;
import com.ui4j.api.browser.BrowserFactory;
import com.ui4j.api.browser.Page;
import netscape.javascript.JSObject;
public class LessJs {
public static class MyCallback {
private String css;
public void setCss(String css) {
this.css = css;
}
public String getCss() {
return css;
}
}
public static void main(String[] args) throws IOException {
BrowserEngine webkit = BrowserFactory.getWebKit();
String url = ReadHtmlFile.class.getResource("/Less.html").toExternalForm();
Page page = webkit.navigate(url);
page.show();
JSObject obj = (JSObject) page.executeScript("window");
MyCallback callback = new MyCallback();
obj.setMember("mycallback", callback);
// solution 1
page.executeScript("less.render('.class { width: (1 + 1) }', function (e, output) { mycallback.setCss(output.css); });");
System.out.println(callback.getCss());
// solution 2 without custom Java callback
page.executeScript("var mymap = { }");
page.executeScript("less.render('.class { width: (2 + 2) }', function (e, output) { mymap.css = output.css; });");
System.out.println(page.executeScript("mymap.css"));
page.close();
}
}