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();
}
}
}