/*****************************************************************************
* Copyright (c) 2010 CEA LIST.
*
*
* 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:
* Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
*
*****************************************************************************/
package org.eclipse.papyrus.uml.diagram.profile.custom.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.diagram.ui.requests.RequestConstants;
import org.eclipse.gmf.runtime.emf.type.core.IElementType;
import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;
/**
*
* This class looks like CreateViewAndElementRequest
*
* This class was created to use the CustomCreateElementRequestAdapter (used in the CustomCreateViewRequest)
*/
public class CustomCreateViewAndElementRequest extends CustomCreateViewRequest {
/**
* 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(CustomCreateElementRequestAdapter requestAdapter, PreferencesHint preferencesHint) {
super(requestAdapter, preferencesHint);
}
/**
* Constructor for ViewAndElementDescriptor.
*
* @param requestAdapter
* @param viewkind
*/
public ViewAndElementDescriptor(CustomCreateElementRequestAdapter requestAdapter, Class viewkind, PreferencesHint preferencesHint) {
super(requestAdapter, viewkind, preferencesHint);
}
/**
* Constructor for ViewAndElementDescriptor.
*
* @param requestAdapter
* @param viewkind
* @param semanticHint
*/
public ViewAndElementDescriptor(CustomCreateElementRequestAdapter 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(CustomCreateElementRequestAdapter requestAdapter, Class viewKind, String semanticHint, int index, PreferencesHint preferencesHint) {
super(requestAdapter, viewKind, semanticHint, index, preferencesHint);
}
/**
* Method getElementDescriptor.
*
* @return ElementDescriptor
*/
public CustomCreateElementRequestAdapter getCreateElementRequestAdapter() {
return (CustomCreateElementRequestAdapter)getElementAdapter();
}
}
/**
* Constructor for CreateViewAndElementRequest.
*
* @param viewAndElementDescriptor
*/
public CustomCreateViewAndElementRequest(ViewDescriptor 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 CustomCreateViewAndElementRequest(IElementType type, PreferencesHint preferencesHint) {
super(new ViewAndElementDescriptor(new CustomCreateElementRequestAdapter(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 CustomCreateViewAndElementRequest(IElementType type, EObject context, PreferencesHint preferencesHint) {
super(new ViewAndElementDescriptor(new CustomCreateElementRequestAdapter(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()}.
*/
@Override
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);
}
}
}
}
}