77 lines
2.4 KiB
Kotlin
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)
|
|
}
|
|
|
|
} |