Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -3,20 +3,21 @@
import net.vulkanmod.config.api.VkModSettingsEntryBuilder;
import net.vulkanmod.config.gui.OptionBlock;

import java.util.LinkedHashMap;
import java.util.Map;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Supplier;

public class VkPageOptionsBuilder {
private final VkModSettingsEntryBuilder parent;
private final Map<String, VkOptionsBuilder> optionBlockBuilders = new LinkedHashMap<>();
private final List<Supplier<OptionBlock>> optionBlockSuppliers = new ArrayList<>();

public VkPageOptionsBuilder(VkModSettingsEntryBuilder parent) {
this.parent = parent;
}

public VkOptionsBuilder withOptionBlock(String name) {
VkOptionsBuilder builder = new VkOptionsBuilder(this);
optionBlockBuilders.put(name, builder);
optionBlockSuppliers.add(() -> new OptionBlock(name, builder.build()));
return builder;
}

Expand All @@ -25,13 +26,10 @@ public VkModSettingsEntryBuilder finish() {
}

public OptionBlock[] build() {
final OptionBlock[] blocks = new OptionBlock[optionBlockBuilders.size()];
final OptionBlock[] blocks = new OptionBlock[optionBlockSuppliers.size()];
int i = 0;
for (Map.Entry<String, VkOptionsBuilder> entry : optionBlockBuilders.entrySet()) {
blocks[i] = new OptionBlock(
entry.getKey(),
entry.getValue().build()
);
for (Supplier<OptionBlock> optionBlockSupplier : optionBlockSuppliers) {
blocks[i] = optionBlockSupplier.get();
i++;
}
return blocks;
Expand Down
16 changes: 6 additions & 10 deletions src/main/java/net/vulkanmod/config/api/page/VkPagesBuilder.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,26 +4,22 @@
import net.vulkanmod.config.option.OptionPage;

import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Supplier;

public class VkPagesBuilder {
private final Map<String, VkPageOptionsBuilder> pageBuilders = new LinkedHashMap<>();
private final List<Supplier<OptionPage>> pageSuppliers = new ArrayList<>();

public VkPageOptionsBuilder withPage(String name, VkModSettingsEntryBuilder parent) {
VkPageOptionsBuilder builder = new VkPageOptionsBuilder(parent);
pageBuilders.put(name, builder);
pageSuppliers.add(() -> new OptionPage(name, builder.build()));
return builder;
}

public List<OptionPage> build() {
final List<OptionPage> pages = new ArrayList<>();
for (Map.Entry<String, VkPageOptionsBuilder> entry : pageBuilders.entrySet()) {
pages.add(new OptionPage(
entry.getKey(),
entry.getValue().build()
));
final List<OptionPage> pages = new ArrayList<>(pageSuppliers.size());
for (Supplier<OptionPage> pageSupplier : pageSuppliers) {
pages.add(pageSupplier.get());
}
return pages;
}
Expand Down
Loading