Inceptum/src/main/java/io/gitlab/jfronny/inceptum/frontend/gui/NewInstanceWindow.java

74 lines
3.1 KiB
Java
Raw Normal View History

package io.gitlab.jfronny.inceptum.frontend.gui;
2021-10-27 22:00:08 +02:00
2022-01-18 19:22:26 +01:00
import imgui.ImGui;
import imgui.type.ImString;
import io.gitlab.jfronny.inceptum.Inceptum;
2021-10-30 22:05:24 +02:00
import io.gitlab.jfronny.inceptum.InceptumGui;
2022-01-18 19:22:26 +01:00
import io.gitlab.jfronny.inceptum.frontend.cli.commands.GitCommand;
import io.gitlab.jfronny.inceptum.model.inceptum.install.SetupStepInfo;
import io.gitlab.jfronny.inceptum.util.Utils;
import io.gitlab.jfronny.inceptum.frontend.gui.control.InstanceManageControls;
2022-01-18 19:22:26 +01:00
import org.eclipse.jgit.api.errors.GitAPIException;
2021-10-27 22:00:08 +02:00
import java.io.IOException;
2022-01-18 19:22:26 +01:00
import java.net.URISyntaxException;
2021-10-30 19:26:59 +02:00
import java.util.concurrent.atomic.AtomicReference;
2021-10-27 22:00:08 +02:00
public class NewInstanceWindow extends Window {
2022-01-18 19:22:26 +01:00
private final InstanceManageControls imc = new InstanceManageControls(null);
private final ImString inceptumRepo = new ImString(InceptumGui.INPUT_FIELD_LENGTH);
private final ImString inceptumName = new ImString(InceptumGui.INPUT_FIELD_LENGTH);
2021-10-27 22:00:08 +02:00
public NewInstanceWindow() {
super("New Instance");
}
@Override
public void draw() {
2022-01-18 19:22:26 +01:00
if (ImGui.beginTabBar("NewInstanceBar")) {
if (ImGui.beginTabItem("New")) {
imc.snapshotsBox();
imc.versionBox(ver -> {});
imc.nameBox("OK", name -> {
try {
InceptumGui.open(new InstanceCreateProcessWindow(new SetupStepInfo(imc.getVersionInfo(),
imc.getLoaderInfo(),
name,
new AtomicReference<>("Initializing"))));
} catch (IOException e) {
Utils.LOGGER.error("Could not initialize instance creation", e);
}
close();
});
ImGui.endTabItem();
2021-10-27 22:00:08 +02:00
}
2022-01-18 19:22:26 +01:00
if (ImGui.beginTabItem("Inceptum")) {
if (ImGui.inputTextWithHint("URL", "Repo to download", inceptumRepo) && (inceptumName.isEmpty() || inceptumName.get().isEmpty())) {
try {
inceptumName.set(GitCommand.CloneCommand.getName(inceptumRepo.get()));
} catch (URISyntaxException ignored) {
}
}
ImGui.inputTextWithHint("Name", "Name of the new instance", inceptumName);
if (ImGui.button("OK")) {
close();
try {
GitCommand.CloneCommand.clone(inceptumRepo.get(), inceptumName.get());
} catch (GitAPIException | IOException e) {
Inceptum.showError("Could not clone instance", e);
}
}
ImGui.endTabItem();
}
if (ImGui.beginTabItem("CurseForge")) {
ImGui.text("Importing CurseForge packs is not yet implemented");
ImGui.endTabItem();
}
if (ImGui.beginTabItem("Modrinth")) {
ImGui.text("Importing Modrinth packs is not yet implemented");
ImGui.endTabItem();
}
ImGui.endTabBar();
}
2021-10-27 22:00:08 +02:00
}
}