package com.mountainminds.eclemma.internal.ui.actions; import org.eclipse.jface.action.Action; import com.mountainminds.eclemma.core.CoverageTools; import com.mountainminds.eclemma.core.ISessionManager; import com.mountainminds.eclemma.core.analysis.ICoverageFilter; import com.mountainminds.eclemma.internal.ui.coverageview.CoverageView; import com.mountainminds.eclemma.internal.ui.coverageview.SelectCounterModeAction; import com.mountainminds.eclemma.internal.ui.coverageview.ViewSettings; /** * GUI Action used to toggle whether a filter is active or not. */ public class ToggleExtensionFilterAction extends Action { private boolean filterEnabled = false; private final ICoverageFilter mFilter; private final SelectCounterModeAction[] mCoverageModes; private final ViewSettings mSettings; private final CoverageView mView; public ToggleExtensionFilterAction(ICoverageFilter filter, CoverageView view, ViewSettings settings, SelectCounterModeAction[] otherModes) { super(filter.getName(), AS_CHECK_BOX); setChecked(filterEnabled); mFilter = filter; mSettings = settings; mCoverageModes = otherModes; mView = view; } public void run() { filterEnabled = isChecked(); if (filterEnabled) { // Enable the filter // Uncheck all modes for (int ii = 0; ii < mCoverageModes.length; ii++) { mCoverageModes[ii].setChecked(false); } // Set the preferred mode mCoverageModes[mFilter.preferredMode()].setChecked(true); mSettings.setCounterMode(mFilter.preferredMode()); mView.updateColumnHeaders(); // Disable all disabled modes int[] disabledModes = mFilter.disabledModes(); for (int ii = 0; ii < disabledModes.length; ii++) { mCoverageModes[disabledModes[ii]].setEnabled(false); } // Setup the filter mFilter.resetFilter(); CoverageTools.addCoverageFilter(mFilter); } else { // Disable the filter CoverageTools.removeCoverageFilter(mFilter); // Check the Coverage Filters state if (!CoverageTools.coverageFiltersActive()) { // Only revert the UI if there are no filters left // Enabled all previously disabled modes int[] disabledModes = mFilter.disabledModes(); for (int ii = 0; ii < disabledModes.length; ii++) { mCoverageModes[disabledModes[ii]].setEnabled(true); } } } ISessionManager manager = CoverageTools.getSessionManager(); manager.refreshActiveSession(); } }