Search in sources :

Example 1 with Canvas

use of org.terasology.nui.Canvas in project Terasology by MovingBlocks.

the class CardLayoutTest method setup.

@BeforeEach
public void setup() {
    cardLayout = new CardLayout();
    widget1 = mock(UIWidget.class);
    widget2 = mock(UIWidget.class);
    widget3 = mock(UIWidget.class);
    canvas = mock(Canvas.class);
    // +-----------------------------------+  +---+  +-------+
    // |                                   |  |1x2|  |       |
    // |               1x1                 |  +---+  |       |
    // |                                   |         |  1x3  |
    // +-----------------------------------+         |       |
    // |       |
    // +-------+
    when(widget1.getPreferredContentSize(eq(canvas), any(Vector2i.class))).thenReturn(new Vector2i(50, 10));
    when(widget2.getPreferredContentSize(eq(canvas), any(Vector2i.class))).thenReturn(new Vector2i(5, 5));
    when(widget3.getPreferredContentSize(eq(canvas), any(Vector2i.class))).thenReturn(new Vector2i(10, 15));
    when(widget1.getId()).thenReturn("widget1");
    when(widget2.getId()).thenReturn("widget2");
    when(widget3.getId()).thenReturn("widget3");
    Vector2i availableSize = new Vector2i(200, 200);
    when(canvas.size()).thenReturn(availableSize);
    cardLayout.addWidget(widget1);
    cardLayout.addWidget(widget2);
    cardLayout.addWidget(widget3);
}
Also used : CardLayout(org.terasology.nui.layouts.CardLayout) Canvas(org.terasology.nui.Canvas) Vector2i(org.joml.Vector2i) UIWidget(org.terasology.nui.UIWidget) BeforeEach(org.junit.jupiter.api.BeforeEach)

Example 2 with Canvas

use of org.terasology.nui.Canvas in project Terasology by MovingBlocks.

the class ColumnLayoutTest method setup.

@BeforeEach
public void setup() {
    columnLayout = new ColumnLayout();
    itemAt1x1 = mock(UIWidget.class);
    itemAt2x1 = mock(UIWidget.class);
    itemAt3x1 = mock(UIWidget.class);
    itemAt1x2 = mock(UIWidget.class);
    itemAt2x2 = mock(UIWidget.class);
    itemAt3x2 = mock(UIWidget.class);
    canvas = mock(Canvas.class);
    // +-----------------------------------+  +---+  +-------+
    // |                                   |  |2x1|  |       |
    // |               1x1                 |  +---+  |  3x1  |
    // |                                   |         |       |
    // +-----------------------------------+         +-------+
    when(canvas.calculateRestrictedSize(eq(itemAt1x1), any(Vector2i.class))).thenReturn(new Vector2i(50, 10));
    when(canvas.calculateRestrictedSize(eq(itemAt2x1), any(Vector2i.class))).thenReturn(new Vector2i(5, 5));
    when(canvas.calculateRestrictedSize(eq(itemAt3x1), any(Vector2i.class))).thenReturn(new Vector2i(10, 10));
    // +--------------+  +---+  +--------------+
    // |              |  |2x2|  |              |
    // |     1x2      |  +---+  |      3x2     |
    // |              |         |              |
    // +--------------+         +--------------+
    when(canvas.calculateRestrictedSize(eq(itemAt1x2), any(Vector2i.class))).thenReturn(new Vector2i(20, 10));
    when(canvas.calculateRestrictedSize(eq(itemAt2x2), any(Vector2i.class))).thenReturn(new Vector2i(5, 5));
    when(canvas.calculateRestrictedSize(eq(itemAt3x2), any(Vector2i.class))).thenReturn(new Vector2i(20, 10));
    Vector2i availableSize = new Vector2i(CANVAS_WIDTH, CANVAS_HEIGHT);
    when(canvas.size()).thenReturn(availableSize);
    columnLayout.setColumns(3);
    columnLayout.addWidget(itemAt1x1);
    columnLayout.addWidget(itemAt2x1);
    columnLayout.addWidget(itemAt3x1);
    columnLayout.addWidget(itemAt1x2);
    columnLayout.addWidget(itemAt2x2);
    columnLayout.addWidget(itemAt3x2);
}
Also used : ColumnLayout(org.terasology.nui.layouts.ColumnLayout) Canvas(org.terasology.nui.Canvas) Vector2i(org.joml.Vector2i) UIWidget(org.terasology.nui.UIWidget) BeforeEach(org.junit.jupiter.api.BeforeEach)

