package es.usj.svit.graphics import java.awt.Color import java.awt.Dimension import java.awt.Font import java.awt.Graphics import javax.swing.JPanel class HullComponent : JPanel() { private val hulls = mutableMapOf() private val allSteps = mutableListOf() private val hWidth = 40 private val hHeight = 30 private val hPositionX = 60 private val hPositionY = height / 2 + hHeight / 2 fun add(position: Int, steps: Int) { hulls[position] = steps allSteps.add(steps) repaint() } override fun paintComponent(g: Graphics) { super.paintComponent(g) var i = 0 for (hull in hulls) { g.color = Color( 255 * hull.value / allSteps.max(), 0, (255 * (allSteps.max() - hull.value)) / allSteps.max() ) g.fillRect(if (i == 0) 8 else hPositionX * i + 8, hPositionY, hWidth, hHeight) g.color = Color.BLACK g.drawRect(if (i == 0) 8 else hPositionX * i + 8, hPositionY, hWidth, hHeight) g.color = Color.WHITE g.font = g.font.deriveFont(Font.BOLD) g.drawString("H${hull.key}", (if (i == 0) 8 else hPositionX * i + 8) + hWidth / 4, hPositionY + hWidth / 2) g.color = Color.BLACK g.font = g.font.deriveFont(Font.PLAIN) g.drawString("(v. %4d)".format(hull.value), hPositionX * i + hWidth / 8, hPositionY + hWidth + 4) ++i } } override fun getPreferredSize(): Dimension { return Dimension(700, hPositionY + hHeight + 8 * 3) } }