add MainView with Folder- and DetailView, Preview3D
This commit is contained in:
		@ -1,15 +1,10 @@
 | 
			
		||||
package org.hso.texturesyncclient.app
 | 
			
		||||
 | 
			
		||||
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(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
 | 
			
		||||
 | 
			
		||||
import javafx.scene.Parent
 | 
			
		||||
import tornadofx.*
 | 
			
		||||
 | 
			
		||||
class MainView : View() {
 | 
			
		||||
 | 
			
		||||
    private val folderView = find(FolderView::class)
 | 
			
		||||
    private val detailView = find(DetailView::class)
 | 
			
		||||
 | 
			
		||||
    override val root: Parent
 | 
			
		||||
        get() = TODO("not implemented") //To change initializer of created properties use File | Settings | File Templates.
 | 
			
		||||
    private val mvc: MainViewController by inject()
 | 
			
		||||
 | 
			
		||||
    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 tornadofx.*
 | 
			
		||||
 | 
			
		||||
class StartupView : View() {
 | 
			
		||||
class StartupView : View("StartupView") {
 | 
			
		||||
 | 
			
		||||
    val labelStatus = Label("Verbindung zum Server einrichten")
 | 
			
		||||
    val spinnerStatus = JFXSpinner()
 | 
			
		||||
@ -57,8 +57,7 @@ class StartupView : View() {
 | 
			
		||||
            labelServerIP.textFill = Paint.valueOf("#2b7bbb")
 | 
			
		||||
            labelServerIP.font = Font.font("Verdana", FontWeight.MEDIUM, 15.0)
 | 
			
		||||
            btnConnect.textFill = Paint.valueOf("#2b7bbb")
 | 
			
		||||
            btnConnect.background =
 | 
			
		||||
                Background(BackgroundFill(Paint.valueOf("#3c3f41"), CornerRadii.EMPTY, Insets.EMPTY))
 | 
			
		||||
            btnConnect.background = Background(BackgroundFill(Paint.valueOf("#3c3f41"), CornerRadii.EMPTY, Insets.EMPTY))
 | 
			
		||||
 | 
			
		||||
            tfServerIP.style { //TODO without .style
 | 
			
		||||
                textFill = Paint.valueOf("#b15b2e")
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user