Example 3 with Canvas

use of org.terasology.nui.Canvas in project Terasology by MovingBlocks.

the class GameDetailsScreen method setUpGameModules.

private void setUpGameModules() {
    gameModules.subscribeSelection((widget, moduleSelectionInfo) -> {
        if (moduleSelectionInfo == null) {
            return;
        }
        descriptionTitle.setText(translationSystem.translate("${engine:menu#game-details-module-description}"));
        description.setText(getModuleDescription(moduleSelectionInfo));
        gameWorlds.setSelection(null);
        blocks.setSelection(null);
    });
    gameModules.setItemRenderer(new AbstractItemRenderer<ModuleSelectionInfo>() {

        String getString(ModuleSelectionInfo value) {
            if (value.getMetadata() != null) {
                return value.getMetadata().getDisplayName().toString();
            } else if (value.isUnavailableVersion()) {
                return value.getUnavailableModuleName();
            }
            return "";
        }

        @Override
        public void draw(ModuleSelectionInfo value, Canvas canvas) {
            if (value.isStrictVersion()) {
                canvas.setMode("strict");
            } else if (value.isLatestVersion()) {
                canvas.setMode("latest");
            } else {
                canvas.setMode("invalid");
            }
            canvas.drawText(getString(value), canvas.getRegion());
        }

        @Override
        public Vector2i getPreferredSize(ModuleSelectionInfo value, Canvas canvas) {
            String text = getString(value);
            return new Vector2i(canvas.getCurrentStyle().getFont().getWidth(text), canvas.getCurrentStyle().getFont().getLineHeight());
        }
    });
    gameModules.subscribe(((widget, item) -> openModuleDetailsScreen()));
}
Also used : WorldGeneratorManager(org.terasology.engine.world.generator.internal.WorldGeneratorManager) In(org.terasology.engine.registry.In) Date(java.util.Date) LoggerFactory(org.slf4j.LoggerFactory) WorldInfo(org.terasology.engine.world.internal.WorldInfo) ModuleMetadata(org.terasology.gestalt.module.ModuleMetadata) Map(java.util.Map) AbstractItemRenderer(org.terasology.nui.itemRendering.AbstractItemRenderer) DependencyInfo(org.terasology.gestalt.module.dependencyresolution.DependencyInfo) Canvas(org.terasology.nui.Canvas) ReadOnlyBinding(org.terasology.nui.databinding.ReadOnlyBinding) DateFormat(java.text.DateFormat) TranslationSystem(org.terasology.engine.i18n.TranslationSystem) Binding(org.terasology.nui.databinding.Binding) SelectGameScreen(org.terasology.engine.rendering.nui.layers.mainMenu.SelectGameScreen) StringUtils(org.codehaus.plexus.util.StringUtils) Module(org.terasology.gestalt.module.Module) Collection(java.util.Collection) UIImage(org.terasology.nui.widgets.UIImage) DateTimeHelper(org.terasology.engine.utilities.time.DateTimeHelper) Collectors(java.util.stream.Collectors) SimpleUri(org.terasology.engine.core.SimpleUri) Objects(java.util.Objects) UIText(org.terasology.nui.widgets.UIText) List(java.util.List) Context(org.terasology.engine.context.Context) Stream(java.util.stream.Stream) Vector2i(org.joml.Vector2i) NameVersion(org.terasology.gestalt.naming.NameVersion) GameInfo(org.terasology.engine.rendering.nui.layers.mainMenu.savedGames.GameInfo) UIList(org.terasology.nui.widgets.UIList) MenuAnimationSystems(org.terasology.engine.rendering.nui.animation.MenuAnimationSystems) TerasologyConstants(org.terasology.engine.core.TerasologyConstants) ModuleManager(org.terasology.engine.core.module.ModuleManager) ModuleDetailsScreen(org.terasology.engine.rendering.nui.layers.mainMenu.moduleDetailsScreen.ModuleDetailsScreen) SimpleDateFormat(java.text.SimpleDateFormat) UITabBox(org.terasology.nui.widgets.UITabBox) ArrayList(java.util.ArrayList) WorldGeneratorInfo(org.terasology.engine.world.generator.internal.WorldGeneratorInfo) ResourceUrn(org.terasology.gestalt.assets.ResourceUrn) Lists(com.google.common.collect.Lists) UIImageSlideshow(org.terasology.nui.widgets.UIImageSlideshow) MessagePopup(org.terasology.engine.rendering.nui.layers.mainMenu.MessagePopup) Logger(org.slf4j.Logger) UILabel(org.terasology.nui.widgets.UILabel) Maps(com.google.common.collect.Maps) CoreScreenLayer(org.terasology.engine.rendering.nui.CoreScreenLayer) UIButton(org.terasology.nui.widgets.UIButton) Comparator(java.util.Comparator) Canvas(org.terasology.nui.Canvas) Vector2i(org.joml.Vector2i)

