package net.minecraft.launcher.ui.bottombar;
import net.minecraft.launcher.Launcher;
import net.minecraft.launcher.authentication.AuthenticationService;
import net.minecraft.launcher.events.RefreshedProfilesListener;
import net.minecraft.launcher.events.RefreshedVersionsListener;
import net.minecraft.launcher.locale.LocaleHelper;
import net.minecraft.launcher.profile.Profile;
import net.minecraft.launcher.profile.ProfileManager;
import net.minecraft.launcher.updater.VersionManager;
import net.minecraft.launcher.updater.VersionSyncInfo;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;
import java.util.ResourceBundle;
public class PlayerInfoPanel extends JPanel
implements RefreshedProfilesListener, RefreshedVersionsListener {
ResourceBundle resourceBundle = LocaleHelper.getMessages();
private final Launcher launcher;
private final JLabel welcomeText = new JLabel("", 0);
private final JLabel versionText = new JLabel("", 0);
private final JButton logOutButton = new JButton(resourceBundle.getString("log.out"));
public PlayerInfoPanel(final Launcher launcher) {
this.launcher = launcher;
launcher.getProfileManager().addRefreshedProfilesListener(this);
checkState();
createInterface();
this.logOutButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
launcher.getProfileManager().getSelectedProfile().setPlayerUUID(null);
launcher.getProfileManager().trimAuthDatabase();
launcher.showLoginPrompt();
}
});
}
protected void createInterface() {
setLayout(new GridBagLayout());
GridBagConstraints constraints = new GridBagConstraints();
constraints.fill = 2;
constraints.gridy = 0;
constraints.weightx = 1.0D;
constraints.gridwidth = 2;
add(this.welcomeText, constraints);
constraints.gridwidth = 1;
constraints.weightx = 0.0D;
constraints.gridy += 1;
constraints.weightx = 1.0D;
constraints.gridwidth = 2;
add(this.versionText, constraints);
constraints.gridwidth = 1;
constraints.weightx = 0.0D;
constraints.gridy += 1;
constraints.weightx = 0.5D;
constraints.fill = 0;
add(this.logOutButton, constraints);
constraints.weightx = 0.0D;
constraints.gridy += 1;
}
public void onProfilesRefreshed(ProfileManager manager) {
checkState();
}
public void checkState() {
Profile profile = this.launcher.getProfileManager().getProfiles().isEmpty() ? null : this.launcher.getProfileManager().getSelectedProfile();
AuthenticationService auth = profile == null ? null : this.launcher.getProfileManager().getAuthDatabase().getByUUID(profile.getPlayerUUID());
List versions = profile == null ? null : this.launcher.getVersionManager().getVersions(profile.getVersionFilter());
VersionSyncInfo version = (profile == null) || (versions.isEmpty()) ? null : (VersionSyncInfo) versions.get(0);
if ((profile != null) && (profile.getLastVersionId() != null)) {
VersionSyncInfo requestedVersion = this.launcher.getVersionManager().getVersionSyncInfo(profile.getLastVersionId());
if ((requestedVersion != null) && (requestedVersion.getLatestVersion() != null)) version = requestedVersion;
}
if ((auth == null) || (!auth.isLoggedIn())) {
this.welcomeText.setText(resourceBundle.getString("welcome.guest.please.log.in"));
this.logOutButton.setEnabled(false);
} else if (auth.getSelectedProfile() == null) {
this.welcomeText.setText(resourceBundle.getString("html.welcome.player.html"));
this.logOutButton.setEnabled(true);
} else {
this.welcomeText.setText(resourceBundle.getString("html.welcome.b") + auth.getSelectedProfile().getName() + "</b></html>");
this.logOutButton.setEnabled(true);
}
if (version == null)
this.versionText.setText(resourceBundle.getString("loading.versions"));
else if (version.isUpToDate())
this.versionText.setText(resourceBundle.getString("ready.to.play.minecraft") + version.getLatestVersion().getId());
else if (version.isInstalled())
this.versionText.setText(resourceBundle.getString("ready.to.update.play.minecraft") + version.getLatestVersion().getId());
else if (version.isOnRemote())
this.versionText.setText(resourceBundle.getString("ready.to.download.play.minecraft") + version.getLatestVersion().getId());
}
public void onVersionsRefreshed(VersionManager manager) {
checkState();
}
public boolean shouldReceiveEventsInUIThread() {
return true;
}
public Launcher getLauncher() {
return this.launcher;
}
}