/***************************************************************************** * Copyright (c) 2008 g-Eclipse Consortium * 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 * * Initial development of the original code was made for the * g-Eclipse project founded by European Union * project number: FP6-IST-034327 http://www.geclipse.eu/ * * Contributors: * Nikolaos Tsioutsias - initial API and implementation *****************************************************************************/ package eu.geclipse.info.ui; import org.eclipse.jface.action.Action; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.jface.viewers.ViewerFilter; import eu.geclipse.info.ui.InfoViewerFilter; /** * @author tnikos * */ public class FilterAction extends Action { private InfoViewerFilter filter; private ViewerFilter[] viewerFilter; private TreeViewer viewer; /** * @param filter an InfoViewerFilter * @param viewer the TreeViewer to filter */ public FilterAction(final InfoViewerFilter filter, final TreeViewer viewer) { this.filter = filter; this.viewer = viewer; this.viewerFilter = new ViewerFilter[2]; } /** * Get the InfoViewerFilter * @return an InfoViewerFilter or null */ public InfoViewerFilter getFilter() { return this.filter; } @Override public void run() { // The viewerFilter that is used consists of 2 filters. One to show all or only filled info // elements and another to show all/glite/gria elements. if (this.filter != null) { this.viewerFilter[1] = this.filter; } else { this.viewerFilter[1] = new InfoViewerFilter(); // Nothing is filtered } this.viewerFilter[0] = this.viewer.getFilters()[0]; this.viewer.setFilters( this.viewerFilter ); this.viewer.refresh(); } }