LarryHsiao/Vesta

View on GitHub
src/main/java/com/silverhetch/vesta/jfx/target/TargetListMouseEvent.kt

Summary

Maintainability
A
0 mins
Test Coverage
package com.silverhetch.vesta.jfx.target

import com.jfoenix.controls.JFXListView
import com.jfoenix.controls.JFXPopup
import com.jfoenix.controls.JFXPopup.PopupHPosition.*
import com.jfoenix.controls.JFXPopup.PopupVPosition.*
import com.silverhetch.vesta.target.Target
import javafx.event.EventHandler
import javafx.scene.control.ListView
import javafx.scene.input.MouseButton
import javafx.scene.input.MouseButton.*
import javafx.scene.input.MouseEvent

/**
 * Handling mouse event on tag list.
 */
class TargetListMouseEvent(
    private val listView: ListView<Target>
) : EventHandler<MouseEvent> {
    override fun handle(event: MouseEvent?) {
        if (event?.button == SECONDARY) {
            listView.selectionModel.selectedItem?.also { selected ->
                val popup = JFXPopup()
                popup.popupContent = JFXListView<String>().let { popupListView ->
                    popupListView.id = "popup"
                    popupListView.items.addAll(
                        "Remove"
                    )
                    popupListView.selectionModel.selectedIndexProperty().addListener { _, _, index ->
                        when (index) {
                            0 -> {
                                selected.delete()
                                listView.items.remove(selected)
                            }
                        }
                        popup.hide()
                    }
                    popupListView
                }
                popup.show(listView, TOP, LEFT, event.x, event.y)
            }
        }
    }
}