import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;

public class BounceBall extends Application {
  @Override // Przesłanianie metody start z klasy Application
  public void start(Stage primaryStage) {
    BallPane pane = new BallPane();

    // Tworzenie sceny i umieszczanie jej w oknie
    Scene scene = new Scene(pane, 250, 150);
    primaryStage.setTitle("BounceBall"); // Nagłówek
    primaryStage.setScene(scene); // Umieszczanie sceny w oknie
    primaryStage.show(); // Wyświetlanie okna

    // Wstrzymywanie i wznawianie animacji
    pane.setOnMousePressed(e -> pane.pause());
    pane.setOnMouseReleased(e -> pane.play());

    pane.setFocusTraversable(true);
    pane.setOnKeyPressed(e -> {
      switch (e.getCode()) {
        case S:
          pane.decreaseSpeed();
          break;
        case F:
          pane.increaseSpeed();
          break;
      }
    });
  }

  /**
   * Metoda main jest potrzebna tylko w IDE z ograniczoną obsługą
   * JavaFX. Nie jest potrzebna przy uruchamianiu kodu w wierszu poleceń.
   */
  public static void main(String[] args) {
    launch(args);
  }
}
