package bluej.stride.framedjava.elements;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Stream;
import bluej.debugger.gentype.ConstructorReflective;
import bluej.stride.framedjava.ast.FrameFragment;
import bluej.stride.framedjava.ast.TypeSlotFragment;
import bluej.stride.generic.AssistContentThreadSafe;
import bluej.stride.generic.InteractionManager;
import nu.xom.Attribute;
import nu.xom.Element;
import nu.xom.Elements;
import threadchecker.OnThread;
import threadchecker.Tag;
import bluej.parser.ExpressionTypeInfo;
import bluej.parser.entity.EntityResolver;
import bluej.stride.framedjava.ast.JavaFragment.PosInSourceDoc;
import bluej.stride.framedjava.ast.JavaSource;
import bluej.stride.framedjava.ast.Loader;
import bluej.stride.framedjava.errors.SyntaxCodeError;
import bluej.stride.framedjava.frames.TopLevelFrame;
import bluej.stride.framedjava.slots.ExpressionSlot;
public interface TopLevelCodeElement
{
public static ArrayList xmlToTypeList(Element el, String container, String itemName, String itemAttribute)
{
ArrayList<TypeSlotFragment> members = new ArrayList<>();
Element collectionChildElement = el.getFirstChildElement(container);
if (collectionChildElement != null ) {
Elements children = collectionChildElement.getChildElements();
for (int i = 0; i < children.size(); i++) {
final Element child = children.get(i);
if (child.getLocalName().equals(itemName)) {
members.add(new TypeSlotFragment(child.getAttributeValue(itemAttribute), child.getAttributeValue(itemAttribute + "-java")));
}
else {
bluej.utility.Debug.reportError("Wrong element format: expected '" + itemName + "', found '" + child.getLocalName() + "'.");
}
}
}
return members;
}
public static Element typeListToXML(List<TypeSlotFragment> items, String container, String itemName, String itemAttribute)
{
Element el = new Element(container);
for (TypeSlotFragment s : items)
{
LocatableElement child = new LocatableElement(null, itemName);
child.addAttributeStructured(itemAttribute, s);
el.appendChild(child);
}
return el;
}
public static List fillChildrenElements(ContainerCodeElement parent, Element el, String string)
{
List<CodeElement> members = new ArrayList<CodeElement>();
Element collectionChildElement = el.getFirstChildElement(string);
if (collectionChildElement != null ) {
Elements children = collectionChildElement.getChildElements();
for (int i = 0; i < children.size(); i++) {
CodeElement member = Loader.loadElement(children.get(i));
members.add(member);
member.setParent(parent);
}
}
return members;
}
public static Attribute getStrideVersionAttribute()
{
return new Attribute("strideversion", "1");
}
@OnThread(Tag.FXPlatform)
public ExpressionTypeInfo getCodeSuggestions(PosInSourceDoc pos, ExpressionSlot<?> completing);
@OnThread(Tag.FX)
public TopLevelFrame extends TopLevelCodeElement> createTopLevelFrame(InteractionManager editor);
public List getImports();
public String getName();
public String getStylePrefix();
@OnThread(Tag.FXPlatform)
public EntityResolver getResolver();
public @OnThread(Tag.FX) InteractionManager getEditor();
public LocatableElement toXML();
public TopLevelFrame getFrame();
public Stream streamContained();
@OnThread(Tag.FXPlatform)
public Stream findEarlyErrors();
@OnThread(Tag.FXPlatform)
public JavaSource toJavaSource();
@OnThread(Tag.FXPlatform)
public default JavaSource toJavaSource(boolean warning)
{
JavaSource java = toJavaSource();
if (warning) {
java = new JavaSource(java);
java.prependLine(Arrays.asList(new FrameFragment(null, (CodeElement)this, "// WARNING: This file is auto-generated and any changes to it will be overwritten")), null);
}
return java;
}
@OnThread(Tag.FXPlatform)
void updateSourcePositions();
@OnThread(Tag.FXPlatform)
List<ConstructorReflective> getSuperConstructors();
@OnThread(Tag.FXPlatform)
List<AssistContentThreadSafe> getThisConstructors();
}
top,
use,
map,
interface TopLevelCodeElement
. xmlToTypeList
. typeListToXML
. fillChildrenElements
. getStrideVersionAttribute
. getCodeSuggestions
. createTopLevelFrame
. getImports
. getName
. getStylePrefix
. getResolver
. toXML
. getFrame
. streamContained
. findEarlyErrors
. toJavaSource
. toJavaSource
. updateSourcePositions
154 neLoCode
+ 0 LoComm