Example 4 with Canvas

use of org.terasology.nui.Canvas in project Terasology by MovingBlocks.

the class ModuleDetailsScreen method setUpModules.

private void setUpModules() {
    modules.subscribeSelection(((widget, item) -> {
        if (item != null) {
            dependencies.setList(getSortedDependencies(item));
            dependencies.setSelection(null);
            dependencies.select(0);
            this.updateOpenInBrowserButton();
        }
    }));
    modules.setItemRenderer(new StringTextRenderer<Module>() {

        @Override
        public String getString(Module value) {
            if (value != null) {
                return value.getMetadata().getDisplayName().toString();
            }
            return "";
        }

        @Override
        public void draw(Module value, Canvas canvas) {
            if (!validateModuleDependencies(value.getId())) {
                canvas.setMode(("invalid"));
            } else {
                canvas.setMode("available");
            }
            canvas.drawText(getString(value), canvas.getRegion());
        }

        @Override
        public Vector2i getPreferredSize(Module value, Canvas canvas) {
            String text = getString(value);
            return new Vector2i(canvas.getCurrentStyle().getFont().getWidth(text), canvas.getCurrentStyle().getFont().getLineHeight());
        }
    });
}
Also used : ModuleInstaller(org.terasology.engine.core.module.ModuleInstaller) Arrays(java.util.Arrays) In(org.terasology.engine.registry.In) Color(org.terasology.nui.Color) LoggerFactory(org.slf4j.LoggerFactory) ModuleMetadata(org.terasology.gestalt.module.ModuleMetadata) AbstractItemRenderer(org.terasology.nui.itemRendering.AbstractItemRenderer) DependencyInfo(org.terasology.gestalt.module.dependencyresolution.DependencyInfo) Canvas(org.terasology.nui.Canvas) ReadOnlyBinding(org.terasology.nui.databinding.ReadOnlyBinding) DateFormat(java.text.DateFormat) TranslationSystem(org.terasology.engine.i18n.TranslationSystem) StringTextRenderer(org.terasology.nui.itemRendering.StringTextRenderer) Binding(org.terasology.nui.databinding.Binding) StringUtils(org.codehaus.plexus.util.StringUtils) Module(org.terasology.gestalt.module.Module) Collection(java.util.Collection) WaitPopup(org.terasology.engine.rendering.nui.layers.mainMenu.WaitPopup) Set(java.util.Set) Version(org.terasology.gestalt.naming.Version) Collectors(java.util.stream.Collectors) DependencyResolver(org.terasology.gestalt.module.dependencyresolution.DependencyResolver) Objects(java.util.Objects) UIText(org.terasology.nui.widgets.UIText) List(java.util.List) Context(org.terasology.engine.context.Context) Stream(java.util.stream.Stream) Vector2i(org.joml.Vector2i) ExtraDataModuleExtension(org.terasology.engine.core.module.ExtraDataModuleExtension) UIList(org.terasology.nui.widgets.UIList) Name(org.terasology.gestalt.naming.Name) MenuAnimationSystems(org.terasology.engine.rendering.nui.animation.MenuAnimationSystems) ModuleManager(org.terasology.engine.core.module.ModuleManager) UIButtonWebBrowser(org.terasology.engine.rendering.nui.widgets.UIButtonWebBrowser) SimpleDateFormat(java.text.SimpleDateFormat) DownloadPopupProgressListener(org.terasology.engine.rendering.nui.layers.mainMenu.advancedGameSetupScreen.DownloadPopupProgressListener) DependencyResolutionFailedException(org.terasology.engine.core.module.DependencyResolutionFailedException) HashSet(java.util.HashSet) StandardModuleExtension(org.terasology.engine.core.module.StandardModuleExtension) ResourceUrn(org.terasology.gestalt.assets.ResourceUrn) ConfirmPopup(org.terasology.engine.rendering.nui.layers.mainMenu.ConfirmPopup) MessagePopup(org.terasology.engine.rendering.nui.layers.mainMenu.MessagePopup) Logger(org.slf4j.Logger) UILabel(org.terasology.nui.widgets.UILabel) CoreScreenLayer(org.terasology.engine.rendering.nui.CoreScreenLayer) UIButton(org.terasology.nui.widgets.UIButton) Comparator(java.util.Comparator) RemoteModuleExtension(org.terasology.engine.core.module.RemoteModuleExtension) Collections(java.util.Collections) Canvas(org.terasology.nui.Canvas) Vector2i(org.joml.Vector2i) Module(org.terasology.gestalt.module.Module)

