package bluej.stride.framedjava.elements;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Stream;

import bluej.stride.generic.InteractionManager;
import nu.xom.Attribute;
import nu.xom.Element;
import bluej.stride.framedjava.ast.HighlightedBreakpoint;
import bluej.stride.framedjava.ast.JavaFragment;
import bluej.stride.framedjava.ast.JavaSingleLineDebugHandler;
import bluej.stride.framedjava.ast.JavaSource;
import bluej.stride.framedjava.ast.OptionalExpressionSlotFragment;
import bluej.stride.framedjava.ast.SlotFragment;
import bluej.stride.framedjava.frames.DebugInfo;
import bluej.stride.framedjava.frames.ReturnFrame;
import bluej.stride.generic.Frame;
import bluej.stride.generic.Frame.ShowReason;

public class ReturnElement
extends CodeElement implements JavaSingleLineDebugHandler{    
   public static final String ELEMENT = "return";
   
   private final OptionalExpressionSlotFragment val;
   
   private ReturnFrame frame;
    
   
   
   public ReturnElement(ReturnFrame frame, OptionalExpressionSlotFragment val, boolean enabled)
   {        
      this.frame = frame;
       
      this.val = val;
       
      this.enable = enabled;     
      }

   
   @Override
   
   public JavaSource toJavaSource()
   {        
      List<JavaFragment> fragments = new ArrayList<JavaFragment>();
      fragments.add(f(frame, "return"));
      if (val != null) {
         fragments.addAll(Arrays.asList(space(), val));         
         }        
      fragments.add(f(frame, ";"));
       
      return new JavaSource(this, fragments);     
      }

   
   @Override
   
   public LocatableElement toXML()
   {        
      LocatableElement retEl = new LocatableElement(this, ELEMENT);
      if (val != null) {
         retEl.addAttributeStructured("value", val);         
         }
      addEnableAttribute(retEl);
       
      return retEl;     
      }
    
   
   public ReturnElement(Element el)
   {
      Attribute valueAttribute = el.getAttribute("value");
       
      val = (valueAttribute == null) ? null : new OptionalExpressionSlotFragment(valueAttribute.getValue(), el.getAttributeValue("value-java"));
      enable = Boolean.valueOf(el.getAttributeValue("enable"));     
      }

   
   @Override
   
   public Frame createFrame(InteractionManager editor)
   {        
      frame = new ReturnFrame(editor, val, isEnable());
       
      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 val == null ? Stream.empty() : Stream.of(val);     
      } 
   }
top, use, map, class ReturnElement

.   ReturnElement
.   toJavaSource
.   toXML
.   ReturnElement
.   createFrame
.   showDebugBefore
.   show
.   getDirectSlotFragments




114 neLoCode + 0 LoComm