package jp.ac.aiit.jointry.services.picture.paint.views; import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import javafx.fxml.FXMLLoader; import javafx.geometry.Point2D; import javafx.scene.canvas.Canvas; import javafx.scene.image.ImageView; import jp.ac.aiit.jointry.services.picture.paint.PaintApplication; import jp.ac.aiit.jointry.services.picture.paint.ctrl.OptionController; public abstract class PaintTool extends ImageView implements ChangeListener<PaintTool> { private OptionController optionController; abstract public void paint(Canvas canvas, Point2D start, Point2D end); @Override public void changed(ObservableValue ov, PaintTool oldValue, PaintTool newValue) { if (this == newValue) { this.setEffect(AppEffect.RAISED); } else { this.setEffect(AppEffect.LOWERED); } } public Object getOptionCard() { if (optionController != null) { return optionController.getOptionCard(); } return null; } @Deprecated //JavaFXライブラリからのみ使用 public void setOptionCard(Object optionCard) { FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("fxml/" + optionCard)); try { fxmlLoader.load(); optionController = fxmlLoader.getController(); } catch (IOException ex) { Logger.getLogger(PaintTool.class.getName()).log(Level.SEVERE, null, ex); } } protected OptionController getOptionController() { return optionController; } @SuppressWarnings("LeakingThisInConstructor") public PaintTool() { PaintApplication.getModel().addPtoolListener(this); } }