package io.gitlab.jfronny.inceptum.windows.control; import imgui.ImGui; import imgui.flag.ImGuiTableFlags; import io.gitlab.jfronny.inceptum.Inceptum; import io.gitlab.jfronny.inceptum.InceptumGui; import io.gitlab.jfronny.inceptum.install.Steps; import io.gitlab.jfronny.inceptum.model.inceptum.InstanceMeta; import io.gitlab.jfronny.inceptum.util.InceptumLockReader; import io.gitlab.jfronny.inceptum.util.launch.ClientLauncher; import io.gitlab.jfronny.inceptum.util.ProcessUtils; import io.gitlab.jfronny.inceptum.util.Utils; import io.gitlab.jfronny.inceptum.windows.InstanceEditWindow; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.util.List; public class InstanceView { public static void draw(List paths) { if (ImGui.beginTable("Instances", 2, ImGuiTableFlags.SizingFixedFit | ImGuiTableFlags.Borders)) { for (Path path : paths) { if (InceptumLockReader.isSetupLocked(path)) { ImGui.tableNextColumn(); ImGui.text("Setting up"); ImGui.tableNextColumn(); ImGui.text("This instance is currently being set up"); continue; } if (!Files.exists(path.resolve("instance.json"))) { Inceptum.LOGGER.error("Invalid instance (doesn't contain instance.json): " + path); continue; } InstanceMeta instance; try { instance = Utils.loadObject(path.resolve("instance.json"), InstanceMeta.class); } catch (IOException e) { Inceptum.LOGGER.error("Could not load instance.json", e); continue; } ImGui.tableNextColumn(); boolean disabled = false; try { if (InceptumLockReader.isRunningLocked(path)) disabled = true; } catch (IOException e) { continue; } if (disabled) ImGui.beginDisabled(); if (ImGui.button(path.getFileName().toString())) { try { Steps.reDownload(path); } catch (IOException e) { e.printStackTrace(); } ClientLauncher.launch(path, instance); } ImGui.tableNextColumn(); if (ImGui.button("Edit##" + path)) InceptumGui.open(new InstanceEditWindow(path, instance)); if (disabled) ImGui.endDisabled(); } ImGui.endTable(); } } }