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);
}
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);
}
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()));
}
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());
}
});
}
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));
}
}));
}
Aggregations