/** * Դ�������ƣ�RemoveAction.java * �������Ȩ���������ӹɷ����޹�˾ ��Ȩ���� * ϵͳ���ƣ�JRES Studio * ģ�����ƣ�com.hundsun.ares.studio.jres.metadata.ui * ����˵����Ԫ�����û��༭��UIչ����ع��� * ����ĵ��� * ���ߣ� */ package com.hundsun.ares.studio.jres.metadata.ui.actions; import org.eclipse.emf.common.command.Command; import org.eclipse.emf.common.command.CompoundCommand; import org.eclipse.emf.edit.command.RemoveCommand; import org.eclipse.emf.edit.domain.EditingDomain; import org.eclipse.jface.viewers.ColumnViewer; import org.eclipse.jface.viewers.ITreeSelection; import org.eclipse.jface.viewers.TreePath; import org.eclipse.ui.ISharedImages; import org.eclipse.ui.PlatformUI; import com.hundsun.ares.studio.jres.metadata.ui.viewer.MetadataViewerUtil; import com.hundsun.ares.studio.jres.metadata.ui.viewer.UncategorizedItemsCategoryImpl; import com.hundsun.ares.studio.jres.model.metadata.MetadataPackage; import com.hundsun.ares.studio.jres.model.metadata.impl.MetadataCategoryImpl; import com.hundsun.ares.studio.jres.model.metadata.impl.MetadataItemImpl; import com.hundsun.ares.studio.ui.editor.actions.ColumnViewerAction; /** * �Ƴ���ǰ�������Ŀ�����Ǵ���Ŀ�����ᱻɾ�� * @author gongyf * */ public class RemoveAction extends ColumnViewerAction { /** * @param viewer * @param editingDomain */ public RemoveAction(ColumnViewer viewer, EditingDomain editingDomain) { super(viewer, editingDomain); setId(IMetadataActionIDConstant.CV_REMOVE); setText("�ӷ����Ƴ�"); setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(ISharedImages.IMG_ETOOL_DELETE)); } /* (non-Javadoc) * @see com.hundsun.ares.studio.jres.ui.actions.ColumnViewerAction#createCommand() */ @Override protected Command createCommand() { if (MetadataViewerUtil.isShowCategory(getViewer())) { ITreeSelection selection = (ITreeSelection) getViewer().getSelection(); CompoundCommand cmd = new CompoundCommand(); if (selection != null && !selection.isEmpty()){ TreePath[] paths = selection.getPaths();{ for(TreePath path:paths){ int count=path.getSegmentCount(); if(count>=2){ Object item=path.getSegment(count-1); Object category = path.getSegment(count-2); if(item instanceof MetadataItemImpl && category instanceof MetadataCategoryImpl){ if(category instanceof UncategorizedItemsCategoryImpl){//ѡ��δ�����µ���Ŀ return null; } else{ //��ѡ����Ŀ�ӵ�ǰ����������δ������ // MetadataResourceData<?> data=(MetadataResourceData<?>) ((MetadataItemImpl)item).eContainer(); // UncategorizedItemsCategoryImpl uncateCategory = new UncategorizedItemsCategoryImpl(data); // Command addcmd = AddCommand.create(getEditingDomain(), uncateCategory, MetadataPackage.Literals.METADATA_CATEGORY__ITEMS, item); // cmd.append(addcmd); Command removecmd= RemoveCommand.create(getEditingDomain(), category, MetadataPackage.Literals.METADATA_CATEGORY__ITEMS, item); cmd.append(removecmd); } } else{//ѡ�����к��ӷ����ļ��� return null; } } else{//ѡ�����к�һ�������ļ��� return null; } } } } return cmd;//RemoveCommand.create(getEditingDomain(), selectedObjects); } return null; } }