public void stepReturn() { org.eclipse.emf.ecore.EObject current = interpreterDelegate.getNextObjectToInterprete(); final int parentLevel = org.feature.multi.perspective.mapping.viewmapping.resource.mtext.util.MtextEObjectUtil .getDepth(current) - 1; stopCondition = new org.feature.multi.perspective.mapping.viewmapping.resource.mtext.IMtextCommand< org.eclipse.emf.ecore.EObject>() { public boolean execute(org.eclipse.emf.ecore.EObject element) { // For step return, we stop at the next object that is at least one level higher int depth = org.feature.multi.perspective.mapping.viewmapping.resource.mtext.util .MtextEObjectUtil.getDepth(element); return depth <= parentLevel; } }; resume(); }
public void stepOver() { final org.eclipse.emf.ecore.EObject current = interpreterDelegate.getNextObjectToInterprete(); final int currentLevel = org.feature.multi.perspective.mapping.viewmapping.resource.mtext.util.MtextEObjectUtil .getDepth(current); stopCondition = new org.feature.multi.perspective.mapping.viewmapping.resource.mtext.IMtextCommand< org.eclipse.emf.ecore.EObject>() { public boolean execute(org.eclipse.emf.ecore.EObject element) { // For step over, we stop at the next object that is at the same level or higher int depth = org.feature.multi.perspective.mapping.viewmapping.resource.mtext.util .MtextEObjectUtil.getDepth(element); boolean sameOrHigher = depth <= currentLevel; boolean differentElement = element != current; return sameOrHigher && differentElement; } }; resume(); }