blob: 1c6d82793f2f4d111f323c79396655ec0548d1a7 [file] [log] [blame]
package commands
import com.google.inject.Inject
import org.eclipse.emf.ecore.EReference
import org.eclipse.gmf.codegen.gmfgen.FeatureLinkModelFacet
import org.eclipse.gmf.codegen.gmfgen.GenLink
import org.eclipse.gmf.codegen.gmfgen.GenNode
import org.eclipse.gmf.codegen.gmfgen.LinkModelFacet
import org.eclipse.gmf.codegen.gmfgen.TypeLinkModelFacet
import org.eclipse.gmf.codegen.gmfgen.TypeModelFacet
import common.Common
/**
* EMF command to remove a link. Used by Reconnect*Commands and by ComponentEditPolicies.
*/
class DomainModelRemoveCommand {
extension Common = new Common
@Inject extension CommandCommon
def domainModelRemoveCommand(GenLink it, String edgeVar) '''
«generatedMemberComment»
private org.eclipse.emf.common.command.Command createDomainModelRemoveCommand(org.eclipse.emf.edit.domain.EditingDomain editingDomain) {
«modelFacet.domainModelRemoveCommand('editingDomain', edgeVar)»
}
'''
def domainModelRemoveCommand(GenNode it, String nodeVar) '''
«generatedMemberComment»
private org.eclipse.emf.common.command.Command createDomainModelRemoveCommand(org.eclipse.emf.edit.domain.EditingDomain editingDomain) {
«modelFacet.domainModelRemoveCommand('editingDomain', nodeVar)»
}
'''
def domainModelRemoveCommand(LinkModelFacet it, String domainVar, String edgeVar)
'''return org.eclipse.emf.common.command.UnexecutableCommand.INSTANCE;'''
def domainModelRemoveCommand(TypeLinkModelFacet it, String domainVar, String edgeVar)
'''«deleteCommand(domainVar, edgeVar)»'''
def domainModelRemoveCommand(TypeModelFacet it, String domainVar, String edgeVar)
'''«deleteCommand(domainVar, edgeVar)»'''
def deleteCommand(TypeModelFacet it, String domainVar, String elementVar)
'''return org.eclipse.gmf.runtime.gwt.commands.DestroyElementCommand.create(«domainVar», «elementVar».getElement());'''
def domainModelRemoveCommand(FeatureLinkModelFacet it, String domainVar, String edgeVar) '''
«IF metaFeature.referenceType && (metaFeature.ecoreFeature as EReference).containment»
org.eclipse.emf.common.command.CompoundCommand result = new org.eclipse.emf.common.command.CompoundCommand();
result.append(«metaFeature.unplugFeatureCommand(domainVar, edgeVar + '.getSource().getElement()', edgeVar + '.getTarget().getElement()')»);
result.append(new org.eclipse.emf.edit.command.AddCommand(«domainVar», «edgeVar.getPhantomContainmentResource».getContents(), «edgeVar».getTarget().getElement()));
return result;
«ELSE»
return «metaFeature.unplugFeatureCommand(domainVar, edgeVar + '.getSource().getElement()', edgeVar + '.getTarget().getElement()')»;
«ENDIF»
'''
}