add MainView with Folder- and DetailView, Preview3D
This commit is contained in:
parent
77cecebe52
commit
956e885aa2
@ -1,15 +1,10 @@
|
|||||||
package org.hso.texturesyncclient.app
|
package org.hso.texturesyncclient.app
|
||||||
|
|
||||||
import org.hso.texturesyncclient.view.importView.ImportView
|
import org.hso.texturesyncclient.view.importView.ImportView
|
||||||
|
import org.hso.texturesyncclient.view.mainView.MainView
|
||||||
import org.hso.texturesyncclient.view.startupView.StartupView
|
import org.hso.texturesyncclient.view.startupView.StartupView
|
||||||
import tornadofx.App
|
import tornadofx.App
|
||||||
|
|
||||||
class Main: App(ImportView::class){
|
class Main: App(MainView::class){
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
@ -0,0 +1,43 @@
|
|||||||
|
package org.hso.texturesyncclient.view.mainView
|
||||||
|
|
||||||
|
import javafx.geometry.Insets
|
||||||
|
import javafx.geometry.Orientation
|
||||||
|
import javafx.scene.image.Image
|
||||||
|
import javafx.scene.layout.Background
|
||||||
|
import javafx.scene.layout.BackgroundFill
|
||||||
|
import javafx.scene.layout.CornerRadii
|
||||||
|
import javafx.scene.paint.Paint
|
||||||
|
import tornadofx.*
|
||||||
|
|
||||||
|
class DetailView: View() {
|
||||||
|
|
||||||
|
val preview = Preview3D()
|
||||||
|
|
||||||
|
init {
|
||||||
|
val DIFFUSE_MAP = "https://bit.ly/2FTajSP"
|
||||||
|
preview.setTexture(Image(DIFFUSE_MAP))
|
||||||
|
}
|
||||||
|
|
||||||
|
override val root = form {
|
||||||
|
minWidth = 250.0
|
||||||
|
background = Background(BackgroundFill(Paint.valueOf("#9f9f9f"), CornerRadii.EMPTY, Insets.EMPTY))
|
||||||
|
|
||||||
|
fieldset("DetailView", labelPosition = Orientation.VERTICAL) {
|
||||||
|
|
||||||
|
field("3D Preview") {
|
||||||
|
vbox(7) {
|
||||||
|
add(preview)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
field("Text input") {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
field("Tags") {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,21 @@
|
|||||||
|
package org.hso.texturesyncclient.view.mainView
|
||||||
|
|
||||||
|
import javafx.geometry.Insets
|
||||||
|
import javafx.scene.control.TextField
|
||||||
|
import javafx.scene.layout.Background
|
||||||
|
import javafx.scene.layout.BackgroundFill
|
||||||
|
import javafx.scene.layout.CornerRadii
|
||||||
|
import javafx.scene.paint.Paint
|
||||||
|
import tornadofx.*
|
||||||
|
|
||||||
|
class FolderView : View("FolderView"){
|
||||||
|
|
||||||
|
val tf = TextField("FolderView")
|
||||||
|
|
||||||
|
override val root = gridpane {
|
||||||
|
prefWidth = 750.0
|
||||||
|
background = Background(BackgroundFill(Paint.valueOf("#cfcfcf"), CornerRadii.EMPTY, Insets.EMPTY))
|
||||||
|
|
||||||
|
add(tf)
|
||||||
|
}
|
||||||
|
}
|
@ -1,13 +1,27 @@
|
|||||||
package org.hso.texturesyncclient.view.mainView
|
package org.hso.texturesyncclient.view.mainView
|
||||||
|
|
||||||
import javafx.scene.Parent
|
|
||||||
import tornadofx.*
|
import tornadofx.*
|
||||||
|
|
||||||
class MainView : View() {
|
class MainView : View() {
|
||||||
|
|
||||||
|
private val folderView = find(FolderView::class)
|
||||||
|
private val detailView = find(DetailView::class)
|
||||||
|
|
||||||
override val root: Parent
|
private val mvc: MainViewController by inject()
|
||||||
get() = TODO("not implemented") //To change initializer of created properties use File | Settings | File Templates.
|
|
||||||
|
override val root = borderpane {
|
||||||
|
minWidth = 1000.0
|
||||||
|
minHeight = 500.0
|
||||||
|
|
||||||
|
left = folderView.root
|
||||||
|
right = detailView.root
|
||||||
|
|
||||||
|
style {
|
||||||
|
// style options
|
||||||
|
}
|
||||||
|
|
||||||
|
// actions
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -0,0 +1,74 @@
|
|||||||
|
package org.hso.texturesyncclient.view.mainView
|
||||||
|
|
||||||
|
import javafx.animation.Interpolator
|
||||||
|
import javafx.animation.RotateTransition
|
||||||
|
import javafx.geometry.Insets
|
||||||
|
import javafx.scene.AmbientLight
|
||||||
|
import javafx.scene.PointLight
|
||||||
|
import javafx.scene.image.Image
|
||||||
|
import javafx.scene.layout.Background
|
||||||
|
import javafx.scene.layout.BackgroundFill
|
||||||
|
import javafx.scene.layout.CornerRadii
|
||||||
|
import javafx.scene.paint.Color
|
||||||
|
import javafx.scene.paint.PhongMaterial
|
||||||
|
import javafx.scene.shape.Box
|
||||||
|
import javafx.scene.transform.Rotate
|
||||||
|
import tornadofx.*
|
||||||
|
|
||||||
|
class Preview3D : View("Preview3D") {
|
||||||
|
|
||||||
|
private val boxSize = 100.0
|
||||||
|
private val dBox = Box(boxSize, boxSize, boxSize)
|
||||||
|
private val rxBox = Rotate(45.0, 0.0, 0.0, 0.0, Rotate.X_AXIS)
|
||||||
|
private val ryBox = Rotate(45.0, 0.0, 0.0, 0.0, Rotate.Y_AXIS)
|
||||||
|
|
||||||
|
private val pointLightFront = PointLight(Color.WHITE)
|
||||||
|
private val ambient = AmbientLight(Color.ANTIQUEWHITE)
|
||||||
|
|
||||||
|
init {
|
||||||
|
// add rotation to the box
|
||||||
|
dBox.transforms.addAll(rxBox, ryBox)
|
||||||
|
|
||||||
|
// light stuff
|
||||||
|
pointLightFront.translateX = boxSize
|
||||||
|
pointLightFront.translateY = boxSize
|
||||||
|
pointLightFront.translateZ = (-2 * boxSize)
|
||||||
|
pointLightFront.rotate = 90.0
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
override val root = stackpane {
|
||||||
|
|
||||||
|
add(dBox).apply {
|
||||||
|
// rotate the box from 0° to 360° for infinity around the y axis
|
||||||
|
dBox.rotationAxis = Rotate.Y_AXIS
|
||||||
|
timeline {
|
||||||
|
keyframe(18.seconds) {
|
||||||
|
keyvalue(dBox.rotateProperty(), 360.0, interpolator = Interpolator.LINEAR)
|
||||||
|
}
|
||||||
|
cycleCount = RotateTransition.INDEFINITE
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
add(pointLightFront)
|
||||||
|
add(ambient)
|
||||||
|
|
||||||
|
style {
|
||||||
|
minWidth = 200.px
|
||||||
|
minHeight = 200.px
|
||||||
|
background = Background(BackgroundFill(Color.BLUEVIOLET, CornerRadii.EMPTY, Insets.EMPTY))
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* set the texture of the bock
|
||||||
|
* @param img the texture to set
|
||||||
|
*/
|
||||||
|
fun setTexture(img: Image) {
|
||||||
|
val textureMaterial = PhongMaterial()
|
||||||
|
textureMaterial.diffuseMap = img
|
||||||
|
dBox.material = textureMaterial
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -16,7 +16,7 @@ import javafx.scene.text.Font
|
|||||||
import javafx.scene.text.FontWeight
|
import javafx.scene.text.FontWeight
|
||||||
import tornadofx.*
|
import tornadofx.*
|
||||||
|
|
||||||
class StartupView : View() {
|
class StartupView : View("StartupView") {
|
||||||
|
|
||||||
val labelStatus = Label("Verbindung zum Server einrichten")
|
val labelStatus = Label("Verbindung zum Server einrichten")
|
||||||
val spinnerStatus = JFXSpinner()
|
val spinnerStatus = JFXSpinner()
|
||||||
@ -57,8 +57,7 @@ class StartupView : View() {
|
|||||||
labelServerIP.textFill = Paint.valueOf("#2b7bbb")
|
labelServerIP.textFill = Paint.valueOf("#2b7bbb")
|
||||||
labelServerIP.font = Font.font("Verdana", FontWeight.MEDIUM, 15.0)
|
labelServerIP.font = Font.font("Verdana", FontWeight.MEDIUM, 15.0)
|
||||||
btnConnect.textFill = Paint.valueOf("#2b7bbb")
|
btnConnect.textFill = Paint.valueOf("#2b7bbb")
|
||||||
btnConnect.background =
|
btnConnect.background = Background(BackgroundFill(Paint.valueOf("#3c3f41"), CornerRadii.EMPTY, Insets.EMPTY))
|
||||||
Background(BackgroundFill(Paint.valueOf("#3c3f41"), CornerRadii.EMPTY, Insets.EMPTY))
|
|
||||||
|
|
||||||
tfServerIP.style { //TODO without .style
|
tfServerIP.style { //TODO without .style
|
||||||
textFill = Paint.valueOf("#b15b2e")
|
textFill = Paint.valueOf("#b15b2e")
|
||||||
|
Loading…
Reference in New Issue
Block a user