mirror of
https://gitlab.com/annimon/imagetagger.git
synced 2024-09-19 14:34:21 +03:00
Add support for Alt and Ctrl
This commit is contained in:
parent
248a1f1f68
commit
5c8c7e0c48
@ -6,6 +6,7 @@ import com.annimon.imagetagger.views.TagPanel;
|
||||
import java.awt.*;
|
||||
import java.awt.event.KeyEvent;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@ -58,7 +59,7 @@ public class KeyProcessor {
|
||||
changeBackground();
|
||||
break;
|
||||
default:
|
||||
final var key = String.valueOf(e.getKeyChar());
|
||||
final var key = getKeyAsString(e);
|
||||
if (keys.contains(key)) {
|
||||
tagPanel.toggle(key);
|
||||
}
|
||||
@ -86,4 +87,27 @@ public class KeyProcessor {
|
||||
tagPanel.setBackground(bg);
|
||||
tagPanel.repaint();
|
||||
}
|
||||
|
||||
private String getKeyAsString(KeyEvent e) {
|
||||
String prefix = "";
|
||||
if ((e.getModifiersEx() & KeyEvent.CTRL_DOWN_MASK) != 0) {
|
||||
prefix += "Ctrl+";
|
||||
}
|
||||
if ((e.getModifiersEx() & KeyEvent.ALT_DOWN_MASK) != 0) {
|
||||
prefix += "Alt+";
|
||||
}
|
||||
return prefix + keyToChar(e);
|
||||
}
|
||||
|
||||
private String keyToChar(KeyEvent e) {
|
||||
final var code = e.getKeyCode();
|
||||
if (code >= KeyEvent.VK_A && code <= KeyEvent.VK_Z) {
|
||||
String key = String.valueOf((char) ('a' + (code - KeyEvent.VK_A)));
|
||||
if ((e.getModifiersEx() & KeyEvent.SHIFT_DOWN_MASK) != 0) {
|
||||
key = key.toUpperCase(Locale.ROOT);
|
||||
}
|
||||
return key;
|
||||
}
|
||||
return String.valueOf(e.getKeyChar());
|
||||
}
|
||||
}
|
||||
|
@ -13,7 +13,7 @@ public class ColoredLabel extends JLabel {
|
||||
private boolean isToggled;
|
||||
|
||||
public ColoredLabel(String key, String tag) {
|
||||
super(key + ": " + tag);
|
||||
super(String.format("%s: %s", formatKeyAsHtml(key), tag));
|
||||
isToggled = false;
|
||||
hue = (tag.hashCode() % MAX_COLORS) * (1f / MAX_COLORS);
|
||||
init();
|
||||
@ -49,4 +49,19 @@ public class ColoredLabel extends JLabel {
|
||||
public void setEnabled(boolean enabled) {
|
||||
super.setEnabled(enabled);
|
||||
}
|
||||
|
||||
private static String formatKeyAsHtml(String key) {
|
||||
String result = "";
|
||||
String mutableKey = key;
|
||||
if (mutableKey.contains("Ctrl+")) {
|
||||
result += "Cᵀᴿᴸ+";
|
||||
mutableKey = mutableKey.replace("Ctrl+", "");
|
||||
}
|
||||
if (mutableKey.contains("Alt+")) {
|
||||
result += "Aᴸᵀ+";
|
||||
mutableKey = mutableKey.replace("Alt+", "");
|
||||
}
|
||||
result += mutableKey;
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user