package com.revolsys.swing.action.enablecheck; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Iterator; import java.util.List; import com.revolsys.util.Property; public abstract class MultiEnableCheck extends AbstractEnableCheck implements Iterable<EnableCheck> { private final List<EnableCheck> enableChecks = new ArrayList<>(); public MultiEnableCheck() { } public MultiEnableCheck(final Collection<? extends EnableCheck> enableChecks) { setEnableChecks(enableChecks); } public MultiEnableCheck(final EnableCheck... enableChecks) { this(Arrays.asList(enableChecks)); } public void addEnableCheck(final EnableCheck enableCheck) { addEnableCheckInternal(enableCheck); isEnabled(); } protected void addEnableCheckInternal(final EnableCheck enableCheck) { this.enableChecks.add(enableCheck); Property.addListener(enableCheck, this); } public List<EnableCheck> getEnableChecks() { return this.enableChecks; } @Override public Iterator<EnableCheck> iterator() { return this.enableChecks.iterator(); } public void setEnableChecks(final Collection<? extends EnableCheck> enableChecks) { for (final EnableCheck enableCheck : this.enableChecks) { Property.removeListener(enableCheck, this); } this.enableChecks.clear(); for (final EnableCheck enableCheck : enableChecks) { addEnableCheckInternal(enableCheck); } isEnabled(); } @Override public String toString() { return this.enableChecks.toString(); } }