From 0c93c0fedb5930cf02c77874a31beb2decff6d6a Mon Sep 17 00:00:00 2001 From: Seil0 Date: Mon, 3 Jun 2019 17:33:23 +0200 Subject: [PATCH] ImportView UI finished --- .../org/hso/texturesyncclient/app/Main.kt | 4 +- .../controller/Controller.kt | 14 ++++- .../view/importView/ImportView.kt | 59 +++++++++++++------ .../view/importView/ImportViewController.kt | 23 ++++++-- 4 files changed, 73 insertions(+), 27 deletions(-) diff --git a/client/src/main/kotlin/org/hso/texturesyncclient/app/Main.kt b/client/src/main/kotlin/org/hso/texturesyncclient/app/Main.kt index f4a42da..9820e52 100644 --- a/client/src/main/kotlin/org/hso/texturesyncclient/app/Main.kt +++ b/client/src/main/kotlin/org/hso/texturesyncclient/app/Main.kt @@ -1,6 +1,6 @@ package org.hso.texturesyncclient.app -import org.hso.texturesyncclient.controller.Controller +import org.hso.texturesyncclient.controller.RootController import org.hso.texturesyncclient.view.importView.ImportView import org.hso.texturesyncclient.view.mainView.MainView import org.hso.texturesyncclient.view.startupView.StartupView @@ -8,6 +8,6 @@ import tornadofx.App class Main: App(ImportView::class){ - //val controller = Controller() + //val controller = RootController() } \ No newline at end of file diff --git a/client/src/main/kotlin/org/hso/texturesyncclient/controller/Controller.kt b/client/src/main/kotlin/org/hso/texturesyncclient/controller/Controller.kt index 7cebbfb..8c5fd2a 100644 --- a/client/src/main/kotlin/org/hso/texturesyncclient/controller/Controller.kt +++ b/client/src/main/kotlin/org/hso/texturesyncclient/controller/Controller.kt @@ -1,5 +1,6 @@ package org.hso.texturesyncclient.controller +import javafx.collections.ObservableList import org.hso.texturesyncclient.controller.net.Connection import org.hso.texturesyncclient.model.GUIModel import org.hso.texturesyncclient.model.Texture @@ -9,13 +10,14 @@ import org.hso.texturesyncclient.view.startupView.StartupViewController import tornadofx.Controller import java.net.InetAddress -class Controller : Controller() { +class RootController : Controller() { private val mvc: MainViewController by inject() private val svc: StartupViewController by inject() private val ivc: ImportViewController by inject() private val con = Connection(InetAddress.getByName("127.0.0.1")) + init { /*var data = Texture() var img = con.getTexturePreview(data.textureHash) @@ -28,4 +30,14 @@ class Controller : Controller() { mvc.addElement(test)*/ } + + /** + * calculate the resolution, get today's date -> upload to server + * @param path the absolute path of the file on the client's system + * @param name the file name + * @param tags all tags for the file + */ + fun importTexture(path: String, name: String, tags: ObservableList) { + + } } \ No newline at end of file diff --git a/client/src/main/kotlin/org/hso/texturesyncclient/view/importView/ImportView.kt b/client/src/main/kotlin/org/hso/texturesyncclient/view/importView/ImportView.kt index a9f0798..bcf8e91 100644 --- a/client/src/main/kotlin/org/hso/texturesyncclient/view/importView/ImportView.kt +++ b/client/src/main/kotlin/org/hso/texturesyncclient/view/importView/ImportView.kt @@ -3,28 +3,29 @@ package org.hso.texturesyncclient.view.importView import com.jfoenix.controls.JFXButton import com.jfoenix.controls.JFXChipView import com.jfoenix.controls.JFXTextField +import javafx.collections.ListChangeListener import javafx.geometry.Pos import javafx.scene.layout.Background import javafx.geometry.Insets import javafx.scene.layout.BackgroundFill import javafx.scene.layout.CornerRadii import javafx.scene.paint.Paint -import javafx.scene.control.Label import javafx.scene.layout.Priority import tornadofx.* class ImportView : View() { - val labelHeading = Label("Textur hinzufügen") val tfFilePath = JFXTextField() - val btnFileChooser = JFXButton("Datei öffnen") - val labelName = Label("Name") val tfName = JFXTextField() - val labelTags = Label("Tags") val cvTags = JFXChipView() + val btnImport = JFXButton("Importieren") private val ivc: ImportViewController by inject() + init { + btnImport.isVisible = false + } + override val root = borderpane { minWidth = 1000.0 minHeight = 500.0 @@ -34,49 +35,69 @@ class ImportView : View() { maxWidth = 350.0 alignment = Pos.CENTER - add(labelHeading) + label("Textur hinzufügen") { + style = "-fx-font: 20px Verdana; -fx-text-fill: #2b7bbb;" + } vbox(20) { hbox(10) { add(tfFilePath) - add(btnFileChooser) + button("Datei öffnen") { + style = "-fx-button-type: RAISED; -fx-background-color: #3c3f41; -fx-text-fill: #2b7bbb;" + + setOnAction { + ivc.btnFileChooserAction() + ivc.validateImport() + } + } } vbox(5) { - add(labelName) + label("Name") { + style = "-fx-font: 14px Verdana; -fx-text-fill: #2b7bbb;" + } add(tfName) } vbox(5) { - add(labelTags) + label("Tags") { + style = "-fx-font: 14px Verdana; -fx-text-fill: #2b7bbb;" + } add(cvTags) } + + vbox(5) { + alignment = Pos.CENTER + add(btnImport) + } + + } } style { - labelHeading.style = "-fx-font: 20px Verdana; -fx-text-fill: #2b7bbb;" - tfFilePath.style = "-fx-text-fill: #b15b2e;" tfFilePath.promptText = "Pfad zur Datei" tfFilePath.hgrow = Priority.ALWAYS - btnFileChooser.style = "-fx-button-type: RAISED; -fx-background-color: #3c3f41; -fx-text-fill: #2b7bbb;" - - labelName.style = "-fx-font: 14px Verdana; -fx-text-fill: #2b7bbb;" - tfName.style = "-fx-text-fill: #b15b2e;" tfName.promptText = "Name eingeben" - labelTags.style = "-fx-font: 14px Verdana; -fx-text-fill: #2b7bbb;" - cvTags.style = "-fx-background-color: #3c3f41; -fx-text-inner-color: #b15b2e;" //TODO change color of Chip´s + btnImport.style = "-fx-button-type: RAISED; -fx-background-color: #3c3f41; -fx-text-fill: #2b7bbb;" } - btnFileChooser.setOnAction { - ivc.btnFileChooserAction() + tfFilePath.textProperty().addListener{ _, _, _ -> ivc.validateImport() } + tfName.textProperty().addListener{ _, _, _ -> ivc.validateImport() } + + cvTags.chips.addListener { change: ListChangeListener.Change? -> + ivc.validateImport() + } + + btnImport.setOnAction { + ivc.btnImportAction() } } diff --git a/client/src/main/kotlin/org/hso/texturesyncclient/view/importView/ImportViewController.kt b/client/src/main/kotlin/org/hso/texturesyncclient/view/importView/ImportViewController.kt index e8cd537..a1b77e7 100644 --- a/client/src/main/kotlin/org/hso/texturesyncclient/view/importView/ImportViewController.kt +++ b/client/src/main/kotlin/org/hso/texturesyncclient/view/importView/ImportViewController.kt @@ -1,21 +1,34 @@ package org.hso.texturesyncclient.view.importView import javafx.stage.FileChooser.ExtensionFilter +import org.hso.texturesyncclient.controller.RootController import tornadofx.Controller import tornadofx.FileChooserMode import tornadofx.chooseFile class ImportViewController : Controller() { + private val iv = find(ImportView::class) + private val rootc = find(RootController::class) + fun btnFileChooserAction() { println("btn click") - var list = listOf("*.png", "*.PNG", "*.jpg", "*.JPG", "*.jpeg", "*.JPEG") - var filter = ExtensionFilter("Texturen vom Bildformat: PNG oder JPG", list) - val arrayFilter = arrayOf(filter) - var file = chooseFile("Textur auswählen", arrayFilter, FileChooserMode.Single, owner = null) + val list = listOf("*.png", "*.PNG", "*.jpg", "*.JPG", "*.jpeg", "*.JPEG") + val arrayFilter = arrayOf(ExtensionFilter("Texturen vom Bildformat: PNG oder JPG", list)) + val file = chooseFile("Textur auswählen", arrayFilter, FileChooserMode.Single, owner = null) - println(file) + if (file.isNotEmpty()) { + iv.tfFilePath.text = file[0].absolutePath + iv.tfName.text = file[0].nameWithoutExtension + } + } + fun btnImportAction() { + rootc.importTexture(iv.tfFilePath.text, iv.tfName.text, iv.cvTags.chips) + } + + fun validateImport() { + iv.btnImport.isVisible = iv.tfFilePath.text.isNotEmpty() && iv.tfName.text.isNotEmpty() && iv.cvTags.chips.isNotEmpty() } } \ No newline at end of file