1
0
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:
Victor 2021-01-12 19:21:09 +02:00
parent 248a1f1f68
commit 5c8c7e0c48
2 changed files with 41 additions and 2 deletions

View File

@ -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());
}
}

View File

@ -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;
}
}