blob: 523fd70df90cce34abbc8c2361619b97466f76c2 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2017 Christian Pontesegger 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:
* Christian Pontesegger - initial API and implementation
*******************************************************************************/
package org.eclipse.ease.lang.unittest.ui.handlers;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.ease.lang.unittest.runtime.ITestEntity;
import org.eclipse.ease.lang.unittest.runtime.TestStatus;
import org.eclipse.ease.lang.unittest.ui.views.UnitTestView;
import org.eclipse.ease.ui.tools.ToggleHandler;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.viewers.ViewerFilter;
public class ToggleTestFilter extends ToggleHandler {
private class Filter extends ViewerFilter {
@Override
public boolean select(final Viewer viewer, final Object parentElement, final Object element) {
if (element instanceof ITestEntity) {
final TestStatus status = ((ITestEntity) element).getStatus();
return (status != TestStatus.PASS);
}
return true;
}
@Override
public boolean isFilterProperty(final Object element, final String property) {
return UnitTestView.TEST_STATUS_PROPERTY.equals(property);
}
}
private Filter fFilter = null;
@Override
protected void executeToggle(final ExecutionEvent event, final boolean checked) {
final UnitTestView view = AbstractViewToolbarHandler.getView(event, UnitTestView.class);
if (view != null) {
if (checked) {
if (fFilter == null)
fFilter = new Filter();
view.getFileTreeViewer().addFilter(fFilter);
view.getTableViewer().addFilter(fFilter);
} else if (fFilter != null) {
view.getFileTreeViewer().removeFilter(fFilter);
view.getTableViewer().removeFilter(fFilter);
fFilter = null;
}
}
}
}