Controller and GUIModel work

* added all needed parts to the GUIModel
* started work on the "root" Controller
This commit is contained in:
Jannik 2019-06-03 15:29:01 +02:00
parent 7f8277415e
commit 35aa0409da
Signed by: Seil0
GPG Key ID: E8459F3723C52C24
6 changed files with 84 additions and 28 deletions

View File

@ -1,10 +1,13 @@
package org.hso.texturesyncclient.app
import org.hso.texturesyncclient.controller.Controller
import org.hso.texturesyncclient.view.importView.ImportView
import org.hso.texturesyncclient.view.mainView.MainView
import org.hso.texturesyncclient.view.startupView.StartupView
import tornadofx.App
class Main: App(StartupView::class){
class Main: App(MainView::class){
val controller = Controller()
}

View File

@ -1,7 +1,26 @@
package org.hso.texturesyncclient.controller
class Controller {
import javafx.scene.image.Image
import org.hso.texturesyncclient.model.GUIModel
import org.hso.texturesyncclient.view.mainView.MainViewController
import tornadofx.Controller
class Controller : Controller() {
private val mvc: MainViewController by inject()
//private val mvc: = MainViewController()
//private val mvc: = MainViewController()
init {
var test1 = GUIModel() // TODO get image from server with get_texture_preview
test1.setImage(Image("textures/sample_texture_1.jpg"))
test1.setText("Texture 1")
mvc.addElement(test1)
var test2 = GUIModel()
test2.setImage(Image("textures/sample_texture_2.jpg"))
test2.setText("Texture 2")
mvc.addElement(test2)
}
}

View File

@ -1,14 +1,53 @@
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 tornadofx.*
class GUIModel : View("GUIModel"){
class GUIModel constructor(data: Texture, img: Image) : VBox(){
var data = DataModel()
private var image = ImageView()
private var label = Label()
private var contextMenu = ContextMenu()
private var exportItem = MenuItem("exportiern")
init {
super.getChildren().addAll(image, label)
super.setOnContextMenuRequested { p0 -> contextMenu.show(this@GUIModel, p0.screenX, p0.screenY) }
override val root = vbox() {
label.paddingTop = 5.0
label.prefWidth = 128.0
label.alignment = Pos.CENTER
label.text = data.name
label.background = Background(BackgroundFill(Paint.valueOf("#FFFF2b"), CornerRadii.EMPTY, Insets.EMPTY))
image.fitHeight = 128.0
image.fitWidth = 128.0
image.image = img
contextMenu.items.add(exportItem)
exportItem.setOnAction {
println("I bims 1 export: ${label.text}")
println(data.name)
}
}
fun setText(text: String) {
label.text = text
}
fun setImage(img: Image) {
image.image = img
}
}

View File

@ -1,8 +1,6 @@
package org.hso.texturesyncclient.view.mainView
import com.jfoenix.controls.JFXButton
import javafx.geometry.Insets
import javafx.scene.control.TextField
import javafx.scene.layout.Background
import javafx.scene.layout.BackgroundFill
import javafx.scene.layout.CornerRadii
@ -11,22 +9,15 @@ import tornadofx.*
class FolderView : View("FolderView"){
val btn1 = JFXButton("Button 1")
val btn2 = JFXButton("Button 2")
override val root = flowpane {
hgap = 5.0
vgap = 5.0
hgap = 10.0
vgap = 10.0
paddingAll = 5.0
prefWidth = 750.0
background = Background(BackgroundFill(Paint.valueOf("#cfcfcf"), CornerRadii.EMPTY, Insets.EMPTY))
add(btn1)
add(btn2)
style {
btn1.style = "-fx-button-type: RAISED; -fx-background-color: #3c3f41; -fx-text-fill: #2b7bbb;"
btn2.style = "-fx-button-type: RAISED; -fx-background-color: #3c3f41; -fx-text-fill: #2b7bbb;"
}
}
}

View File

@ -23,17 +23,11 @@ class MainView : View() {
}
// actions
folderView.btn1.setOnAction {
mvc.setPreview3DTexture(Image("textures/sample_texture_1.jpg"))
mvc.setMeta("texture 1", "8MP", "Quelle: wikipedia")
mvc.setTags(observableList("Stein", "Rot", "super"))
}
folderView.btn2.setOnAction {
mvc.setPreview3DTexture(Image("textures/sample_texture_2.jpg"))
mvc.setMeta("texture 2", "300 x 400", "Quelle: Internet")
mvc.setTags(observableList("Reality", "is", "an", "illusion"))
}
// folderView.btn1.setOnAction {
// mvc.setPreview3DTexture(Image("textures/sample_texture_1.jpg"))
// mvc.setMeta("texture 1", "8MP", "Quelle: wikipedia")
// mvc.setTags(observableList("Stein", "Rot", "super"))
// }
detailView.cvTags.chips.addListener { change: ListChangeListener.Change<out String>? ->
mvc.updateTags()

View File

@ -2,13 +2,16 @@ package org.hso.texturesyncclient.view.mainView
import javafx.collections.ObservableList
import javafx.scene.image.Image
import org.hso.texturesyncclient.model.GUIModel
import tornadofx.Controller
import tornadofx.add
class MainViewController : Controller() {
private val mv = find(MainView::class)
// FolderView elements
private val folderView = mv.folderView.root
// DetailView elements
private val preview = mv.detailView.preview
@ -16,6 +19,13 @@ class MainViewController : Controller() {
private val cvTags = mv.detailView.cvTags
// FolderView functions
fun addElement(element: GUIModel) {
folderView.add(element)
}
// DetailView functions
fun setPreview3DTexture(img: Image) {
preview.setTexture(img)
}