private <PSIC> String onEvent(PSIC targetThreshhold, Object observer, ObserveEvent.Type obsType) {
if (observer != null && (observer.getClass().getName().contains("org.python")
|| observer.getClass().getName().contains("org.jruby"))) {
observer = new ObserverCallBack(observer, obsType);
}
if (!(targetThreshhold instanceof Integer)) {
Image img = Image.getImageFromTarget(targetThreshhold);
Boolean response = true;
if (!img.isValid() && img.hasIOException()) {
response = handleImageMissing(img, false);
if (response == null) {
runTime.abortScripting("onEvent(" + obsType.name() + "): Abort:",
"ImageMissing: " + targetThreshhold.toString());
}
}
}
String name = Observing.add(this, (ObserverCallBack) observer, obsType, targetThreshhold);
log(lvl, "%s: observer %s %s: %s with: %s", toStringShort(), obsType,
(observer == null ? "" : " with callback"), name, targetThreshhold);
return name;
}