show update log

This commit is contained in:
南宫临风 2016-07-09 22:04:43 +08:00
parent b6be41e5c5
commit c33a99d9ed
3 changed files with 70 additions and 9 deletions

View File

@ -17,6 +17,7 @@
*/ */
package org.jackhuang.hellominecraft.launcher.util.upgrade; package org.jackhuang.hellominecraft.launcher.util.upgrade;
import java.awt.Dimension;
import java.io.File; import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.FileOutputStream; import java.io.FileOutputStream;
@ -36,16 +37,21 @@ import java.util.jar.JarFile;
import java.util.jar.JarOutputStream; import java.util.jar.JarOutputStream;
import java.util.jar.Pack200; import java.util.jar.Pack200;
import java.util.zip.GZIPInputStream; import java.util.zip.GZIPInputStream;
import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.JCheckBox; import javax.swing.JCheckBox;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextPane;
import org.jackhuang.hellominecraft.util.C; import org.jackhuang.hellominecraft.util.C;
import org.jackhuang.hellominecraft.util.logging.HMCLog; import org.jackhuang.hellominecraft.util.logging.HMCLog;
import org.jackhuang.hellominecraft.launcher.core.MCUtils; import org.jackhuang.hellominecraft.launcher.core.MCUtils;
import org.jackhuang.hellominecraft.launcher.setting.Settings; import org.jackhuang.hellominecraft.launcher.setting.Settings;
import org.jackhuang.hellominecraft.util.tasks.Task; import org.jackhuang.hellominecraft.util.tasks.Task;
import org.jackhuang.hellominecraft.util.tasks.TaskWindow;
import org.jackhuang.hellominecraft.util.tasks.download.FileDownloadTask; import org.jackhuang.hellominecraft.util.tasks.download.FileDownloadTask;
import org.jackhuang.hellominecraft.util.ArrayUtils; import org.jackhuang.hellominecraft.util.ArrayUtils;
import org.jackhuang.hellominecraft.util.MessageBox; import org.jackhuang.hellominecraft.util.MessageBox;
import org.jackhuang.hellominecraft.util.StrUtils;
import org.jackhuang.hellominecraft.util.UpdateChecker; import org.jackhuang.hellominecraft.util.UpdateChecker;
import org.jackhuang.hellominecraft.util.Utils; import org.jackhuang.hellominecraft.util.Utils;
import org.jackhuang.hellominecraft.util.VersionNumber; import org.jackhuang.hellominecraft.util.VersionNumber;
@ -54,6 +60,7 @@ import org.jackhuang.hellominecraft.util.system.FileUtils;
import org.jackhuang.hellominecraft.util.system.IOUtils; import org.jackhuang.hellominecraft.util.system.IOUtils;
import org.jackhuang.hellominecraft.util.system.OS; import org.jackhuang.hellominecraft.util.system.OS;
import org.jackhuang.hellominecraft.util.tasks.TaskList; import org.jackhuang.hellominecraft.util.tasks.TaskList;
import org.jackhuang.hellominecraft.util.tasks.TaskWindow;
/** /**
* *
@ -111,12 +118,38 @@ public class AppDataUpgrader extends IUpgrader {
versionNumber.firstVer + "." + versionNumber.secondVer + "." + versionNumber.firstVer + "." + versionNumber.secondVer + "." +
versionNumber.thirdVer + "\n" + versionNumber.thirdVer + "\n" +
C.i18n("update.should_open_link"); C.i18n("update.should_open_link");
JCheckBox checkbox = new JCheckBox(C.i18n("update.ignore")); JCheckBox checkbox = new JCheckBox(C.i18n("update.ignore"));
int ret = MessageBox.Show(new Object[]{content, checkbox}, MessageBox.YES_NO_OPTION);
if (ret == MessageBox.NO_OPTION) { JPanel logPanel = new JPanel();
logPanel.setLayout(new BoxLayout(logPanel, BoxLayout.X_AXIS));
logPanel.setPreferredSize(new Dimension(300,150));
logPanel.setBorder(BorderFactory.createEmptyBorder(1, 1, 1, 5));
JScrollPane scrollPane = new JScrollPane();
JTextPane textPane = new JTextPane();
textPane.setContentType("text/plain");
textPane.setEditable(false);
scrollPane.setViewportView(textPane);
logPanel.add(scrollPane);
int msgRet;
String updateLog = Settings.UPDATE_CHECKER.getUpdateLog();
if (StrUtils.isBlank(updateLog)) {
msgRet = MessageBox.Show(new Object[]{content, checkbox}, MessageBox.YES_NO_OPTION);
} else {
textPane.setText(updateLog);
msgRet = MessageBox.Show(new Object[]{content, logPanel, checkbox}, MessageBox.YES_NO_OPTION);
}
if (msgRet == MessageBox.NO_OPTION) {
if (checkbox.isSelected()) {
Settings.getInstance().setIgnoreUpdate(versionNumber); Settings.getInstance().setIgnoreUpdate(versionNumber);
}
return false; return false;
} }
return true; return true;
} }

View File

@ -26,12 +26,26 @@ import java.util.Map;
public interface IUpdateChecker { public interface IUpdateChecker {
/** /**
* * Update response
*/ */
void checkOutdate(); void checkOutdate();
/**
*
* @return Update log
*/
String getUpdateLog();
/**
*
* @return Server to assign a mandatory update
*/
boolean isForceUpdate(); boolean isForceUpdate();
/**
*
* @return User manual update
*/
boolean isManualUpdate(); boolean isManualUpdate();
/** /**

View File

@ -19,6 +19,7 @@ package org.jackhuang.hellominecraft.util;
import org.jackhuang.hellominecraft.util.logging.HMCLog; import org.jackhuang.hellominecraft.util.logging.HMCLog;
import java.util.Map; import java.util.Map;
import org.jackhuang.hellominecraft.util.lang.SupportedLocales;
/** /**
* *
@ -34,9 +35,12 @@ public final class UpdateChecker implements IUpdateChecker {
public String versionString; public String versionString;
public VersionNumber base; public VersionNumber base;
private VersionNumber value; private VersionNumber value;
private boolean isforceUpdate = false; private boolean isforceUpdate = false;
private boolean isManualUpdate = false; private boolean isManualUpdate = false;
private String updateLog = null;
public String type; public String type;
private Map<String, String> download_link = null; private Map<String, String> download_link = null;
@ -53,12 +57,17 @@ public final class UpdateChecker implements IUpdateChecker {
isManualUpdate = showMessage; isManualUpdate = showMessage;
if (value == null) { if (value == null) {
versionString = NetUtils.get(VERSION_URL + type + "&ver=" + base.toString()); versionString = NetUtils.get(VERSION_URL + type +
"&ver=" + base.toString() +
"&lang=" + SupportedLocales.NOW_LOCALE.self);
Map<String, Object> versionInfo = C.GSON.fromJson(versionString, Map.class); Map<String, Object> versionInfo = C.GSON.fromJson(versionString, Map.class);
if (versionInfo.containsKey("version")) if (versionInfo.containsKey("version"))
value = VersionNumber.check((String)versionInfo.get("version")); value = VersionNumber.check((String) versionInfo.get("version"));
if (versionInfo.containsKey("force")) if (versionInfo.containsKey("force"))
isforceUpdate = (boolean)versionInfo.get("force"); isforceUpdate = (boolean) versionInfo.get("force");
if (versionInfo.containsKey("log"))
updateLog = (String) versionInfo.get("log");
} }
if (value == null) { if (value == null) {
@ -92,6 +101,11 @@ public final class UpdateChecker implements IUpdateChecker {
return isManualUpdate; return isManualUpdate;
} }
@Override
public String getUpdateLog() {
return updateLog;
}
@Override @Override
public synchronized OverridableSwingWorker<Map<String, String>> requestDownloadLink() { public synchronized OverridableSwingWorker<Map<String, String>> requestDownloadLink() {
return new OverridableSwingWorker() { return new OverridableSwingWorker() {