package amidst.gui.version;
import java.awt.Container;
import java.awt.Font;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.SwingConstants;
import net.miginfocom.swing.MigLayout;
import amidst.Amidst;
import amidst.Options;
import amidst.Util;
import amidst.logging.Log;
import amidst.version.LatestVersionList;
import amidst.version.MinecraftProfile;
import amidst.version.VersionFactory;
public class VersionSelectWindow extends JFrame {
private static VersionSelectWindow instance;
private VersionFactory versionFactory = new VersionFactory();
public VersionSelectWindow() {
super("Profile Selector");
instance = this;
setIconImage(Amidst.icon);
Container contentPane = getContentPane();
contentPane.setLayout(new MigLayout());
LatestVersionList.get().load(true);
if (!Util.minecraftDirectory.exists() || !Util.minecraftDirectory.isDirectory()) {
Log.crash("Unable to find Minecraft directory at: " + Util.minecraftDirectory);
return;
}
final JLabel titleLabel = new JLabel("Please select a Minecraft version:", SwingConstants.CENTER);
titleLabel.setFont(new Font("arial", Font.BOLD, 16));
add(titleLabel, "h 20!,w :400:, growx, pushx, wrap");
final VersionSelectPanel versionSelector = new VersionSelectPanel();
(new Thread(new Runnable() {
@Override
public void run() {
versionFactory.scanForProfiles();
MinecraftProfile[] localVersions = versionFactory.getProfiles();
String selectedProfile = Options.instance.lastProfile.get();
if (localVersions == null) {
versionSelector.setEmptyMessage("Empty");
return;
}
for (int i = 0; i < localVersions.length; i++)
versionSelector.addVersion(new LocalVersionComponent(localVersions[i]));
versionSelector.addVersion(new RemoteVersionComponent());
if (selectedProfile != null)
versionSelector.select(selectedProfile);
pack();
try {
Thread.sleep(100);
} catch (InterruptedException ignored) { }
pack();
}
})).start();
versionSelector.setEmptyMessage("Scanning...");
JScrollPane scrollPane = new JScrollPane(versionSelector);
add(scrollPane, "grow, push, h 80::");
pack();
setLocation(200, 200);
setVisible(true);
addKeyListener(versionSelector);
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
dispose();
System.exit(0);
}
});
}
public static VersionSelectWindow get() {
return instance;
}
}