package bluej.stride.framedjava.frames;

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

import bluej.utility.javafx.SharedTransition;
import javafx.beans.binding.DoubleBinding;
import javafx.beans.value.ObservableStringValue;
import javafx.collections.ObservableList;
import javafx.scene.Node;

import bluej.editor.stride.BirdseyeManager;
import threadchecker.OnThread;
import threadchecker.Tag;
import bluej.stride.framedjava.elements.CodeElement;
import bluej.stride.framedjava.elements.TopLevelCodeElement;
import bluej.stride.generic.CursorFinder;
import bluej.stride.generic.Frame;
import bluej.stride.generic.FrameCanvas;
import bluej.stride.generic.RecallableFocus;
import bluej.stride.slots.EditableSlot;
import bluej.stride.slots.HeaderItem;

public interface TopLevelFrame<T extends CodeElement & TopLevelCodeElement> extends CodeFrame<T>, CursorFinder{    
   public BirdseyeManager prepareBirdsEyeView(SharedTransition animate);

   p.public void addExtendsClassOrInterface(String className);
   void removeExtendsClass();
   p.public void addImplements(String className);
   p.public void removeExtendsOrImplementsInterface(String interfaceName);

   
   public static enum BodyFocus { TOP, BOTTOM, BEST_PICK 
   };
public void focusOnBody(BodyFocus on);
@OnThread(Tag.FXPlatform)
   
public void saved();
   
public boolean canDoBirdseye();
   
public void bindMinHeight(DoubleBinding prop);
   

public ObservableList getImports();
   
public void addImport(String importSrc);
   
public void addDefaultConstructor();
   
public List getMethods();
   
public List getConstructors();
   
public void insertAtEnd(Frame frame);
   
public ObservableStringValue nameProperty();
   
public FrameCanvas getImportCanvas();
   
public void ensureImportCanvasShowing();
    
@OnThread(value = Tag.Any, ignoreParent = true)
   
@Override
   
public T getCode();
    
   

public Node getNode();
@OnThread(Tag.FXPlatform)
   
public void flagErrorsAsOld();
@OnThread(Tag.FXPlatform)
   
public void removeOldErrors();
   
public Stream getHeaderItems();
   
default public Stream getEditableSlots()
   {
   return getHeaderItems().map(HeaderItem::asEditable).filter(x -> x != null);     
   }
   
public Stream getFocusables();
   
public Stream getAllFrames();
    
   
public void restore(T target);
   
default public void restoreCast(TopLevelCodeElement target)
   {
   restore((T)target);     
   } 
}

.   prepareBirdsEyeView
.   addExtendsClassOrInterface
.   removeExtendsClass
.   addImplements
.   removeExtendsOrImplementsInterface
.   focusOnBody
.   saved
.   canDoBirdseye
.   bindMinHeight
.   getImports
.   addImport
.   addDefaultConstructor
.   getMethods
.   getConstructors
.   insertAtEnd
.   nameProperty
.   getImportCanvas
.   ensureImportCanvasShowing
.   getCode
.   getNode
.   flagErrorsAsOld
.   removeOldErrors
.   getHeaderItems
.   getEditableSlots
.   getFocusables
.   getAllFrames
.   restore
.   restoreCast




93 neLoCode + 0 LoComm