summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--enigma-swing/src/main/java/cuchaz/enigma/gui/panels/PanelEditor.java14
-rw-r--r--enigma/src/main/java/cuchaz/enigma/classhandle/ClassHandleError.java5
-rw-r--r--enigma/src/main/java/cuchaz/enigma/classhandle/ClassHandleProvider.java13
-rw-r--r--enigma/src/main/resources/lang/de_de.json1
-rw-r--r--enigma/src/main/resources/lang/en_us.json1
5 files changed, 29 insertions, 5 deletions
diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/panels/PanelEditor.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/panels/PanelEditor.java
index a45ecc93..bf1d5fb2 100644
--- a/enigma-swing/src/main/java/cuchaz/enigma/gui/panels/PanelEditor.java
+++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/panels/PanelEditor.java
@@ -57,7 +57,7 @@ public class PanelEditor {
57 private final JProgressBar decompilingProgressBar = new JProgressBar(0, 100); 57 private final JProgressBar decompilingProgressBar = new JProgressBar(0, 100);
58 58
59 // error display UI 59 // error display UI
60 private final JLabel errorLabel = new JLabel(I18n.translate("editor.decompile_error")); 60 private final JLabel errorLabel = new JLabel();
61 private final JTextArea errorTextArea = new JTextArea(); 61 private final JTextArea errorTextArea = new JTextArea();
62 private final JScrollPane errorScrollPane = new JScrollPane(this.errorTextArea); 62 private final JScrollPane errorScrollPane = new JScrollPane(this.errorTextArea);
63 private final JButton retryButton = new JButton(I18n.translate("general.retry")); 63 private final JButton retryButton = new JButton(I18n.translate("general.retry"));
@@ -336,6 +336,18 @@ public class PanelEditor {
336 336
337 public void displayError(ClassHandleError t) { 337 public void displayError(ClassHandleError t) {
338 this.setDisplayMode(DisplayMode.ERRORED); 338 this.setDisplayMode(DisplayMode.ERRORED);
339 String str;
340 switch(t.type) {
341 case DECOMPILE:
342 str = "editor.decompile_error";
343 break;
344 case REMAP:
345 str = "editor.remap_error";
346 break;
347 default:
348 throw new IllegalStateException("unreachable");
349 }
350 this.errorLabel.setText(I18n.translate(str));
339 this.errorTextArea.setText(t.getStackTrace()); 351 this.errorTextArea.setText(t.getStackTrace());
340 this.errorTextArea.setCaretPosition(0); 352 this.errorTextArea.setCaretPosition(0);
341 } 353 }
diff --git a/enigma/src/main/java/cuchaz/enigma/classhandle/ClassHandleError.java b/enigma/src/main/java/cuchaz/enigma/classhandle/ClassHandleError.java
index a11b9dce..20f847ae 100644
--- a/enigma/src/main/java/cuchaz/enigma/classhandle/ClassHandleError.java
+++ b/enigma/src/main/java/cuchaz/enigma/classhandle/ClassHandleError.java
@@ -28,8 +28,13 @@ public final class ClassHandleError {
28 return new ClassHandleError(Type.DECOMPILE, cause); 28 return new ClassHandleError(Type.DECOMPILE, cause);
29 } 29 }
30 30
31 public static ClassHandleError remap(Throwable cause) {
32 return new ClassHandleError(Type.REMAP, cause);
33 }
34
31 public enum Type { 35 public enum Type {
32 DECOMPILE, 36 DECOMPILE,
37 REMAP,
33 } 38 }
34 39
35} \ No newline at end of file 40} \ No newline at end of file
diff --git a/enigma/src/main/java/cuchaz/enigma/classhandle/ClassHandleProvider.java b/enigma/src/main/java/cuchaz/enigma/classhandle/ClassHandleProvider.java
index 2d9b52d9..f9e4eff8 100644
--- a/enigma/src/main/java/cuchaz/enigma/classhandle/ClassHandleProvider.java
+++ b/enigma/src/main/java/cuchaz/enigma/classhandle/ClassHandleProvider.java
@@ -11,6 +11,8 @@ import java.util.concurrent.locks.ReentrantReadWriteLock;
11 11
12import javax.annotation.Nullable; 12import javax.annotation.Nullable;
13 13
14import org.objectweb.asm.tree.ClassNode;
15
14import cuchaz.enigma.Enigma; 16import cuchaz.enigma.Enigma;
15import cuchaz.enigma.EnigmaProject; 17import cuchaz.enigma.EnigmaProject;
16import cuchaz.enigma.bytecode.translators.SourceFixVisitor; 18import cuchaz.enigma.bytecode.translators.SourceFixVisitor;
@@ -19,7 +21,6 @@ import cuchaz.enigma.events.ClassHandleListener.InvalidationType;
19import cuchaz.enigma.source.*; 21import cuchaz.enigma.source.*;
20import cuchaz.enigma.translation.representation.entry.ClassEntry; 22import cuchaz.enigma.translation.representation.entry.ClassEntry;
21import cuchaz.enigma.utils.Result; 23import cuchaz.enigma.utils.Result;
22import org.objectweb.asm.tree.ClassNode;
23 24
24import static cuchaz.enigma.utils.Utils.withLock; 25import static cuchaz.enigma.utils.Utils.withLock;
25 26
@@ -285,9 +286,13 @@ public final class ClassHandleProvider {
285 int v = mappedVersion.incrementAndGet(); 286 int v = mappedVersion.incrementAndGet();
286 f.thenAcceptAsync(res -> { 287 f.thenAcceptAsync(res -> {
287 if (res == null || mappedVersion.get() != v) return; 288 if (res == null || mappedVersion.get() != v) return;
288 res = res.map(source -> { 289 res = res.andThen(source -> {
289 source.remapSource(p.project, p.project.getMapper().getDeobfuscator()); 290 try {
290 return source; 291 source.remapSource(p.project, p.project.getMapper().getDeobfuscator());
292 return Result.ok(source);
293 } catch (Throwable e) {
294 return Result.err(ClassHandleError.remap(e));
295 }
291 }); 296 });
292 Entry.this.source = res; 297 Entry.this.source = res;
293 Entry.this.waitingSources.forEach(s -> s.complete(source)); 298 Entry.this.waitingSources.forEach(s -> s.complete(source));
diff --git a/enigma/src/main/resources/lang/de_de.json b/enigma/src/main/resources/lang/de_de.json
index ef41da15..65685cf7 100644
--- a/enigma/src/main/resources/lang/de_de.json
+++ b/enigma/src/main/resources/lang/de_de.json
@@ -11,6 +11,7 @@
11 11
12 "editor.decompiling": "Dekompiliere...", 12 "editor.decompiling": "Dekompiliere...",
13 "editor.decompile_error": "Ein Fehler ist während des Dekompilierens aufgetreten.", 13 "editor.decompile_error": "Ein Fehler ist während des Dekompilierens aufgetreten.",
14 "editor.remap_error": "Ein Fehler ist während des Remappens aufgetreten.",
14 15
15 "validation.message.empty_field": "Dieses Feld muss ausgefüllt werden.", 16 "validation.message.empty_field": "Dieses Feld muss ausgefüllt werden.",
16 "validation.message.not_int": "Wert muss eine ganze Zahl sein.", 17 "validation.message.not_int": "Wert muss eine ganze Zahl sein.",
diff --git a/enigma/src/main/resources/lang/en_us.json b/enigma/src/main/resources/lang/en_us.json
index 9b12f429..c2a739c1 100644
--- a/enigma/src/main/resources/lang/en_us.json
+++ b/enigma/src/main/resources/lang/en_us.json
@@ -79,6 +79,7 @@
79 79
80 "editor.decompiling": "Decompiling...", 80 "editor.decompiling": "Decompiling...",
81 "editor.decompile_error": "An error was encountered while decompiling.", 81 "editor.decompile_error": "An error was encountered while decompiling.",
82 "editor.remap_error": "An error was encountered while remapping.",
82 83
83 "info_panel.classes.obfuscated": "Obfuscated Classes", 84 "info_panel.classes.obfuscated": "Obfuscated Classes",
84 "info_panel.classes.deobfuscated": "De-obfuscated Classes", 85 "info_panel.classes.deobfuscated": "De-obfuscated Classes",