From 6c0a4466926217384d50fb42a132b2d4f19aab76 Mon Sep 17 00:00:00 2001 From: huangyuhui Date: Sat, 5 Mar 2016 14:31:32 +0800 Subject: [PATCH] Fixed: Cannot cancel modpack installing --- .../hellominecraft/launcher/core/mod/ModpackManager.java | 3 ++- .../launcher/util/HMCLMinecraftService.java | 9 ++++----- .../jackhuang/hellominecraft/util/tasks/TaskWindow.java | 9 ++++++++- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/core/mod/ModpackManager.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/core/mod/ModpackManager.java index 186c14b48..b8f75dd7f 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/core/mod/ModpackManager.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/core/mod/ModpackManager.java @@ -46,6 +46,7 @@ import org.jackhuang.hellominecraft.util.system.ZipEngine; import org.jackhuang.hellominecraft.util.tasks.Task; import org.jackhuang.hellominecraft.util.ui.WebPage; import org.jackhuang.hellominecraft.util.MinecraftVersionRequest; +import org.jackhuang.hellominecraft.util.tasks.NoShownTaskException; /** * A mod pack(*.zip) includes these things: @@ -111,7 +112,7 @@ public final class ModpackManager { ((WebPage) msgs[1]).setPreferredSize(new Dimension(800, 350)); int result = JOptionPane.showOptionDialog(null, msgs, (String) msgs[0], JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, null, null); if (result == JOptionPane.NO_OPTION) - return; + throw new NoShownTaskException("Operation was canceled by user."); File versions = new File(service.baseDirectory(), "versions"); diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/util/HMCLMinecraftService.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/util/HMCLMinecraftService.java index fa48bc992..2428b57b7 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/util/HMCLMinecraftService.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/util/HMCLMinecraftService.java @@ -71,14 +71,13 @@ public class HMCLMinecraftService extends IMinecraftService { for (StackTraceElement e : Thread.currentThread().getStackTrace()) if ("checkModpack".equals(e.getMethodName())) ++show; - if (show > 2) + if (show > 1) return; if (version().getVersionCount() == 0) { File modpack = new File("modpack.zip"); - if (modpack.exists()) { - TaskWindow.factory().append(ModpackManager.install(modpack, this, null)).create(); - version().refreshVersions(); - } + if (modpack.exists()) + if (TaskWindow.execute(ModpackManager.install(modpack, this, null))) + version().refreshVersions(); } } diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/util/tasks/TaskWindow.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/util/tasks/TaskWindow.java index 8b9137e73..51ffe3dbc 100755 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/util/tasks/TaskWindow.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/util/tasks/TaskWindow.java @@ -271,7 +271,14 @@ public class TaskWindow extends javax.swing.JDialog SwingUtilities.invokeLater(() -> { if (taskList == null || task == null) return; - failReasons.add(task.getInfo() + ": " + (null == task.getFailReason() ? "No exception" : (StrUtils.isBlank(task.getFailReason().getLocalizedMessage()) ? task.getFailReason().getClass().getSimpleName() : task.getFailReason().getLocalizedMessage()))); + String msg = null; + if (task.getFailReason() != null && !(task.getFailReason() instanceof NoShownTaskException)) + if (StrUtils.isBlank(task.getFailReason().getLocalizedMessage())) + msg = task.getFailReason().getClass().getSimpleName(); + else + msg = task.getFailReason().getLocalizedMessage(); + if (msg != null) + failReasons.add(task.getInfo() + ": " + msg); pgsTotal.setMaximum(taskList.taskCount()); pgsTotal.setValue(pgsTotal.getValue() + 1); int idx = tasks.indexOf(task);