Example 5 with Canvas

use of org.terasology.nui.Canvas in project Terasology by MovingBlocks.

the class ModuleDetailsScreen method setUpDependencies.

private void setUpDependencies() {
    dependencies.setList(Collections.emptyList());
    dependencies.setItemRenderer(new AbstractItemRenderer<DependencyInfo>() {

        private String getString(DependencyInfo value) {
            if (value != null) {
                return value.getId().toString();
            }
            return "";
        }

        @Override
        public void draw(DependencyInfo value, Canvas canvas) {
            Module module = moduleManager.getRegistry().getLatestModuleVersion(value.getId());
            if (module == null || !(value.versionPredicate().test(module.getVersion()))) {
                canvas.setMode("invalid");
            } else {
                canvas.setMode("available");
            }
            canvas.drawText(getString(value), canvas.getRegion());
        }

        @Override
        public Vector2i getPreferredSize(DependencyInfo value, Canvas canvas) {
            String text = getString(value);
            canvas.getCurrentStyle().setTextColor(Color.RED);
            return new Vector2i(canvas.getCurrentStyle().getFont().getWidth(text), canvas.getCurrentStyle().getFont().getLineHeight());
        }
    });
    dependencies.subscribe(((widget, item) -> {
        if (item != null) {
            modules.getList().stream().filter(m -> item.getId().equals(m.getId())).findFirst().ifPresent(m -> modules.setSelection(m));
        }
    }));
}
Also used : ModuleInstaller(org.terasology.engine.core.module.ModuleInstaller) Arrays(java.util.Arrays) In(org.terasology.engine.registry.In) Color(org.terasology.nui.Color) LoggerFactory(org.slf4j.LoggerFactory) ModuleMetadata(org.terasology.gestalt.module.ModuleMetadata) AbstractItemRenderer(org.terasology.nui.itemRendering.AbstractItemRenderer) DependencyInfo(org.terasology.gestalt.module.dependencyresolution.DependencyInfo) Canvas(org.terasology.nui.Canvas) ReadOnlyBinding(org.terasology.nui.databinding.ReadOnlyBinding) DateFormat(java.text.DateFormat) TranslationSystem(org.terasology.engine.i18n.TranslationSystem) StringTextRenderer(org.terasology.nui.itemRendering.StringTextRenderer) Binding(org.terasology.nui.databinding.Binding) StringUtils(org.codehaus.plexus.util.StringUtils) Module(org.terasology.gestalt.module.Module) Collection(java.util.Collection) WaitPopup(org.terasology.engine.rendering.nui.layers.mainMenu.WaitPopup) Set(java.util.Set) Version(org.terasology.gestalt.naming.Version) Collectors(java.util.stream.Collectors) DependencyResolver(org.terasology.gestalt.module.dependencyresolution.DependencyResolver) Objects(java.util.Objects) UIText(org.terasology.nui.widgets.UIText) List(java.util.List) Context(org.terasology.engine.context.Context) Stream(java.util.stream.Stream) Vector2i(org.joml.Vector2i) ExtraDataModuleExtension(org.terasology.engine.core.module.ExtraDataModuleExtension) UIList(org.terasology.nui.widgets.UIList) Name(org.terasology.gestalt.naming.Name) MenuAnimationSystems(org.terasology.engine.rendering.nui.animation.MenuAnimationSystems) ModuleManager(org.terasology.engine.core.module.ModuleManager) UIButtonWebBrowser(org.terasology.engine.rendering.nui.widgets.UIButtonWebBrowser) SimpleDateFormat(java.text.SimpleDateFormat) DownloadPopupProgressListener(org.terasology.engine.rendering.nui.layers.mainMenu.advancedGameSetupScreen.DownloadPopupProgressListener) DependencyResolutionFailedException(org.terasology.engine.core.module.DependencyResolutionFailedException) HashSet(java.util.HashSet) StandardModuleExtension(org.terasology.engine.core.module.StandardModuleExtension) ResourceUrn(org.terasology.gestalt.assets.ResourceUrn) ConfirmPopup(org.terasology.engine.rendering.nui.layers.mainMenu.ConfirmPopup) MessagePopup(org.terasology.engine.rendering.nui.layers.mainMenu.MessagePopup) Logger(org.slf4j.Logger) UILabel(org.terasology.nui.widgets.UILabel) CoreScreenLayer(org.terasology.engine.rendering.nui.CoreScreenLayer) UIButton(org.terasology.nui.widgets.UIButton) Comparator(java.util.Comparator) RemoteModuleExtension(org.terasology.engine.core.module.RemoteModuleExtension) Collections(java.util.Collections) Canvas(org.terasology.nui.Canvas) Vector2i(org.joml.Vector2i) Module(org.terasology.gestalt.module.Module) DependencyInfo(org.terasology.gestalt.module.dependencyresolution.DependencyInfo)

Aggregations

Canvas (org.terasology.nui.Canvas)11 Vector2i (org.joml.Vector2i)9 UIText (org.terasology.nui.widgets.UIText)6 Module (org.terasology.gestalt.module.Module)5 UIButton (org.terasology.nui.widgets.UIButton)5 UILabel (org.terasology.nui.widgets.UILabel)5 Collection (java.util.Collection)4 Comparator (java.util.Comparator)4 List (java.util.List)4 Objects (java.util.Objects)4 Collectors (java.util.stream.Collectors)4 StringUtils (org.codehaus.plexus.util.StringUtils)4 BeforeEach (org.junit.jupiter.api.BeforeEach)4 Logger (org.slf4j.Logger)4 LoggerFactory (org.slf4j.LoggerFactory)4 DateFormat (java.text.DateFormat)3 SimpleDateFormat (java.text.SimpleDateFormat)3 Set (java.util.Set)3 Stream (java.util.stream.Stream)3 Context (org.terasology.engine.context.Context)3