/**
* Copyright 2010 JBoss Inc
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.drools.eclipse.core.ui;
import org.drools.eclipse.core.DroolsElement;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.viewers.ViewerFilter;
/**
* Filter for the rules viewer.
*/
public class DroolsFilter extends ViewerFilter {
public static final int FILTER_RULES = 1;
public static final int FILTER_QUERIES = 2;
public static final int FILTER_FUNCTIONS = 4;
public static final int FILTER_TEMPLATES = 8;
public static final int FILTER_GLOBALS = 16;
public static final int FILTER_GROUPS = 32;
private int filterProperties;
public final void addFilter(int filter) {
filterProperties |= filter;
}
public final void removeFilter(int filter) {
filterProperties &= (-1 ^ filter);
}
public final boolean hasFilter(int filter) {
return (filterProperties & filter) != 0;
}
public boolean isFilterProperty(Object element, Object property) {
return false;
}
public boolean select(Viewer viewer, Object parentElement, Object element) {
if (element instanceof DroolsElement) {
DroolsElement droolsElement = (DroolsElement) element;
int type = droolsElement.getType();
if (hasFilter(FILTER_RULES) && type == DroolsElement.RULE) {
return false;
}
if (hasFilter(FILTER_QUERIES) && type == DroolsElement.QUERY) {
return false;
}
if (hasFilter(FILTER_FUNCTIONS) && type == DroolsElement.FUNCTION) {
return false;
}
if (hasFilter(FILTER_TEMPLATES) && type == DroolsElement.TEMPLATE) {
return false;
}
if (hasFilter(FILTER_GLOBALS) && type == DroolsElement.GLOBAL) {
return false;
}
if (hasFilter(FILTER_GROUPS) && ((type == DroolsElement.AGENDA_GROUP)||(type == DroolsElement.RULEFLOW_GROUP)||(type == DroolsElement.ACTIVATION_GROUP)||(type == DroolsElement.DEFAULT_RULE_GROUP))) {
return false;
}
}
return true;
}
}