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 javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ResourceBundle;
public class PlayButtonPanel extends JPanel
implements RefreshedProfilesListener, RefreshedVersionsListener {
private final ResourceBundle resourceBundle = LocaleHelper.getMessages();
private final Launcher launcher;
private final JButton playButton = new JButton(resourceBundle.getString("play"));
public PlayButtonPanel(Launcher launcher) {
this.launcher = launcher;
launcher.getProfileManager().addRefreshedProfilesListener(this);
checkState();
createInterface();
this.playButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
PlayButtonPanel.this.getLauncher().getVersionManager().getExecutorService().submit(new Runnable() {
public void run() {
PlayButtonPanel.this.getLauncher().getGameLauncher().playGame();
}
});
}
});
}
protected void createInterface() {
setLayout(new GridBagLayout());
GridBagConstraints constraints = new GridBagConstraints();
constraints.fill = 1;
constraints.weightx = 1.0D;
constraints.weighty = 1.0D;
constraints.gridy = 0;
constraints.gridx = 0;
add(this.playButton, constraints);
this.playButton.setFont(this.playButton.getFont().deriveFont(1, this.playButton.getFont().getSize() + 2));
}
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());
if ((auth == null) || (!auth.isLoggedIn()) || (this.launcher.getVersionManager().getVersions(profile.getVersionFilter()).isEmpty())) {
this.playButton.setEnabled(false);
this.playButton.setText(resourceBundle.getString("play"));
} else if (auth.getSelectedProfile() == null) {
this.playButton.setEnabled(true);
this.playButton.setText(resourceBundle.getString("play.demo"));
} else if (auth.canPlayOnline()) {
this.playButton.setEnabled(true);
this.playButton.setText(resourceBundle.getString("play"));
} else {
this.playButton.setEnabled(true);
this.playButton.setText(resourceBundle.getString("play.offline"));
}
if (this.launcher.getGameLauncher().isWorking())
this.playButton.setEnabled(false);
}
public void onVersionsRefreshed(VersionManager manager) {
checkState();
}
public boolean shouldReceiveEventsInUIThread() {
return true;
}
public Launcher getLauncher() {
return this.launcher;
}
}