Skip to content

Commit c2b17f2

Browse files
add SearchableElement::getSearchName and use that for SearchMenusMenu.Result's instead of every alias
implement a convention for translatable aliases add several aliases to menus
1 parent b655eba commit c2b17f2

20 files changed

+156
-28
lines changed
Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,25 @@
11
package org.quiltmc.enigma.gui.element;
22

3+
import org.quiltmc.enigma.util.I18n;
4+
35
import javax.swing.MenuElement;
6+
import java.util.Arrays;
47
import java.util.stream.Stream;
58

69
public interface SearchableElement extends MenuElement {
7-
Stream<String> streamSearchAliases();
10+
default Stream<String> streamSearchAliases() {
11+
final String aliases = I18n
12+
.translateOrNull(this.getAliasesTranslationKeyPrefix() + ".aliases");
13+
14+
return Stream.concat(
15+
Stream.of(this.getSearchName()),
16+
aliases == null ? Stream.empty() : Arrays.stream(aliases.split(";"))
17+
);
18+
}
19+
20+
String getSearchName();
21+
22+
String getAliasesTranslationKeyPrefix();
823

924
void onSearchClicked();
1025
}

enigma-swing/src/main/java/org/quiltmc/enigma/gui/element/menu_bar/AbstractSearchableEnigmaMenu.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,14 @@
33
import org.quiltmc.enigma.gui.Gui;
44
import org.quiltmc.enigma.gui.element.SearchableElement;
55

