xworker.javafx.util.ThingCallback Maven / Gradle / Ivy
package xworker.javafx.util;
import javafx.util.Callback;
import org.xmeta.ActionContext;
import org.xmeta.Thing;
public class ThingCallback implements Callback
{
Thing thing;
ActionContext actionContext;
Object object;
public ThingCallback(Thing thing, ActionContext actionContext){
this.thing = thing;
this.actionContext = actionContext;
object = FXThingLoader.getObject();
}
@Override
public R call(P param) {
if(object != null){
FXThingLoader.push(object);
try{
return thing.doAction("call", actionContext, "param", param);
}finally {
FXThingLoader.pop();
}
}else{
return thing.doAction("call", actionContext, "param", param);
}
}
public static ThingCallback create(ActionContext actionContext){
Thing self = actionContext.getObject("self");
ThingCallback