package bluej.stride.framedjava.elements;

import java.util.stream.Stream;

import bluej.stride.framedjava.ast.Parser;
import bluej.stride.framedjava.ast.SlotFragment;
import bluej.stride.generic.InteractionManager;
import nu.xom.Element;
import bluej.stride.framedjava.ast.JavaSource;
import bluej.stride.framedjava.ast.TextSlotFragment;
import bluej.stride.framedjava.errors.SyntaxCodeError;
import bluej.stride.framedjava.frames.ImportFrame;
import bluej.stride.framedjava.slots.ExpressionSlot;
import bluej.stride.generic.Frame.ShowReason;
import bluej.stride.slots.EditableSlot;
import bluej.stride.slots.TextSlot;

public class ImportElement
extends CodeElement{    
   public static final String ELEMENT = "import";
   
   private ImportFrame frame;
   
   private final ImportFragment importValue;
    
   
   public ImportElement(Element el)
   {        
      importValue = new ImportFragment(el.getAttributeValue("target"), null);
      enable = Boolean.valueOf(el.getAttributeValue("enable"));     
      }
    
   
   public ImportElement(String src, TextSlot<ImportFragment> slot, boolean enabled)
   {        
      importValue = new ImportFragment(src, slot);
       
      this.enable = enabled;     
      }

   
   @Override
   
   public JavaSource toJavaSource()
   {        
      return new JavaSource(null, f(frame, "import "), importValue, f(frame, ";"));     
      }

   
   @Override
   
   public LocatableElement toXML()
   {        
      LocatableElement importEl = new LocatableElement(this, ELEMENT);
      importEl.addAttributeCode("target", importValue);
      addEnableAttribute(importEl);
       
      return importEl;     
      }

   
   @Override
   
   public ImportFrame createFrame(InteractionManager editor)
   {        
      frame = new ImportFrame(editor, this, isEnable());
       
      return frame;     
      }
    
   
   @Override
   
   public void show(ShowReason reason)
   {
      frame.show(reason);             
      }
    
   
   @Override
   
   protected Stream getDirectSlotFragments()
   {
      return Stream.of(importValue);     
      }
    
   
   public static class ImportFragment
extends TextSlotFragment
   {        
      private TextSlot<ImportFragment> slot;

       
      public ImportFragment(String content, TextSlot slot)
       {
         super(content);
           
         this.slot = slot;         
         }

       
      @Override
       
      public void registerSlot(TextSlot slot)
       {            
         this.slot = slot;         
         }

       
      @Override
       
      protected String getJavaCode(Destination dest, ExpressionSlot<?> completing, Parser.DummyNameGenerator dummyNameGenerator)
       {
         return getContent();         
         }

       
      @Override
       
      public EditableSlot getSlot()
       {            
         return slot;         
         }

       
      @Override
       
      public Stream findEarlyErrors()
       {
         return Stream.empty();         
         }     
      }

   
   public ImportFragment getImport()
   {        
      return importValue;     
      } 
   }
top, use, map, class ImportElement

.   ImportElement
.   ImportElement
.   toJavaSource
.   toXML
.   createFrame
.   show
.   getDirectSlotFragments

top, use, map, class ImportElement . ImportFragment

.   ImportFragment
.   registerSlot
.   getJavaCode
.   getSlot
.   findEarlyErrors
.   getImport




138 neLoCode + 0 LoComm