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

Add function to delete key shortcuts from menu

fixed bug when mapping key shortcuts to action
parent 41949950
Branches
Tags
No related merge requests found
......@@ -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...
......
......@@ -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>
......
......@@ -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();
......
......@@ -106,7 +106,11 @@ public class Key implements Displayable {
@Override
public String toString() {
if (!getKeyCode().isEmpty())
try {
return KeyCombination.valueOf(getKeyCode()).getDisplayText();
} catch (IllegalArgumentException e) {
return "";
}
else
return "";
}
......
......@@ -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())) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment