package org.eclipse.dltk.javascript.jsjdtdebugger.handler; 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.commands.State; import org.eclipse.core.runtime.Preferences; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.commands.ICommandService; import org.eclipse.ui.commands.IElementUpdater; import org.eclipse.ui.handlers.HandlerUtil; import org.eclipse.ui.menus.UIElement; public abstract class AbstractTogglePreferenceKeyHandler extends AbstractHandler implements IElementUpdater { public AbstractTogglePreferenceKeyHandler() { super(); } public Object execute(ExecutionEvent event) throws ExecutionException { boolean value = getValue(); setValue(!value); // refresh the ui elements IWorkbenchWindow window = HandlerUtil .getActiveWorkbenchWindowChecked(event); ICommandService service = (ICommandService) window .getService(ICommandService.class); service.refreshElements(event.getCommand().getId(), null); return null; } /** * @see org.eclipse.core.commands.AbstractHandlerWithState#handleStateChange(org.eclipse.core.commands.State, * java.lang.Object) */ public void handleStateChange(State arg0, Object arg1) { System.err.println(arg0 + "::" + arg1); } private void setValue(boolean value) { Preferences prefs = getPreferences(); prefs.setValue(getKey(), value); } private boolean getValue() { Preferences prefs = getPreferences(); return prefs.getBoolean(getKey()); } protected abstract Preferences getPreferences(); protected abstract String getKey(); public void updateElement(UIElement element, Map parameters) { element.setChecked(getValue()); } }