/**
* <p>Copyright: Copyright (c) 2012</p>
* <p>Company: �������ӹɷ�����˾</p>
*/
package com.hundsun.ares.studio.jres.basicdata.ui.editor.blocks.action;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.edit.command.AddCommand;
import org.eclipse.emf.edit.domain.EditingDomain;
import org.eclipse.jface.action.Action;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.ISharedImages;
import org.eclipse.ui.PlatformUI;
import com.hundsun.ares.studio.core.IARESResource;
import com.hundsun.ares.studio.jres.basicdata.constant.IBasicDataEpacakgeConstant;
import com.hundsun.ares.studio.jres.basicdata.ui.editor.blocks.InfoSelectDialog;
import com.hundsun.ares.studio.jres.model.metadata.MetadataCategory;
import com.hundsun.ares.studio.ui.editor.actions.IActionIDConstant;
import com.hundsun.ares.studio.ui.editor.actions.IUpdateAction;
/**
* @author lvgao
*
*/
public class AddLinkAction extends Action implements IUpdateAction{
EObject resouceInfo; //��ǰ���ڱ༭��ģ��
EObject owner;
IARESResource resource;
EditingDomain domain;
public AddLinkAction(EditingDomain domain,
IARESResource resource,
EObject resouceInfo,
EObject owner){
this.owner = owner;
this.resouceInfo = resouceInfo;
this.resource = resource;
this.domain = domain;
setText("����");
setId(IActionIDConstant.CV_ADD);
setEnabled(false);
setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(ISharedImages.IMG_OBJ_ADD));
}
public void setOwner(EObject info){
setEnabled(false);
if(null == info){
return;
}
//����
if(info instanceof MetadataCategory){
return;
}
this.owner = info;
setEnabled(true);
}
/* (non-Javadoc)
* @see org.eclipse.jface.action.Action#run()
*/
@Override
public void run() {
EPackage ePackage = owner.eClass().getEPackage();
InfoSelectDialog dlg = new InfoSelectDialog(new Shell(),
resource,
resouceInfo);
dlg.open();
// domain
if(!dlg.getResult().isEmpty()){
EClass masterClass = (EClass)ePackage.getEClassifier(IBasicDataEpacakgeConstant.MasterItem);
AddCommand command = new AddCommand(domain, owner,
masterClass.getEStructuralFeature(IBasicDataEpacakgeConstant.Attr_Slave_Items),
dlg.getResult());
domain.getCommandStack().execute(command);
}
}
/* (non-Javadoc)
* @see com.hundsun.ares.studio.jres.ui.actions.IUpdateAction#update()
*/
@Override
public void update() {
}
}