package org.erlide.ui.editors.erl.outline.filters;
import java.util.Map;
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
import org.eclipse.ui.commands.IElementUpdater;
import org.eclipse.ui.handlers.HandlerUtil;
import org.eclipse.ui.menus.UIElement;
import org.eclipse.ui.views.contentoutline.ContentOutline;
import org.erlide.ui.editors.erl.outline.ErlangOutlinePage;
import org.erlide.util.ErlLogger;
import org.osgi.service.prefs.BackingStoreException;
public class ToolbarFilterHandler extends AbstractHandler implements IElementUpdater {
public ToolbarFilterHandler() {
super();
}
@Override
public Object execute(final ExecutionEvent event) throws ExecutionException {
// final Command command = event.getCommand();
// final boolean oldValue = HandlerUtil.toggleCommandState(command);
final String filterId = event.getParameter("org.erlide.ui.filterId");
final IEclipsePreferences prefsNode = ErlangOutlinePage.getPrefsNode();
final boolean oldValue = prefsNode.getBoolean(filterId, false);
final boolean value = !oldValue;
final Object activePart = HandlerUtil.getVariable(event, "activePart");
if (activePart instanceof ContentOutline) {
OutlineFilterUtils.addFilter(filterId, value, activePart);
}
prefsNode.putBoolean(filterId, value);
try {
prefsNode.flush();
} catch (final BackingStoreException e) {
ErlLogger.error(e);
}
return null;
}
@Override
public void updateElement(final UIElement element,
@SuppressWarnings("rawtypes") final Map parameters) {
final IEclipsePreferences prefsNode = ErlangOutlinePage.getPrefsNode();
final String filterId = (String) parameters.get("org.erlide.ui.filterId");
final boolean value = prefsNode.getBoolean(filterId, false);
element.setChecked(value);
}
}