from PySide6.QtWidgets import QDialog, QFileDialog
from pathlib import Path

from ui.JavaVmConfigDialog_ui import Ui_JavaVmConfigDialog


class JavaVmConfigDialog(QDialog):
    """Dialog zur Konfiguration einer Java VM ohne ID."""

    def __init__(self, parent=None):
        super().__init__(parent)

        # UI einrichten
        self.ui = Ui_JavaVmConfigDialog()
        self.ui.setupUi(self)

        # Signale verbinden
        self.ui.browseButton.clicked.connect(self.browse_binary_file)

    def browse_binary_file(self):
        """Öffnet einen Dateidialog für die Binary-Datei."""
        file_path, _ = QFileDialog.getOpenFileName(
            self, "Java Binary-Datei auswählen", "", "Executable Files (*.exe);;All Files (*)"
        )
        if file_path:
            self.ui.pathEdit.setText(file_path)

    def set_data(self, data):
        """Setzt die Daten in den Dialog."""
        if data:
            self.ui.versionEdit.setText(data.get("version", ""))
            self.ui.pathEdit.setText(str(data.get("path_to_binary_file", "")))

    def get_data(self):
        """Gibt die eingegebenen Daten zurück."""
        if not self.ui.versionEdit.text().strip() or not self.ui.pathEdit.text().strip():
            return None

        return {
            "version": self.ui.versionEdit.text().strip(),
            "path_to_binary_file": Path(self.ui.pathEdit.text().strip()),
        }
