package jp.ac.aiit.jointry.controllers; import java.net.URL; import java.util.ResourceBundle; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.fxml.FXML; import javafx.fxml.Initializable; import javafx.scene.control.Label; import javafx.scene.control.TextField; import javafx.scene.image.ImageView; import javafx.scene.input.MouseEvent; import javafx.stage.Stage; import javafx.stage.WindowEvent; import jp.ac.aiit.jointry.models.Costume; import jp.ac.aiit.jointry.models.Sprite; import static jp.ac.aiit.jointry.services.broker.app.JointryCommon.M_COSTUME_SYNC; import jp.ac.aiit.jointry.services.broker.app.SpriteDialog; import jp.ac.aiit.jointry.services.picture.paint.PaintApplication; import jp.ac.aiit.jointry.util.ParameterAware; public class CostumeCntroller implements Initializable, ParameterAware<Costume> { @FXML private ImageView image; @FXML private TextField title; @FXML private Label number; private MainController mainController; @FXML protected void handleImageSelected(MouseEvent event) { mainController.getFrontStageController() .getCurrentSprite().setSpriteCostume(Integer.valueOf(number.getText())); } @FXML protected void handleCopyButtonAction(ActionEvent event) { Sprite sprite = mainController.getFrontStageController().getCurrentSprite(); sprite.addCostume(title.getText() + "のコピー", image.getImage()); mainController.getBackStageController().showCostumes(sprite); sendMessage(); } @FXML protected void handleEditButtonAction(ActionEvent event) throws Exception { final PaintApplication app = new PaintApplication(); Stage stage = app.start(image.getImage(), image.getScene().getWindow()); stage.setOnHidden(new EventHandler<WindowEvent>() { @Override public void handle(WindowEvent t) { if (app.getResult() != null) { Sprite sprite = mainController.getFrontStageController().getCurrentSprite(); sprite.updateCostume(Integer.valueOf(number.getText()), app.getResult()); mainController.getBackStageController().showCostumes(sprite); sendMessage(); } } }); } @FXML protected void handleDeleteButtonAction(ActionEvent event) { Sprite sprite = mainController.getFrontStageController().getCurrentSprite(); sprite.deleteCostume(Integer.valueOf(number.getText())); mainController.getBackStageController().showCostumes(sprite); if (sprite.getCostumeNumber() == Integer.valueOf(number.getText())) { //削除対象のコスチュームの場合、topのコスチュームに合わせる sprite.setSpriteCostume(1); } SpriteDialog.sendAllMessage(M_COSTUME_SYNC, sprite); } @Override public void initialize(URL url, ResourceBundle rb) { } public void setMainController(MainController controller) { this.mainController = controller; } @Override public void setParameter(Costume costume) { this.title.setText(costume.getTitle()); this.image.setImage(costume.getImage()); this.number.setText(Integer.toString(costume.getNumber())); } private void sendMessage() { Sprite sprite = mainController.getFrontStageController().getCurrentSprite(); SpriteDialog.sendAllMessage(M_COSTUME_SYNC, sprite); } }