package bluej.stride.framedjava.frames;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import javafx.beans.property.SimpleBooleanProperty;
import bluej.Config;
import bluej.stride.generic.CanvasParent;
import bluej.stride.generic.ExtensionDescription;
import bluej.stride.generic.Frame;
import bluej.stride.generic.FrameCanvas;
import bluej.stride.generic.FrameContentRow;
import bluej.stride.generic.FrameCursor;
import bluej.stride.generic.FrameTypeCheck;
import bluej.stride.generic.InteractionManager;
import bluej.stride.slots.SlotLabel;
import bluej.stride.slots.TriangleLabel;
import bluej.utility.javafx.SharedTransition;
| A class to manage each canvas in the inherited items.
|
| This class keeps track of the canvas with the inherited methods/fields in it, and also
| the divider which occurs beforehand.
|
class InheritedCanvas
{
public final String superClassName;
public final FrameCanvas canvas;
public final FrameContentRow precedingDivider;
public final SlotLabel precedingDividerLabel;
public final TriangleLabel optionalCollapse;
public InheritedCanvas(ClassFrame classFrame, InteractionManager editor, String superClassName, boolean single)
{
this.canvas = new FrameCanvas(editor, new CanvasParent()
{
@Override
public FrameCursor findCursor(double sceneX, double sceneY, FrameCursor prevCursor, FrameCursor nextCursor, List<Frame> exclude, boolean isDrag, boolean canDescend)
{
return null;
}
@Override
public FrameTypeCheck check(FrameCanvas canvasBase)
{
return new FrameTypeCheck() {
@Override
public boolean canInsert(StrideCategory category)
{
return false;
}
@Override
public boolean canPlace(Class<? extends Frame> type)
{
return Arrays.asList(InheritedMethodFrame.class, InheritedFieldFrame.class).contains(type);
}
};
}
@Override
public List getAvailableExtensions(FrameCanvas canvas, FrameCursor cursor)
{
return Collections.emptyList();
}
@Override
public Frame getFrame()
{
return classFrame;
}
@Override
public InteractionManager getEditor()
{
return editor;
}
@Override
public void modifiedCanvasContent()
{
}
}, "class-inherited-")
{
@Override
public FrameCursor findClosestCursor(double sceneX, double sceneY, List<Frame> exclude, boolean isDrag, boolean canDescend)
{
return null;
}
@Override
public FrameCursor getFirstCursor()
{
return null;
}
@Override
public FrameCursor getLastCursor()
{
return null;
}
};
this.superClassName = superClassName;
if (single)
{
this.precedingDividerLabel = null;
this.precedingDivider = null;
this.optionalCollapse = null;
}
else
{
if (superClassName.equals("java.lang.Object"))
{
String text = Config.getString("frame.class.inherited.from").replace("$", "Object");
this.precedingDividerLabel = new SlotLabel(text, "class-inherited-label");
this.optionalCollapse = new TriangleLabel(editor, t -> canvas.growUsing(t.getProgress()), t -> canvas.shrinkUsing(t.getOppositeProgress()), new SimpleBooleanProperty(false));
this.precedingDivider = new FrameContentRow(classFrame, precedingDividerLabel, optionalCollapse);
}
else
{
String text = Config.getString("frame.class.inherited.from").replace("$", superClassName);
this.precedingDividerLabel = new SlotLabel(text, "class-inherited-label");
this.precedingDivider = new FrameContentRow(classFrame, precedingDividerLabel);
this.optionalCollapse = null;
}
}
}
public void grow(SharedTransition t)
{
if (optionalCollapse == null || optionalCollapse.expandedProperty().get())
canvas.growUsing(t.getProgress());
if (precedingDividerLabel != null)
{
precedingDividerLabel.growVertically(t);
precedingDividerLabel.setLeftPadding(this.canvas.leftMargin().get());
}
if (optionalCollapse != null)
optionalCollapse.setVisible(true);
}
public void shrink(SharedTransition t)
{
canvas.shrinkUsing(t.getOppositeProgress());
if (precedingDividerLabel != null)
precedingDividerLabel.shrinkVertically(t);
if (optionalCollapse != null)
optionalCollapse.setVisible(false);
}
}
. - InheritedCanvas
. InheritedCanvas
. findCursor
. check
. canInsert
. canPlace
. getAvailableExtensions
. getFrame
. getEditor
. modifiedCanvasContent
. findClosestCursor
. getFirstCursor
. getLastCursor
. grow
. shrink
201 neLoCode
+ 3 LoComm