/** * Copyright (c) 2002-2006 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 - Initial API and implementation */ package org.eclipse.emf.codegen.ecore.genmodel.action; import java.util.Collection; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.viewers.ISelection; import org.eclipse.ui.IEditorPart; import org.eclipse.emf.codegen.ecore.genmodel.provider.GenModelEditPlugin; import org.eclipse.emf.common.command.Command; import org.eclipse.emf.common.command.UnexecutableCommand; import org.eclipse.emf.edit.command.CommandParameter; import org.eclipse.emf.edit.command.CreateChildCommand; import org.eclipse.emf.edit.domain.EditingDomain; import org.eclipse.emf.edit.ui.action.StaticSelectionCommandAction; import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry; /** * This performs child creation by delegating to a {@link CreateChildCommand}. */ public class CreateChildAction extends StaticSelectionCommandAction { /** * This is the descriptor for the child to be created. */ protected CommandParameter newChildDescriptor; /** * This constructs an instance of an action that creates a child described by newChildDescriptor. */ public CreateChildAction(IEditorPart editorPart, ISelection selection, CommandParameter newChildDescriptor) { super(editorPart); this.newChildDescriptor = newChildDescriptor; configureAction(selection); } /** * This returns the image that is used if the command does not provide an * override. */ @Override protected ImageDescriptor getDefaultImageDescriptor() { return ExtendedImageRegistry.INSTANCE.getImageDescriptor(GenModelEditPlugin.INSTANCE.getImage("CreateChild")); } /** * This creates the command that creates the child and adds it under the * single selected object, specified in collection. */ @Override protected Command createActionCommand(EditingDomain editingDomain, Collection<?> collection) { if (collection.size() == 1) { return CreateChildCommand.create(editingDomain, collection.iterator().next(), newChildDescriptor, collection); } else { return UnexecutableCommand.INSTANCE; } } }