/****************************************************************************** * 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 Corporation - initial API and implementation ****************************************************************************/ package org.eclipse.gmf.runtime.diagram.ui.requests; import java.util.Map; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.transaction.util.TransactionUtil; import org.eclipse.gmf.runtime.diagram.core.edithelpers.CreateElementRequestAdapter; import org.eclipse.gmf.runtime.diagram.core.preferences.PreferencesHint; import org.eclipse.gmf.runtime.emf.type.core.IElementType; import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest; /** * A request to create an element and its view * @author melaasar */ public class CreateViewAndElementRequest extends CreateViewRequest { /** * An extended view descriptor that takes an <code>ElementDescriptor</code> * instead of <code>IAdaptable</code> as the element adapter */ public static class ViewAndElementDescriptor extends ViewDescriptor { /** * Constructor for ViewAndElementDescriptor. * @param requestAdapter * @param preferencesHint * The preference hint that is to be used to find the appropriate * preference store from which to retrieve diagram preference * values. The preference hint is mapped to a preference store in * the preference registry <@link DiagramPreferencesRegistry>. */ public ViewAndElementDescriptor(CreateElementRequestAdapter requestAdapter, PreferencesHint preferencesHint) { super(requestAdapter, preferencesHint); } /** * Constructor for ViewAndElementDescriptor. * @param requestAdapter * @param viewkind */ public ViewAndElementDescriptor( CreateElementRequestAdapter requestAdapter, Class viewkind, PreferencesHint preferencesHint) { super(requestAdapter, viewkind, preferencesHint); } /** * Constructor for ViewAndElementDescriptor. * @param requestAdapter * @param viewkind * @param semanticHint */ public ViewAndElementDescriptor( CreateElementRequestAdapter requestAdapter, Class viewkind, String semanticHint, PreferencesHint preferencesHint) { super(requestAdapter, viewkind, semanticHint, preferencesHint); } /** * Constructor for ViewAndElementDescriptor. * @param requestAdapter * @param viewKind * @param semanticHint * @param index */ public ViewAndElementDescriptor( CreateElementRequestAdapter requestAdapter, Class viewKind, String semanticHint, int index, PreferencesHint preferencesHint) { super(requestAdapter, viewKind, semanticHint, index, preferencesHint); } /** * Method getElementDescriptor. * @return ElementDescriptor */ public CreateElementRequestAdapter getCreateElementRequestAdapter() { return (CreateElementRequestAdapter) getElementAdapter(); } } /** * Constructor for CreateViewAndElementRequest. * @param viewAndElementDescriptor */ public CreateViewAndElementRequest(ViewAndElementDescriptor viewAndElementDescriptor) { super(RequestConstants.REQ_CREATE, viewAndElementDescriptor); } /** * Constructor for CreateViewAndElementRequest. * @param type * @param preferencesHint * The preference hint that is to be used to find the appropriate * preference store from which to retrieve diagram preference * values. The preference hint is mapped to a preference store in * the preference registry <@link DiagramPreferencesRegistry>. */ public CreateViewAndElementRequest(IElementType type, PreferencesHint preferencesHint) { super( new ViewAndElementDescriptor( new CreateElementRequestAdapter( new CreateElementRequest(type)), preferencesHint)); } /** * Constructor for CreateViewAndElementRequest. * @param type * @param context * @param preferencesHint * The preference hint that is to be used to find the appropriate * preference store from which to retrieve diagram preference * values. The preference hint is mapped to a preference store in * the preference registry <@link DiagramPreferencesRegistry>. */ public CreateViewAndElementRequest(IElementType type, EObject context, PreferencesHint preferencesHint) { super( new ViewAndElementDescriptor( new CreateElementRequestAdapter( new CreateElementRequest(TransactionUtil.getEditingDomain(context), context, type)), preferencesHint)); } /** * Method getViewAndElementDescriptor. * @return ViewAndElementDescriptor */ public ViewAndElementDescriptor getViewAndElementDescriptor() { return (ViewAndElementDescriptor) getViewDescriptors().get(0); } /** * Propagates setting the parameters to the <code>CreateElementRequest</code> in my * {@link #getViewAndElementDescriptor()}. */ public void setExtendedData(Map map) { super.setExtendedData(map); ViewAndElementDescriptor descriptor = getViewAndElementDescriptor(); if (descriptor != null) { CreateElementRequestAdapter adapter = descriptor .getCreateElementRequestAdapter(); if (adapter != null) { CreateElementRequest request = (CreateElementRequest) adapter .getAdapter(CreateElementRequest.class); if (request != null) { request.getParameters().clear(); request.addParameters(map); } } } } }