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.EObject;
import org.eclipse.emf.edit.command.AddCommand;
import org.eclipse.emf.edit.domain.EditingDomain;
import org.eclipse.jface.viewers.ColumnViewer;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import com.hundsun.ares.studio.jres.metadata.ui.MetadataUI;
import com.hundsun.ares.studio.jres.metadata.ui.actions.AddItemAction;
import com.hundsun.ares.studio.jres.model.metadata.MenuItem;
import com.hundsun.ares.studio.jres.model.metadata.MetadataPackage;
public class AddMenuItemAction extends AddItemAction {
private EClass itemClass;
/**
* @param viewer
* @param editingDomain
* @param itemClass
*/
public AddMenuItemAction(ColumnViewer viewer, EditingDomain editingDomain,
EClass itemClass) {
super(viewer, editingDomain, itemClass);
this.itemClass = itemClass;
setImageDescriptor(AbstractUIPlugin.imageDescriptorFromPlugin(MetadataUI.PLUGIN_ID, "icons/full/obj16/addSiblingMenu.png"));
}
@Override
protected Command createCommand() {
EObject item = itemClass.getEPackage().getEFactoryInstance().create(itemClass);
List<Object> objs = getSelectedObjects();
if(objs.size() >0){
Object obj = objs.get(0);
if(obj instanceof MenuItem){
EObject parent = ((MenuItem)obj).eContainer();
if(parent instanceof MenuItem){
return AddCommand.create(getEditingDomain(), parent, MetadataPackage.Literals.MENU_ITEM__SUB_ITEMS, item);
}
}
}
return super.createCommand();
}
}