diff --git a/src/main/java/de/bixilon/minosoft/gui/eros/main/ErosMainActivities.kt b/src/main/java/de/bixilon/minosoft/gui/eros/main/ErosMainActivities.kt
new file mode 100644
index 000000000..3bcefa335
--- /dev/null
+++ b/src/main/java/de/bixilon/minosoft/gui/eros/main/ErosMainActivities.kt
@@ -0,0 +1,38 @@
+/*
+ * Minosoft
+ * Copyright (C) 2021 Moritz Zwerger
+ *
+ * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along with this program. If not, see .
+ *
+ * This software is not affiliated with Mojang AB, the original developer of Minecraft.
+ */
+
+package de.bixilon.minosoft.gui.eros.main
+
+import de.bixilon.minosoft.data.registries.ResourceLocation
+import de.bixilon.minosoft.gui.eros.main.account.AccountController
+import de.bixilon.minosoft.gui.eros.main.play.PlayController
+import de.bixilon.minosoft.util.KUtil
+import de.bixilon.minosoft.util.KUtil.asResourceLocation
+import de.bixilon.minosoft.util.enum.ValuesEnum
+
+enum class ErosMainActivities(
+ val layout: ResourceLocation,
+) {
+ PlAY(PlayController.LAYOUT),
+ SETTINGS("".asResourceLocation()),
+ HELP("".asResourceLocation()),
+ ABOUT("".asResourceLocation()),
+
+ ACCOUNT(AccountController.LAYOUT),
+ ;
+
+ companion object : ValuesEnum {
+ override val VALUES: Array = values()
+ override val NAME_MAP: Map = KUtil.getEnumValues(VALUES)
+ }
+}
diff --git a/src/main/java/de/bixilon/minosoft/gui/eros/main/MainErosController.kt b/src/main/java/de/bixilon/minosoft/gui/eros/main/MainErosController.kt
index d27c99702..6f861317a 100644
--- a/src/main/java/de/bixilon/minosoft/gui/eros/main/MainErosController.kt
+++ b/src/main/java/de/bixilon/minosoft/gui/eros/main/MainErosController.kt
@@ -17,8 +17,8 @@ import de.bixilon.minosoft.Minosoft
import de.bixilon.minosoft.ShutdownReasons
import de.bixilon.minosoft.config.StaticConfiguration
import de.bixilon.minosoft.data.accounts.Account
+import de.bixilon.minosoft.gui.eros.controller.EmbeddedJavaFXController
import de.bixilon.minosoft.gui.eros.controller.JavaFXWindowController
-import de.bixilon.minosoft.gui.eros.main.play.PlayMainController
import de.bixilon.minosoft.gui.eros.modding.invoker.JavaFXEventInvoker
import de.bixilon.minosoft.gui.eros.util.JavaFXAccountUtil.avatar
import de.bixilon.minosoft.gui.eros.util.JavaFXUtil
@@ -45,11 +45,8 @@ class MainErosController : JavaFXWindowController() {
@FXML private lateinit var playIconFX: FontIcon
@FXML private lateinit var settingsIconFX: FontIcon
-
@FXML private lateinit var helpIconFX: FontIcon
-
@FXML private lateinit var aboutIconFX: FontIcon
-
@FXML private lateinit var exitIconFX: FontIcon
@FXML private lateinit var contentFX: Pane
@@ -58,40 +55,65 @@ class MainErosController : JavaFXWindowController() {
@FXML private lateinit var accountNameFX: Text
-
- private lateinit var icons: List
+ private lateinit var iconMap: Map
- fun select(iconToSelect: FontIcon) {
- for (icon in icons) {
+ private var activity: ErosMainActivities = ErosMainActivities.ABOUT // other value (not the default)
+ set(value) {
+ field = value
+ contentFX.children.setAll(JavaFXUtil.loadEmbeddedController>(field.layout).root)
+
+ highlightIcon(iconMap[value])
+ }
+
+ private fun highlightIcon(iconToSelect: FontIcon?) {
+ for (icon in iconMap.values) {
if (icon === iconToSelect) {
continue
}
icon.isDisable = false
icon.iconColor = Color.BLACK
}
- iconToSelect.isDisable = true
- iconToSelect.iconColor = Color.LIGHTBLUE
+ iconToSelect?.apply {
+ isDisable = true
+ iconColor = Color.LIGHTBLUE
+ }
}
override fun init() {
logoFX.image = JavaFXUtil.MINOSOFT_LOGO
versionTextFX.text = "Minosoft " + GitInfo.IS_INITIALIZED.decide(GitInfo.GIT_COMMIT_ID, StaticConfiguration.VERSION)
- icons = listOf(playIconFX, settingsIconFX, helpIconFX, aboutIconFX, exitIconFX)
+ iconMap = mapOf(
+ ErosMainActivities.PlAY to playIconFX,
+ ErosMainActivities.SETTINGS to settingsIconFX,
+ ErosMainActivities.HELP to helpIconFX,
+ ErosMainActivities.ABOUT to aboutIconFX,
+ )
- select(playIconFX)
+ highlightIcon(playIconFX)
+ playIconFX.setOnMouseClicked {
+ activity = ErosMainActivities.PlAY
+ }
+ settingsIconFX.setOnMouseClicked {
+ activity = ErosMainActivities.SETTINGS
+ }
+ helpIconFX.setOnMouseClicked {
+ activity = ErosMainActivities.HELP
+ }
+ aboutIconFX.setOnMouseClicked {
+ activity = ErosMainActivities.ABOUT
+ }
exitIconFX.setOnMouseClicked {
ShutdownManager.shutdown(reason = ShutdownReasons.REQUESTED_BY_USER)
}
- contentFX.children.setAll(JavaFXUtil.loadEmbeddedController("minosoft:eros/main/play/play.fxml".asResourceLocation()).root)
-
-
GlobalEventMaster.registerEvent(JavaFXEventInvoker.of {
accountImageFX.image = it.account?.avatar
accountNameFX.ctext = it.account?.username ?: NO_ACCOUNT_SELECTED
})
+
+ activity = ErosMainActivities.PlAY
}
override fun postInit() {
@@ -100,13 +122,9 @@ class MainErosController : JavaFXWindowController() {
}
}
- fun requestAccountSelect() {
- TODO("Not yet implemented")
- }
-
fun verifyAccount(account: Account? = Minosoft.config.config.account.selected, onSuccess: (Account) -> Unit) {
if (account == null) {
- requestAccountSelect()
+ activity = ErosMainActivities.ACCOUNT
return
}
@@ -120,6 +138,12 @@ class MainErosController : JavaFXWindowController() {
}
}
+
+ @FXML
+ fun openAccountActivity() {
+ activity = ErosMainActivities.ACCOUNT
+ }
+
companion object {
private val NO_ACCOUNT_SELECTED = "minosoft:main.account.no_account_selected".asResourceLocation()
}
diff --git a/src/main/java/de/bixilon/minosoft/gui/eros/main/account/AccountController.kt b/src/main/java/de/bixilon/minosoft/gui/eros/main/account/AccountController.kt
new file mode 100644
index 000000000..2fa657eb2
--- /dev/null
+++ b/src/main/java/de/bixilon/minosoft/gui/eros/main/account/AccountController.kt
@@ -0,0 +1,39 @@
+/*
+ * Minosoft
+ * Copyright (C) 2021 Moritz Zwerger
+ *
+ * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along with this program. If not, see .
+ *
+ * This software is not affiliated with Mojang AB, the original developer of Minecraft.
+ */
+
+package de.bixilon.minosoft.gui.eros.main.account
+
+import de.bixilon.minosoft.data.accounts.Account
+import de.bixilon.minosoft.data.registries.ResourceLocation
+import de.bixilon.minosoft.gui.eros.controller.EmbeddedJavaFXController
+import de.bixilon.minosoft.util.KUtil.asResourceLocation
+import javafx.fxml.FXML
+import javafx.scene.control.ListView
+import javafx.scene.layout.AnchorPane
+import javafx.scene.layout.Pane
+
+class AccountController : EmbeddedJavaFXController() {
+ @FXML private lateinit var accountTypeListViewFX: ListView
+
+ @FXML private lateinit var accountListViewFX: ListView
+ @FXML private lateinit var accountInfoFX: AnchorPane
+
+
+ override fun init() {
+
+ }
+
+ companion object {
+ val LAYOUT = "minosoft:eros/main/account/account.fxml".asResourceLocation()
+ }
+}
diff --git a/src/main/java/de/bixilon/minosoft/gui/eros/main/play/PlayMainController.kt b/src/main/java/de/bixilon/minosoft/gui/eros/main/play/PlayController.kt
similarity index 97%
rename from src/main/java/de/bixilon/minosoft/gui/eros/main/play/PlayMainController.kt
rename to src/main/java/de/bixilon/minosoft/gui/eros/main/play/PlayController.kt
index f232fedbb..e7e2d493d 100644
--- a/src/main/java/de/bixilon/minosoft/gui/eros/main/play/PlayMainController.kt
+++ b/src/main/java/de/bixilon/minosoft/gui/eros/main/play/PlayController.kt
@@ -33,7 +33,7 @@ import javafx.scene.layout.GridPane
import javafx.scene.layout.Pane
import javafx.scene.text.TextFlow
-class PlayMainController : EmbeddedJavaFXController() {
+class PlayController : EmbeddedJavaFXController() {
@FXML private lateinit var playTypeContentFX: Pane
@FXML private lateinit var playTypeListViewFX: ListView
@@ -103,6 +103,7 @@ class PlayMainController : EmbeddedJavaFXController() {
}
companion object {
+ val LAYOUT = "minosoft:eros/main/play/play.fxml".asResourceLocation()
private val CUSTOM_SERVER_TYPE = "minosoft:server_type.custom".asResourceLocation()
private val LAN_SERVER_TYPE = "minosoft:server_type.lan".asResourceLocation()
private val REFRESH_HEADER = "minosoft:server_list.refresh.header".asResourceLocation()
diff --git a/src/main/resources/assets/minosoft/eros/main/account/account.fxml b/src/main/resources/assets/minosoft/eros/main/account/account.fxml
new file mode 100644
index 000000000..99ef2d53b
--- /dev/null
+++ b/src/main/resources/assets/minosoft/eros/main/account/account.fxml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/main/resources/assets/minosoft/eros/main/main.fxml b/src/main/resources/assets/minosoft/eros/main/main.fxml
index b57778890..0bb331e45 100644
--- a/src/main/resources/assets/minosoft/eros/main/main.fxml
+++ b/src/main/resources/assets/minosoft/eros/main/main.fxml
@@ -77,7 +77,7 @@
-
+
diff --git a/src/main/resources/assets/minosoft/eros/main/play/play.fxml b/src/main/resources/assets/minosoft/eros/main/play/play.fxml
index 8452fdbad..f3c167ad4 100644
--- a/src/main/resources/assets/minosoft/eros/main/play/play.fxml
+++ b/src/main/resources/assets/minosoft/eros/main/play/play.fxml
@@ -5,7 +5,7 @@
-
+
diff --git a/src/main/resources/assets/minosoft/eros/main/play/server/server_list.fxml b/src/main/resources/assets/minosoft/eros/main/play/server/server_list.fxml
index 5333971e8..7a77c7ef2 100644
--- a/src/main/resources/assets/minosoft/eros/main/play/server/server_list.fxml
+++ b/src/main/resources/assets/minosoft/eros/main/play/server/server_list.fxml
@@ -44,13 +44,6 @@
-
-
-
-
-
-
-