aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at/hannibal2/skyhanni/utils/guide/GuideTablePage.kt
blob: a0dc51c8be96898697bf0fe325676ef39c20da01 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package at.hannibal2.skyhanni.utils.guide

import at.hannibal2.skyhanni.utils.CollectionUtils.tableStretchXPadding
import at.hannibal2.skyhanni.utils.CollectionUtils.tableStretchYPadding
import at.hannibal2.skyhanni.utils.RenderUtils.HorizontalAlignment
import at.hannibal2.skyhanni.utils.renderables.Renderable

abstract class GuideTablePage(
    val sizeX: Int,
    val sizeY: Int,
    paddingX: Int = 0,
    paddingY: Int = 0,
    val footerSpacing: Int = 2
) : GuideRenderablePage(paddingX, paddingY) {

    fun update(
        content: List<List<Renderable>>,
        footer: List<Renderable> = emptyList()
    ) {
        val ySpace = (content + listOf(footer)).tableStretchYPadding(sizeY - paddingY * 2)
        renderable =
            Renderable.verticalContainer(
                listOf(
                    Renderable.table(
                        content,
                        xPadding = content.tableStretchXPadding(sizeX - paddingX * 2),
                        yPadding = ySpace
                    ),
                    Renderable.horizontalContainer(footer, footerSpacing, horizontalAlign = HorizontalAlignment.CENTER)
                ),
                spacing = ySpace
            )
    }
}