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