JavaFxAudioRendererPresentationDelegate.java
- /*
- * *********************************************************************************************************************
- *
- * blueMarine II: Semantic Media Centre
- * http://tidalwave.it/projects/bluemarine2
- *
- * Copyright (C) 2015 - 2021 by Tidalwave s.a.s. (http://tidalwave.it)
- *
- * *********************************************************************************************************************
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- *
- * *********************************************************************************************************************
- *
- * git clone https://bitbucket.org/tidalwave/bluemarine2-src
- * git clone https://github.com/tidalwave-it/bluemarine2-src
- *
- * *********************************************************************************************************************
- */
- package it.tidalwave.bluemarine2.ui.audio.renderer.impl.javafx;
- import javax.annotation.Nonnull;
- import javax.inject.Inject;
- import java.util.HashMap;
- import java.util.Map;
- import javafx.fxml.FXML;
- import javafx.scene.control.Button;
- import javafx.scene.control.Label;
- import javafx.scene.control.ProgressBar;
- import javafx.scene.input.KeyCodeCombination;
- import javafx.scene.input.KeyCombination;
- import javafx.scene.input.KeyEvent;
- import it.tidalwave.role.ui.UserAction;
- import it.tidalwave.role.ui.javafx.JavaFXBinder;
- import it.tidalwave.bluemarine2.ui.audio.explorer.AudioExplorerPresentation;
- import it.tidalwave.bluemarine2.ui.audio.renderer.AudioRendererPresentation;
- import lombok.extern.slf4j.Slf4j;
- import static javafx.scene.input.KeyCode.*;
- /***********************************************************************************************************************
- *
- * The JavaFX Delegate for {@link AudioExplorerPresentation}.
- *
- * @stereotype JavaFXDelegate
- *
- * @author Fabrizio Giudici
- *
- **********************************************************************************************************************/
- @Slf4j
- public class JavaFxAudioRendererPresentationDelegate implements AudioRendererPresentation
- {
- @FXML
- private Button btPrev;
- @FXML
- private Button btRewind;
- @FXML
- private Button btStop;
- @FXML
- private Button btPause;
- @FXML
- private Button btPlay;
- @FXML
- private Button btFastForward;
- @FXML
- private Button btNext;
- @FXML
- private ProgressBar pbPlayProgress;
- @FXML
- private Label lbTitle;
- @FXML
- private Label lbFolderName;
- @FXML
- private Label lbArtist;
- @FXML
- private Label lbComposer;
- @FXML
- private Label lbDuration;
- @FXML
- private Label lbPlayTime;
- @FXML
- private Label lbNextTrack;
- @Inject
- private JavaFXBinder binder;
- private final Map<KeyCombination, Runnable> accelerators = new HashMap<>();
- @FXML
- private void initialize()
- {
- // final ObservableMap<KeyCombination, Runnable> accelerators = btPlay.getScene().getAccelerators();
- accelerators.put(new KeyCodeCombination(PLAY), btPlay::fire);
- accelerators.put(new KeyCodeCombination(STOP), btStop::fire);
- accelerators.put(new KeyCodeCombination(PAUSE), btPause::fire);
- accelerators.put(new KeyCodeCombination(REWIND), btRewind::fire);
- accelerators.put(new KeyCodeCombination(FAST_FWD), btFastForward::fire);
- }
- @FXML // TODO: should be useless, but getScene().getAccelerators() doesn't work
- public void onKeyReleased (@Nonnull final KeyEvent event)
- {
- accelerators.getOrDefault(new KeyCodeCombination(event.getCode()), () -> {}).run();
- }
- @Override
- public void bind (@Nonnull final Properties properties,
- @Nonnull final UserAction prevAction,
- @Nonnull final UserAction rewindAction,
- @Nonnull final UserAction stopAction,
- @Nonnull final UserAction pauseAction,
- @Nonnull final UserAction playAction,
- @Nonnull final UserAction fastForwardAction,
- @Nonnull final UserAction nextAction)
- {
- binder.bind(btPrev, prevAction);
- binder.bind(btRewind, rewindAction);
- binder.bind(btStop, stopAction);
- binder.bind(btPause, pauseAction);
- binder.bind(btPlay, playAction);
- binder.bind(btFastForward, fastForwardAction);
- binder.bind(btNext, nextAction);
- lbTitle.textProperty().bind(properties.titleProperty());
- lbFolderName.textProperty().bind(properties.folderNameProperty());
- lbArtist.textProperty().bind(properties.artistProperty());
- lbComposer.textProperty().bind(properties.composerProperty());
- lbDuration.textProperty().bind(properties.durationProperty());
- lbPlayTime.textProperty().bind(properties.playTimeProperty());
- lbNextTrack.textProperty().bind(properties.nextTrackProperty());
- pbPlayProgress.progressProperty().bind(properties.progressProperty());
- }
- @Override
- public void showUp (@Nonnull final Object control)
- {
- }
- @Override
- public void focusOnPlayButton()
- {
- btPlay.requestFocus();
- }
- @Override
- public void focusOnStopButton()
- {
- btStop.requestFocus();
- }
- }