TextureSync/client/src/main/kotlin/org/hso/texturesyncclient/model/GUIModel.kt

77 lines
2.4 KiB
Kotlin

package org.hso.texturesyncclient.model
import javafx.geometry.Insets
import javafx.geometry.Pos
import javafx.scene.control.ContextMenu
import javafx.scene.control.Label
import javafx.scene.control.MenuItem
import javafx.scene.image.Image
import javafx.scene.image.ImageView
import javafx.scene.layout.Background
import javafx.scene.layout.BackgroundFill
import javafx.scene.layout.CornerRadii
import javafx.scene.layout.VBox
import javafx.scene.paint.Paint
import org.hso.texturesyncclient.controller.RootController
import tornadofx.addClass
import tornadofx.find
import tornadofx.paddingTop
class GUIModel constructor(var data: Texture, img: Image) : VBox() {
private var image = ImageView()
private var label = Label()
private var contextMenu = ContextMenu()
private var exportItem = MenuItem("exportiern")
private var deleteItem = MenuItem("löschen")
private val gmc = find(GUIModelController::class)
init {
super.setPadding(Insets(5.0, 5.0, 5.0, 5.0))
super.getChildren().addAll(image, label)
super.setOnContextMenuRequested { p0 -> contextMenu.show(this@GUIModel, p0.screenX, p0.screenY) }
super.setOnMouseClicked {
if (gmc.isLastSelectedInitialized()) {
gmc.lastSelected.background = Background.EMPTY
this.background = Background(BackgroundFill(Paint.valueOf("#2b7bbb"), CornerRadii.EMPTY, Insets.EMPTY))
gmc.lastSelected = this
} else {
this.background = Background(BackgroundFill(Paint.valueOf("#2b7bbb"), CornerRadii.EMPTY, Insets.EMPTY))
gmc.lastSelected = this
}
gmc.previewSelectedAction(data)
gmc.setSelected(this)
}
label.addClass("metadata")
label.paddingTop = 5.0
label.prefWidth = 128.0
label.alignment = Pos.CENTER
label.text = if (data.name.length > 15) {
"${data.name.subSequence(0, 14)}.."
} else {
data.name
}
label.background = Background(BackgroundFill(Paint.valueOf("#3a3a3a"), CornerRadii.EMPTY, Insets.EMPTY))
image.fitHeight = 128.0
image.fitWidth = 128.0
image.image = img
exportItem.setOnAction {
gmc.export(data)
}
deleteItem.setOnAction {
gmc.delete()
}
contextMenu.items.add(exportItem)
contextMenu.items.add(deleteItem)
}
}