/******************************************************************************* * Copyright (c) 2007, 2010 Association for Decentralized Information Management * in Industry THTH ry. * 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: * VTT Technical Research Centre of Finland - initial API and implementation *******************************************************************************/ package org.simantics.scenegraph.ui; 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.core.commands.State; import org.eclipse.ui.IWorkbenchPart; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.commands.ICommandService; import org.eclipse.ui.handlers.HandlerUtil; /** * @author Tuukka Lehtonen */ public class LinkToActiveWorkbenchPartHandler extends AbstractHandler { static final String COMMAND = "org.simantics.scenegraph.linkToActiveWorkbenchPart"; static final String STATE = "org.simantics.scenegraph.linkToActiveWorkbenchPart.state"; @Override public Object execute(ExecutionEvent event) throws ExecutionException { IWorkbenchPart part = HandlerUtil.getActivePart(event); if (part == null || !(part instanceof SceneGraphViewPart)) return null; SceneGraphViewPart sg = (SceneGraphViewPart) part; ICommandService service = (ICommandService) PlatformUI.getWorkbench().getService(ICommandService.class); Command command = service.getCommand(COMMAND); State state = command.getState(STATE); Boolean value = (Boolean) state.getValue(); value = !value; state.setValue(value); sg.linkToActiveWorkbenchPart(value); return null; } }