/** * Դ�������ƣ�ParameterPasteAction.java * �������Ȩ���������ӹɷ����޹�˾ ��Ȩ���� * ϵͳ���ƣ�JRES Studio * ģ�����ƣ�com.hundsun.ares.studio.biz.ui * ����˵����$desc * ����ĵ��� * ���ߣ�sundl */ package com.hundsun.ares.studio.biz.ui.action; import java.util.ArrayList; import java.util.List; import org.eclipse.emf.common.command.Command; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EReference; import org.eclipse.emf.edit.domain.EditingDomain; import org.eclipse.emf.transaction.TransactionalEditingDomain; import org.eclipse.jface.viewers.ColumnViewer; import org.eclipse.jface.viewers.IStructuredSelection; import com.hundsun.ares.studio.biz.BizFactory; import com.hundsun.ares.studio.biz.ParamType; import com.hundsun.ares.studio.biz.Parameter; import com.hundsun.ares.studio.jres.model.metadata.StandardField; import com.hundsun.ares.studio.ui.editor.actions.ColumnViewerPasteAction; import com.hundsun.ares.studio.ui.util.ARESEMFClipboard; /** * ������ص�ճ��Action����ҪΪ��ʵ�ִӱ��ֶε����䡣 * @author sundl * */ public class ParameterPasteAction extends ColumnViewerPasteAction { /** * @param viewer * @param editingDomain * @param owner * @param reference */ public ParameterPasteAction(ColumnViewer viewer, EditingDomain editingDomain, EObject owner, EReference reference) { super(viewer, editingDomain, owner, reference); } /* (non-Javadoc) * @see com.hundsun.ares.studio.jres.ui.actions.ColumnViewerAction#createCommand() */ @Override protected Command createCommand() { if (owner != null && reference != null) { IStructuredSelection selection = (IStructuredSelection)getViewer().getSelection(); return new ParameterPasteCommand((TransactionalEditingDomain) getEditingDomain(), owner, reference, selection.getFirstElement()); } return null; } protected class ParameterPasteCommand extends PasteCommand{ public ParameterPasteCommand(TransactionalEditingDomain domain, EObject owner, EReference reference, Object position) { super(domain, owner, reference, position); } protected List<EObject> getCopyedObjects() { List<EObject> eObjects = (List<EObject>) ARESEMFClipboard.getInstance().pasteFromClipboard(reference.getEReferenceType().getInstanceClass()); if (eObjects.isEmpty()) { eObjects = new ArrayList<EObject>(); List<StandardField> stds = ARESEMFClipboard.getInstance().pasteFromClipboard(StandardField.class); for (StandardField std : stds) { Parameter p = BizFactory.eINSTANCE.createParameter(); p.setParamType(ParamType.STD_FIELD); p.setId(std.getName()); eObjects.add(p); } } return eObjects; } } }