package jetbrains.mps.debugger.java.runtime.breakpoints; /*Generated by MPS */ import jetbrains.mps.util.Computable; import jetbrains.mps.debug.api.breakpoints.BreakpointLocation; import org.jetbrains.mps.openapi.module.SRepository; import org.jetbrains.annotations.NotNull; import jetbrains.mps.smodel.ModelAccessHelper; import org.jetbrains.mps.openapi.model.SNode; /** * Computable ready to be executed inside approapriate model read to build name of node under breakpoint. * To use, call {@link jetbrains.mps.debugger.java.runtime.breakpoints.BreakpointPresentation#getText() }. Instances could be reused. */ /*package*/ class BreakpointPresentation implements Computable<String> { private final BreakpointLocation myLocation; private final SRepository myRepo; public BreakpointPresentation(@NotNull BreakpointLocation bp, @NotNull SRepository repo) { myLocation = bp; myRepo = repo; } public String getText() { return new ModelAccessHelper(myRepo).runReadAction(this); } public String compute() { SNode node = myLocation.getNodePointer().resolve(myRepo); if (node != null) { SNode root = node.getContainingRoot(); return String.format("%s in %s (%s)", node, root, myLocation.getModelReference().getModelName()); } else { return myLocation.getPresentation(); } } }