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

77 lines
2.4 KiB
Kotlin
Raw Normal View History

2019-05-16 15:26:14 +02:00
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
2019-05-16 15:26:14 +02:00
class GUIModel constructor(var data: Texture, img: Image) : VBox() {
2019-05-16 15:26:14 +02:00
private var image = ImageView()
private var label = Label()
private var contextMenu = ContextMenu()
private var exportItem = MenuItem("exportiern")
private var deleteItem = MenuItem("löschen")
2019-05-16 15:26:14 +02:00
private val gmc = find(GUIModelController::class)
2019-06-04 18:20:09 +02:00
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
}
2019-06-07 16:57:15 +02:00
gmc.previewSelectedAction(data)
gmc.setSelected(this)
2019-06-07 16:57:15 +02:00
}
2019-05-16 15:26:14 +02:00
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))
2019-05-16 15:26:14 +02:00
image.fitHeight = 128.0
image.fitWidth = 128.0
image.image = img
2019-06-04 18:20:09 +02:00
exportItem.setOnAction {
gmc.export(data)
}
deleteItem.setOnAction {
gmc.delete()
}
contextMenu.items.add(exportItem)
contextMenu.items.add(deleteItem)
2019-05-16 15:26:14 +02:00
}
}