package bluej.stride.framedjava.elements;
import java.util.stream.Stream;
import bluej.stride.generic.InteractionManager;
import nu.xom.Element;
import bluej.stride.framedjava.ast.FilledExpressionSlotFragment;
import bluej.stride.framedjava.ast.HighlightedBreakpoint;
import bluej.stride.framedjava.ast.JavaSingleLineDebugHandler;
import bluej.stride.framedjava.ast.JavaSource;
import bluej.stride.framedjava.ast.SlotFragment;
import bluej.stride.framedjava.frames.AssignFrame;
import bluej.stride.framedjava.frames.DebugInfo;
import bluej.stride.generic.Frame;
import bluej.stride.generic.Frame.ShowReason;
public class AssignElement
extends CodeElement implements JavaSingleLineDebugHandler{
public static final String ELEMENT = "assign";
private final FilledExpressionSlotFragment lhs;
private final FilledExpressionSlotFragment rhs;
private AssignFrame frame;
public AssignElement(AssignFrame frame, FilledExpressionSlotFragment lhs, FilledExpressionSlotFragment rhs, boolean enabled)
{
this.frame = frame;
this.lhs = lhs;
this.lhs.markAssignmentLHS(frame);
this.rhs = rhs;
this.enable = enabled;
}
@Override
public JavaSource toJavaSource()
{
return new JavaSource(this, lhs, f(frame, " = "), rhs, f(frame, ";"));
}
@Override
public LocatableElement toXML()
{
LocatableElement assignEl = new LocatableElement(this, ELEMENT);
assignEl.addAttributeStructured("dest", lhs);
assignEl.addAttributeStructured("src", rhs);
addEnableAttribute(assignEl);
return assignEl;
}
public AssignElement(Element el)
{
lhs = new FilledExpressionSlotFragment(el.getAttributeValue("dest"), el.getAttributeValue("dest-java"));
rhs = new FilledExpressionSlotFragment(el.getAttributeValue("src"), el.getAttributeValue("src-java"));
enable = Boolean.valueOf(el.getAttributeValue("enable"));
}
@Override
public Frame createFrame(InteractionManager editor)
{
frame = new AssignFrame(editor, lhs, rhs, isEnable());
lhs.markAssignmentLHS(frame);
return frame;
}
@Override
public HighlightedBreakpoint showDebugBefore(DebugInfo debug)
{
return frame.showDebugBefore(debug);
}
@Override
public void show(ShowReason reason)
{
frame.show(reason);
}
@Override
protected Stream getDirectSlotFragments()
{
return Stream.of(lhs, rhs);
}
}
top,
use,
map,
class AssignElement
. AssignElement
. toJavaSource
. toXML
. AssignElement
. createFrame
. showDebugBefore
. show
. getDirectSlotFragments
103 neLoCode
+ 0 LoComm