New animationsublime_text launch4jlinux.cpp

This commit is contained in:
huanghongxun 2015-12-12 21:00:32 +08:00
parent 68a734adb0
commit b3fb372e3b
16 changed files with 169 additions and 52 deletions

View File

@ -80,7 +80,8 @@ jar {
} }
launch4j { launch4j {
launch4jCmd = 'D:\\Develop\\Java\\Launch4j\\launch4j.exe' //launch4jCmd = 'D:\\Develop\\Java\\Launch4j\\launch4j.exe'
launch4jCmd = '/home/huangyuhui/softwares/launch4j/launch4j'
supportUrl = 'http://www.mcbbs.net/thread-142335-1-1.html' supportUrl = 'http://www.mcbbs.net/thread-142335-1-1.html'
jreMinVersion = '1.6.0' jreMinVersion = '1.6.0'

View File

@ -104,7 +104,7 @@ public final class Main implements Runnable {
} }
public static String launcherName = "Hello Minecraft! Launcher"; public static String launcherName = "Hello Minecraft! Launcher";
public static byte firstVer = 2, secondVer = 3, thirdVer = 5, forthVer = 5; public static byte firstVer = 2, secondVer = 3, thirdVer = 5, forthVer = 6;
public static int minimumLauncherVersion = 16; public static int minimumLauncherVersion = 16;
//public static Proxy PROXY; //public static Proxy PROXY;

View File

@ -46,16 +46,16 @@ public class CrashReporter implements Thread.UncaughtExceptionHandler {
public boolean checkThrowable(Throwable e) { public boolean checkThrowable(Throwable e) {
String s = StrUtils.getStackTrace(e); String s = StrUtils.getStackTrace(e);
if (s.contains("MessageBox") || s.contains("AWTError")) { if (s.contains("MessageBox") || s.contains("AWTError"))
return false; return false;
} else if (s.contains("JFileChooser") || s.contains("JceSecurityManager")) { else if (s.contains("JFileChooser") || s.contains("JceSecurityManager")) {
System.out.println("Is not your operating system installed completely? "); System.out.println("Is not your operating system installed completely? ");
return false; return false;
} }
if (s.contains("sun.awt.shell.Win32ShellFolder2") || s.contains("UnsatisfiedLinkError")) { if (s.contains("sun.awt.shell.Win32ShellFolder2") || s.contains("UnsatisfiedLinkError")) {
System.out.println(C.i18n("crash.user_fault")); System.out.println(C.i18n("crash.user_fault"));
try { try {
MessageBox.Show(C.i18n("crash.user_fault")); showMessage(C.i18n("crash.user_fault"));
} catch (Throwable t) { } catch (Throwable t) {
t.printStackTrace(); t.printStackTrace();
} }
@ -63,7 +63,7 @@ public class CrashReporter implements Thread.UncaughtExceptionHandler {
} else if (s.contains("java.awt.HeadlessException")) { } else if (s.contains("java.awt.HeadlessException")) {
System.out.println(C.i18n("crash.headless")); System.out.println(C.i18n("crash.headless"));
try { try {
MessageBox.Show(C.i18n("crash.headless")); showMessage(C.i18n("crash.headless"));
} catch (Throwable t) { } catch (Throwable t) {
t.printStackTrace(); t.printStackTrace();
} }
@ -71,7 +71,7 @@ public class CrashReporter implements Thread.UncaughtExceptionHandler {
} else if (s.contains("java.lang.NoClassDefFoundError") || s.contains("java.lang.VerifyError") || s.contains("java.lang.NoSuchMethodError") || s.contains("java.lang.IncompatibleClassChangeError") || s.contains("java.lang.ClassFormatError")) { } else if (s.contains("java.lang.NoClassDefFoundError") || s.contains("java.lang.VerifyError") || s.contains("java.lang.NoSuchMethodError") || s.contains("java.lang.IncompatibleClassChangeError") || s.contains("java.lang.ClassFormatError")) {
System.out.println(C.i18n("crash.NoClassDefFound")); System.out.println(C.i18n("crash.NoClassDefFound"));
try { try {
MessageBox.Show(C.i18n("crash.NoClassDefFound")); showMessage(C.i18n("crash.NoClassDefFound"));
} catch (Throwable t) { } catch (Throwable t) {
t.printStackTrace(); t.printStackTrace();
} }
@ -110,25 +110,26 @@ public class CrashReporter implements Thread.UncaughtExceptionHandler {
reportToServer(text, s); reportToServer(text, s);
} }
} catch (Throwable ex) { } catch (Throwable ex) {
try { showMessage(e.getMessage() + "\n" + ex.getMessage());
MessageBox.Show(e.getMessage() + "\n" + ex.getMessage(), "ERROR", MessageBox.ERROR_MESSAGE); ex.printStackTrace();
} catch (Throwable exx) {
System.out.println("Failed to catch exception thrown by " + t + " on " + Main.makeVersion() + ".");
exx.printStackTrace();
}
} }
} }
void showMessage() { void showMessage(String s) {
try {
MessageBox.Show(s, "ERROR", MessageBox.ERROR_MESSAGE);
} catch (Throwable e) {
System.err.println("ERROR: " + s);
e.printStackTrace();
}
} }
private static final HashSet<String> throwableSet = new HashSet<>(); private static final HashSet<String> THROWABLE_SET = new HashSet<>();
void reportToServer(String text, String stacktrace) { void reportToServer(String text, String stacktrace) {
if (throwableSet.contains(stacktrace)) if (THROWABLE_SET.contains(stacktrace))
return; return;
throwableSet.add(stacktrace); THROWABLE_SET.add(stacktrace);
new Thread(() -> { new Thread(() -> {
HashMap<String, String> map = new HashMap<>(); HashMap<String, String> map = new HashMap<>();
map.put("CrashReport", text); map.put("CrashReport", text);

View File

@ -0,0 +1,85 @@
/*
* Hello Minecraft! Launcher.
* Copyright (C) 2013 huangyuhui <huanghongxun2008@126.com>
*
* 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
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see {http://www.gnu.org/licenses/}.
*/
package org.jackhuang.hellominecraft.launcher.views;
import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.Timer;
/**
*
* @author huangyuhui
*/
public class AnimatedPanel extends JPanel {
private static final int ANIMATION_LENGTH = 10;
public AnimatedPanel() {
timer = new Timer(1, (e) -> {
SwingUtilities.invokeLater(() -> {
AnimatedPanel.this.repaint();
offsetX += 0.15;
if (offsetX >= ANIMATION_LENGTH) {
timer.stop();
AnimatedPanel.this.repaint();
}
});
});
}
double offsetX = ANIMATION_LENGTH;
Timer timer;
public void animate() {
offsetX = 0;
timer.start();
}
@Override
public void paint(Graphics g) {
double pgs = 1 - Math.sin(Math.PI / 2 / ANIMATION_LENGTH * offsetX);
if(Math.abs(ANIMATION_LENGTH - offsetX) < 0.1) {
super.paint(g);
return;
}
if (pgs > 1)
pgs = 1;
if (pgs < 0)
pgs = 0;
Graphics2D gg = (Graphics2D) g;
int width = this.getWidth();
int height = this.getHeight();
if (isOpaque()) {
g.setColor(getBackground());
g.fillRect(0, 0, width, height);
}
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = image.createGraphics();
g2d.translate((int) (pgs * 50), 0);
super.paint(g2d);
g2d.dispose();
gg.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, (float) (1 - pgs)));
g.drawImage(image, 0, 0, this);
}
}

View File

@ -5,6 +5,7 @@
<Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor"> <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
<Color blue="ff" green="ff" red="ff" type="rgb"/> <Color blue="ff" green="ff" red="ff" type="rgb"/>
</Property> </Property>
<Property name="opaque" type="boolean" value="false"/>
</Properties> </Properties>
<AuxValues> <AuxValues>
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/> <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
@ -67,6 +68,9 @@
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout"/> <Layout class="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout"/>
<SubComponents> <SubComponents>
<Container class="javax.swing.JPanel" name="pnlSettings"> <Container class="javax.swing.JPanel" name="pnlSettings">
<AuxValues>
<AuxValue name="JavaCodeGenerator_CreateCodeCustom" type="java.lang.String" value="new AnimatedPanel()"/>
</AuxValues>
<Constraints> <Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout$JTabbedPaneConstraintsDescription"> <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout$JTabbedPaneConstraintsDescription">
<JTabbedPaneConstraints tabName="&#x666e;&#x901a;&#x8bbe;&#x7f6e;"> <JTabbedPaneConstraints tabName="&#x666e;&#x901a;&#x8bbe;&#x7f6e;">
@ -337,6 +341,9 @@
</SubComponents> </SubComponents>
</Container> </Container>
<Container class="javax.swing.JPanel" name="pnlAdvancedSettings"> <Container class="javax.swing.JPanel" name="pnlAdvancedSettings">
<AuxValues>
<AuxValue name="JavaCodeGenerator_CreateCodeCustom" type="java.lang.String" value="new AnimatedPanel()"/>
</AuxValues>
<Constraints> <Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout$JTabbedPaneConstraintsDescription"> <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout$JTabbedPaneConstraintsDescription">
<JTabbedPaneConstraints tabName="&#x9ad8;&#x7ea7;&#x8bbe;&#x7f6e;"> <JTabbedPaneConstraints tabName="&#x9ad8;&#x7ea7;&#x8bbe;&#x7f6e;">
@ -523,6 +530,9 @@
</SubComponents> </SubComponents>
</Container> </Container>
<Container class="javax.swing.JPanel" name="pnlModManagement"> <Container class="javax.swing.JPanel" name="pnlModManagement">
<AuxValues>
<AuxValue name="JavaCodeGenerator_CreateCodeCustom" type="java.lang.String" value="new AnimatedPanel()"/>
</AuxValues>
<Constraints> <Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout$JTabbedPaneConstraintsDescription"> <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout$JTabbedPaneConstraintsDescription">
<JTabbedPaneConstraints tabName="Mod&#x7ba1;&#x7406;"> <JTabbedPaneConstraints tabName="Mod&#x7ba1;&#x7406;">
@ -654,6 +664,9 @@
</SubComponents> </SubComponents>
</Container> </Container>
<Container class="javax.swing.JPanel" name="pnlAutoInstall"> <Container class="javax.swing.JPanel" name="pnlAutoInstall">
<AuxValues>
<AuxValue name="JavaCodeGenerator_CreateCodeCustom" type="java.lang.String" value="new AnimatedPanel()"/>
</AuxValues>
<Constraints> <Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout$JTabbedPaneConstraintsDescription"> <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout$JTabbedPaneConstraintsDescription">
<JTabbedPaneConstraints tabName="&#x81ea;&#x52a8;&#x5b89;&#x88c5;"> <JTabbedPaneConstraints tabName="&#x81ea;&#x52a8;&#x5b89;&#x88c5;">
@ -684,6 +697,9 @@
</SubComponents> </SubComponents>
</Container> </Container>
<Container class="javax.swing.JPanel" name="pnlGameDownloads"> <Container class="javax.swing.JPanel" name="pnlGameDownloads">
<AuxValues>
<AuxValue name="JavaCodeGenerator_CreateCodeCustom" type="java.lang.String" value="new AnimatedPanel()"/>
</AuxValues>
<Constraints> <Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout$JTabbedPaneConstraintsDescription"> <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout$JTabbedPaneConstraintsDescription">
<JTabbedPaneConstraints tabName="&#x6e38;&#x620f;&#x4e0b;&#x8f7d;"> <JTabbedPaneConstraints tabName="&#x6e38;&#x620f;&#x4e0b;&#x8f7d;">

View File

@ -66,13 +66,13 @@ import rx.concurrency.Schedulers;
* *
* @author huangyuhui * @author huangyuhui
*/ */
public final class GameSettingsPanel extends javax.swing.JPanel implements DropTargetListener { public final class GameSettingsPanel extends AnimatedPanel implements DropTargetListener {
boolean isLoading = false; boolean isLoading = false;
public MinecraftVersionRequest minecraftVersion; public MinecraftVersionRequest minecraftVersion;
String mcVersion; String mcVersion;
InstallerPanel installerPanels[] = new InstallerPanel[InstallerType.values().length]; final InstallerPanel installerPanels[] = new InstallerPanel[InstallerType.values().length];
/** /**
* Creates new form GameSettingsPanel * Creates new form GameSettingsPanel
@ -206,6 +206,8 @@ public final class GameSettingsPanel extends javax.swing.JPanel implements DropT
@Override @Override
public void stateChanged(ChangeEvent e) { public void stateChanged(ChangeEvent e) {
if (tabVersionEdit.getSelectedComponent() instanceof AnimatedPanel)
((AnimatedPanel) tabVersionEdit.getSelectedComponent()).animate();
if (tabVersionEdit.getSelectedComponent() == pnlGameDownloads && !a) { if (tabVersionEdit.getSelectedComponent() == pnlGameDownloads && !a) {
a = true; a = true;
refreshDownloads(); refreshDownloads();
@ -215,8 +217,8 @@ public final class GameSettingsPanel extends javax.swing.JPanel implements DropT
} }
} }
}); });
for (InstallerType type : InstallerType.values()) for (int i = 0; i < InstallerType.values().length; i++)
tabInstallers.addTab(type.getLocalizedName(), new InstallerPanel(this, type)); tabInstallers.addTab(InstallerType.values()[i].getLocalizedName(), installerPanels[i]);
tabInstallers.addChangeListener(new ChangeListener() { tabInstallers.addChangeListener(new ChangeListener() {
boolean refreshed[] = new boolean[InstallerType.values().length]; boolean refreshed[] = new boolean[InstallerType.values().length];
@ -242,7 +244,7 @@ public final class GameSettingsPanel extends javax.swing.JPanel implements DropT
private void initComponents() { private void initComponents() {
tabVersionEdit = new javax.swing.JTabbedPane(); tabVersionEdit = new javax.swing.JTabbedPane();
pnlSettings = new javax.swing.JPanel(); pnlSettings = new AnimatedPanel();
lblGameDir = new javax.swing.JLabel(); lblGameDir = new javax.swing.JLabel();
txtGameDir = new javax.swing.JTextField(); txtGameDir = new javax.swing.JTextField();
lblDimension = new javax.swing.JLabel(); lblDimension = new javax.swing.JLabel();
@ -263,7 +265,7 @@ public final class GameSettingsPanel extends javax.swing.JPanel implements DropT
btnChoosingJavaDir = new javax.swing.JButton(); btnChoosingJavaDir = new javax.swing.JButton();
cboJava = new javax.swing.JComboBox(); cboJava = new javax.swing.JComboBox();
btnChoosingGameDir = new javax.swing.JButton(); btnChoosingGameDir = new javax.swing.JButton();
pnlAdvancedSettings = new javax.swing.JPanel(); pnlAdvancedSettings = new AnimatedPanel();
chkDebug = new javax.swing.JCheckBox(); chkDebug = new javax.swing.JCheckBox();
lblJavaArgs = new javax.swing.JLabel(); lblJavaArgs = new javax.swing.JLabel();
txtJavaArgs = new javax.swing.JTextField(); txtJavaArgs = new javax.swing.JTextField();
@ -277,16 +279,16 @@ public final class GameSettingsPanel extends javax.swing.JPanel implements DropT
txtPrecalledCommand = new javax.swing.JTextField(); txtPrecalledCommand = new javax.swing.JTextField();
lblServerIP = new javax.swing.JLabel(); lblServerIP = new javax.swing.JLabel();
txtServerIP = new javax.swing.JTextField(); txtServerIP = new javax.swing.JTextField();
pnlModManagement = new javax.swing.JPanel(); pnlModManagement = new AnimatedPanel();
pnlModManagementContent = new javax.swing.JPanel(); pnlModManagementContent = new javax.swing.JPanel();
jScrollPane1 = new javax.swing.JScrollPane(); jScrollPane1 = new javax.swing.JScrollPane();
lstExternalMods = new javax.swing.JTable(); lstExternalMods = new javax.swing.JTable();
btnAddMod = new javax.swing.JButton(); btnAddMod = new javax.swing.JButton();
btnRemoveMod = new javax.swing.JButton(); btnRemoveMod = new javax.swing.JButton();
lblModInfo = new javax.swing.JLabel(); lblModInfo = new javax.swing.JLabel();
pnlAutoInstall = new javax.swing.JPanel(); pnlAutoInstall = new AnimatedPanel();
tabInstallers = new javax.swing.JTabbedPane(); tabInstallers = new javax.swing.JTabbedPane();
pnlGameDownloads = new javax.swing.JPanel(); pnlGameDownloads = new AnimatedPanel();
btnDownload = new javax.swing.JButton(); btnDownload = new javax.swing.JButton();
jScrollPane2 = new javax.swing.JScrollPane(); jScrollPane2 = new javax.swing.JScrollPane();
lstDownloads = new javax.swing.JTable(); lstDownloads = new javax.swing.JTable();
@ -310,6 +312,7 @@ public final class GameSettingsPanel extends javax.swing.JPanel implements DropT
btnCleanGame = new javax.swing.JButton(); btnCleanGame = new javax.swing.JButton();
setBackground(new java.awt.Color(255, 255, 255)); setBackground(new java.awt.Color(255, 255, 255));
setOpaque(false);
tabVersionEdit.setName("tabVersionEdit"); // NOI18N tabVersionEdit.setName("tabVersionEdit"); // NOI18N
@ -1350,7 +1353,7 @@ public final class GameSettingsPanel extends javax.swing.JPanel implements DropT
@Override @Override
public void drop(DropTargetDropEvent dtde) { public void drop(DropTargetDropEvent dtde) {
} }
private void refreshVersions() { private void refreshVersions() {
getProfile().getMinecraftProvider().refreshVersions(); getProfile().getMinecraftProvider().refreshVersions();
loadVersions(); loadVersions();

View File

@ -37,7 +37,7 @@ import org.jackhuang.hellominecraft.utils.SwingUtils;
* *
* @author huangyuhui * @author huangyuhui
*/ */
public class InstallerPanel extends javax.swing.JPanel { public class InstallerPanel extends AnimatedPanel {
GameSettingsPanel gsp; GameSettingsPanel gsp;
@ -50,10 +50,10 @@ public class InstallerPanel extends javax.swing.JPanel {
public InstallerPanel(GameSettingsPanel gsp, InstallerType installerType) { public InstallerPanel(GameSettingsPanel gsp, InstallerType installerType) {
initComponents(); initComponents();
setOpaque(false);
this.gsp = gsp; this.gsp = gsp;
id = installerType; id = installerType;
list = Settings.getInstance().getDownloadSource().getProvider().getInstallerByType(id); list = Settings.getInstance().getDownloadSource().getProvider().getInstallerByType(id);
((DefaultTableModel) lstInstallers.getModel()).addRow(new Object[] {"hehe", "hehe"});
} }
/** /**
@ -138,7 +138,7 @@ public class InstallerPanel extends javax.swing.JPanel {
void downloadSelectedRow() { void downloadSelectedRow() {
int idx = lstInstallers.getSelectedRow(); int idx = lstInstallers.getSelectedRow();
if (idx < 0 || idx >= versions.size()) { if (versions == null || idx < 0 || idx >= versions.size()) {
MessageBox.Show(C.i18n("install.not_refreshed")); MessageBox.Show(C.i18n("install.not_refreshed"));
return; return;
} }
@ -147,20 +147,18 @@ public class InstallerPanel extends javax.swing.JPanel {
public void loadVersions() { public void loadVersions() {
SwingUtilities.invokeLater(() -> { SwingUtilities.invokeLater(() -> {
versions = loadVersions(list, lstInstallers); synchronized (InstallerPanel.this) {
DefaultTableModel model = (DefaultTableModel) lstInstallers.getModel();
String mcver = StrUtils.formatVersion(gsp.getMinecraftVersionFormatted());
versions = list.getVersions(mcver);
SwingUtils.clearDefaultTable(lstInstallers);
if (versions != null)
for (InstallerVersionList.InstallerVersion v : versions)
model.addRow(new Object[] {v.selfVersion == null ? "null" : v.selfVersion, v.mcVersion == null ? "null" : v.mcVersion});
}
}); });
} }
private List<InstallerVersionList.InstallerVersion> loadVersions(InstallerVersionList list, JTable table) {
DefaultTableModel model = (DefaultTableModel) table.getModel();
String mcver = StrUtils.formatVersion(gsp.getMinecraftVersionFormatted());
List<InstallerVersionList.InstallerVersion> ver = list.getVersions(mcver);
SwingUtils.clearDefaultTable(table);
if (ver != null)
for (InstallerVersionList.InstallerVersion v : ver)
model.addRow(new Object[] {v.selfVersion == null ? "null" : v.selfVersion, v.mcVersion == null ? "null" : v.mcVersion});
return ver;
}
// Variables declaration - do not modify//GEN-BEGIN:variables // Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton btnInstall; private javax.swing.JButton btnInstall;

View File

@ -34,7 +34,7 @@ import rx.Observable;
* *
* @author huangyuhui * @author huangyuhui
*/ */
public class LauncherSettingsPanel extends javax.swing.JPanel { public class LauncherSettingsPanel extends AnimatedPanel {
/** /**
* Creates new form LancherSettingsPanel * Creates new form LancherSettingsPanel

View File

@ -244,6 +244,7 @@ public final class MainFrame extends DraggableFrame {
} }
public void selectTab(String tabName) { public void selectTab(String tabName) {
boolean a = mainTab.isActive(), b = gameTab.isActive(), c = launcherTab.isActive();
this.mainTab.setIsActive(false); this.mainTab.setIsActive(false);
this.gameTab.setIsActive(false); this.gameTab.setIsActive(false);
this.launcherTab.setIsActive(false); this.launcherTab.setIsActive(false);
@ -255,6 +256,8 @@ public final class MainFrame extends DraggableFrame {
} }
this.mainTab.setIsActive(true); this.mainTab.setIsActive(true);
this.mainPanel.onSelected(); this.mainPanel.onSelected();
if (!a)
mainPanel.animate();
} else if (tabName.equalsIgnoreCase("game")) { } else if (tabName.equalsIgnoreCase("game")) {
if (gamePanel == null) { if (gamePanel == null) {
gamePanel = new GameSettingsPanel(); gamePanel = new GameSettingsPanel();
@ -262,12 +265,16 @@ public final class MainFrame extends DraggableFrame {
} }
this.gameTab.setIsActive(true); this.gameTab.setIsActive(true);
this.gamePanel.onSelected(); this.gamePanel.onSelected();
if (!b)
gamePanel.animate();
} else if (tabName.equalsIgnoreCase("launcher")) { } else if (tabName.equalsIgnoreCase("launcher")) {
if (launcherPanel == null) { if (launcherPanel == null) {
launcherPanel = new LauncherSettingsPanel(); launcherPanel = new LauncherSettingsPanel();
launcherPanelWrapper.add(launcherPanel); launcherPanelWrapper.add(launcherPanel);
} }
this.launcherTab.setIsActive(true); this.launcherTab.setIsActive(true);
if (!c)
launcherPanel.animate();
} }
this.infoLayout.show(this.infoSwap, tabName); this.infoLayout.show(this.infoSwap, tabName);

View File

@ -47,7 +47,7 @@ import org.jackhuang.hellominecraft.utils.functions.Consumer;
* *
* @author huangyuhui * @author huangyuhui
*/ */
public class MainPagePanel extends javax.swing.JPanel { public class MainPagePanel extends AnimatedPanel {
/** /**
* Creates new form MainPagePanel * Creates new form MainPagePanel
@ -336,6 +336,7 @@ public class MainPagePanel extends javax.swing.JPanel {
if (l.isLoggedIn()) if (l.isLoggedIn())
l.logout(); l.logout();
cl.first(pnlPassword); cl.first(pnlPassword);
pnlPassword.repaint();
}//GEN-LAST:event_btnLogoutActionPerformed }//GEN-LAST:event_btnLogoutActionPerformed
private void txtPlayerNameKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txtPlayerNameKeyPressed private void txtPlayerNameKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txtPlayerNameKeyPressed
@ -423,7 +424,7 @@ public class MainPagePanel extends javax.swing.JPanel {
if (0 <= loginType && loginType < cboLoginMode.getItemCount()) { if (0 <= loginType && loginType < cboLoginMode.getItemCount()) {
preparingAuth = false; preparingAuth = false;
//cboLoginMode.setSelectedIndex(loginType); cboLoginMode.setSelectedIndex(loginType);
cboLoginModeItemStateChanged(null); cboLoginModeItemStateChanged(null);
} }

View File

@ -175,7 +175,8 @@ public class TaskWindow extends javax.swing.JDialog
tasks.clear(); tasks.clear();
if (!this.failReasons.isEmpty()) { if (!this.failReasons.isEmpty()) {
SwingUtilities.invokeLater(() -> MessageBox.Show(StrUtils.parseParams("", failReasons.toArray(), "\n"), C.i18n("message.error"), MessageBox.ERROR_MESSAGE)); String str = StrUtils.parseParams("", failReasons.toArray(), "\n");
SwingUtilities.invokeLater(() -> MessageBox.Show(str, C.i18n("message.error"), MessageBox.ERROR_MESSAGE));
failReasons.clear(); failReasons.clear();
} }

View File

@ -46,7 +46,7 @@ public class SwingUtils {
* @return * @return
*/ */
public static DefaultTableModel makeDefaultTableModel(String[] titleA, final Class[] typesA, final boolean[] canEditA) { public static DefaultTableModel makeDefaultTableModel(String[] titleA, final Class[] typesA, final boolean[] canEditA) {
return new javax.swing.table.DefaultTableModel( return new DefaultTableModel(
new Object[][] {}, new Object[][] {},
titleA) { titleA) {
Class[] types = typesA; Class[] types = typesA;

View File

@ -57,6 +57,7 @@ install.mcversion=\u6e38\u620f\u7248\u672c
install.time=\u65f6\u95f4 install.time=\u65f6\u95f4
install.release_time=\u91ca\u653e\u65f6\u95f4 install.release_time=\u91ca\u653e\u65f6\u95f4
install.type=\u7c7b\u578b install.type=\u7c7b\u578b
install.please_refresh=\u5982\u9700\u4f7f\u7528\u81ea\u52a8\u5b89\u88c5\u8bf7\u70b9\u51fb\u53f3\u4fa7\u5237\u65b0\u6309\u94ae
crash.launcher=\u542f\u52a8\u5668\u5d29\u6e83\u4e86\uff01 crash.launcher=\u542f\u52a8\u5668\u5d29\u6e83\u4e86\uff01
crash.minecraft=Minecraft\u5d29\u6e83\u4e86\uff01\u8bf7\u8ba4\u771f\u9605\u8bfb\u5efa\u8bae\u3002 crash.minecraft=Minecraft\u5d29\u6e83\u4e86\uff01\u8bf7\u8ba4\u771f\u9605\u8bfb\u5efa\u8bae\u3002
@ -204,7 +205,7 @@ settings.physical_memory=\u7269\u7406\u5185\u5b58\u5927\u5c0f
settings.choose_javapath=\u9009\u62e9Java\u8def\u5f84 settings.choose_javapath=\u9009\u62e9Java\u8def\u5f84
settings.default=\u9ed8\u8ba4 settings.default=\u9ed8\u8ba4
settings.custom=\u81ea\u5b9a\u4e49 settings.custom=\u81ea\u5b9a\u4e49
settings.choose_gamepath=\u9009\u62e9\u6e38\u620f\u8def\u5f84 settings.choose_gamedir=\u9009\u62e9\u6e38\u620f\u8def\u5f84
settings.failed_load=\u8bbe\u7f6e\u6587\u4ef6\u52a0\u8f7d\u5931\u8d25\uff0c\u53ef\u80fd\u662f\u5347\u7ea7\u4e86\u542f\u52a8\u5668\u6216\u88ab\u4eba\u5de5\u4fee\u6539\u9020\u6210\u9519\u8bef\uff0c\u662f\u5426\u6e05\u9664\uff1f settings.failed_load=\u8bbe\u7f6e\u6587\u4ef6\u52a0\u8f7d\u5931\u8d25\uff0c\u53ef\u80fd\u662f\u5347\u7ea7\u4e86\u542f\u52a8\u5668\u6216\u88ab\u4eba\u5de5\u4fee\u6539\u9020\u6210\u9519\u8bef\uff0c\u662f\u5426\u6e05\u9664\uff1f

View File

@ -57,6 +57,7 @@ install.mcversion=Game Version
install.time=Time install.time=Time
install.release_time=Release Time install.release_time=Release Time
install.type=Type install.type=Type
install.please_refresh=If you want to install something, please click "Refresh" button.
crash.launcher=Launcher has crashed! crash.launcher=Launcher has crashed!
crash.minecraft=Minecraft has crashed! crash.minecraft=Minecraft has crashed!
@ -204,7 +205,7 @@ settings.physical_memory=Physical Memory Size
settings.choose_javapath=Choose Java Directory. settings.choose_javapath=Choose Java Directory.
settings.default=Default settings.default=Default
settings.custom=Custom settings.custom=Custom
settings.choose_gamepath=Choose Game Directory settings.choose_gamedir=Choose Game Directory
settings.failed_load=Failed to load settings file. Remove it? settings.failed_load=Failed to load settings file. Remove it?

View File

@ -57,6 +57,7 @@ install.mcversion=\u904a\u6232\u7248\u672c
install.time=\u6642\u9593 install.time=\u6642\u9593
install.release_time=\u91cb\u653e\u6642\u9593 install.release_time=\u91cb\u653e\u6642\u9593
install.type=\u985e\u578b install.type=\u985e\u578b
install.please_refresh=\u5982\u9700\u4f7f\u7528\u81ea\u52a8\u5b89\u88c5\u8bf7\u70b9\u51fb\u53f3\u4fa7\u5237\u65b0\u6309\u94ae
crash.launcher=\u555f\u52d5\u5668\u5d29\u6f70\u4e86\uff01 crash.launcher=\u555f\u52d5\u5668\u5d29\u6f70\u4e86\uff01
crash.minecraft=Minecraft\u5d29\u6f70\u4e86\uff01 crash.minecraft=Minecraft\u5d29\u6f70\u4e86\uff01
@ -204,7 +205,7 @@ settings.physical_memory=\u7269\u7406\u5185\u5b58\u5927\u5c0f
settings.choose_javapath=\u9009\u62e9Java\u8def\u5f84 settings.choose_javapath=\u9009\u62e9Java\u8def\u5f84
settings.default=\u9ed8\u8a8d settings.default=\u9ed8\u8a8d
settings.custom=\u81ea\u5b9a\u7fa9 settings.custom=\u81ea\u5b9a\u7fa9
settings.choose_gamepath=\u9009\u62e9\u6e38\u620f\u8def\u5f84 settings.choose_gamedir=\u9009\u62e9\u6e38\u620f\u8def\u5f84
settings.failed_load=\u8a2d\u5b9a\u6587\u4ef6\u52a0\u8f09\u5931\u6557\uff0c\u53ef\u80fd\u662f\u5347\u7d1a\u4e86\u555f\u52d5\u5668\u6216\u88ab\u4eba\u5de5\u4fee\u6539\u9020\u6210\u932f\u8aa4\uff0c\u662f\u5426\u6e05\u9664\uff1f settings.failed_load=\u8a2d\u5b9a\u6587\u4ef6\u52a0\u8f09\u5931\u6557\uff0c\u53ef\u80fd\u662f\u5347\u7d1a\u4e86\u555f\u52d5\u5668\u6216\u88ab\u4eba\u5de5\u4fee\u6539\u9020\u6210\u932f\u8aa4\uff0c\u662f\u5426\u6e05\u9664\uff1f

View File

@ -57,6 +57,7 @@ install.mcversion=\u6e38\u620f\u7248\u672c
install.time=\u65f6\u95f4 install.time=\u65f6\u95f4
install.release_time=\u91ca\u653e\u65f6\u95f4 install.release_time=\u91ca\u653e\u65f6\u95f4
install.type=\u7c7b\u578b install.type=\u7c7b\u578b
install.please_refresh=\u5982\u9700\u4f7f\u7528\u81ea\u52a8\u5b89\u88c5\u8bf7\u70b9\u51fb\u53f3\u4fa7\u5237\u65b0\u6309\u94ae
crash.launcher=\u542f\u52a8\u5668\u5d29\u6e83\u4e86\uff01 crash.launcher=\u542f\u52a8\u5668\u5d29\u6e83\u4e86\uff01
crash.minecraft=Minecraft\u5d29\u6e83\u4e86\uff01\u8bf7\u8ba4\u771f\u9605\u8bfb\u5efa\u8bae\u3002 crash.minecraft=Minecraft\u5d29\u6e83\u4e86\uff01\u8bf7\u8ba4\u771f\u9605\u8bfb\u5efa\u8bae\u3002
@ -204,7 +205,7 @@ settings.physical_memory=\u7269\u7406\u5185\u5b58\u5927\u5c0f
settings.choose_javapath=\u9009\u62e9Java\u8def\u5f84 settings.choose_javapath=\u9009\u62e9Java\u8def\u5f84
settings.default=\u9ed8\u8ba4 settings.default=\u9ed8\u8ba4
settings.custom=\u81ea\u5b9a\u4e49 settings.custom=\u81ea\u5b9a\u4e49
settings.choose_gamepath=\u9009\u62e9\u6e38\u620f\u8def\u5f84 settings.choose_gamedir=\u9009\u62e9\u6e38\u620f\u8def\u5f84
settings.failed_load=\u8bbe\u7f6e\u6587\u4ef6\u52a0\u8f7d\u5931\u8d25\uff0c\u53ef\u80fd\u662f\u5347\u7ea7\u4e86\u542f\u52a8\u5668\u6216\u88ab\u4eba\u5de5\u4fee\u6539\u9020\u6210\u9519\u8bef\uff0c\u662f\u5426\u6e05\u9664\uff1f settings.failed_load=\u8bbe\u7f6e\u6587\u4ef6\u52a0\u8f7d\u5931\u8d25\uff0c\u53ef\u80fd\u662f\u5347\u7ea7\u4e86\u542f\u52a8\u5668\u6216\u88ab\u4eba\u5de5\u4fee\u6539\u9020\u6210\u9519\u8bef\uff0c\u662f\u5426\u6e05\u9664\uff1f