MenuBarController.kt 2.58 KB
package application.controller

import application.model.State.*
import application.model.createVesselCollection
import application.model.observableState
import application.model.observableVessel
import javafx.event.EventHandler
import javafx.fxml.FXML
import javafx.fxml.Initializable
import javafx.scene.control.CheckMenuItem
import javafx.scene.control.MenuBar
import javafx.scene.control.MenuItem
import javafx.stage.FileChooser
import java.net.URL
import java.util.*

class MenuBarController : Initializable {

    @FXML
    var menuBar: MenuBar = MenuBar()

    @FXML
    var import: MenuItem = MenuItem()

    @FXML
    var allMessages: CheckMenuItem = CheckMenuItem()

    @FXML
    var clusteredMessage: CheckMenuItem = CheckMenuItem()

    @FXML
    var heatMap: CheckMenuItem = CheckMenuItem()

    override fun initialize(location: URL?, resources: ResourceBundle?) {

        setOnActionImportButton()

        setOnActionAllMessageButton()
        setOnActionClusteredMessageButton()
        setOnActionHeatMapButton()
        observableState.state = CLUSTERED_MESSAGES
        allMessages.isSelected = false
        clusteredMessage.isSelected = true
        heatMap.isSelected = false

    }

    private fun setOnActionImportButton() {
        import.onAction = EventHandler {
            val fileChooser = FileChooser()
            fileChooser.title = "Choose a file to import"
            val window = menuBar.scene.window
            val file = fileChooser.showOpenDialog(window)
            try {
                val vessels = createVesselCollection(file)
                observableVessel.vessels.clear()
                observableVessel.vessels = vessels
            } catch (ignore: IllegalStateException){

            }
        }
    }

    private fun setOnActionAllMessageButton() {
        allMessages.onAction = EventHandler {
            observableState.state = ALL_MESSAGES
            allMessages.isSelected = true
            clusteredMessage.isSelected = false
            heatMap.isSelected = false
        }
    }

    private fun setOnActionClusteredMessageButton() {
        clusteredMessage.onAction = EventHandler {
            observableState.state = CLUSTERED_MESSAGES
            heatMap.isSelected = false
            allMessages.isSelected = false
            clusteredMessage.isSelected = true
        }
    }

    private fun setOnActionHeatMapButton() {
        heatMap.onAction = EventHandler {
            observableState.state = HEAT_MAP
            heatMap.isSelected = true
            clusteredMessage.isSelected = false
            allMessages.isSelected = false
        }
    }


}