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