package com.hundsun.ares.studio.jres.metadata.ui.menu.actions; import java.util.List; import org.eclipse.emf.common.command.Command; import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.EClassifier; import org.eclipse.emf.edit.command.AddCommand; import org.eclipse.emf.edit.domain.EditingDomain; import org.eclipse.jface.viewers.ColumnViewer; import com.hundsun.ares.studio.jres.metadata.ui.actions.PasteAction; import com.hundsun.ares.studio.jres.model.metadata.MenuItem; import com.hundsun.ares.studio.jres.model.metadata.MetadataCategory; import com.hundsun.ares.studio.jres.model.metadata.MetadataItem; import com.hundsun.ares.studio.jres.model.metadata.MetadataPackage; import com.hundsun.ares.studio.ui.util.ARESEMFClipboard; public class MenuItemPasteAction extends PasteAction { private EClassifier cateClass; private EClassifier itemClass; /** * @param viewer * @param editingDomain * @param cateClass * @param itemClass */ public MenuItemPasteAction(ColumnViewer viewer, EditingDomain editingDomain, EClass cateClass, EClass itemClass) { super(viewer, editingDomain, cateClass, itemClass); this.cateClass = cateClass; this.itemClass = itemClass; } @Override protected Command createCommand() { List<MetadataCategory> copiedCategories = (List<MetadataCategory>) ARESEMFClipboard.getInstance().pasteFromClipboard(cateClass.getInstanceClass()); List<MetadataItem> copiedItems = (List<MetadataItem>) ARESEMFClipboard.getInstance().pasteFromClipboard(itemClass.getInstanceClass()); if(copiedCategories.isEmpty() && !copiedItems.isEmpty()){ List<Object> objs = getSelectedObjects(); if(objs.size() > 0){ Object obj = objs.get(0); if(obj instanceof MenuItem){ return AddCommand.create(getEditingDomain(), obj, MetadataPackage.Literals.MENU_ITEM__SUB_ITEMS, copiedItems); } } } return super.createCommand(); } }