added autoconnect at startup
This commit is contained in:
		@ -1,31 +1,12 @@
 | 
			
		||||
package org.hso.texturesyncclient.app
 | 
			
		||||
 | 
			
		||||
import org.hso.texturesyncclient.controller.RootController
 | 
			
		||||
import org.hso.texturesyncclient.controller.SettingsController
 | 
			
		||||
import org.hso.texturesyncclient.view.importView.ImportView
 | 
			
		||||
import org.hso.texturesyncclient.view.mainView.MainView
 | 
			
		||||
import org.hso.texturesyncclient.view.mainView.MainViewController
 | 
			
		||||
import org.hso.texturesyncclient.view.startupView.StartupView
 | 
			
		||||
import org.hso.texturesyncclient.view.startupView.StartupViewController
 | 
			
		||||
import tornadofx.App
 | 
			
		||||
 | 
			
		||||
class Main: App(StartupView::class){
 | 
			
		||||
 | 
			
		||||
    val controller = RootController()
 | 
			
		||||
 | 
			
		||||
    private val svc: StartupViewController by inject()
 | 
			
		||||
 | 
			
		||||
    init {
 | 
			
		||||
        SettingsController.init()
 | 
			
		||||
 | 
			
		||||
        if (SettingsController.serverAddressIsSet()) {
 | 
			
		||||
            //load settings in ui and try to connect
 | 
			
		||||
            println("serverAddress is set")
 | 
			
		||||
            svc.setServerAddress(SettingsController.getServerAddress())
 | 
			
		||||
            svc.btnConnectAction(SettingsController.getServerAddress())
 | 
			
		||||
        } else {
 | 
			
		||||
            println("serverAddress is not set")
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    //start first controller
 | 
			
		||||
    private val svc = StartupViewController()
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@ -5,6 +5,7 @@ import javafx.collections.ObservableList
 | 
			
		||||
import javafx.event.EventHandler
 | 
			
		||||
import javafx.stage.DirectoryChooser
 | 
			
		||||
import org.hso.texturesyncclient.alerts.JFXOkayCancelAlert
 | 
			
		||||
import org.hso.texturesyncclient.controller.net.AutoConnect
 | 
			
		||||
import org.hso.texturesyncclient.controller.net.Connection
 | 
			
		||||
import org.hso.texturesyncclient.model.GUIModel
 | 
			
		||||
import org.hso.texturesyncclient.model.Sha256
 | 
			
		||||
@ -37,17 +38,6 @@ class RootController : Controller() {
 | 
			
		||||
 | 
			
		||||
    private var lastExportDir: String = System.getProperty("user.home")
 | 
			
		||||
 | 
			
		||||
    init {
 | 
			
		||||
        /*var data = Texture()
 | 
			
		||||
        var img = con.getTexturePreview(data.textureHash)
 | 
			
		||||
        var test = GUIModel(data, img)
 | 
			
		||||
        test.exportItem.setOnAction {
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
        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
 | 
			
		||||
@ -74,7 +64,6 @@ class RootController : Controller() {
 | 
			
		||||
        } catch (e: Exception) {
 | 
			
		||||
            println(e)
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
@ -82,18 +71,53 @@ class RootController : Controller() {
 | 
			
		||||
     * @param name server name as IP or domain
 | 
			
		||||
     */
 | 
			
		||||
    fun initConnection(name: String) {
 | 
			
		||||
        try {
 | 
			
		||||
            con = Connection(InetAddress.getByName(name))
 | 
			
		||||
            con.ping()
 | 
			
		||||
            println("Connection to Server successful")
 | 
			
		||||
            SettingsController.setServerAddress(name)
 | 
			
		||||
            switchStartupToMain()
 | 
			
		||||
            println("swithing to MainView @ initCon")
 | 
			
		||||
        } catch (e: Exception) {
 | 
			
		||||
            println(e)
 | 
			
		||||
            println("Connection to Server NOT successful")
 | 
			
		||||
        if (name == " ") {
 | 
			
		||||
            //no user input, try automatic connect or restore address from settings file
 | 
			
		||||
            println("try auto connect")
 | 
			
		||||
            try {
 | 
			
		||||
                val foundServer = AutoConnect.searchServer()
 | 
			
		||||
                if (foundServer != null) {
 | 
			
		||||
                    println("[auto] server found")
 | 
			
		||||
                    con = foundServer
 | 
			
		||||
                    con.ping()
 | 
			
		||||
                    println("auto Connection to Server successful")
 | 
			
		||||
                    switchStartupToMain()
 | 
			
		||||
                } else {
 | 
			
		||||
                    println("[auto] no server found")
 | 
			
		||||
                }
 | 
			
		||||
            } catch (e: Exception) {
 | 
			
		||||
                println(e)
 | 
			
		||||
                println("auto Connection to Server NOT successful")
 | 
			
		||||
            }
 | 
			
		||||
            if (SettingsController.serverAddressIsSet()) {
 | 
			
		||||
                println("[file] try connect with settings file")
 | 
			
		||||
                try {
 | 
			
		||||
                    con = Connection(InetAddress.getByName(SettingsController.getServerAddress()))
 | 
			
		||||
                    con.ping()
 | 
			
		||||
                    println("[file] Connection to Server successful")
 | 
			
		||||
                    switchStartupToMain()
 | 
			
		||||
                } catch (e: Exception) {
 | 
			
		||||
                    println(e)
 | 
			
		||||
                    println("[file] Connection to Server NOT successful")
 | 
			
		||||
                }
 | 
			
		||||
            }else{
 | 
			
		||||
                println("[file] no address in settings file")
 | 
			
		||||
            }
 | 
			
		||||
        } else {
 | 
			
		||||
            //try to connect with user input
 | 
			
		||||
            try {
 | 
			
		||||
                println("try connect with user input")
 | 
			
		||||
                con = Connection(InetAddress.getByName(name))
 | 
			
		||||
                con.ping()
 | 
			
		||||
                println("Connection to Server successful")
 | 
			
		||||
                SettingsController.setServerAddress(name) //store address in settings file
 | 
			
		||||
                switchStartupToMain()
 | 
			
		||||
                println("swithing to MainView @ initCon")
 | 
			
		||||
            } catch (e: Exception) {
 | 
			
		||||
                println(e)
 | 
			
		||||
                println("Connection to Server NOT successful")
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    fun search(tags: ObservableList<String>): ArrayList<GUIModel> {
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,9 @@
 | 
			
		||||
package org.hso.texturesyncclient.view.startupView
 | 
			
		||||
 | 
			
		||||
import org.hso.texturesyncclient.controller.RootController
 | 
			
		||||
import org.hso.texturesyncclient.controller.SettingsController
 | 
			
		||||
import org.hso.texturesyncclient.view.mainView.MainView
 | 
			
		||||
import tornadofx.ConfigProperties
 | 
			
		||||
import tornadofx.Controller
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -10,29 +12,55 @@ class StartupViewController : Controller() {
 | 
			
		||||
    private val sv = find(StartupView::class)
 | 
			
		||||
    private val rootc = find(RootController::class)
 | 
			
		||||
 | 
			
		||||
    fun setServerAddress(address: String){
 | 
			
		||||
    init {
 | 
			
		||||
        println("init StartupViewController")
 | 
			
		||||
        SettingsController.init()
 | 
			
		||||
        startConnectionUI()
 | 
			
		||||
        runAsync {
 | 
			
		||||
            rootc.initConnection(" ")
 | 
			
		||||
        } ui {
 | 
			
		||||
            // reset for later use
 | 
			
		||||
            endConnectionUI()
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    fun setServerAddress(address: String) {
 | 
			
		||||
        sv.tfServerIP.text = address
 | 
			
		||||
        sv.tfServerIP.isFocusTraversable = false
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    fun btnConnectAction(name: String) {
 | 
			
		||||
        sv.labelStatus.text = "Verbinden ..."
 | 
			
		||||
        sv.tfServerIP.isEditable = false
 | 
			
		||||
        sv.btnConnect.isDisable = true
 | 
			
		||||
        sv.spinnerStatus.isVisible = true
 | 
			
		||||
 | 
			
		||||
        startConnectionUI()
 | 
			
		||||
        runAsync {
 | 
			
		||||
            rootc.initConnection(name)
 | 
			
		||||
        } ui {
 | 
			
		||||
            // reset for later use
 | 
			
		||||
            sv.spinnerStatus.isVisible = false
 | 
			
		||||
            sv.labelStatus.text = "Verbindung zum Server einrichten"
 | 
			
		||||
            sv.tfServerIP.isEditable = true
 | 
			
		||||
            sv.btnConnect.isDisable = false
 | 
			
		||||
            sv.tfServerIP.clear()
 | 
			
		||||
            endConnectionUI()
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * show spinner and block textfied + button and set label
 | 
			
		||||
     */
 | 
			
		||||
    fun startConnectionUI() {
 | 
			
		||||
        sv.labelStatus.text = "Verbinden ..."
 | 
			
		||||
        sv.tfServerIP.isEditable = false
 | 
			
		||||
        sv.btnConnect.isDisable = true
 | 
			
		||||
        sv.spinnerStatus.isVisible = true
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * remove spinner and unblock textfied + button and set label
 | 
			
		||||
     */
 | 
			
		||||
    fun endConnectionUI() {
 | 
			
		||||
        sv.spinnerStatus.isVisible = false
 | 
			
		||||
        sv.labelStatus.text = "Verbindung zum Server einrichten"
 | 
			
		||||
        sv.tfServerIP.isEditable = true
 | 
			
		||||
        sv.btnConnect.isDisable = false
 | 
			
		||||
        sv.tfServerIP.clear()
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user