From 94e323f75c17e297c33fba1d3afb5c47ae66a8ad Mon Sep 17 00:00:00 2001 From: shedaniel Date: Sun, 28 Aug 2022 18:50:24 +0900 Subject: Separate EntryListWidget and FavoritesListWidget more --- .../view/LegacyWrapperViewSearchBuilder.java | 145 --------------------- .../impl/client/view/ViewSearchBuilderImpl.java | 13 ++ .../shedaniel/rei/impl/client/view/ViewsImpl.java | 6 + 3 files changed, 19 insertions(+), 145 deletions(-) delete mode 100644 runtime-engine/views/src/main/java/me/shedaniel/rei/impl/client/view/LegacyWrapperViewSearchBuilder.java (limited to 'runtime-engine/views/src/main/java/me') diff --git a/runtime-engine/views/src/main/java/me/shedaniel/rei/impl/client/view/LegacyWrapperViewSearchBuilder.java b/runtime-engine/views/src/main/java/me/shedaniel/rei/impl/client/view/LegacyWrapperViewSearchBuilder.java deleted file mode 100644 index 406787e9f..000000000 --- a/runtime-engine/views/src/main/java/me/shedaniel/rei/impl/client/view/LegacyWrapperViewSearchBuilder.java +++ /dev/null @@ -1,145 +0,0 @@ -/* - * This file is licensed under the MIT License, part of Roughly Enough Items. - * Copyright (c) 2018, 2019, 2020, 2021, 2022 shedaniel - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package me.shedaniel.rei.impl.client.view; - -import me.shedaniel.rei.api.client.registry.display.DisplayCategory; -import me.shedaniel.rei.api.client.view.ViewSearchBuilder; -import me.shedaniel.rei.api.common.category.CategoryIdentifier; -import me.shedaniel.rei.api.common.entry.EntryStack; -import me.shedaniel.rei.impl.display.DisplaySpec; -import org.jetbrains.annotations.Nullable; - -import java.util.*; - -public final class LegacyWrapperViewSearchBuilder extends AbstractViewSearchBuilder { - private final Map, List> map; - @Nullable - private EntryStack inputNotice; - @Nullable - private EntryStack outputNotice; - @Nullable - private CategoryIdentifier preferredOpenedCategory = null; - - public LegacyWrapperViewSearchBuilder(Map, List> map) { - this.map = map; - } - - @Override - public ViewSearchBuilder addCategory(CategoryIdentifier category) { - return this; - } - - @Override - public ViewSearchBuilder addCategories(Collection> categories) { - return this; - } - - @Override - public Set> getCategories() { - return Collections.emptySet(); - } - - @Override - public ViewSearchBuilder filterCategory(CategoryIdentifier category) { - return this; - } - - @Override - public ViewSearchBuilder filterCategories(Collection> categories) { - return this; - } - - @Override - public Set> getFilteringCategories() { - return Collections.emptySet(); - } - - @Override - public ViewSearchBuilder addRecipesFor(EntryStack stack) { - return this; - } - - @Override - public List> getRecipesFor() { - return inputNotice == null ? Collections.emptyList() : Collections.singletonList(outputNotice); - } - - @Override - public ViewSearchBuilder addUsagesFor(EntryStack stack) { - return this; - } - - @Override - public List> getUsagesFor() { - return inputNotice == null ? Collections.emptyList() : Collections.singletonList(inputNotice); - } - - @Override - public ViewSearchBuilder setPreferredOpenedCategory(@Nullable CategoryIdentifier category) { - this.preferredOpenedCategory = category; - return this; - } - - @Override - @Nullable - public CategoryIdentifier getPreferredOpenedCategory() { - return this.preferredOpenedCategory; - } - - public LegacyWrapperViewSearchBuilder addInputNotice(@Nullable EntryStack stack) { - this.inputNotice = stack; - return this; - } - - public LegacyWrapperViewSearchBuilder addOutputNotice(@Nullable EntryStack stack) { - this.outputNotice = stack; - return this; - } - - @Override - public Map, List> buildMapInternal() { - fillPreferredOpenedCategory(); - return this.map; - } - - @Override - public boolean isMergingDisplays() { - return true; - } - - @Override - public ViewSearchBuilder mergingDisplays(boolean mergingDisplays) { - return this; - } - - @Override - public boolean isProcessingVisibilityHandlers() { - return false; - } - - @Override - public ViewSearchBuilder processingVisibilityHandlers(boolean processingVisibilityHandlers) { - return this; - } -} diff --git a/runtime-engine/views/src/main/java/me/shedaniel/rei/impl/client/view/ViewSearchBuilderImpl.java b/runtime-engine/views/src/main/java/me/shedaniel/rei/impl/client/view/ViewSearchBuilderImpl.java index 354ac7e47..0d8640ac5 100644 --- a/runtime-engine/views/src/main/java/me/shedaniel/rei/impl/client/view/ViewSearchBuilderImpl.java +++ b/runtime-engine/views/src/main/java/me/shedaniel/rei/impl/client/view/ViewSearchBuilderImpl.java @@ -27,6 +27,7 @@ import com.google.common.base.Suppliers; import me.shedaniel.rei.api.client.registry.display.DisplayCategory; import me.shedaniel.rei.api.client.view.ViewSearchBuilder; import me.shedaniel.rei.api.common.category.CategoryIdentifier; +import me.shedaniel.rei.api.common.display.Display; import me.shedaniel.rei.api.common.entry.EntryStack; import me.shedaniel.rei.impl.display.DisplaySpec; import org.jetbrains.annotations.Nullable; @@ -39,6 +40,7 @@ public final class ViewSearchBuilderImpl extends AbstractViewSearchBuilder { private final Set> categories = new HashSet<>(); private final List> recipesFor = new ArrayList<>(); private final List> usagesFor = new ArrayList<>(); + private final List additionalDisplays = new ArrayList<>(); @Nullable private CategoryIdentifier preferredOpenedCategory = null; private boolean mergeDisplays = true; @@ -140,4 +142,15 @@ public final class ViewSearchBuilderImpl extends AbstractViewSearchBuilder { this.processVisibilityHandlers = processingVisibilityHandlers; return this; } + + @Override + public ViewSearchBuilder addDisplays(Collection displays) { + this.additionalDisplays.addAll(displays); + return this; + } + + @Override + public List getAdditionalDisplays() { + return Collections.unmodifiableList(additionalDisplays); + } } diff --git a/runtime-engine/views/src/main/java/me/shedaniel/rei/impl/client/view/ViewsImpl.java b/runtime-engine/views/src/main/java/me/shedaniel/rei/impl/client/view/ViewsImpl.java index 3483b1ee3..a2400eb32 100644 --- a/runtime-engine/views/src/main/java/me/shedaniel/rei/impl/client/view/ViewsImpl.java +++ b/runtime-engine/views/src/main/java/me/shedaniel/rei/impl/client/view/ViewsImpl.java @@ -211,6 +211,12 @@ public class ViewsImpl implements Views { generateLiveDisplays(displayRegistry, wrapForError(generator), builder, displayConsumer); } + for (Display display : builder.getAdditionalDisplays()) { + if (!processingVisibilityHandlers || displayRegistry.isDisplayVisible(display)) { + displayConsumer.accept(display); + } + } + Map, List> resultSpeced = (Map, List>) (Map) new LinkedHashMap<>(result); // optimize displays if (builder.isMergingDisplays() && ConfigObject.getInstance().doMergeDisplayUnderOne()) { -- cgit