package com.hundsun.ares.studio.jres.basicdata.ui.editor.actions; import java.util.Collection; import org.eclipse.emf.common.command.Command; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EStructuralFeature; import org.eclipse.emf.edit.command.RemoveCommand; import org.eclipse.emf.edit.domain.EditingDomain; import org.eclipse.emf.edit.domain.IEditingDomainProvider; import org.eclipse.emf.edit.ui.action.CommandActionHandler; import org.eclipse.jface.viewers.ColumnViewer; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.ui.ISharedImages; import org.eclipse.ui.IWorkbenchPart; import org.eclipse.ui.PlatformUI; import com.hundsun.ares.studio.ui.editor.actions.IActionIDConstant; import com.hundsun.ares.studio.ui.editor.actions.IUpdateAction; public class BaiscDataDeleteAction extends CommandActionHandler implements IUpdateAction { ColumnViewer viewer; EObject owner; EStructuralFeature feature; public BaiscDataDeleteAction(ColumnViewer viewer, EditingDomain domain, EObject owner, EStructuralFeature feature ) { super(domain, "ɾ��"); setId(IActionIDConstant.CV_DELETE); this.viewer = viewer; this.owner = owner; this.feature = feature; setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(ISharedImages.IMG_TOOL_DELETE)); } public void setOwner(EObject owner) { this.owner = owner; this.command = null; //��������ownerʱ���commmand } @Override public Command createCommand(Collection<?> selection) { return new RemoveCommand(domain, owner, feature, selection); } /** * @since 2.1.0 */ public void setActiveWorkbenchPart(IWorkbenchPart workbenchPart) { if (workbenchPart instanceof IEditingDomainProvider) { domain = ((IEditingDomainProvider) workbenchPart) .getEditingDomain(); } } @Override public void update() { if(!this.viewer.getSelection().isEmpty()){ IStructuredSelection selection = (IStructuredSelection)this.viewer.getSelection(); command = createCommand(selection.toList()); } if(null != command && command.canExecute()){ setEnabled(true); }else{ setEnabled(false); } } }