6-
import java.util.stream.Stream;
7-
86
public abstract class AbstractSearchableEnigmaMenu extends AbstractEnigmaMenu implements SearchableElement {
97
protected AbstractSearchableEnigmaMenu(Gui gui) {
108
super(gui);
119
}
1210

1311
@Override
14-
public Stream<String> streamSearchAliases() {
15-
return Stream.of(this.getText());
12+
public String getSearchName() {
13+
return this.getText();
1614
}
1715

1816
@Override

enigma-swing/src/main/java/org/quiltmc/enigma/gui/element/menu_bar/CollabMenu.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
import java.util.Arrays;
1717

1818
public class CollabMenu extends AbstractSearchableEnigmaMenu {
19+
private static final String TRANSLATION_KEY = "menu.collab";
20+
1921
private final JMenuItem connectItem = new JMenuItem();
2022
private final JMenuItem startServerItem = new JMenuItem();
2123

@@ -31,7 +33,7 @@ public CollabMenu(Gui gui) {
3133

3234
@Override
3335
public void retranslate() {
34-
this.setText(I18n.translate("menu.collab"));
36+
this.setText(I18n.translate(TRANSLATION_KEY));
3537
this.retranslate(this.gui.getConnectionState());
3638
}
3739

@@ -102,4 +104,9 @@ public void onStartServerClicked() {
102104
this.gui.getController().disconnectIfConnected(null);
103105
}
104106
}
107+
108+
@Override
109+
public String getAliasesTranslationKeyPrefix() {
110+
return TRANSLATION_KEY;
111+
}
105112
}

enigma-swing/src/main/java/org/quiltmc/enigma/gui/element/menu_bar/DecompilerMenu.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
import javax.swing.JRadioButtonMenuItem;
1212

1313
public class DecompilerMenu extends AbstractSearchableEnigmaMenu {
14+
private static final String TRANSLATION_KEY = "menu.decompiler";
15+
1416
private final JMenuItem decompilerSettingsItem = new JMenuItem();
1517

1618
public DecompilerMenu(Gui gui) {
@@ -41,7 +43,12 @@ public DecompilerMenu(Gui gui) {
4143

4244
@Override
4345
public void retranslate() {
44-
this.setText(I18n.translate("menu.decompiler"));
46+
this.setText(I18n.translate(TRANSLATION_KEY));
4547
this.decompilerSettingsItem.setText(I18n.translate("menu.decompiler.settings"));
4648
}
49+
50+
@Override
51+
public String getAliasesTranslationKeyPrefix() {
52+
return TRANSLATION_KEY;
53+
}
4754
}

enigma-swing/src/main/java/org/quiltmc/enigma/gui/element/menu_bar/DevMenu.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@
2727
import java.nio.file.Files;
2828

2929
public class DevMenu extends AbstractSearchableEnigmaMenu {
30+
private static final String TRANSLATION_KEY = "dev.menu";
31+
3032
private final JCheckBoxMenuItem showMappingSourcePluginItem = new JCheckBoxMenuItem();
3133
private final JCheckBoxMenuItem debugTokenHighlightsItem = new JCheckBoxMenuItem();
3234
private final JCheckBoxMenuItem logClientPacketsItem = new JCheckBoxMenuItem();
@@ -48,7 +50,7 @@ public DevMenu(Gui gui) {
4850

4951
@Override
5052
public void retranslate() {
51-
this.setText("Dev");
53+
this.setText(I18n.translate(TRANSLATION_KEY));
5254

5355
this.showMappingSourcePluginItem.setText(I18n.translate("dev.menu.show_mapping_source_plugin"));
5456
this.debugTokenHighlightsItem.setText(I18n.translate("dev.menu.debug_token_highlights"));
@@ -128,4 +130,9 @@ private void onPrintMappingTreeClicked() {
128130

129131
this.showSavableTextAreaDialog(I18n.translate("dev.mapping_tree"), text.toString(), "mapping_tree.txt");
130132
}
133+
134+
@Override
135+
public String getAliasesTranslationKeyPrefix() {
136+
return TRANSLATION_KEY;
137+
}
131138
}

enigma-swing/src/main/java/org/quiltmc/enigma/gui/element/menu_bar/HelpMenu.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
import javax.swing.JMenuItem;
99

1010
public class HelpMenu extends AbstractSearchableEnigmaMenu {
11+
private static final String TRANSLATION_KEY = "menu.help";
12+
1113
private final JMenuItem aboutItem = new JMenuItem();
1214
private final JMenuItem githubItem = new JMenuItem();
1315
private final SearchMenusMenu searchItem;
@@ -27,7 +29,7 @@ public HelpMenu(Gui gui) {
2729

2830
@Override
2931
public void retranslate() {
30-
this.setText(I18n.translate("menu.help"));
32+
this.setText(I18n.translate(TRANSLATION_KEY));
3133
this.aboutItem.setText(I18n.translate("menu.help.about"));
3234
this.githubItem.setText(I18n.translate("menu.help.github"));
3335
this.searchItem.retranslate();
@@ -36,4 +38,9 @@ public void retranslate() {
3638
private void onGithubClicked() {
3739
GuiUtil.openUrl("https://github.com/QuiltMC/Enigma");
3840
}
41+
42+
@Override
43+
public String getAliasesTranslationKeyPrefix() {
44+
return TRANSLATION_KEY;
45+
}
3946
}

enigma-swing/src/main/java/org/quiltmc/enigma/gui/element/menu_bar/SearchMenu.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
import javax.swing.JMenuItem;
1010

1111
public class SearchMenu extends AbstractSearchableEnigmaMenu {
12+
private static final String TRANSLATION_KEY = "menu.search";
13+
1214
private final JMenuItem searchItem = new JMenuItem(GuiUtil.DEOBFUSCATED_ICON);
1315
private final JMenuItem searchAllItem = new JMenuItem(GuiUtil.DEOBFUSCATED_ICON);
1416
private final JMenuItem searchClassItem = new JMenuItem(GuiUtil.CLASS_ICON);
@@ -33,7 +35,7 @@ public SearchMenu(Gui gui) {
3335

3436
@Override
3537
public void retranslate() {
36-
this.setText(I18n.translate("menu.search"));
38+
this.setText(I18n.translate(TRANSLATION_KEY));
3739
this.searchItem.setText(I18n.translate("menu.search"));
3840
this.searchAllItem.setText(I18n.translate("menu.search.all"));
3941
this.searchClassItem.setText(I18n.translate("menu.search.class"));
@@ -55,4 +57,9 @@ private void onSearchClicked(boolean clear, SearchDialog.Type... types) {
5557
this.gui.getSearchDialog().show(clear, types);
5658
}
5759
}
60+
61+
@Override
62+
public String getAliasesTranslationKeyPrefix() {
63+
return TRANSLATION_KEY;
64+
}
5865
}

enigma-swing/src/main/java/org/quiltmc/enigma/gui/element/menu_bar/SearchMenusMenu.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -148,18 +148,16 @@ public void retranslate() {
148148

149149
private static class Result {
150150
final SearchableElement element;
151-
final String alias;
152151

153152
@Nullable JMenuItem item;
154153

155-
Result(SearchableElement element, String alias) {
154+
Result(SearchableElement element) {
156155
this.element = element;
157-
this.alias = alias;
158156
}
159157

160158
JMenuItem getItem() {
161159
if (this.item == null) {
162-
this.item = new JMenuItem(this.alias);
160+
this.item = new JMenuItem(this.element.getSearchName());
163161
}
164162

165163
return this.item;
@@ -261,9 +259,10 @@ void clearCurrent() {
261259
keep.accept(searchable);
262260
}
263261
})
264-
.forEach(searchable -> searchable
265-
.streamSearchAliases()
266-
.forEach(alias -> elementsBuilder.put(alias, new Result(searchable, alias)))
262+
.map(Result::new)
263+
.forEach(result -> result
264+
.element.streamSearchAliases()
265+
.forEach(alias -> elementsBuilder.put(alias, result))
267266
);
268267

269268
return elementsBuilder.getView();

enigma-swing/src/main/java/org/quiltmc/enigma/gui/element/menu_bar/file/CrashHistoryMenu.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,15 @@
1010
import javax.swing.JMenuItem;
1111

1212
public class CrashHistoryMenu extends AbstractSearchableEnigmaMenu {
13+
private static final String TRANSLATION_KEY = "menu.file.crash_history";
14+
1315
protected CrashHistoryMenu(Gui gui) {
1416
super(gui);
1517
}
1618

1719
@Override
1820
public void retranslate() {
19-
this.setText(I18n.translate("menu.file.crash_history"));
21+
this.setText(I18n.translate(TRANSLATION_KEY));
2022
}
2123

2224
@Override
@@ -40,4 +42,9 @@ public void updateState(boolean jarOpen, ConnectionState state) {
4042
private void onCrashClicked(Throwable throwable) {
4143
CrashDialog.show(throwable, false);
4244
}
45+
46+
@Override
47+
public String getAliasesTranslationKeyPrefix() {
48+
return TRANSLATION_KEY;
49+
}
4350
}

enigma-swing/src/main/java/org/quiltmc/enigma/gui/element/menu_bar/file/FileMenu.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
import java.util.Optional;
2323

2424
public class FileMenu extends AbstractSearchableEnigmaMenu {
25+
private static final String TRANSLATION_KEY = "menu.file";
26+
2527
private final SaveMappingsAsMenu saveMappingsAs;
2628
private final CrashHistoryMenu crashHistory;
2729
private final OpenRecentMenu openRecent;
@@ -122,7 +124,7 @@ public void updateState(boolean jarOpen, ConnectionState state) {
122124

123125
@Override
124126
public void retranslate() {
125-
this.setText(I18n.translate("menu.file"));
127+
this.setText(I18n.translate(TRANSLATION_KEY));
126128
this.jarOpenItem.setText(I18n.translate("menu.file.jar.open"));
127129
this.jarCloseItem.setText(I18n.translate("menu.file.jar.close"));
128130
this.openRecent.retranslate();
@@ -262,4 +264,9 @@ private void onExportJarClicked() {
262264
Config.main().stats.lastSelectedDir.setValue(this.gui.exportJarFileChooser.getCurrentDirectory().getAbsolutePath(), true);
263265
}
264266
}
267+
268+
@Override
269+
public String getAliasesTranslationKeyPrefix() {
270+
return TRANSLATION_KEY;
271+
}
265272
}

0 commit comments

Comments
 (0)