package jp.ac.aiit.jointry.models.blocks;
import javafx.event.EventHandler;
import javafx.scene.Cursor;
import javafx.scene.control.Label;
import javafx.scene.control.Tab;
import javafx.scene.control.TabPane;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import jp.ac.aiit.jointry.controllers.ResizePane;
import jp.ac.aiit.jointry.models.VariableLabel;
import jp.ac.aiit.jointry.models.blocks.expression.Variable;
import jp.ac.aiit.jointry.services.broker.app.BlockDialog;
import static jp.ac.aiit.jointry.services.broker.app.JointryCommon.M_BLOCK_CREATE;
public class MenuItemAdv extends AnchorPane {
private VariableLabel vl;
public MenuItemAdv(final String variableName) {
Rectangle rect = new Rectangle();
rect.setWidth(140);
rect.setHeight(30);
rect.setArcWidth(15);
rect.setArcHeight(15);
rect.setStroke(Color.GRAY);
rect.setFill(Variable.getColor());
Label label = new Label(variableName);
AnchorPane.setTopAnchor(rect, 0.0);
AnchorPane.setTopAnchor(label, 10.0);
AnchorPane.setLeftAnchor(label, 0.0);
getChildren().addAll(rect, label);
setOnMousePressed(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent mouseEvent) {
Variable v = new Variable();
v.setName(variableName);
addToScriptPane(v);
BlockDialog.sendMessage(M_BLOCK_CREATE, v);
// TODO: バインディングする
//Bindings.bindBidirectional(v.getValueProperty(),
// vl.getValueProperty());
setCursor(Cursor.MOVE);
}
});
setOnMouseReleased(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent mouseEvent) {
setCursor(Cursor.HAND);
}
});
setOnMouseDragged(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent mouseEvent) {
}
});
setOnMouseEntered(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent mouseEvent) {
setCursor(Cursor.HAND);
}
});
}
private void addToScriptPane(Variable v) {
BorderPane root = (BorderPane) getScene().getRoot();
TabPane centerPane = (TabPane) root.getCenter();
for (Tab t : centerPane.getTabs()) {
if ("scriptContent".equals(t.getContent().getId())) {
ResizePane pane = (ResizePane) t.getContent();
Pane ap = (Pane) pane.getContent();
ap.getChildren().add(v);
}
}
}
public void addVariableLabel(VariableLabel vl) {
this.vl = vl;
}
public VariableLabel getVariableLabel() {
return vl;
}
}