//------------------------------------------------------------------------------ // Copyright (c) 2005, 2006 IBM Corporation and others. // All rights reserved. This program and the accompanying materials // are made available under the terms of the Eclipse Public License v1.0 // which accompanies this distribution, and is available at // http://www.eclipse.org/legal/epl-v10.html // // Contributors: // IBM Corporation - initial implementation //------------------------------------------------------------------------------ package org.eclipse.epf.authoring.ui.filters; import org.eclipse.epf.library.edit.IFilter; import org.eclipse.epf.library.edit.itemsfilter.FilterHelper; /** * The base class for UI filters. Supports multiple filters. * Support filtering the element based on the pattern and type. * * @author Jinhua Xi * @since 1.0 * */ public class AbstractBaseFilter { protected FilterHelper helper; protected IFilter[] additionalFilters = null; /** * added for futher filtering. For example, we may set a filer to prevent * generalizers as base element to avoid circular dependency * * @param additionalFilters */ public void setAdditionalFilters(IFilter[] additionalFilters) { this.additionalFilters = additionalFilters; } public void addAdditionalFilter(IFilter filter) { if (additionalFilters == null) { additionalFilters = new IFilter[]{filter}; } else { int sz = additionalFilters.length + 1; IFilter[] newFilters = new IFilter[sz]; for (int i = 0; i < sz - 1; i++) { newFilters[i] = additionalFilters[i]; } newFilters[sz - 1] = filter; additionalFilters = newFilters; } } public FilterHelper getHelper() { return helper; } public void setHelper(FilterHelper helper) { this.helper = helper; } /* * subclass method should call this before returning true. */ public boolean accept(Object obj) { // Jinhua Xi, added for futher filtering. // For example, we may set a filer to prevent generalizers as base // element to avoid circular dependency if (additionalFilters != null && additionalFilters.length > 0) { for (int i = 0; i < additionalFilters.length; i++) { if (additionalFilters[i].accept(obj) == false) { return false; } } } return true; } }