diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/Main.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/Main.java index 2b706087b..59dc7e0f2 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/Main.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/Main.java @@ -1,7 +1,7 @@ /* * Hello Minecraft! Launcher. * Copyright (C) 2013 huangyuhui - * + * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or @@ -42,7 +42,6 @@ import org.jackhuang.hellominecraft.views.LogWindow; import org.jackhuang.hellominecraft.launcher.settings.Settings; import org.jackhuang.hellominecraft.launcher.utils.upgrade.IUpgrader; import org.jackhuang.hellominecraft.launcher.views.MainFrame; -import org.jackhuang.hellominecraft.launcher.views.ServerListView; import org.jackhuang.hellominecraft.lookandfeel.HelloMinecraftLookAndFeel; import org.jackhuang.hellominecraft.utils.MathUtils; import org.jackhuang.hellominecraft.utils.StrUtils; @@ -86,9 +85,9 @@ public final class Main implements Runnable { HttpsURLConnection.setDefaultHostnameVerifier(HNV); } - public static String launcherName = "Hello Minecraft! Launcher"; - public static byte firstVer = 2, secondVer = 3, thirdVer = 1, forthVer = 6; - public static int minimumLauncherVersion = 16; + public static final String LAUNCHER_NAME = "Hello Minecraft! Launcher"; + public static final byte VERSION_FIRST = 2, VERSION_SECOND = 3, VERSION_THIRD = 1, VERSION_FORTH = 6; + public static final int MINIMUM_LAUNCHER_VERSION = 16; //public static Proxy PROXY; /** @@ -97,7 +96,7 @@ public final class Main implements Runnable { * @return the version: firstVer.secondVer.thirdVer */ public static String makeVersion() { - return "" + firstVer + '.' + secondVer + '.' + thirdVer + '.' + forthVer; + return "" + VERSION_FIRST + '.' + VERSION_SECOND + '.' + VERSION_THIRD + '.' + VERSION_FORTH; } /** @@ -106,15 +105,15 @@ public final class Main implements Runnable { * @return the MainWindow title. */ public static String makeTitle() { - return launcherName + ' ' + makeVersion(); + return LAUNCHER_NAME + ' ' + makeVersion(); } public static final Main INSTANCE = new Main(); - @SuppressWarnings( {"CallToPrintStackTrace", "UseSpecificCatch"}) + @SuppressWarnings({"CallToPrintStackTrace", "UseSpecificCatch"}) public static void main(String[] args) { { - if (IUpgrader.NOW_UPGRADER.parseArguments(new VersionNumber(firstVer, secondVer, thirdVer), args)) + if (IUpgrader.NOW_UPGRADER.parseArguments(new VersionNumber(VERSION_FIRST, VERSION_SECOND, VERSION_THIRD), args)) return; System.setProperty("sun.java2d.noddraw", "true"); @@ -143,8 +142,8 @@ public final class Main implements Runnable { } Settings.UPDATE_CHECKER.outdated.register(IUpgrader.NOW_UPGRADER); - Settings.UPDATE_CHECKER.process(false).subscribeOn(Schedulers.newThread()).subscribe(t -> - Main.invokeUpdate()); + Settings.UPDATE_CHECKER.process(false).subscribeOn(Schedulers.newThread()).subscribe(t + -> Main.invokeUpdate()); if (StrUtils.isNotBlank(Settings.getInstance().getProxyHost()) && StrUtils.isNotBlank(Settings.getInstance().getProxyPort()) && MathUtils.canParseInt(Settings.getInstance().getProxyPort())) { HMCLog.log("Initializing customized proxy"); diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/settings/Settings.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/settings/Settings.java index b013fc251..7d15f06e6 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/settings/Settings.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/settings/Settings.java @@ -1,7 +1,7 @@ /* * Hello Minecraft! Launcher. * Copyright (C) 2013 huangyuhui - * + * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or @@ -50,7 +50,8 @@ public final class Settings { private static boolean isFirstLoading; private static final Config SETTINGS; - public static final UpdateChecker UPDATE_CHECKER; + public static final UpdateChecker UPDATE_CHECKER = new UpdateChecker(new VersionNumber(Main.VERSION_FIRST, Main.VERSION_SECOND, Main.VERSION_THIRD), + "hmcl"); public static final List JAVA; public static Config getInstance() { @@ -69,9 +70,6 @@ public final class Settings { for (Profile e : getProfiles().values()) e.checkFormat(); - UPDATE_CHECKER = new UpdateChecker(new VersionNumber(Main.firstVer, Main.secondVer, Main.thirdVer), - "hmcl"); - List temp = new ArrayList<>(); temp.add(new Java("Default", System.getProperty("java.home"))); temp.add(new Java("Custom", null)); diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/upgrade/AppDataUpgrader.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/upgrade/AppDataUpgrader.java index 2ad5db2fe..40b0cd76d 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/upgrade/AppDataUpgrader.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/upgrade/AppDataUpgrader.java @@ -1,7 +1,7 @@ /* * Hello Minecraft! Launcher. * Copyright (C) 2013 huangyuhui - * + * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or @@ -17,9 +17,6 @@ */ package org.jackhuang.hellominecraft.launcher.utils.upgrade; -import java.awt.Toolkit; -import java.awt.datatransfer.Clipboard; -import java.awt.datatransfer.StringSelection; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; @@ -46,6 +43,7 @@ import org.jackhuang.hellominecraft.tasks.download.FileDownloadTask; import org.jackhuang.hellominecraft.utils.ArrayUtils; import org.jackhuang.hellominecraft.utils.MessageBox; import org.jackhuang.hellominecraft.utils.UpdateChecker; +import org.jackhuang.hellominecraft.utils.Utils; import org.jackhuang.hellominecraft.utils.VersionNumber; import org.jackhuang.hellominecraft.utils.system.FileUtils; import org.jackhuang.hellominecraft.utils.system.IOUtils; @@ -118,9 +116,7 @@ public class AppDataUpgrader extends IUpgrader { java.awt.Desktop.getDesktop().browse(new URI(url)); } catch (URISyntaxException | IOException e) { HMCLog.warn("Failed to browse uri: " + url, e); - - Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard(); - cb.setContents(new StringSelection(url), null); + Utils.setClipborad(url); MessageBox.Show(C.i18n("update.no_browser")); } } diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/upgrade/IUpgrader.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/upgrade/IUpgrader.java index 182d513bc..dd3f325af 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/upgrade/IUpgrader.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/upgrade/IUpgrader.java @@ -18,6 +18,8 @@ package org.jackhuang.hellominecraft.launcher.utils.upgrade; import org.jackhuang.hellominecraft.utils.Event; +import org.jackhuang.hellominecraft.utils.Event; +import org.jackhuang.hellominecraft.utils.VersionNumber; import org.jackhuang.hellominecraft.utils.VersionNumber; /** diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/UpdateChecker.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/UpdateChecker.java index 02b56ef77..243440e32 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/UpdateChecker.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/UpdateChecker.java @@ -1,7 +1,7 @@ /* * Hello Minecraft! Launcher. * Copyright (C) 2013 huangyuhui - * + * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or @@ -27,20 +27,20 @@ import rx.Observable; * @author huangyuhui */ public final class UpdateChecker implements IUpdateChecker { - + public boolean OUT_DATED = false; public VersionNumber base; public String versionString; public String type; private Map download_link = null; - + public UpdateChecker(VersionNumber base, String type) { this.base = base; this.type = type; } - + VersionNumber value; - + @Override public Observable process(boolean showMessage) { return Observable.createWithEmptySubscription(t -> { @@ -53,7 +53,7 @@ public final class UpdateChecker implements IUpdateChecker { } value = VersionNumber.check(versionString); } - + if (value == null) { HMCLog.warn("Failed to check update..."); if (showMessage) @@ -64,12 +64,12 @@ public final class UpdateChecker implements IUpdateChecker { t.onNext(value); }); } - + @Override public VersionNumber getNewVersion() { return value; } - + @Override public synchronized Observable> requestDownloadLink() { return Observable.createWithEmptySubscription(t -> { @@ -82,9 +82,9 @@ public final class UpdateChecker implements IUpdateChecker { t.onNext(download_link); }); } - + public final EventHandler outdated = new EventHandler<>(this); - + @Override public void checkOutdate() { if (OUT_DATED) diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/Main.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/Main.java index 724341b44..ce489ec5b 100644 --- a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/Main.java +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/Main.java @@ -1,7 +1,7 @@ /* * Hello Minecraft! Launcher. * Copyright (C) 2013 huangyuhui - * + * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or @@ -32,6 +32,7 @@ import org.jackhuang.hellominecraft.svrmgr.views.MainWindow; import org.jackhuang.hellominecraft.utils.VersionNumber; import org.jackhuang.hellominecraft.lookandfeel.HelloMinecraftLookAndFeel; import org.jackhuang.hellominecraft.utils.MessageBox; +import rx.concurrency.Schedulers; /** * @@ -41,10 +42,11 @@ public class Main { public static String launcherName = "Hello Minecraft! Server Manager"; public static final String PUBLISH_URL = "http://www.mcbbs.net/thread-171239-1-1.html"; - public static byte firstVer = 0, secondVer = 8, thirdVer = 6; + public static final byte VERSION_FIRST = 0, VERSION_SECOND = 8, VERSION_THIRD = 6; + public static final UpdateChecker UPDATE_CHECKER = new UpdateChecker(new VersionNumber(VERSION_FIRST, VERSION_SECOND, VERSION_THIRD), "hmcsm"); public static String makeTitle() { - return launcherName + ' ' + firstVer + '.' + secondVer + '.' + thirdVer; + return launcherName + ' ' + VERSION_FIRST + '.' + VERSION_SECOND + '.' + VERSION_THIRD; } public static void main(String[] args) { @@ -56,9 +58,8 @@ public class Main { } catch (ParseException | UnsupportedLookAndFeelException ex) { HMCLog.warn("Failed to set look and feel", ex); } - new UpdateChecker(new VersionNumber(firstVer, secondVer, thirdVer), "hmcsm", () -> { - SwingUtilities.invokeLater(() -> MessageBox.Show("发现更新!")); - }).start(); + UPDATE_CHECKER.outdated.register(new AppDataUpgrader()); + UPDATE_CHECKER.process(false).subscribeOn(Schedulers.newThread()).subscribe(t -> MessageBox.Show("发现更新!")); new MainWindow().setVisible(true); } catch (Throwable t) { HMCLog.err("There's something wrong when running server holder.", t); diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/backups/BackupManager.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/backups/BackupManager.java index a0ba1bde3..b297e2740 100644 --- a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/backups/BackupManager.java +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/backups/BackupManager.java @@ -1,7 +1,7 @@ /* * Hello Minecraft! Launcher. * Copyright (C) 2013 huangyuhui - * + * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or @@ -26,6 +26,8 @@ import org.jackhuang.hellominecraft.HMCLog; import org.jackhuang.hellominecraft.utils.system.Compressor; import org.jackhuang.hellominecraft.svrmgr.settings.SettingsManager; import org.jackhuang.hellominecraft.svrmgr.utils.Utilities; +import org.jackhuang.hellominecraft.utils.system.FileUtils; +import org.jackhuang.hellominecraft.utils.system.IOUtils; /** * @@ -39,7 +41,7 @@ public class BackupManager { public static ArrayList getBackupList() { String gameDir = backupDir(); - return Utilities.findAllFile(new File(gameDir)); + return IOUtils.findAllFile(new File(gameDir)); } public static void addWorldBackup(final String folder) { @@ -61,27 +63,26 @@ public class BackupManager { public static ArrayList findAllWorlds() { String gameDir = Utilities.getGameDir(); - ArrayList folders = Utilities.findAllDir(new File(gameDir)); - ArrayList result = new ArrayList(); + ArrayList folders = IOUtils.findAllDir(new File(gameDir)); + ArrayList result = new ArrayList<>(); for (String folder : folders) { String worldPath = gameDir + folder + File.separator; - ArrayList files = Utilities.findAllFile(new File(worldPath)); + ArrayList files = IOUtils.findAllFile(new File(worldPath)); if (files.contains("level.dat")) result.add(folder); } return result; } - public static void restoreBackup(String backupFile) { + public static void restoreBackup(File backupFile) { try { - File file = new File(backupFile); - String name = Utilities.trimExtension(file.getName()); + String name = FileUtils.getExtension(backupFile.getName()); String[] info = name.split("\\+"); String folder = info[2]; File world = new File(Utilities.getGameDir() + folder + File.separator); - Utilities.deleteAll(world); + FileUtils.deleteDirectoryQuietly(world); world.mkdirs(); - Compressor.unzip(backupFile, world.getAbsolutePath()); + Compressor.unzip(backupFile, world); } catch (IOException ex) { HMCLog.warn("Failed to decompress world pack.", ex); } diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/utils/Utilities.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/utils/Utilities.java index e491ef900..332910149 100644 --- a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/utils/Utilities.java +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/utils/Utilities.java @@ -1,7 +1,7 @@ /* * Hello Minecraft! Launcher. * Copyright (C) 2013 huangyuhui - * + * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or @@ -18,8 +18,8 @@ package org.jackhuang.hellominecraft.svrmgr.utils; import java.io.File; -import java.util.ArrayList; import org.jackhuang.hellominecraft.svrmgr.settings.SettingsManager; +import org.jackhuang.hellominecraft.utils.system.IOUtils; /** * @@ -27,163 +27,17 @@ import org.jackhuang.hellominecraft.svrmgr.settings.SettingsManager; */ public class Utilities { - public static String addSeparator(String path) { - if (path == null || path.trim().length() == 0) - return ""; - if (path.charAt(path.length() - 1) == File.separatorChar) - return path; - else - return path + File.separatorChar; - } - - public static boolean isSeparator(char ch) { - return ch == File.separatorChar || ch == '/' || ch == '\\'; - } - - public static String removeLastSeparator(String dir) { - String t = dir.trim(); - char ch = t.charAt(t.length() - 1); - if (isSeparator(ch)) - return t.substring(0, t.length() - 1); - return t; - } - - public static String extractLastDirectory(String dir) { - String t = removeLastSeparator(dir); - int i = t.length() - 1; - while (i >= 0 && !isSeparator(dir.charAt(i))) - i--; - if (i < 0) - return t; - return t.substring(i + 1, (t.length() - i) + (i + 1) - 1); - } - - public static ArrayList findAllFile(File f) { - ArrayList arr = new ArrayList<>(); - if (!f.exists()) - return arr; - if (f.isDirectory()) { - File[] f1 = f.listFiles(); - int len = f1.length; - for (int i = 0; i < len; i++) - if (f1[i].isFile()) - arr.add(f1[i].getName()); - } - return arr; - } - - public static ArrayList findAllDir(File f) { - ArrayList arr = new ArrayList<>(); - if (f.isDirectory()) { - File[] f1 = f.listFiles(); - int len = f1.length; - for (int i = 0; i < len; i++) - if (f1[i].isDirectory()) - arr.add(f1[i].getName()); - } - return arr; - } - - public static void deleteAll(File f) { - if (f == null || !f.exists()) - return; - if (f.isFile()) - f.delete(); - else { - File f1[] = f.listFiles(); - int len = f1.length; - for (int i = 0; i < len; i++) - deleteAll(f1[i]); - f.delete(); - } - } - - public static String extractFileName(String fileName) { - File file = new File(fileName); - return file.getName(); - } - - public static boolean is16Folder(String path) { - path = Utilities.addSeparator(path); - return new File(path + "versions").exists(); - } - - public static boolean isEmpty(String s) { - return s == null || s.trim().equals(""); - } - - public static int parseInt(String s, int def) { - try { - return Integer.parseInt(s); - } catch (Exception e) { - return def; - } - } - - public static int tryParseInteger(String integer, int def) { - try { - return Integer.parseInt(integer); - } catch (NumberFormatException localNumberFormatException) { - return def; - } - } - - public static boolean isEquals(String base, String to) { - if (base == null) - return (to == null); - else - return base.equals(to); - } - public static String getGameDir() { - String path = new File(SettingsManager.settings.mainjar).getParent(); - path = Utilities.addSeparator(path); - return path; + return IOUtils.addSeparator(new File(SettingsManager.settings.mainjar).getParent()); } public static String getPath(String lastFolder) { - String path = getGameDir(); - File file = new File((new StringBuilder()).append(path).append(lastFolder).toString()); - if (file.exists()) - return file.getPath(); - else - return null; + File file = new File(try2GetPath(lastFolder)); + return file.exists() ? file.getPath() : null; } public static String try2GetPath(String lastFolder) { - String path = getGameDir(); - return (new StringBuilder()).append(path).append(lastFolder).toString(); - + return getGameDir() + lastFolder; } - public static String trimExtension(String filename) { - if ((filename != null) && (filename.length() > 0)) { - int i = filename.lastIndexOf('.'); - if ((i > -1) && (i < (filename.length()))) - return filename.substring(0, i); - } - return filename; - } - - public static boolean openLink(String url) { - boolean isBrowsed = false; - //判断当前系统是否支持Java AWT Desktop扩展 - if (java.awt.Desktop.isDesktopSupported()) - try { -//创建一个URI实例 - java.net.URI uri = java.net.URI.create(url); -//获取当前系统桌面扩展 - java.awt.Desktop dp = java.awt.Desktop.getDesktop(); -//判断系统桌面是否支持要执行的功能 - if (dp.isSupported(java.awt.Desktop.Action.BROWSE)) { -//获取系统默认浏览器打开链接 - dp.browse(uri); - isBrowsed = true; - } - } catch (java.lang.NullPointerException | java.io.IOException e) { -//此为uri为空时抛出异常 -//此为无法获取系统默认浏览器 - } - return isBrowsed; - } } diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/MainWindow.form b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/MainWindow.form index 6e0ccc789..cb12e2077 100644 --- a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/MainWindow.form +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/MainWindow.form @@ -1557,7 +1557,7 @@ - + @@ -1570,7 +1570,7 @@ - + @@ -1681,7 +1681,7 @@ - + @@ -1694,7 +1694,7 @@ - + @@ -1844,7 +1844,7 @@ - + @@ -1857,7 +1857,7 @@ - + @@ -2554,7 +2554,9 @@ - + + + @@ -2565,7 +2567,9 @@ - + + + @@ -2705,6 +2709,9 @@ + + + @@ -2716,6 +2723,9 @@ + + + @@ -2743,7 +2753,9 @@ - + + + @@ -2768,7 +2780,7 @@ - + @@ -2800,7 +2812,7 @@ - + @@ -2862,7 +2874,7 @@ - + @@ -2998,7 +3010,9 @@ - + + + diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/MainWindow.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/MainWindow.java index 5e53ed61a..faad733ab 100644 --- a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/MainWindow.java +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/MainWindow.java @@ -88,6 +88,7 @@ import org.jackhuang.hellominecraft.views.SwingUtils; import org.jackhuang.hellominecraft.version.MinecraftRemoteVersion; import org.jackhuang.hellominecraft.lookandfeel.components.ConstomButton; import org.jackhuang.hellominecraft.utils.Event; +import org.jackhuang.hellominecraft.utils.StrUtils; /** * @@ -137,7 +138,7 @@ public final class MainWindow extends javax.swing.JFrame this.setIconImage(new ImageIcon(getClass().getResource("/icon.png")).getImage()); - if (!Utilities.isEmpty(SettingsManager.settings.bgPath)) { + if (StrUtils.isNotBlank(SettingsManager.settings.bgPath)) { txtBackgroundPath.setText(SettingsManager.settings.bgPath); background = new ImageIcon(Toolkit.getDefaultToolkit().getImage(SettingsManager.settings.bgPath)); } @@ -154,7 +155,7 @@ public final class MainWindow extends javax.swing.JFrame setTitle(Main.makeTitle()); String mainjar = SettingsManager.settings.mainjar; - if (!Utilities.isEmpty(mainjar)) + if (StrUtils.isNotBlank(mainjar)) ServerProperties.init(new File(mainjar).getParent()); txtMainJar.setText(mainjar); commandSet = new ArrayList<>(); @@ -206,349 +207,140 @@ public final class MainWindow extends javax.swing.JFrame }, 0, 2000); // + class ActionListenerImpl implements ActionListener { + + String s; + + public ActionListenerImpl(String s) { + this.s = s; + } + + @Override + public void actionPerformed(ActionEvent e) { + Server.getInstance().sendCommand(s); + } + + } JMenuItem itm; ppmBasically = new JPopupMenu(); itm = new JMenuItem("重置插件"); - itm.addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent e) { - Server.getInstance().sendCommand("reload"); - } - }); + itm.addActionListener(new ActionListenerImpl("reload")); ppmBasically = new JPopupMenu(); itm = new JMenuItem("午夜"); - itm.addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent e) { - Server.getInstance().sendCommand("time set 18000"); - } - }); + itm.addActionListener(new ActionListenerImpl("time set 18000")); ppmBasically.add(itm); itm = new JMenuItem("凌晨"); - itm.addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent e) { - Server.getInstance().sendCommand("time set 0"); - } - }); + itm.addActionListener(new ActionListenerImpl("time set 0")); ppmBasically.add(itm); itm = new JMenuItem("广播"); - itm.addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent e) { - String s = JOptionPane.showInputDialog("广播讯息"); - Server.getInstance().sendCommand("say " + s); - } - }); + itm.addActionListener(new ActionListenerImpl("say " + JOptionPane.showInputDialog("广播讯息"))); itm = new JMenuItem("红字广播"); - itm.addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent e) { - String s = JOptionPane.showInputDialog("广播讯息"); - Server.getInstance().sendCommand("me " + s); - } - }); + itm.addActionListener(new ActionListenerImpl("me " + JOptionPane.showInputDialog("广播讯息"))); itm = new JMenuItem("私聊"); - itm.addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent e) { - InputDialog id = new InputDialog(MainWindow.this, true, new String[] {"玩家", "讯息"}); - id.setVisible(true); - Server.getInstance().sendCommand("tell " + id.result[0] + " " + id.result[1]); - } + itm.addActionListener(e -> { + InputDialog id = new InputDialog(MainWindow.this, true, new String[] {"玩家", "讯息"}); + id.setVisible(true); + Server.getInstance().sendCommand("tell " + id.result[0] + " " + id.result[1]); }); ppmBasically.add(itm); itm = new JMenuItem("给予OP"); - itm.addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent e) { - String s = JOptionPane.showInputDialog("新OP的游戏名"); - Server.getInstance().sendCommand("op " + s); - } - }); + itm.addActionListener(new ActionListenerImpl("op " + JOptionPane.showInputDialog("新OP的游戏名"))); ppmBasically.add(itm); itm = new JMenuItem("卸除OP"); - itm.addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent e) { - String s = JOptionPane.showInputDialog("要卸除OP的游戏名"); - Server.getInstance().sendCommand("deop " + s); - } - }); + itm.addActionListener(new ActionListenerImpl("deop " + JOptionPane.showInputDialog("要卸除OP的游戏名"))); ppmBasically.add(itm); itm = new JMenuItem("给予玩家白名单"); - itm.addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent e) { - String s = JOptionPane.showInputDialog("要添入白名单的游戏名"); - Server.getInstance().sendCommand("whitelist add " + s); - } - }); + itm.addActionListener(new ActionListenerImpl("whitelist add " + JOptionPane.showInputDialog("要添入白名单的游戏名"))); ppmBasically.add(itm); itm = new JMenuItem("解除玩家白名单"); - itm.addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent e) { - String s = JOptionPane.showInputDialog("要解除白名单的游戏名"); - Server.getInstance().sendCommand("whitelist remove " + s); - } - }); + itm.addActionListener(new ActionListenerImpl("whitelist remove " + JOptionPane.showInputDialog("要解除白名单的游戏名"))); ppmBasically.add(itm); itm = new JMenuItem("启用白名单"); - itm.addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent e) { - Server.getInstance().sendCommand("whitelist on"); - } - }); + itm.addActionListener(new ActionListenerImpl("whitelist on")); ppmBasically.add(itm); itm = new JMenuItem("禁用白名单"); - itm.addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent e) { - Server.getInstance().sendCommand("whitelist off"); - } - }); + itm.addActionListener(new ActionListenerImpl("whitelist off")); ppmBasically.add(itm); itm = new JMenuItem("列出白名单"); - itm.addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent e) { - Server.getInstance().sendCommand("whitelist list"); - } - }); + itm.addActionListener(new ActionListenerImpl("whitelist list")); ppmBasically.add(itm); itm = new JMenuItem("封禁玩家"); - itm.addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent e) { - String s = JOptionPane.showInputDialog("要封禁玩家的游戏名"); - Server.getInstance().sendCommand("ban " + s); - } - }); + itm.addActionListener(new ActionListenerImpl("ban " + JOptionPane.showInputDialog("要封禁玩家的游戏名"))); ppmBasically.add(itm); itm = new JMenuItem("封禁玩家IP"); - itm.addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent e) { - String s = JOptionPane.showInputDialog("要封禁玩家IP的游戏名"); - Server.getInstance().sendCommand("ban-ip " + s); - } - }); + itm.addActionListener(new ActionListenerImpl("ban-ip " + JOptionPane.showInputDialog("要封禁玩家IP的游戏名"))); itm = new JMenuItem("解封玩家"); - itm.addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent e) { - String s = JOptionPane.showInputDialog("要解封玩家的游戏名"); - Server.getInstance().sendCommand("pardon " + s); - } - }); + itm.addActionListener(new ActionListenerImpl("pardon " + JOptionPane.showInputDialog("要解封玩家的游戏名"))); ppmBasically.add(itm); itm = new JMenuItem("解封玩家IP"); - itm.addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent e) { - String s = JOptionPane.showInputDialog("要解封玩家IP的游戏名"); - Server.getInstance().sendCommand("pardon-ip " + s); - } - }); + itm.addActionListener(new ActionListenerImpl("pardon-ip " + JOptionPane.showInputDialog("要解封玩家IP的游戏名"))); itm = new JMenuItem("封禁玩家"); - itm.addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent e) { - String s = JOptionPane.showInputDialog("要封禁玩家的游戏名"); - Server.getInstance().sendCommand("ban " + s); - } - }); + itm.addActionListener(new ActionListenerImpl("ban " + JOptionPane.showInputDialog("要封禁玩家的游戏名"))); ppmBasically.add(itm); itm = new JMenuItem("封禁玩家IP"); - itm.addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent e) { - String s = JOptionPane.showInputDialog("要封禁玩家IP的游戏名"); - Server.getInstance().sendCommand("ban-ip " + s); - } - }); + itm.addActionListener(new ActionListenerImpl("ban-ip " + JOptionPane.showInputDialog("要封禁玩家IP的游戏名"))); itm = new JMenuItem("封禁玩家列表"); - itm.addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent e) { - Server.getInstance().sendCommand("banlist"); - } - }); + itm.addActionListener(new ActionListenerImpl("banlist")); ppmBasically.add(itm); itm = new JMenuItem("修改时间"); - itm.addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent e) { - String s = JOptionPane.showInputDialog("要调整的时间值"); - Server.getInstance().sendCommand("time set " + s); - } - }); + itm.addActionListener(new ActionListenerImpl("time set " + JOptionPane.showInputDialog("要调整的时间值"))); ppmBasically.add(itm); itm = new JMenuItem("往后调整时间"); - itm.addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent e) { - String s = JOptionPane.showInputDialog("要往后调整的时间值"); - Server.getInstance().sendCommand("time add " + s); - } - }); + itm.addActionListener(new ActionListenerImpl("time add " + JOptionPane.showInputDialog("要往后调整的时间值"))); ppmBasically.add(itm); itm = new JMenuItem("调整天气"); - itm.addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent e) { - String s = JOptionPane.showInputDialog("要调整的天气(只能填:clear[意思是取消所有天气]或rain[意思是下雨]或thunder[意思是打雷]"); - Server.getInstance().sendCommand("weather " + s); - } - }); + itm.addActionListener(new ActionListenerImpl("weather " + JOptionPane.showInputDialog("要调整的天气(只能填:clear[意思是取消所有天气]或rain[意思是下雨]或thunder[意思是打雷]"))); ppmBasically.add(itm); itm = new JMenuItem("调整一定时间的天气"); - itm.addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent e) { - InputDialog id = new InputDialog(MainWindow.this, true, new String[] { - "要调整的天气(只能填:clear[意思是取消所有天气]或rain[意思是下雨]或thunder[意思是打雷]", - "时间" - }); - id.setVisible(true); - if (id.result != null) { - String s = JOptionPane.showInputDialog(""); - Server.getInstance().sendCommand("weather " + id.result[0] + " " + id.result[1]); - } + itm.addActionListener(e -> { + InputDialog id = new InputDialog(MainWindow.this, true, new String[] { + "要调整的天气(只能填:clear[意思是取消所有天气]或rain[意思是下雨]或thunder[意思是打雷]", + "时间" + }); + id.setVisible(true); + if (id.result != null) { + String s = JOptionPane.showInputDialog(""); + Server.getInstance().sendCommand("weather " + id.result[0] + " " + id.result[1]); } }); ppmBasically.add(itm); itm = new JMenuItem("清除背包"); - itm.addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent e) { - String s = JOptionPane.showInputDialog("要被清除背包的玩家"); - Server.getInstance().sendCommand("clear " + s); - } - }); + itm.addActionListener(new ActionListenerImpl("clear" + JOptionPane.showInputDialog("要被清除背包的玩家"))); ppmBasically.add(itm); itm = new JMenuItem("踢出玩家"); - itm.addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent e) { - String s = JOptionPane.showInputDialog("要被踢出的玩家"); - Server.getInstance().sendCommand("kick " + s); - } - }); + itm.addActionListener(new ActionListenerImpl("kick " + JOptionPane.showInputDialog("要被踢出的玩家"))); ppmBasically.add(itm); itm = new JMenuItem("在线玩家"); - itm.addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent e) { - Server.getInstance().sendCommand("list"); - } - }); + itm.addActionListener(new ActionListenerImpl("list")); ppmBasically.add(itm); itm = new JMenuItem("插件列表"); - itm.addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent e) { - Server.getInstance().sendCommand("plugins"); - } - }); + itm.addActionListener(new ActionListenerImpl("plugins")); ppmBasically.add(itm); itm = new JMenuItem("给予玩家物品"); - itm.addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent e) { - InputDialog id = new InputDialog(MainWindow.this, true, new String[] {"玩家", "物品ID", "数量"}); - id.setVisible(true); - if (id.result != null) - Server.getInstance().sendCommand("give " + id.result[0] + " " + id.result[1] + " " + id.result[2]); - } + itm.addActionListener(e -> { + InputDialog id = new InputDialog(MainWindow.this, true, new String[] {"玩家", "物品ID", "数量"}); + id.setVisible(true); + if (id.result != null) + Server.getInstance().sendCommand("give " + id.result[0] + " " + id.result[1] + " " + id.result[2]); }); ppmBasically.add(itm); itm = new JMenuItem("保存所有"); - itm.addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent e) { - Server.getInstance().sendCommand("save-all"); - } - }); + itm.addActionListener(new ActionListenerImpl("save-all")); ppmBasically.add(itm); itm = new JMenuItem("开启bukkit自动保存"); - itm.addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent e) { - Server.getInstance().sendCommand("save-on"); - } - }); + itm.addActionListener(new ActionListenerImpl("save-on")); ppmBasically.add(itm); itm = new JMenuItem("取消bukkit自动保存"); - itm.addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent e) { - Server.getInstance().sendCommand("save-off"); - } - }); + itm.addActionListener(new ActionListenerImpl("save-off")); ppmBasically.add(itm); itm = new JMenuItem("难度"); - itm.addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent e) { - String s = JOptionPane.showInputDialog("难度"); - Server.getInstance().sendCommand("difficulty " + s); - } - }); + itm.addActionListener(new ActionListenerImpl("difficulty " + JOptionPane.showInputDialog("难度"))); ppmBasically.add(itm); itm = new JMenuItem("默认游戏模式"); - itm.addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent e) { - String s = JOptionPane.showInputDialog("默认游戏模式"); - Server.getInstance().sendCommand("defaultgamemode " + s); - } - }); + itm.addActionListener(new ActionListenerImpl("defaultgamemode " + JOptionPane.showInputDialog("默认游戏模式"))); ppmBasically.add(itm); itm = new JMenuItem("地图种子"); - itm.addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent e) { - Server.getInstance().sendCommand("seed"); - } - }); + itm.addActionListener(new ActionListenerImpl("seed")); ppmBasically.add(itm); // } @@ -1711,15 +1503,14 @@ public final class MainWindow extends javax.swing.JFrame } }); - java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("org/jackhuang/hellominecraftlauncher/VersionSettingsWindow"); // NOI18N - btnAddExternelMod.setText(bundle.getString("增加")); // NOI18N + btnAddExternelMod.setText(C.i18n("mods.add")); // NOI18N btnAddExternelMod.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnAddExternelModActionPerformed(evt); } }); - btnDeleteExternelMod.setText(bundle.getString("删除")); // NOI18N + btnDeleteExternelMod.setText(C.i18n("mods.remove")); // NOI18N btnDeleteExternelMod.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnDeleteExternelModActionPerformed(evt); @@ -1795,14 +1586,14 @@ public final class MainWindow extends javax.swing.JFrame } }); - btnAddExternelCoreMod.setText(bundle.getString("增加")); // NOI18N + btnAddExternelCoreMod.setText(C.i18n("mods.add")); // NOI18N btnAddExternelCoreMod.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnAddExternelCoreModActionPerformed(evt); } }); - btnDeleteExternelCoreMod.setText(bundle.getString("删除")); // NOI18N + btnDeleteExternelCoreMod.setText(C.i18n("mods.remove")); // NOI18N btnDeleteExternelCoreMod.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnDeleteExternelCoreModActionPerformed(evt); @@ -1877,14 +1668,14 @@ public final class MainWindow extends javax.swing.JFrame } }); - btnAddPlugins.setText(bundle.getString("增加")); // NOI18N + btnAddPlugins.setText(C.i18n("mods.add")); // NOI18N btnAddPlugins.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnAddPluginsActionPerformed(evt); } }); - btnDeletePlugins.setText(bundle.getString("删除")); // NOI18N + btnDeletePlugins.setText(C.i18n("mods.remove")); // NOI18N btnDeletePlugins.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnDeletePluginsActionPerformed(evt); @@ -2276,14 +2067,14 @@ public final class MainWindow extends javax.swing.JFrame lstCraftbukkit.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); jScrollPane18.setViewportView(lstCraftbukkit); - btnDownloadCraftbukkit.setText("下载"); + btnDownloadCraftbukkit.setText(C.i18n("download")); // NOI18N btnDownloadCraftbukkit.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnDownloadCraftbukkitActionPerformed(evt); } }); - lstRefreshCraftbukkit.setText("刷新"); + lstRefreshCraftbukkit.setText(C.i18n("ui.button.refresh")); // NOI18N lstRefreshCraftbukkit.setToolTipText(""); lstRefreshCraftbukkit.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { @@ -2365,6 +2156,7 @@ public final class MainWindow extends javax.swing.JFrame lstMCPC.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); jScrollPane19.setViewportView(lstMCPC); + btnDownloadMCPC.setText(C.i18n("download")); // NOI18N btnDownloadMCPC.setLabel("下载"); btnDownloadMCPC.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { @@ -2372,6 +2164,7 @@ public final class MainWindow extends javax.swing.JFrame } }); + lstRefreshMCPC.setText(C.i18n("ui.button.refresh")); // NOI18N lstRefreshMCPC.setToolTipText(""); lstRefreshMCPC.setLabel("刷新"); lstRefreshMCPC.addActionListener(new java.awt.event.ActionListener() { @@ -2388,7 +2181,7 @@ public final class MainWindow extends javax.swing.JFrame } }); - btnInstallMCPC.setText("重试"); + btnInstallMCPC.setText(C.i18n("ui.button.retry")); // NOI18N btnInstallMCPC.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnInstallMCPCActionPerformed(evt); @@ -2438,8 +2231,7 @@ public final class MainWindow extends javax.swing.JFrame jTabbedPane5.addTab("Cauldron", jPanel30); - java.util.ResourceBundle bundle1 = java.util.ResourceBundle.getBundle("org/jackhuang/hellominecraftlauncher/I18N"); // NOI18N - btnRefreshDownloads.setText(bundle1.getString("刷新")); // NOI18N + btnRefreshDownloads.setText(C.i18n("ui.button.refresh")); // NOI18N btnRefreshDownloads.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnRefreshDownloadsActionPerformed(evt); @@ -2472,7 +2264,7 @@ public final class MainWindow extends javax.swing.JFrame lstDownloads.setToolTipText(""); jScrollPane12.setViewportView(lstDownloads); - btnMinecraftServerDownload.setText(bundle1.getString("下载")); // NOI18N + btnMinecraftServerDownload.setText(C.i18n("download")); // NOI18N btnMinecraftServerDownload.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnMinecraftServerDownloadActionPerformed(evt); @@ -2485,7 +2277,7 @@ public final class MainWindow extends javax.swing.JFrame jPanel21Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel21Layout.createSequentialGroup() .addContainerGap() - .addComponent(jScrollPane12, javax.swing.GroupLayout.DEFAULT_SIZE, 450, Short.MAX_VALUE) + .addComponent(jScrollPane12, javax.swing.GroupLayout.DEFAULT_SIZE, 501, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel21Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(btnRefreshDownloads, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) @@ -2548,7 +2340,7 @@ public final class MainWindow extends javax.swing.JFrame } }); - jButton11.setText("刷新"); + jButton11.setText(C.i18n("ui.button.refresh")); // NOI18N jButton11.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton11ActionPerformed(evt); @@ -2982,12 +2774,12 @@ public final class MainWindow extends javax.swing.JFrame String path = Utilities.getPath("mods"); if (path == null) return; - ArrayList sl = Utilities.findAllFile(new File(path)); + ArrayList sl = IOUtils.findAllFile(new File(path)); DefaultTableModel model = (DefaultTableModel) lstExternalMods.getModel(); while (model.getRowCount() > 0) model.removeRow(0); for (String s : sl) - model.addRow(new Object[] {!SettingsManager.settings.inactiveExtMods.contains(s), s, ModType.getModTypeShowName(ModType.getModType(Utilities.addSeparator(path) + s))}); + model.addRow(new Object[] {!SettingsManager.settings.inactiveExtMods.contains(s), s, ModType.getModTypeShowName(ModType.getModType(IOUtils.addSeparator(path) + s))}); lstExternalMods.updateUI(); } @@ -2996,7 +2788,7 @@ public final class MainWindow extends javax.swing.JFrame String path = Utilities.getPath("plugins"); if (path == null) return; - ArrayList sl = Utilities.findAllFile(new File(path)); + ArrayList sl = IOUtils.findAllFile(new File(path)); DefaultTableModel model = (DefaultTableModel) lstPlugins.getModel(); while (model.getRowCount() > 0) model.removeRow(0); @@ -3017,12 +2809,12 @@ public final class MainWindow extends javax.swing.JFrame String path = Utilities.getPath("coremods"); if (path == null) return; - ArrayList sl = Utilities.findAllFile(new File(path)); + ArrayList sl = IOUtils.findAllFile(new File(path)); DefaultTableModel model = (DefaultTableModel) lstCoreMods.getModel(); while (model.getRowCount() > 0) model.removeRow(0); for (String s : sl) - model.addRow(new Object[] {!SettingsManager.settings.inactiveCoreMods.contains(s), s, ModType.getModTypeShowName(ModType.getModType(Utilities.addSeparator(path) + s))}); + model.addRow(new Object[] {!SettingsManager.settings.inactiveCoreMods.contains(s), s, ModType.getModTypeShowName(ModType.getModType(IOUtils.addSeparator(path) + s))}); lstCoreMods.updateUI(); } @@ -3043,7 +2835,7 @@ public final class MainWindow extends javax.swing.JFrame ArrayList al = BackupManager.getBackupList(); DefaultTableModel model = (DefaultTableModel) lstBackups.getModel(); for (String backup : al) { - String[] names = Utilities.trimExtension(backup).split("\\+"); + String[] names = FileUtils.getExtension(backup).split("\\+"); model.addRow(new Object[] { names[0], names[1], names[2] }); @@ -3208,15 +3000,15 @@ public final class MainWindow extends javax.swing.JFrame } void refreshInfos() { - ArrayList al = Utilities.findAllFile(new File(Utilities.getGameDir() + "infos-HMCSM")); + ArrayList al = IOUtils.findAllFile(new File(Utilities.getGameDir() + "infos-HMCSM")); DefaultTableModel model = (DefaultTableModel) lstInfos.getModel(); for (String s : al) - model.addRow(new Object[] {s, Utilities.trimExtension(s)}); + model.addRow(new Object[] {s, FileUtils.getExtension(s)}); lstInfos.updateUI(); } void refreshReports() { - ArrayList al = Utilities.findAllFile(new File(Utilities.getGameDir() + "crash-reports")); + ArrayList al = IOUtils.findAllFile(new File(Utilities.getGameDir() + "crash-reports")); for (String s : al) lstCrashReportsModel.addElement(s); lstReports.setModel(lstCrashReportsModel); @@ -3610,10 +3402,9 @@ public final class MainWindow extends javax.swing.JFrame }//GEN-LAST:event_btnManageExtModsActionPerformed private void btnAddExternelModActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnAddExternelModActionPerformed - java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("org/jackhuang/hellominecraftlauncher/VersionSettingsWindow"); JFileChooser fc = new JFileChooser(); fc.setFileSelectionMode(JFileChooser.FILES_ONLY); - fc.setDialogTitle(bundle.getString("选择模组")); + fc.setDialogTitle(C.i18n("mods.choose_mod")); fc.setMultiSelectionEnabled(false); fc.showOpenDialog(this); try { @@ -3628,7 +3419,7 @@ public final class MainWindow extends javax.swing.JFrame model.addRow(new Object[] {fc.getSelectedFile().getName(), ModType.getModTypeShowName(ModType.getModType(newf))}); lstExternalMods.updateUI(); } catch (IOException e) { - MessageBox.Show(bundle.getString("添加失败")); + MessageBox.Show(C.i18n("mods.failed")); HMCLog.warn("Failed to add ext mods", e); } }//GEN-LAST:event_btnAddExternelModActionPerformed @@ -3639,10 +3430,8 @@ public final class MainWindow extends javax.swing.JFrame String selectedName = (String) model.getValueAt(idx, 0); model.removeRow(idx); String path = Utilities.getPath("mods"); - if (path == null) { - MessageBox.Show(java.util.ResourceBundle.getBundle("org/jackhuang/hellominecraftlauncher/VersionSettingsWindow").getString("删除失败")); + if (path == null) return; - } File newf = new File(path + File.separator + selectedName); newf.delete(); }//GEN-LAST:event_btnDeleteExternelModActionPerformed @@ -3654,7 +3443,7 @@ public final class MainWindow extends javax.swing.JFrame private void btnAddExternelCoreModActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnAddExternelCoreModActionPerformed JFileChooser fc = new JFileChooser(); fc.setFileSelectionMode(JFileChooser.FILES_ONLY); - fc.setDialogTitle(java.util.ResourceBundle.getBundle("org/jackhuang/hellominecraftlauncher/VersionSettingsWindow").getString("选择模组")); + fc.setDialogTitle(C.i18n("mods.choose_mod")); fc.setMultiSelectionEnabled(false); fc.showOpenDialog(this); try { @@ -3669,7 +3458,7 @@ public final class MainWindow extends javax.swing.JFrame model.addRow(new Object[] {fc.getSelectedFile().getName(), ModType.getModTypeShowName(ModType.getModType(newf))}); FileUtils.copyFile(new File(path), newf); } catch (IOException e) { - MessageBox.Show(java.util.ResourceBundle.getBundle("org/jackhuang/hellominecraftlauncher/VersionSettingsWindow").getString("添加失败")); + MessageBox.Show(C.i18n("mods.failed")); HMCLog.warn("Failed to add ext core mod.", e); } }//GEN-LAST:event_btnAddExternelCoreModActionPerformed @@ -3681,10 +3470,8 @@ public final class MainWindow extends javax.swing.JFrame model.removeRow(idx); lstCoreMods.updateUI(); String path = Utilities.getPath("coremods"); - if (path == null) { - MessageBox.Show(java.util.ResourceBundle.getBundle("org/jackhuang/hellominecraftlauncher/VersionSettingsWindow").getString("删除失败")); + if (path == null) return; - } File newf = new File(path + File.separator + selectedName); newf.delete(); }//GEN-LAST:event_btnDeleteExternelCoreModActionPerformed @@ -3696,7 +3483,7 @@ public final class MainWindow extends javax.swing.JFrame private void btnAddPluginsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnAddPluginsActionPerformed JFileChooser fc = new JFileChooser(); fc.setFileSelectionMode(JFileChooser.FILES_ONLY); - fc.setDialogTitle(java.util.ResourceBundle.getBundle("org/jackhuang/hellominecraftlauncher/VersionSettingsWindow").getString("选择模组")); + fc.setDialogTitle(C.i18n("mods.choose_mod")); fc.setMultiSelectionEnabled(false); fc.showOpenDialog(this); try { @@ -3711,7 +3498,7 @@ public final class MainWindow extends javax.swing.JFrame model.addRow(new Object[] {fc.getSelectedFile().getName(), ModType.getModTypeShowName(ModType.getModType(newf))}); FileUtils.copyFile(new File(path), newf); } catch (IOException e) { - MessageBox.Show(java.util.ResourceBundle.getBundle("org/jackhuang/hellominecraftlauncher/VersionSettingsWindow").getString("添加失败")); + MessageBox.Show(C.i18n("mods.failed")); HMCLog.warn("Failed to add plugin", e); } }//GEN-LAST:event_btnAddPluginsActionPerformed @@ -3723,10 +3510,8 @@ public final class MainWindow extends javax.swing.JFrame model.removeRow(idx); lstPlugins.updateUI(); String path = Utilities.getPath("plugins"); - if (path == null) { - MessageBox.Show(java.util.ResourceBundle.getBundle("org/jackhuang/hellominecraftlauncher/VersionSettingsWindow").getString("删除失败")); + if (path == null) return; - } File newf = new File(path + File.separator + selectedName); newf.delete(); }//GEN-LAST:event_btnDeletePluginsActionPerformed @@ -3777,7 +3562,7 @@ public final class MainWindow extends javax.swing.JFrame whitelist.saveAsBoth(new File(dir, "banned-players.txt"), new File(dir, "banned-players.json")); } catch (IOException ex) { HMCLog.warn("Failed to save banned-players", ex); - MessageBox.Show("添加失败。。。"); + MessageBox.Show(C.i18n("mods.failed")); } } }//GEN-LAST:event_btnAddBanActionPerformed @@ -3797,7 +3582,6 @@ public final class MainWindow extends javax.swing.JFrame whitelist.saveAsBoth(new File(dir, "banned-players.txt"), new File(dir, "banned-players.json")); } catch (IOException ex) { HMCLog.warn("Failed to save white-list", ex); - MessageBox.Show("删除失败。。。"); } } }//GEN-LAST:event_btnUnbanActionPerformed @@ -3805,12 +3589,12 @@ public final class MainWindow extends javax.swing.JFrame private void btnSetBackgroundPathActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnSetBackgroundPathActionPerformed JFileChooser fc = new JFileChooser(); fc.setFileSelectionMode(JFileChooser.FILES_ONLY); - fc.setDialogTitle(java.util.ResourceBundle.getBundle("org/jackhuang/hellominecraftlauncher/I18N").getString("选择背景路径")); + fc.setDialogTitle(C.i18n("launcher.choose_bgpath")); fc.setMultiSelectionEnabled(false); fc.showOpenDialog(this); try { String path = fc.getSelectedFile().getCanonicalPath(); - path = Utilities.removeLastSeparator(path); + path = IOUtils.removeLastSeparator(path); txtBackgroundPath.setText(path); SettingsManager.settings.bgPath = path; SettingsManager.save(); @@ -3818,7 +3602,7 @@ public final class MainWindow extends javax.swing.JFrame resizeBackgroundLabel(); } catch (IOException e) { HMCLog.warn("Failed to set background path", e); - MessageBox.Show(java.util.ResourceBundle.getBundle("org/jackhuang/hellominecraftlauncher/I18N").getString("设置失败:") + e.getMessage()); + MessageBox.Show(C.i18n("ui.label.failed_set") + e.getMessage()); } }//GEN-LAST:event_btnSetBackgroundPathActionPerformed @@ -3896,15 +3680,20 @@ public final class MainWindow extends javax.swing.JFrame loadBackups(); }//GEN-LAST:event_jButton1ActionPerformed + File getBackupFile(int index) { + DefaultTableModel model = (DefaultTableModel) lstBackups.getModel(); + return new File(BackupManager.backupDir() + + model.getValueAt(index, 0) + "+" + + model.getValueAt(index, 1) + "+" + + model.getValueAt(index, 2) + ".zip"); + } + private void btnDeleteBackupActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnDeleteBackupActionPerformed int index = lstBackups.getSelectedRow(); if (index == -1) return; + FileUtils.deleteDirectoryQuietly(getBackupFile(index)); DefaultTableModel model = (DefaultTableModel) lstBackups.getModel(); - Utilities.deleteAll(new File(BackupManager.backupDir() - + model.getValueAt(index, 0) + "+" - + model.getValueAt(index, 1) + "+" - + model.getValueAt(index, 2) + ".zip")); model.removeRow(index); }//GEN-LAST:event_btnDeleteBackupActionPerformed @@ -3912,11 +3701,7 @@ public final class MainWindow extends javax.swing.JFrame int index = lstBackups.getSelectedRow(); if (index == -1) return; - DefaultTableModel model = (DefaultTableModel) lstBackups.getModel(); - BackupManager.restoreBackup(BackupManager.backupDir() - + model.getValueAt(index, 0) + "+" - + model.getValueAt(index, 1) + "+" - + model.getValueAt(index, 2) + ".zip"); + BackupManager.restoreBackup(getBackupFile(index)); }//GEN-LAST:event_btnRestoreBackupActionPerformed private void btnRefreshDownloadsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnRefreshDownloadsActionPerformed @@ -3953,7 +3738,7 @@ public final class MainWindow extends javax.swing.JFrame }//GEN-LAST:event_btnShowInfoActionPerformed private void btnAutoSearchActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnAutoSearchActionPerformed - ArrayList al = Utilities.findAllFile(IOUtils.currentDir()); + ArrayList al = IOUtils.findAllFile(IOUtils.currentDir()); for (String s : al) if (ServerChecker.isServerJar(new File(s))) { String path = IOUtils.tryGetCanonicalFilePath(new File(IOUtils.currentDir(), s)); @@ -4007,31 +3792,31 @@ public final class MainWindow extends javax.swing.JFrame }//GEN-LAST:event_chkOnlineModeActionPerformed private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton4ActionPerformed - Utilities.openLink("http://www.mcbbs.net/"); + SwingUtils.openLink("http://www.mcbbs.net/"); }//GEN-LAST:event_jButton4ActionPerformed private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton5ActionPerformed - Utilities.openLink("http://tieba.baidu.com/minecraft"); + SwingUtils.openLink("http://tieba.baidu.com/minecraft"); }//GEN-LAST:event_jButton5ActionPerformed private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton6ActionPerformed - Utilities.openLink("http://www.mcbbs.net/thread-171239-1-1.html"); + SwingUtils.openLink("http://www.mcbbs.net/thread-171239-1-1.html"); }//GEN-LAST:event_jButton6ActionPerformed private void jButton7ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton7ActionPerformed - Utilities.openLink("http://www.minecraft.net/"); + SwingUtils.openLink("http://www.minecraft.net/"); }//GEN-LAST:event_jButton7ActionPerformed private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed - Utilities.openLink("http://www.oray.com/peanuthull/download_ddns_6.5.php"); + SwingUtils.openLink("http://www.oray.com/peanuthull/download_ddns_6.5.php"); }//GEN-LAST:event_jButton2ActionPerformed private void jButton8ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton8ActionPerformed - Utilities.openLink("http://www.bukkit.org/"); + SwingUtils.openLink("http://www.bukkit.org/"); }//GEN-LAST:event_jButton8ActionPerformed private void jButton9ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton9ActionPerformed - Utilities.openLink("http://ci.md-5.net/job/MCPC-Plus/"); + SwingUtils.openLink("http://ci.md-5.net/job/MCPC-Plus/"); }//GEN-LAST:event_jButton9ActionPerformed private void jButton10ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton10ActionPerformed