package com.revolsys.swing.action.enablecheck; @FunctionalInterface public interface EnableCheck { EnableCheck ENABLED = () -> { return true; }; EnableCheck DISABLED = () -> { return false; }; static EnableCheck property(final Object object, final String propertyName) { return new ObjectPropertyEnableCheck(object, propertyName); } default EnableCheck and(final EnableCheck enableCheck) { if (enableCheck == null || enableCheck == this) { return this; } else if (enableCheck instanceof AndEnableCheck) { final AndEnableCheck and = (AndEnableCheck)enableCheck; and.addEnableCheck(enableCheck); return and; } else { return new AndEnableCheck(this, enableCheck); } } default EnableCheck and(final Object object, final String propertyName) { final ObjectPropertyEnableCheck enableCheck = new ObjectPropertyEnableCheck(object, propertyName); return and(enableCheck); } default EnableCheck and(final Object object, final String propertyName, final Object value) { final ObjectPropertyEnableCheck enableCheck = new ObjectPropertyEnableCheck(object, propertyName, value); return and(enableCheck); } boolean isEnabled(); }