2019-05-16 15:26:14 +02:00
package org.hso.texturesyncclient.model
2019-06-03 15:29:01 +02:00
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
2019-06-13 21:22:42 +02:00
import org.hso.texturesyncclient.controller.RootController
2019-06-12 21:05:40 +02:00
import tornadofx.addClass
import tornadofx.find
import tornadofx.paddingTop
2019-05-16 15:26:14 +02:00
2019-06-12 21:05:40 +02:00
class GUIModel constructor ( var data : Texture , img : Image ) : VBox ( ) {
2019-05-16 15:26:14 +02:00
2019-06-03 15:29:01 +02:00
private var image = ImageView ( )
private var label = Label ( )
private var contextMenu = ContextMenu ( )
2019-06-07 13:48:42 +02:00
private var exportItem = MenuItem ( " exportiern " )
private var deleteItem = MenuItem ( " löschen " )
2019-05-16 15:26:14 +02:00
2019-06-12 21:05:40 +02:00
private val gmc = find ( GUIModelController :: class )
2019-06-04 18:20:09 +02:00
2019-06-03 15:29:01 +02:00
init {
2019-06-08 12:25:20 +02:00
super . setPadding ( Insets ( 5.0 , 5.0 , 5.0 , 5.0 ) )
2019-06-03 15:29:01 +02:00
super . getChildren ( ) . addAll ( image , label )
super . setOnContextMenuRequested { p0 -> contextMenu . show ( this @GUIModel , p0 . screenX , p0 . screenY ) }
2019-06-12 21:05:40 +02:00
super . setOnMouseClicked {
2019-06-08 12:25:20 +02:00
if ( gmc . isLastSelectedInitialized ( ) ) {
gmc . lastSelected . background = Background . EMPTY
2019-06-08 13:25:55 +02:00
this . background = Background ( BackgroundFill ( Paint . valueOf ( " #2b7bbb " ) , CornerRadii . EMPTY , Insets . EMPTY ) )
2019-06-08 12:25:20 +02:00
gmc . lastSelected = this
} else {
2019-06-08 13:25:55 +02:00
this . background = Background ( BackgroundFill ( Paint . valueOf ( " #2b7bbb " ) , CornerRadii . EMPTY , Insets . EMPTY ) )
2019-06-08 12:25:20 +02:00
gmc . lastSelected = this
}
2019-06-07 16:57:15 +02:00
gmc . previewSelectedAction ( data )
2019-06-10 14:05:56 +02:00
gmc . setSelected ( this )
2019-06-07 16:57:15 +02:00
}
2019-05-16 15:26:14 +02:00
2019-06-12 21:05:40 +02:00
label . addClass ( " metadata " )
2019-06-03 15:29:01 +02:00
label . paddingTop = 5.0
label . prefWidth = 128.0
label . alignment = Pos . CENTER
2019-06-12 21:05:40 +02:00
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
2019-06-03 15:29:01 +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 )
}
2019-06-05 22:33:37 +02:00
deleteItem . setOnAction {
2019-06-13 21:22:42 +02:00
gmc . delete ( )
2019-06-05 22:33:37 +02:00
}
2019-06-03 15:29:01 +02:00
contextMenu . items . add ( exportItem )
2019-06-05 22:33:37 +02:00
contextMenu . items . add ( deleteItem )
2019-05-16 15:26:14 +02:00
}
}