package net.jeeeyul.eclipse.themes.ui.preference.internal; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * * @author Jeeeyul */ public class CompoundPreferenceFilter implements IPreferenceFilter { ArrayList<IPreferenceFilter> filters; @Override public boolean acceptCategory(Class<?> category) { for (IPreferenceFilter each : filters) { if (!each.acceptCategory(category)) { return false; } } return true; } /** * */ public CompoundPreferenceFilter() { filters = new ArrayList<IPreferenceFilter>(); } @SuppressWarnings("javadoc") public CompoundPreferenceFilter(List<IPreferenceFilter> filters) { super(); this.filters = new ArrayList<IPreferenceFilter>(filters); } /** * @param filters */ public CompoundPreferenceFilter(IPreferenceFilter... filters) { super(); this.filters = new ArrayList<IPreferenceFilter>(Arrays.asList(filters)); } @Override public boolean acceptKey(Field field) { for (IPreferenceFilter each : filters) { if (!each.acceptKey(field)) { return false; } } return true; } @Override public IPreferenceFilter chain(IPreferenceFilter other) { List<IPreferenceFilter> list = new ArrayList<IPreferenceFilter>(this.filters); list.add(other); return new CompoundPreferenceFilter(list); } }