/******************************************************************************* * Copyright (c) 2005, 2009 IBM Corporation and others. * 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: * IBM Corporation - initial implementation *******************************************************************************/ package org.eclipse.epf.diagram.core.actions; import java.lang.annotation.ElementType; import java.util.ArrayList; import java.util.List; import org.eclipse.epf.diagram.core.part.AbstractDiagramEditor; import org.eclipse.gef.Request; import org.eclipse.gef.commands.Command; import org.eclipse.gmf.runtime.common.core.command.CommandResult; import org.eclipse.gmf.runtime.diagram.core.preferences.PreferencesHint; import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy; import org.eclipse.gmf.runtime.diagram.ui.editparts.DiagramEditPart; import org.eclipse.gmf.runtime.diagram.ui.requests.CreateUnspecifiedTypeRequest; import org.eclipse.jface.action.Action; import org.eclipse.ui.IWorkbenchPart; /** * @author Shashidhar Kannoori * */ public class CreateElementAction extends Action { private IWorkbenchPart targetPart; private List elementTypes = new ArrayList<ElementType>(); private PreferencesHint preferenceHint = null; /** * */ public CreateElementAction(IWorkbenchPart targetPart, String text) { super(text); this.targetPart = targetPart; } @Override public void run() { Request req= new CreateUnspecifiedTypeRequest(getElementTypes(), getPreferenceHint()); DiagramEditPart diagramEditPart = getDiagramEditPart(); if(diagramEditPart.isEditModeEnabled()){ Command cmd = getDiagramEditPart().getCommand(req); if(cmd.canExecute()){ cmd.execute(); if(cmd instanceof ICommandProxy){ CommandResult results = ((ICommandProxy)cmd).getICommand().getCommandResult(); System.out.println(results); } } } } private DiagramEditPart getDiagramEditPart(){ if(targetPart != null && targetPart instanceof AbstractDiagramEditor){ return ((AbstractDiagramEditor)targetPart).getDiagramEditPart(); } return null; } public List getElementTypes() { return elementTypes; } public void setElementTypes(List elementTypes) { this.elementTypes = elementTypes; } public PreferencesHint getPreferenceHint() { return preferenceHint; } public void setPreferenceHint(PreferencesHint preferenceHint) { this.preferenceHint = preferenceHint; } }