package greenfoot.guifx.classes;

import bluej.Config;
import bluej.utility.javafx.FXPlatformRunnable;
import greenfoot.guifx.GreenfootStage;
import greenfoot.guifx.classes.GClassDiagram.GClassType;
import javafx.scene.control.ContextMenu;
import javafx.scene.control.SeparatorMenuItem;
import javafx.scene.input.MouseButton;

import java.util.List;


| A GClassNode for the built-in Actor and World classes. | public class BuiltInGClassNode extends GClassNode{ private final GClassType type; private final GClassDiagram classDiagram;
| Constructor for a GClassNode for one of the API base classes: World or Actor. | | @param type the class type | @param subClasses all nodes for the direct subclasses of this node | @param selectionManager the selection manager | public BuiltInGClassNode(GClassType type, List<GClassNode> subClasses, GClassDiagram classDiagram) { super(null, subClasses, classDiagram.getSelectionManager()); this.type = type; this.classDiagram = classDiagram; } @Override public String getQualifiedName() { return "greenfoot." + shortName(type); } @Override public String getDisplayName() { return shortName(type); }
| Turns the enum into the class name within greenfoot package. | private static String shortName(GClassType type) { switch (type) { case ACTOR: return "Actor"; case WORLD: return "World"; default: throw new RuntimeException(); } } @Override protected void setupClassDisplay(GreenfootStage greenfootStage, ClassDisplay display) { FXPlatformRunnable showDocs = () -> { String docUrl = Config.getBlueJLibDir().getParentFile().toURI().toString(); docUrl += "/doc/API/" + display.getQualifiedName().replace(".", "/") + ".html"; greenfootStage.openBrowser(docUrl); }; display.setOnContextMenuRequested(e -> { e.consume(); if (curContextMenu != null) { curContextMenu.hide(); curContextMenu = null; classDiagram.hideContextMenu(); } curContextMenu = new ContextMenu(); curContextMenu.getItems().add(GClassDiagram.contextInbuilt( Config.getString("show.apidoc"), showDocs)); curContextMenu.getItems().add(new SeparatorMenuItem()); curContextMenu.getItems().add(GClassDiagram.contextInbuilt( Config.getString("new.sub.class"), () -> { greenfootStage.newSubClassOf(display.getQualifiedName(), type); })); selectionManager.select(display); curContextMenu.show(display, e.getScreenX(), e.getScreenY()); }); display.setOnMouseClicked(e -> { if (e.getButton() == MouseButton.PRIMARY && e.getClickCount() == 2) { showDocs.run(); } }); } }
top, use, map, class BuiltInGClassNode

.   BuiltInGClassNode
.   getQualifiedName
.   getDisplayName
.   shortName
.   setupClassDisplay




114 neLoCode + 6 LoComm