diff --git a/PlayWall/assets/de/tobias/playpad/assets/lang/ui_de.properties b/PlayWall/assets/de/tobias/playpad/assets/lang/ui_de.properties index 7611aa26bed4fc75ce0d40a04170b8e6263e973b..743131ffeb32c10365d8f37d3c50d3da483ecdd4 100644 --- a/PlayWall/assets/de/tobias/playpad/assets/lang/ui_de.properties +++ b/PlayWall/assets/de/tobias/playpad/assets/lang/ui_de.properties @@ -84,6 +84,7 @@ settings.keys.label.headline=Tastenkombinationen settings.keys.label.name=Name: settings.keys.label.shortcut=Kurzbefehl: settings.keys.button.change=Neu +settings.keys.button.delete=Verbindung aufheben settings.keys.table.name=Name settings.keys.table.shortcut=Kurzbefehl settings.keys.textfieldsearch=Suchen... diff --git a/PlayWall/assets/de/tobias/playpad/assets/view/option/global/keysTab.fxml b/PlayWall/assets/de/tobias/playpad/assets/view/option/global/keysTab.fxml index 5c068743d7c8ad9398c6d8c470e8fa42fdf169a1..212bd54968ca3e43d5ead3b8b70c621bcf57ea6d 100644 --- a/PlayWall/assets/de/tobias/playpad/assets/view/option/global/keysTab.fxml +++ b/PlayWall/assets/de/tobias/playpad/assets/view/option/global/keysTab.fxml @@ -27,6 +27,7 @@ <Label alignment="CENTER_RIGHT" prefWidth="150.0" text="%settings.keys.label.shortcut" /> <Label fx:id="shortcutLabel" prefWidth="100.0" /> <Button fx:id="newShortcutButton" mnemonicParsing="false" onAction="#newShortcutButtonHandler" text="%settings.keys.button.change" /> + <Button fx:id="deleteButton" mnemonicParsing="false" onAction="#deleteHandler" text="%settings.keys.button.delete" /> </children> </HBox> </children> diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/option/global/KeysTabViewController.java b/PlayWall/src/de/tobias/playpad/viewcontroller/option/global/KeysTabViewController.java index 1f2cc618cfeb416e6722dd3b54b70e56a8c29a78..c6132c91e319ce4ea2d54fcbb48d80a0d5fa2db2 100644 --- a/PlayWall/src/de/tobias/playpad/viewcontroller/option/global/KeysTabViewController.java +++ b/PlayWall/src/de/tobias/playpad/viewcontroller/option/global/KeysTabViewController.java @@ -24,6 +24,7 @@ import javafx.scene.control.Button; import javafx.scene.control.ButtonType; import javafx.scene.control.Label; import javafx.scene.control.TableColumn; +import javafx.scene.control.TableRow; import javafx.scene.control.TableView; import javafx.scene.control.TextField; import javafx.scene.input.KeyCode; @@ -40,6 +41,7 @@ public class KeysTabViewController extends GlobalSettingsTabViewController { @FXML private Label nameLabel; @FXML private Label shortcutLabel; @FXML private Button newShortcutButton; + @FXML private Button deleteButton; private Key currentKey; private ObservableList<Key> keys = FXCollections.observableArrayList(); @@ -65,6 +67,20 @@ public class KeysTabViewController extends GlobalSettingsTabViewController { setDetailView(c); }); searchTextField.textProperty().addListener((a, b, c) -> search()); + + table.setRowFactory(tv -> + { + TableRow<Key> row = new TableRow<>(); + row.setOnMouseClicked(event -> + { + if (event.getClickCount() == 2 && (!row.isEmpty())) { + setDetailView(row.getItem()); + showNewKeyBindingDialog(); + } + }); + return row; + }); + } private void setDetailView(Key key) { @@ -87,6 +103,18 @@ public class KeysTabViewController extends GlobalSettingsTabViewController { @FXML void newShortcutButtonHandler(ActionEvent event) { + showNewKeyBindingDialog(); + } + + @FXML + void deleteHandler(ActionEvent event) { + if (currentKey != null) { + GlobalSettings globalSettings = PlayPadPlugin.getImplementation().getGlobalSettings(); + globalSettings.getKeyCollection().removeKeyBinding(currentKey); + } + } + + private void showNewKeyBindingDialog() { Alert alert = new Alert(AlertType.NONE); alert.setContentText(Localization.getString(Strings.UI_Settings_Alert_NewKeyShortcut_Text)); Scene scene = alert.getDialogPane().getScene(); @@ -96,7 +124,7 @@ public class KeysTabViewController extends GlobalSettingsTabViewController { if (ev.getCode().isModifierKey()) { return; } - + boolean macCondition = ev.getCode().isLetterKey() || ev.getCode().isKeypadKey() || ev.getCode().isDigitKey() || ev.getCode().isFunctionKey() || ev.getCode() == KeyCode.PERIOD || ev.getCode() == KeyCode.COMMA; diff --git a/PlayWallCore/src/de/tobias/playpad/settings/keys/Key.java b/PlayWallCore/src/de/tobias/playpad/settings/keys/Key.java index da58fd57101aaad3bffefe01a6134597289b20da..7ae9e3c5bf7f7a64ef8970e00bf2fe5efc5f8bee 100644 --- a/PlayWallCore/src/de/tobias/playpad/settings/keys/Key.java +++ b/PlayWallCore/src/de/tobias/playpad/settings/keys/Key.java @@ -106,7 +106,11 @@ public class Key implements Displayable { @Override public String toString() { if (!getKeyCode().isEmpty()) - return KeyCombination.valueOf(getKeyCode()).getDisplayText(); + try { + return KeyCombination.valueOf(getKeyCode()).getDisplayText(); + } catch (IllegalArgumentException e) { + return ""; + } else return ""; } diff --git a/PlayWallCore/src/de/tobias/playpad/settings/keys/KeyCollection.java b/PlayWallCore/src/de/tobias/playpad/settings/keys/KeyCollection.java index a547fc2c93e395e6ca203ac50c0e39315b7681dd..f47a1e5ffbbe3a05f32c5f74627e6be5c5c5ba69 100644 --- a/PlayWallCore/src/de/tobias/playpad/settings/keys/KeyCollection.java +++ b/PlayWallCore/src/de/tobias/playpad/settings/keys/KeyCollection.java @@ -13,6 +13,13 @@ import org.dom4j.io.SAXReader; import de.tobias.playpad.xml.XMLHandler; import de.tobias.utils.util.OS; +/** + * Verwaltung der Tastenkombinationen für das Menu. + * + * @author tobias + * + * @since 5.1.0 + */ public class KeyCollection { // Schlüssel: ID, Value: Key @@ -44,6 +51,20 @@ public class KeyCollection { return keys.values(); } + /** + * Löscht eine Tastenkombination. + * + * @param key + * Key + */ + public void removeKeyBinding(Key key) { + key.setAlt(false); + key.setCtrl(false); + key.setMeta(false); + key.setShift(false); + key.setKey(""); + } + public boolean keysConflict(Key key) { for (Key k : keys.values()) { if (k.getKeyCode().equals(key.getKeyCode())) {