/**
*
*/
package logbook.scripting;
import logbook.constants.AppConstants;
import logbook.gui.logic.ItemInfo;
import logbook.scripting.ScriptLoader.MethodInvoke;
import logbook.scripting.ScriptLoader.TableScriptCollection;
/**
* @author Nekopanda
*
*/
public class ItemInfoProxy implements ItemInfoListener {
private class BodyMethod implements MethodInvoke {
public ItemInfo data;
@Override
public Object invoke(Object arg) {
return ((ItemInfoListener) arg).body(this.data);
}
}
private TableScriptCollection script;
private final BodyMethod bodyMethod = new BodyMethod();
private static ItemInfoProxy instance = new ItemInfoProxy();
public static ItemInfoProxy get() {
instance.script = ScriptLoader.getTableScript(
AppConstants.ITEMTABLE_PREFIX, ItemInfoListener.class);
return instance;
}
@Override
public String[] header() {
return this.script.header();
}
@Override
public void begin() {
this.script.invoke(new MethodInvoke() {
@Override
public Object invoke(Object arg) {
((ItemInfoListener) arg).begin();
return null;
}
});
}
@Override
public Comparable[] body(ItemInfo data) {
this.bodyMethod.data = data;
return this.script.body(this.bodyMethod);
}
@Override
public void end() {
this.script.invoke(new MethodInvoke() {
@Override
public Object invoke(Object arg) {
((ItemInfoListener) arg).end();
return null;
}
});
}
}