package gueei.binding.converters; import gueei.binding.Converter; import gueei.binding.IObservable; /** * Converter to perform logical NOT operation. * It allows 1 argument only, and it should be in type boolean * * @usage arg * * @arg arg boolean * * @return boolean * */ public class NOT extends Converter<Boolean> { public NOT(IObservable<?>[] dependents) { super(Boolean.class, dependents); } @Override public boolean ConvertBack(Object value, Object[] outResult) { if ((!(value instanceof Boolean)) || (outResult.length<1)) return false; outResult[0] = !((Boolean)value); return true; } @Override public Boolean calculateValue(Object... args) throws Exception { if (args.length<1) return true; if (args[0] instanceof Boolean){ return !((Boolean)args[0]); } if (args[0] instanceof Number){ return !args[0].equals(0); } if (args[0] != null) return false; return true; } }