public void cmdProc (Interp interp,
TclObject argv[]) throws TclException {
if (argv.length < 2) {
interp.setResult ("invalid # of args; usage: bsf " +
"lookupBean|registerBean|unregisterBean|addEventListener args");
throw new TclException (TCL.ERROR);
}
String op = argv[1].toString ();
if (op.equals ("lookupBean")) {
if (argv.length != 3) {
interp.setResult ("invalid # of args; usage: bsf " +
"lookupBean name-of-bean");
throw new TclException (TCL.ERROR);
}
String beanName = argv[2].toString ();
Object bean = mgr.lookupBean (beanName);
if (bean == null) {
interp.setResult ("unknown object: " + beanName);
throw new TclException (TCL.ERROR);
}
interp.setResult (ReflectObject.newInstance (interp, bean.getClass (),
bean));
} else if (op.equals ("registerBean")) {
if (argv.length != 4) {
interp.setResult ("invalid # of args; usage: bsf " +
"registerBean name-of-bean bean");
throw new TclException (TCL.ERROR);
}
mgr.registerBean (argv[2].toString (),
ReflectObject.get (interp, argv[3]));
interp.setResult ("");
} else if (op.equals ("unregisterBean")) {
if (argv.length != 3) {
interp.setResult ("invalid # of args; usage: bsf " +
"unregisterBean name-of-bean");
throw new TclException (TCL.ERROR);
}
mgr.unregisterBean (argv[2].toString ());
interp.setResult ("");
} else if (op.equals ("addEventListener")) {
if (argv.length != 6) {
interp.setResult ("invalid # of args; usage: bsf " +
"addEventListener object event-set-name filter " +
"script-to-run");
throw new TclException (TCL.ERROR);
}
try {
// usage: bsf addEventListener object event-set filter script
String filter = argv[4].toString ();
filter = filter.equals ("") ? null : filter;
EngineUtils.addEventListener (ReflectObject.get (interp, argv[2]),
argv[3].toString (), filter,
jengine, mgr, "<event-script>", 0, 0,
argv[5].toString ());
} catch (BSFException e) {
e.printStackTrace ();
interp.setResult ("got BSF exception: " + e.getMessage ());
throw new TclException (TCL.ERROR);
}
}
}