package org.eclipse.papyrus.uml.diagram.sequence.apex.part.commands; import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.Command; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.papyrus.uml.diagram.sequence.apex.part.ApexUMLDiagramEditor; import org.eclipse.papyrus.uml.diagram.sequence.part.UMLDiagramEditorPlugin; import org.eclipse.ui.IEditorPart; import org.eclipse.ui.IPerspectiveDescriptor; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.handlers.HandlerUtil; public class ToggleTweakHandler extends AbstractHandler { private IWorkbenchPage fPage; private IPreferenceStore fStore; public Object execute(ExecutionEvent event) throws ExecutionException { Command command = event.getCommand(); boolean oldValue = HandlerUtil.toggleCommandState(command); try { IEditorPart part = HandlerUtil.getActiveEditor(event); fPage = part.getSite().getPage(); fStore = UMLDiagramEditorPlugin.getInstance().getPreferenceStore(); fStore.setValue(getPreferenceKey(), !oldValue); } catch (NullPointerException e) { return null; } return null; } public boolean isChecked() { if (fStore != null) { return fStore.getBoolean(getPreferenceKey()); } return false; } private String getPreferenceKey() { IPerspectiveDescriptor perspective= fPage.getPerspective(); String perspectiveID= perspective != null ? perspective.getId() : "<unknown>"; //$NON-NLS-1$ return ApexUMLDiagramEditor.EDITOR_SHOW_TWEAK + "." + perspectiveID; //$NON-NLS-1$ } }