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;
import java.awt.Dimension;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
@ -36,16 +37,21 @@ import java.util.jar.JarFile;
import java.util.jar.JarOutputStream;
import java.util.jar.Pack200;
import java.util.zip.GZIPInputStream;
import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
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.logging.HMCLog;
import org.jackhuang.hellominecraft.launcher.core.MCUtils;
import org.jackhuang.hellominecraft.launcher.setting.Settings;
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.ArrayUtils;
import org.jackhuang.hellominecraft.util.MessageBox;
import org.jackhuang.hellominecraft.util.StrUtils;
import org.jackhuang.hellominecraft.util.UpdateChecker;
import org.jackhuang.hellominecraft.util.Utils;
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.OS;
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.thirdVer + "\n" +
C.i18n("update.should_open_link");
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) {
Settings.getInstance().setIgnoreUpdate(versionNumber);
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);
}
return false;
}
return true;
}

View File

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

View File

@ -19,6 +19,7 @@ package org.jackhuang.hellominecraft.util;
import org.jackhuang.hellominecraft.util.logging.HMCLog;
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 VersionNumber base;
private VersionNumber value;
private boolean isforceUpdate = false;
private boolean isManualUpdate = false;
private String updateLog = null;
public String type;
private Map<String, String> download_link = null;
@ -53,12 +57,17 @@ public final class UpdateChecker implements IUpdateChecker {
isManualUpdate = showMessage;
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);
if (versionInfo.containsKey("version"))
value = VersionNumber.check((String)versionInfo.get("version"));
value = VersionNumber.check((String) versionInfo.get("version"));
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) {
@ -92,6 +101,11 @@ public final class UpdateChecker implements IUpdateChecker {
return isManualUpdate;
}
@Override
public String getUpdateLog() {
return updateLog;
}
@Override
public synchronized OverridableSwingWorker<Map<String, String>> requestDownloadLink() {
return new OverridableSwingWorker() {