package com.soundlooper.system;
import javafx.event.EventHandler;
import javafx.fxml.FXML;
import javafx.scene.control.ComboBox;
import javafx.scene.control.Label;
import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyEvent;
import javafx.stage.Stage;
import javafx.util.StringConverter;
import com.soundlooper.model.SoundLooperPlayer;
public class AddMarkController {
@FXML
private ComboBox<String> comboBoxName;
@FXML
private Label labelResultat;
private String result = null;
private Stage stage;
public void init(Stage stage) {
this.stage = stage;
comboBoxName.getItems().add(MessageReader.getInstance().getMessage("mark.defaultName.intro"));
comboBoxName.getItems().add(MessageReader.getInstance().getMessage("mark.defaultName.verse"));
comboBoxName.getItems().add(MessageReader.getInstance().getMessage("mark.defaultName.refrain"));
comboBoxName.getItems().add(MessageReader.getInstance().getMessage("mark.defaultName.solo"));
comboBoxName.getItems().add(MessageReader.getInstance().getMessage("mark.defaultName.bridge"));
comboBoxName.getItems().add(MessageReader.getInstance().getMessage("mark.defaultName.break"));
comboBoxName.getItems().add(MessageReader.getInstance().getMessage("mark.defaultName.outro"));
stage.getScene().addEventFilter(KeyEvent.KEY_PRESSED, new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent e) {
if (e.getCode() == KeyCode.ENTER) {
validate();
} else if (e.getCode() == KeyCode.ESCAPE) {
cancel();
}
}
});
labelResultat.textProperty().bindBidirectional(comboBoxName.getEditor().textProperty(),
new StringConverter<String>() {
@Override
public String fromString(String string) {
return string + "FROM";
}
@Override
public String toString(String object) {
if (object == null) {
return "";
}
return SoundLooperPlayer.getInstance().getValidNameForMark(
SoundLooperPlayer.getInstance().getSong(), object);
}
});
}
public String getResult() {
return result;
}
@FXML
public void validate() {
if (!"".equals(labelResultat.getText())) {
result = labelResultat.getText();
cancel();
}
}
private void cancel() {
stage.close();
}
}