Skip to content
Snippets Groups Projects
Commit 82a63021 authored by tobias's avatar tobias
Browse files

Delete Mapper if initial mapping was canceled

parent b58a76cd
Branches
Tags
No related merge requests found
......@@ -71,7 +71,13 @@ public class MapperOverviewViewController implements IMapperOverviewViewControll
// Adds a mapper to the action
try {
MapperViewController controller = onAddMapper(item);
controller.showInputMapperUI();
boolean result = controller.showInputMapperUI();
// Delete Mapper wenn Eingabe abgebrochen wurde
if (!result) {
mappingView.getChildren().removeAll(controller.getParent().getParent());
action.removeMapper(controller.getMapper());
}
} catch (NoSuchComponentException ex) {
// TODO Error Handling
ex.printStackTrace();
......
package de.tobias.playpad.viewcontroller.mapper;
import java.util.Optional;
import de.tobias.playpad.action.mapper.KeyboardMapper;
import de.tobias.utils.util.StringUtils;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.ButtonType;
import javafx.stage.Stage;
public class KeyboardMapperInputDialog extends Alert {
public KeyboardMapperInputDialog(KeyboardMapper mapper) {
super(AlertType.NONE);
Scene scene = getDialogPane().getScene();
scene.setOnKeyPressed(ev ->
{
mapper.setKey(ev.getCode().getName());
mapper.setCode(ev.getCode());
});
scene.setOnKeyReleased(ev ->
{
// Close on Finish (alert.close() does not work)
((Stage) scene.getWindow()).close();
});
scene.setOnKeyTyped(ev ->
{
if (!StringUtils.isStringNotVisable(ev.getCharacter())) {
mapper.setKey(ev.getCharacter().toUpperCase());
}
});
}
public boolean showInputDialog() {
Optional<ButtonType> result = showAndWait();
return !result.isPresent();
}
}
......@@ -6,16 +6,11 @@ import de.tobias.playpad.action.mapper.KeyboardMapper;
import de.tobias.playpad.action.mapper.Mapper;
import de.tobias.playpad.action.mapper.MapperViewController;
import de.tobias.utils.util.Localization;
import de.tobias.utils.util.StringUtils;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.Alert.AlertType;
import javafx.scene.control.Button;
import javafx.scene.control.ButtonType;
import javafx.scene.control.Label;
import javafx.stage.Stage;
public class KeyboardMapperViewController extends MapperViewController {
......@@ -34,10 +29,12 @@ public class KeyboardMapperViewController extends MapperViewController {
}
@Override
public void hideFeedback() {}
public void hideFeedback() {
}
@Override
public void showFeedback() {}
public void showFeedback() {
}
private void setLabel() {
keyLabel.setText(mapper.getReadableName());
......@@ -45,38 +42,22 @@ public class KeyboardMapperViewController extends MapperViewController {
@FXML
private void mappingButtonHandler(ActionEvent event) {
Alert alert = new Alert(AlertType.NONE);
inputDialog();
}
private boolean inputDialog() {
KeyboardMapperInputDialog alert = new KeyboardMapperInputDialog(mapper);
alert.setTitle(Localization.getString(Strings.Mapper_Keyboard_Name));
alert.setContentText(Localization.getString(Strings.Info_Mapper_PressKey));
Scene scene = alert.getDialogPane().getScene();
scene.setOnKeyPressed(ev ->
{
mapper.setKey(ev.getCode().getName());
mapper.setCode(ev.getCode());
setLabel();
});
scene.setOnKeyReleased(ev ->
{
// Close on Finish (alert.close() does not work)
((Stage) scene.getWindow()).close();
});
scene.setOnKeyTyped(ev ->
{
if (!StringUtils.isStringNotVisable(ev.getCharacter())) {
mapper.setKey(ev.getCharacter().toUpperCase());
setLabel();
}
});
alert.getButtonTypes().add(ButtonType.CANCEL);
alert.initOwner(getWindow());
alert.showAndWait();
return alert.showInputDialog();
}
@Override
public void showInputMapperUI() {
mappingButton.fire();
public boolean showInputMapperUI() {
return inputDialog();
}
public void setMapper(KeyboardMapper keyboardMapper) {
......
......@@ -74,9 +74,13 @@ public class MidiMapperViewController extends MapperViewController implements Mi
* Current Alert for mapping.
*/
private Alert alert;
// Hilfsvariable um zu speichern, ob der Input Dialog abgebrochen wurde
private boolean canceled = false;
@FXML
private void midiInputRecordButtonHandler(ActionEvent event) {
canceled = false;
currentListener = Midi.getInstance().getListener();
Midi.getInstance().setListener(this);
......@@ -91,6 +95,7 @@ public class MidiMapperViewController extends MapperViewController implements Mi
Midi.getInstance().setListener(currentListener);
currentListener = null;
alert = null;
canceled = true;
}
});
}
......@@ -117,8 +122,9 @@ public class MidiMapperViewController extends MapperViewController implements Mi
}
@Override
public void showInputMapperUI() {
midiInputRecordButton.fire();
public boolean showInputMapperUI() {
midiInputRecordButtonHandler(null);
return canceled; // TEST Ob das funktioniert mit dem Return
}
public void setMapper(MidiMapper midiMapper) {
......
......@@ -4,6 +4,14 @@ import java.util.ResourceBundle;
import de.tobias.utils.ui.ContentViewController;
/**
* Übersicht über die Mapper zu einer Action.s
*
* @author tobias
*
* @since 5.0.0
*
*/
public abstract class MapperViewController extends ContentViewController {
public MapperViewController(String name, String path, ResourceBundle localization) {
......@@ -16,5 +24,10 @@ public abstract class MapperViewController extends ContentViewController {
public abstract Mapper getMapper();
public abstract void showInputMapperUI();
/**
* Zeigt einen Dialog für die Eingabe des Mappers.
*
* @return <code>true</code> Erfolgreiche Einageb, <code>false</code> Abbruch oder Fehler.
*/
public abstract boolean showInputMapperUI();
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment