From 3e1c46db81c56b3a1556a3dbbd61cf9b6640e94f Mon Sep 17 00:00:00 2001 From: Seil0 Date: Sat, 8 Jun 2019 14:19:14 +0200 Subject: [PATCH] some clean up, adjusted the DetailView background --- .../controller/RootController.kt | 13 +------------ .../texturesyncclient/controller/net/error.kt | 2 +- .../view/mainView/DetailView.kt | 17 ++++++++++------- .../view/mainView/Preview3D.kt | 2 +- .../view/startupView/StartupViewController.kt | 2 +- .../icons/TextureSync_Icon_256x256.jpeg | Bin 0 -> 21635 bytes 6 files changed, 14 insertions(+), 22 deletions(-) create mode 100644 client/src/main/resources/icons/TextureSync_Icon_256x256.jpeg diff --git a/client/src/main/kotlin/org/hso/texturesyncclient/controller/RootController.kt b/client/src/main/kotlin/org/hso/texturesyncclient/controller/RootController.kt index 8a9e61e..aa5d787 100644 --- a/client/src/main/kotlin/org/hso/texturesyncclient/controller/RootController.kt +++ b/client/src/main/kotlin/org/hso/texturesyncclient/controller/RootController.kt @@ -29,8 +29,6 @@ import java.nio.file.Files import java.io.FileOutputStream import java.io.IOException import java.text.SimpleDateFormat -import java.text.DateFormat - class RootController : Controller() { @@ -212,18 +210,9 @@ class RootController : Controller() { */ fun showDetail(data: Texture) { mvc.setPreview3DTexture(con.getTexturePreview(data.textureHash)) - val sdf = SimpleDateFormat("dd.MM.yyyy") - - - - mvc.setMeta( - data.name, - "${data.resolution.first.toString()}px x ${data.resolution.second.toString()}px", - data.format.toString(), - sdf.format(data.addedOn.time) - ) + mvc.setMeta(data.name, "${data.resolution.first}px x ${data.resolution.second}px", data.format.toString(), sdf.format(data.addedOn.time)) mvc.setTags(data.tags.toList().observable()) selectedTexture = data } diff --git a/client/src/main/kotlin/org/hso/texturesyncclient/controller/net/error.kt b/client/src/main/kotlin/org/hso/texturesyncclient/controller/net/error.kt index c43d785..fa693a1 100644 --- a/client/src/main/kotlin/org/hso/texturesyncclient/controller/net/error.kt +++ b/client/src/main/kotlin/org/hso/texturesyncclient/controller/net/error.kt @@ -6,7 +6,7 @@ import java.lang.Exception sealed class ConnectionException(override val message: String) : Exception(message) -class ConnectionErrorException(val errorCode: Int, val errorMessage: String) : +class ConnectionErrorException(errorCode: Int, errorMessage: String) : ConnectionException("$errorCode $errorMessage") { internal constructor(err: ErrorPackage) : this(err.code, err.message) } diff --git a/client/src/main/kotlin/org/hso/texturesyncclient/view/mainView/DetailView.kt b/client/src/main/kotlin/org/hso/texturesyncclient/view/mainView/DetailView.kt index bdc27b5..6a68f04 100644 --- a/client/src/main/kotlin/org/hso/texturesyncclient/view/mainView/DetailView.kt +++ b/client/src/main/kotlin/org/hso/texturesyncclient/view/mainView/DetailView.kt @@ -15,21 +15,20 @@ import tornadofx.* class DetailView: View() { - private val mvc: MainViewController by inject() - val preview = Preview3D() - val metaLabel = Label("Auflösung: 8MP\nName: Texture.png\nAndere: was anderes") + val metaLabel = Label("Auflösung: 8MP\nName: Texture.png\nAndere: was anderes\nEinfügedatum: 31.02.2019") val cvTags = JFXChipView() val btnImport = JFXButton("+") init { // set a default texture preview.setTexture(Image("textures/sample_texture_1.jpg")) + //preview.setTexture(Image("icons/TextureSync_Icon_256x256.jpg")) } override val root = form { minWidth = 250.0 - background = Background(BackgroundFill(Paint.valueOf("#9f9f9f"), CornerRadii.EMPTY, Insets.EMPTY)) + background = Background(BackgroundFill(Paint.valueOf("#3a3a3a"), CornerRadii.EMPTY, Insets.EMPTY)) fieldset(labelPosition = Orientation.VERTICAL) { @@ -40,11 +39,13 @@ class DetailView: View() { } field { + paddingTop = 2 + paddingBottom = 3 add(metaLabel) } field { - minHeight = 145.0 + minHeight = 155.0 add(cvTags) } @@ -58,12 +59,14 @@ class DetailView: View() { } style { - cvTags.minHeight = 135.0 + metaLabel.style = "-fx-text-fill: #2b7bbb;" + + cvTags.minHeight = 145.0 cvTags.paddingAll = 3.0 cvTags.style = "-fx-background-color: #53585b; -fx-text-inner-color: #b15b2e;" btnImport.buttonType = JFXButton.ButtonType.RAISED - btnImport.styleClass.add("jfx-floating-action-button"); + btnImport.styleClass.add("jfx-floating-action-button") } } diff --git a/client/src/main/kotlin/org/hso/texturesyncclient/view/mainView/Preview3D.kt b/client/src/main/kotlin/org/hso/texturesyncclient/view/mainView/Preview3D.kt index e4eae89..5496717 100644 --- a/client/src/main/kotlin/org/hso/texturesyncclient/view/mainView/Preview3D.kt +++ b/client/src/main/kotlin/org/hso/texturesyncclient/view/mainView/Preview3D.kt @@ -56,7 +56,7 @@ class Preview3D : View("Preview3D") { style { minWidth = 200.px minHeight = 200.px - background = Background(BackgroundFill(Color.valueOf("#9f9f9f"), CornerRadii.EMPTY, Insets.EMPTY)) + background = Background(BackgroundFill(Color.valueOf("#3a3a3a"), CornerRadii.EMPTY, Insets.EMPTY)) } } diff --git a/client/src/main/kotlin/org/hso/texturesyncclient/view/startupView/StartupViewController.kt b/client/src/main/kotlin/org/hso/texturesyncclient/view/startupView/StartupViewController.kt index 91146ba..6da18ba 100644 --- a/client/src/main/kotlin/org/hso/texturesyncclient/view/startupView/StartupViewController.kt +++ b/client/src/main/kotlin/org/hso/texturesyncclient/view/startupView/StartupViewController.kt @@ -23,7 +23,7 @@ class StartupViewController : Controller() { } fun setServerAddress(address: String) { - sv.tfServerIP.text = address + //sv.tfServerIP.text = address sv.tfServerIP.isFocusTraversable = false } diff --git a/client/src/main/resources/icons/TextureSync_Icon_256x256.jpeg b/client/src/main/resources/icons/TextureSync_Icon_256x256.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..b1e155f35d4c3735b252dabca862849a1934858d GIT binary patch literal 21635 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