for (PackVersion pv : pack.getVersions()) {
if (!isServer || (isServer && pv.getMinecraftVersion().canCreateServer())) {
versions.add(pv);
}
}
PackVersion forUpdate = null;
for (PackVersion version : versions) {
if ((!version.isDev()) && (forUpdate == null)) {
forUpdate = version;
}
versionsDropDown.addItem(version);
}
if (isUpdate && forUpdate != null) {
versionsDropDown.setSelectedItem(forUpdate);
} else if (isReinstall) {
for (PackVersion version : versions) {
if (version.versionMatches(instance.getVersion())) {
versionsDropDown.setSelectedItem(version);
}
}
} else {
for (PackVersion version : versions) {
if (!version.isRecommended() || version.isDev()) {
continue;
}
versionsDropDown.setSelectedItem(version);
break;
}
}
versionsDropDown.setPreferredSize(new Dimension(200, 25));
middle.add(versionsDropDown, gbc);
if (!this.isServer) {
if (!isReinstall) {
gbc.gridx = 0;
gbc.gridy++;
gbc.anchor = GridBagConstraints.BASELINE_TRAILING;
installForLabel = new JLabel(Language.INSTANCE.localize("instance.installjustforme") + "? ");
middle.add(installForLabel, gbc);
gbc.gridx++;
gbc.anchor = GridBagConstraints.BASELINE_LEADING;
installForMe = new JCheckBox();
middle.add(installForMe, gbc);
}
}
// Bottom Panel Stuff
bottom = new JPanel();
bottom.setLayout(new FlowLayout());
install = new JButton(((isReinstall) ? (isUpdate ? Language.INSTANCE.localize("common.update") : Language
.INSTANCE.localize("common.reinstall")) : Language.INSTANCE.localize("common.install")));
install.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (!isReinstall && !isServer && App.settings.isInstance(instanceNameField.getText())) {
instance = App.settings.getInstanceByName(instanceNameField.getText());
if (instance.getPackName().equalsIgnoreCase(pack.getName())) {
int ret = JOptionPane.showConfirmDialog(App.settings.getParent(),
"<html><p align=\"center\">" + Language.INSTANCE.localize("common.error") +
"<br/><br/>" + Language.INSTANCE.localizeWithReplace("instance" + "" +
".alreadyinstance1", instanceNameField.getText() + "<br/><br/>") +
"</p></html>", Language.INSTANCE.localize("common.error"),
JOptionPane.ERROR_MESSAGE);
if (ret != JOptionPane.YES_OPTION) {
return;
}
isReinstall = true;
if (instance == null) {
return;
}
} else {
JOptionPane.showMessageDialog(App.settings.getParent(),
"<html><p align=\"center\">" + Language.INSTANCE.localize("common.error") +
"<br/><br/>" + Language.INSTANCE.localizeWithReplace("instance" + "" +
".alreadyinstance", instanceNameField.getText() + "<br/><br/>") +
"</p></html>", Language.INSTANCE.localize("common.error"),
JOptionPane.ERROR_MESSAGE);
return;
}
} else if (!isReinstall && !isServer && instanceNameField.getText().replaceAll("[^A-Za-z0-9]",
"").length() == 0) {
JOptionPane.showMessageDialog(App.settings.getParent(), "<html><p align=\"center\">" + Language
.INSTANCE.localize("common.error") + "<br/><br/>" + Language.INSTANCE.localizeWithReplace
("instance.invalidname", instanceNameField.getText()) +
"</p></html>", Language.INSTANCE.localize("common.error"),
JOptionPane.ERROR_MESSAGE);
return;
}
final PackVersion version = (PackVersion) versionsDropDown.getSelectedItem();
final JDialog dialog = new JDialog(App.settings.getParent(), ((isReinstall) ? Language.INSTANCE
.localize("common.reinstalling") : Language.INSTANCE.localize("common.installing")) + " " +
pack.getName() + " " + version.getVersion() + ((isServer) ? " " + Language.INSTANCE.localize
("common.server") : ""), ModalityType.DOCUMENT_MODAL);
dialog.setLocationRelativeTo(App.settings.getParent());
dialog.setSize(300, 100);
dialog.setResizable(false);
JPanel topPanel = new JPanel();
topPanel.setLayout(new BorderLayout());
final JLabel doing = new JLabel(Language.INSTANCE.localizeWithReplace("instance.startingprocess",
((isReinstall) ? Language.INSTANCE.localize("common.reinstall") : Language.INSTANCE.localize
("common.install"))));
doing.setHorizontalAlignment(JLabel.CENTER);
doing.setVerticalAlignment(JLabel.TOP);
topPanel.add(doing);
JPanel bottomPanel = new JPanel();
bottomPanel.setLayout(new BorderLayout());
progressBar = new JProgressBar(0, 100);
bottomPanel.add(progressBar, BorderLayout.NORTH);
progressBar.setIndeterminate(true);
subProgressBar = new JProgressBar(0, 100);
bottomPanel.add(subProgressBar, BorderLayout.SOUTH);
subProgressBar.setValue(0);
subProgressBar.setVisible(false);
dialog.add(topPanel, BorderLayout.CENTER);
dialog.add(bottomPanel, BorderLayout.SOUTH);
final InstanceInstaller instanceInstaller = new InstanceInstaller((isServer ? "" : instanceNameField
.getText()), pack, version, isReinstall, isServer) {
protected void done() {
Boolean success = false;
int type;
String text;
String title;
if (isCancelled()) {
type = JOptionPane.ERROR_MESSAGE;
text = pack.getName() + " " + version.getVersion() + " " + Language.INSTANCE.localize
("common.wasnt") + " " + ((isReinstall) ? Language.INSTANCE.localize("common" + "" +
".reinstalled") : Language.INSTANCE.localize("common.installed")) +
"<br/><br/>" + Language.INSTANCE.localize("instance" + ".checkerrorlogs");
title = pack.getName() + " " + version.getVersion() + " " + Language.INSTANCE.localize
("common.not") + " " + ((isReinstall) ? Language.INSTANCE.localize("common" + "" +
".reinstalled") : Language.INSTANCE.localize("common.installed"));
if (isReinstall) {
if (shouldCoruptInstance()) {
App.settings.setInstanceUnplayable(instance);
}
}
} else {
try {
success = get();
} catch (InterruptedException e) {
App.settings.logStackTrace(e);
} catch (ExecutionException e) {
App.settings.logStackTrace(e);
}
if (success) {
type = JOptionPane.INFORMATION_MESSAGE;
text = pack.getName() + " " + version.getVersion() + " " + Language.INSTANCE.localize
("common.hasbeen") + " " + ((isReinstall) ? Language.INSTANCE.localize
("common.reinstalled") : Language.INSTANCE.localize("common.installed")) +
"<br/><br/>" + ((isServer) ? Language.INSTANCE.localizeWithReplace("instance"
+ ".finditserver", "<br/><br/>" + this.getRootDirectory().getAbsolutePath())
: Language.INSTANCE.localize("instance.findit"));
title = pack.getName() + " " + version.getVersion() + " " + Language.INSTANCE
.localize("common.installed");
if (isReinstall) {
instance.setVersion(version.getVersion());
instance.setMinecraftVersion(version.getMinecraftVersion().getVersion());
instance.setModsInstalled(this.getModsInstalled());
instance.setJarOrder(this.getJarOrder());
instance.setMemory(this.getMemory());
instance.setPermgen(this.getPermGen());
instance.setIsNewLaunchMethod(!this.isLegacy());
instance.setLibrariesNeeded(this.getLibrariesNeeded());
instance.setMinecraftArguments(this.getMinecraftArguments());
instance.setExtraArguments(this.getExtraArguments());
instance.setMainClass(this.getMainClass());
instance.setAssets(version.getMinecraftVersion().getMojangVersion().getAssets());
if (version.isDev()) {
instance.setDevVersion();
if (version.getHash() != null) {
instance.setHash(version.getHash());
}
} else {
instance.setNotDevVersion();
}
if (!instance.isPlayable()) {
instance.setPlayable();
}
} else if (isServer) {
} else {
Instance newInstance = new Instance(instanceNameField.getText(), pack.getName(),
pack, installForMe.isSelected(), version.getVersion(),
version.getMinecraftVersion().getVersion(), this.getMemory(),
this.getPermGen(), this.getModsInstalled(), this.getJarOrder(),
this.getLibrariesNeeded(), this.getExtraArguments(),
this.getMinecraftArguments(), this.getMainClass(),
version.getMinecraftVersion().getMojangVersion().getAssets(),
version.isDev(), !version.getMinecraftVersion().isLegacy());
if (version.isDev() && (version.getHash() != null)) {
newInstance.setHash(version.getHash());
}
App.settings.getInstances().add(newInstance);
}
App.settings.saveInstances();
App.settings.reloadInstancesPanel();
if (pack.isLoggingEnabled() && App.settings.enableLogs() && !version.isDev()) {
if (isServer) {
pack.addServerInstall(version.getVersion());
} else if (isUpdate) {
pack.addUpdate(version.getVersion());
} else {
pack.addInstall(version.getVersion());
}
}
} else {
if (isReinstall) {
type = JOptionPane.ERROR_MESSAGE;
text = pack.getName() + " " + version.getVersion() + " " + Language.INSTANCE
.localize("common.wasnt") + " " + Language.INSTANCE.localize("common" + "" +
".reinstalled") + "<br/><br/>" + (this.shouldCoruptInstance() ? Language
.INSTANCE.localize("instance.nolongerplayable") : "") + "<br/><br/>" +
Language.INSTANCE.localize("instance.checkerrorlogs") + "!";
title = pack.getName() + " " + version.getVersion() + " " + Language.INSTANCE
.localize("common.not") + " " + Language.INSTANCE.localize("common" + "" +
".reinstalled");
if (this.shouldCoruptInstance()) {
App.settings.setInstanceUnplayable(instance);
}
} else {
// Install failed so delete the folder and clear Temp Dir
Utils.delete(this.getRootDirectory());
type = JOptionPane.ERROR_MESSAGE;
text = pack.getName() + " " + version.getVersion() + " " + Language.INSTANCE
.localize("common.wasnt") + " " + Language.INSTANCE.localize("common" + "" +
".installed") + "<br/><br/>" + Language.INSTANCE.localize("instance" + "" +
".checkerrorlogs") + "!";
title = pack.getName() + " " + version.getVersion() + " " + Language.INSTANCE
.localize("common.not") + " " + Language.INSTANCE.localize("common" + "" +
".installed");
}
}
}