Crossfire JXClient, Trunk
KeyBinding.java
Go to the documentation of this file.
1 /*
2  * This file is part of JXClient, the Fullscreen Java Crossfire Client.
3  *
4  * JXClient is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; either version 2 of the License, or
7  * (at your option) any later version.
8  *
9  * JXClient is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with JXClient; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
17  *
18  * Copyright (C) 2005-2008 Yann Chachkoff
19  * Copyright (C) 2006-2017,2019-2023 Andreas Kirschbaum
20  * Copyright (C) 2010-2012,2014-2018,2020-2023 Nicolas Weeger
21  */
22 
23 package com.realtime.crossfire.jxclient.gui.keybindings;
24 
26 import java.awt.event.InputEvent;
27 import java.awt.event.KeyEvent;
28 import org.jetbrains.annotations.NotNull;
29 import org.jetbrains.annotations.Nullable;
30 
37 public class KeyBinding implements Comparable<KeyBinding> {
38 
42  @NotNull
43  private final KeyEvent2 keyEvent;
44 
48  @NotNull
49  private final CommandList commands;
50 
55  private final boolean isDefault;
56 
64  public KeyBinding(@NotNull final KeyEvent2 keyEvent, @NotNull final CommandList commands, final boolean isDefault) {
65  this.keyEvent = keyEvent;
66  this.commands = commands;
67  this.isDefault = isDefault;
68  }
69 
74  @NotNull
76  return keyEvent;
77  }
78 
83  @NotNull
85  return commands;
86  }
87 
93  public boolean matchesKeyEvent(@NotNull final KeyEvent2 keyEvent) {
94  return this.keyEvent.matchesKeyEvent(keyEvent);
95  }
96 
97  @Override
98  public boolean equals(@Nullable final Object obj) {
99  return obj instanceof final KeyBinding keyBinding && keyBinding.keyEvent.equals(keyEvent);
100  }
101 
102  @Override
103  public int hashCode() {
104  return keyEvent.hashCode();
105  }
106 
107  @Override
108  public int compareTo(@NotNull final KeyBinding o) {
109  return keyEvent.compareTo(o.keyEvent);
110  }
111 
116  @NotNull
117  public String getBindingDescription() {
118  final StringBuilder sb = new StringBuilder();
119  final int keyCode = keyEvent.getKeyCode();
120  if (keyCode == KeyEvent.VK_UNDEFINED) {
121  sb.append(keyEvent.getKeyChar());
122  } else {
123  final int modifiers = keyEvent.getModifiers();
124  if (modifiers != KeyEvent2.NONE) {
125  sb.append(InputEvent.getModifiersExText(modifiers)).append("+");
126  }
127  sb.append(KeyEvent.getKeyText(keyCode));
128  }
129  return sb.toString();
130  }
131 
136  @NotNull
137  public String getCommandString() {
138  return commands.getCommandString();
139  }
140 
146  public boolean isDefault() {
147  return isDefault;
148  }
149 
150 }
com.realtime.crossfire.jxclient
com.realtime.crossfire.jxclient.gui.keybindings.KeyBinding.getCommandString
String getCommandString()
Returns the commands as a string.
Definition: KeyBinding.java:137
com.realtime.crossfire.jxclient.gui.keybindings.KeyEvent2.NONE
static final int NONE
The mask for "no modifier".
Definition: KeyEvent2.java:39
com.realtime.crossfire.jxclient.gui.keybindings.KeyBinding.isDefault
boolean isDefault()
Returns whether the key binding is a "default" binding which should not be saved.
Definition: KeyBinding.java:146
com.realtime.crossfire.jxclient.gui.keybindings.KeyBinding.equals
boolean equals(@Nullable final Object obj)
Definition: KeyBinding.java:98
com.realtime.crossfire.jxclient.gui.keybindings.KeyBinding.isDefault
final boolean isDefault
Whether the key binding is a "default" binding which should not be saved.
Definition: KeyBinding.java:55
com.realtime.crossfire.jxclient.gui.commandlist
Definition: CommandList.java:23
com.realtime.crossfire.jxclient.gui.keybindings.KeyBinding.getKeyEvent2
KeyEvent2 getKeyEvent2()
Returns the key to match.
Definition: KeyBinding.java:75
com.realtime.crossfire.jxclient.gui.keybindings.KeyBinding.getCommands
CommandList getCommands()
Returns the associated CommandList.
Definition: KeyBinding.java:84
com.realtime.crossfire.jxclient.gui.keybindings.KeyEvent2
Represents a pressed or released key.
Definition: KeyEvent2.java:34
com.realtime.crossfire.jxclient.gui.keybindings.KeyBinding.keyEvent
final KeyEvent2 keyEvent
The key to match.
Definition: KeyBinding.java:43
com.realtime.crossfire.jxclient.gui.keybindings.KeyBinding
Abstract base class for key bindings.
Definition: KeyBinding.java:37
com.realtime.crossfire.jxclient.gui.keybindings.KeyBinding.KeyBinding
KeyBinding(@NotNull final KeyEvent2 keyEvent, @NotNull final CommandList commands, final boolean isDefault)
Creates a new instance.
Definition: KeyBinding.java:64
com.realtime.crossfire.jxclient.gui.keybindings.KeyEvent2.getKeyChar
char getKeyChar()
Returns the key as a char.
Definition: KeyEvent2.java:111
com.realtime.crossfire.jxclient.gui.keybindings.KeyBinding.compareTo
int compareTo(@NotNull final KeyBinding o)
Definition: KeyBinding.java:108
com.realtime.crossfire.jxclient.gui.keybindings.KeyBinding.getBindingDescription
String getBindingDescription()
Return the binding as a human-readable text.
Definition: KeyBinding.java:117
com.realtime.crossfire.jxclient.gui.keybindings.KeyEvent2.getKeyCode
int getKeyCode()
Returns the key code.
Definition: KeyEvent2.java:103
com.realtime.crossfire.jxclient.gui
com.realtime.crossfire.jxclient.gui.keybindings.KeyBinding.commands
final CommandList commands
The associated CommandList.
Definition: KeyBinding.java:49
com.realtime.crossfire.jxclient.gui.keybindings.KeyEvent2.equals
boolean equals(@Nullable final Object obj)
Definition: KeyEvent2.java:138
com.realtime.crossfire.jxclient.gui.keybindings.KeyEvent2.getModifiers
int getModifiers()
Returns the modifiers.
Definition: KeyEvent2.java:120
com.realtime.crossfire.jxclient.gui.commandlist.CommandList
A list of GUICommand instances.
Definition: CommandList.java:34
com.realtime.crossfire
com.realtime
com
com.realtime.crossfire.jxclient.gui.keybindings.KeyEvent2.hashCode
int hashCode()
Definition: KeyEvent2.java:154
com.realtime.crossfire.jxclient.gui.commandlist.CommandList.getCommandString
String getCommandString()
Returns the commands as a string.
Definition: CommandList.java:112
com.realtime.crossfire.jxclient.gui.keybindings.KeyBinding.hashCode
int hashCode()
Definition: KeyBinding.java:103
com.realtime.crossfire.jxclient.gui.keybindings.KeyBinding.matchesKeyEvent
boolean matchesKeyEvent(@NotNull final KeyEvent2 keyEvent)
Checks whether this key binding matches a key event.
Definition: KeyBinding.java:93
com.realtime.crossfire.jxclient.gui.keybindings.KeyEvent2.compareTo
int compareTo(@NotNull final KeyEvent2 o)
Definition: KeyEvent2.java:159