/******************************************************************************* * <copyright> * * Copyright (c) 2005, 2010 SAP AG. * 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: * SAP AG - initial API, implementation and documentation * Bug 336488 - DiagramEditor API * pjpaulin - Bug 352120 - Now uses IDiagramContainerUI interface * * </copyright> * *******************************************************************************/ package org.eclipse.graphiti.ui.internal.action; import org.eclipse.gef.commands.CommandStack; import org.eclipse.graphiti.features.context.ICustomContext; import org.eclipse.graphiti.features.custom.ICustomFeature; import org.eclipse.graphiti.internal.command.CommandContainer; import org.eclipse.graphiti.internal.command.GenericFeatureCommandWithContext; import org.eclipse.graphiti.internal.command.ICommand; import org.eclipse.graphiti.ui.editor.DiagramBehavior; import org.eclipse.graphiti.ui.internal.command.GefCommandWrapper; import org.eclipse.jface.action.Action; /** * @noinstantiate This class is not intended to be instantiated by clients. * @noextend This class is not intended to be subclassed by clients. */ public class CustomAction extends Action { private ICustomFeature customFeature; private ICustomContext context; private DiagramBehavior diagramBehavior; public CustomAction(ICustomFeature customFeature, ICustomContext context, DiagramBehavior diagramBehavior) { super(); this.customFeature = customFeature; this.context = context; this.diagramBehavior = diagramBehavior; setText(customFeature.getName()); setToolTipText(customFeature.getDescription()); } @Override public boolean isEnabled() { return customFeature.canExecute(context); } @Override public void run() { CommandContainer commandContainer = new CommandContainer(customFeature.getFeatureProvider()); commandContainer.add(new GenericFeatureCommandWithContext(customFeature, context)); executeOnCommandStack(commandContainer); } protected void executeOnCommandStack(ICommand command) { CommandStack commandStack = diagramBehavior.getEditDomain().getCommandStack(); commandStack.execute(new GefCommandWrapper(command, diagramBehavior.getEditingDomain())); } }