package bluej.editor.stride;

import bluej.editor.moe.MoeEditor;
import bluej.utility.javafx.JavaFXUtil;
import javafx.beans.binding.ObjectExpression;
import javafx.beans.property.SimpleObjectProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
import javafx.beans.value.ObservableStringValue;
import javafx.geometry.Pos;
import javafx.scene.control.Label;
import javafx.scene.control.Menu;
import javafx.scene.control.SeparatorMenuItem;
import javafx.scene.image.Image;
import javafx.scene.input.MouseButton;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.HBox;
import threadchecker.OnThread;
import threadchecker.Tag;

import java.util.List;


| Created by neil on 13/04/2016. | public @OnThread(Tag.FXPlatform) class MoeFXTab extends FXTab{ private boolean initialised = false; private final MoeEditor moeEditor; private final TabMenuManager menuManager; private final StringProperty windowTitleProperty = new SimpleStringProperty(); private final SimpleObjectProperty<Image> classIcon; private FXTabbedEditor parent;
| Make a Tab to contain a MoeEditor | @param moeEditor The MoeEditor to put in the tab | @param windowTitle The title of the tab | @OnThread(Tag.FXPlatform) public MoeFXTab(MoeEditor moeEditor, String windowTitle) { super(false); this.moeEditor = moeEditor; this.windowTitleProperty.set(windowTitle); this.classIcon = new SimpleObjectProperty<>(); menuManager = new TabMenuManager(this) { @Override @OnThread(Tag.FXPlatform) List<Menu> getMenus() { updateMoveMenus(); List<Menu> moeFXMenu = moeEditor.getFXMenu(); if (moeFXMenu.get(0).getItems().get(0) != this.mainMoveMenu) { moeFXMenu.get(0).getItems().add(0, this.mainMoveMenu); moeFXMenu.get(0).getItems().add(1, new SeparatorMenuItem()); } return moeFXMenu; } }; JavaFXUtil.addStyleClass(this, "moe-tab"); } public void setWindowTitle(String title) { this.windowTitleProperty.set(title); } public void setErrorStatus(boolean errorStatus) { if (errorStatus) JavaFXUtil.addStyleClass(this, "bj-tab-error"); else{ getStyleClass().removeAll("bj-tab-error"); } } @Override void focusWhenShown() { moeEditor.requestEditorFocus(); } @Override List<Menu> getMenus() { return menuManager.getMenus(); } @Override FXTabbedEditor getParent() { return parent; } @Override String getWebAddress() { return null; } @Override void initialiseFX() { if (!initialised) initialised = true; setContent(moeEditor); setText(""); Label titleLabel = new Label(windowTitleProperty.get()); titleLabel.textProperty().bind(windowTitleProperty); HBox tabHeader = new HBox(titleLabel); tabHeader.getChildren().add(makeClassGraphicIcon(classIcon, 16, false)); tabHeader.setAlignment(Pos.CENTER); tabHeader.setSpacing(3.0); tabHeader.addEventHandler(MouseEvent.MOUSE_CLICKED, e -> { if (e.getButton() == MouseButton.MIDDLE) { moeEditor.setEditorVisible(false, false); } }); setGraphic(tabHeader); } @Override public void notifySelected() { moeEditor.notifyVisibleTab(true); } @Override public void notifyUnselected() { moeEditor.notifyVisibleTab(false); moeEditor.cancelFreshState(); } @Override p.public void setParent(FXTabbedEditor parent, boolean partOfMove) { this.parent = parent; moeEditor.setParent(parent, partOfMove); moeEditor.notifyVisibleTab(false); } @Override ObservableStringValue windowTitleProperty() { return windowTitleProperty; } public MoeEditor getMoeEditor() { return moeEditor; }
| Set the header image (in the tab header) for this editor | @param image The image to use (any size). | public void setHeaderImage(Image image) { classIcon.set(image); } }

.   - MoeFXTab
.   MoeFXTab
.   setWindowTitle
.   setErrorStatus
.   focusWhenShown
.   initialiseFX
.   notifySelected
.   notifyUnselected
.   setParent
.   getMoeEditor
.   setHeaderImage




191 neLoCode + 6 LoComm