Skip to content

Commit e5edb10

Browse files
committed
fixed default team handling and improved team selection
1 parent b832243 commit e5edb10

File tree

5 files changed

+61
-30
lines changed

5 files changed

+61
-30
lines changed

src/main/kotlin/org/openbase/planetsudo/game/Team.kt

+2-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
*/
55
package org.openbase.planetsudo.game
66

7+
import org.apache.commons.io.FileUtils
78
import org.openbase.jps.core.JPService
89
import org.openbase.jps.exception.JPNotAvailableException
910
import org.openbase.jul.exception.CouldNotPerformException
@@ -149,7 +150,7 @@ class Team(data: TeamData) {
149150
@JvmStatic
150151
fun resetDefaultTeam() {
151152
try {
152-
File(JPService.getProperty(JPTeamPath::class.java).value.absolutePath + "/" + DEFAULT_ID + ".team").delete()
153+
FileUtils.delete(File(JPService.getProperty(JPTeamPath::class.java).value.absolutePath + "/" + DEFAULT_ID + ".team"))
153154
} catch (ex: JPNotAvailableException) {
154155
ExceptionPrinter.printHistory(CouldNotPerformException("Could not reset default team!", ex), logger)
155156
}

src/main/kotlin/org/openbase/planetsudo/view/MainGUI.kt

+1
Original file line numberDiff line numberDiff line change
@@ -462,6 +462,7 @@ class MainGUI : JFrame, PropertyChangeListener {
462462
private fun jMenuItem4ActionPerformed(evt: ActionEvent) { // GEN-FIRST:event_jMenuItem4ActionPerformed
463463
try {
464464
resetDefaultTeam()
465+
configurationPanel?.enableDefaultTeamSelection()
465466
} catch (ex: CouldNotPerformException) {
466467
LOGGER.warn("Could not reset default team!")
467468
}

src/main/kotlin/org/openbase/planetsudo/view/configuration/ConfigurationPanel.kt

+46-28
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ import org.openbase.planetsudo.net.PlanetSudoClient
2424
import org.openbase.planetsudo.net.PlanetSudoClient.Companion.instance
2525
import org.openbase.planetsudo.view.MainGUI
2626
import org.openbase.planetsudo.view.level.LevelDisplayPanel
27+
import org.openbase.planetsudo.view.util.getItems
28+
import org.openbase.planetsudo.view.util.getSelection
2729
import org.slf4j.Logger
2830
import org.slf4j.LoggerFactory
2931
import java.awt.Color
@@ -62,19 +64,25 @@ class ConfigurationPanel : JPanel() {
6264
updateTeamList()
6365

6466
// setup default team
65-
setDefaultTeamButton!!.foreground = Color.BLACK
66-
setDefaultTeamButton!!.isEnabled = true
67-
defaultTeamComboBox!!.isEnabled = true
68-
syncButton!!.isEnabled = false
67+
enableDefaultTeamSelection()
68+
6969
try {
70-
val loadDefaultTeam = loadDefaultTeam()
71-
setDefaultTeam(loadDefaultTeam)
70+
loadDefaultTeam()?.let {
71+
setDefaultTeam(it)
72+
}
7273
} catch (ex: CouldNotPerformException) {
7374
ExceptionPrinter.printHistory(CouldNotPerformException("Could not load default team!", ex), logger)
7475
}
7576
}
7677

77-
fun updateTeamList() {
78+
fun enableDefaultTeamSelection() {
79+
setDefaultTeamButton!!.foreground = Color.BLACK
80+
setDefaultTeamButton!!.isEnabled = true
81+
defaultTeamComboBox!!.isEnabled = true
82+
syncButton!!.isEnabled = false
83+
}
84+
85+
fun updateTeamList(selectTeam: TeamData? = null) {
7886
try {
7987
teamAComboBox!!.isEnabled = false
8088
teamBComboBox!!.isEnabled = false
@@ -97,25 +105,24 @@ class ConfigurationPanel : JPanel() {
97105

98106
// restore selection
99107
if (teamAComboBox!!.itemCount > 0) {
100-
if (teamAComboBox!!.model.size > stateProperties.getProperty(PROPERTY_SELECTED_TEAM_A, "0").toInt()) {
101-
teamAComboBox!!.selectedIndex = stateProperties.getProperty(PROPERTY_SELECTED_TEAM_A, "0").toInt()
102-
} else {
103-
teamAComboBox!!.selectedIndex = 0
104-
stateProperties.setProperty(PROPERTY_SELECTED_TEAM_A, "0")
105-
}
108+
(selectTeam
109+
?: teamAComboBox!!.getItems()
110+
.filterNotNull()
111+
.find { it.name == stateProperties.getProperty(PROPERTY_SELECTED_TEAM_A, "") })
112+
?.also {teamAComboBox!!.selectedItem = it }
113+
?: run {teamAComboBox!!.selectedIndex = 0 }
106114
}
107115

108116
if (teamBComboBox!!.itemCount > 0) {
109-
if (teamBComboBox!!.model.size > stateProperties.getProperty(PROPERTY_SELECTED_TEAM_B, "0").toInt()) {
110-
teamBComboBox!!.selectedIndex = stateProperties.getProperty(PROPERTY_SELECTED_TEAM_B, "0").toInt()
111-
} else {
112-
teamBComboBox!!.selectedIndex = 0
113-
stateProperties.setProperty(PROPERTY_SELECTED_TEAM_B, "0")
114-
}
117+
teamBComboBox!!.getItems()
118+
.filterNotNull()
119+
.find { it.name == stateProperties.getProperty(PROPERTY_SELECTED_TEAM_B, "") }
120+
?.also {teamBComboBox!!.selectedItem = it }
121+
?: run {teamBComboBox!!.selectedIndex = 0 }
115122
}
116123

117124
teamAComboBox!!.isEnabled = true
118-
teamBComboBox!!.setEnabled(true)
125+
teamBComboBox!!.isEnabled = true
119126
} catch (ex: CouldNotPerformException) {
120127
logger.warn("Could not load teams!", ex)
121128
}
@@ -135,10 +142,10 @@ class ConfigurationPanel : JPanel() {
135142
teamsPanel = JPanel()
136143
versusLabel = JLabel()
137144
teamAPanel = JPanel()
138-
teamAComboBox = JComboBox<TeamData>()
145+
teamAComboBox = JComboBox<TeamData?>()
139146
teamALabel = JLabel()
140147
teamBPanel = JPanel()
141-
teamBComboBox = JComboBox<TeamData>()
148+
teamBComboBox = JComboBox<TeamData?>()
142149
teamBLabel = JLabel()
143150
levelChooserPanel = JPanel()
144151
levelChooserComboBox = JComboBox<String>()
@@ -675,7 +682,9 @@ class ConfigurationPanel : JPanel() {
675682
selectedItem?.let { selectedItem ->
676683
gameManager.addTeam(selectedItem as TeamData, GameManager.TeamType.A)
677684
if (isEnabled) {
678-
stateProperties.setProperty(PROPERTY_SELECTED_TEAM_A, selectedIndex.toString())
685+
getSelection()?.name?.let {
686+
stateProperties.setProperty(PROPERTY_SELECTED_TEAM_A, it )
687+
}
679688
}
680689
}
681690
}
@@ -686,7 +695,9 @@ class ConfigurationPanel : JPanel() {
686695
selectedItem?.let {selectedItem ->
687696
gameManager.addTeam(selectedItem as TeamData, GameManager.TeamType.B)
688697
if(isEnabled) {
689-
stateProperties.setProperty(PROPERTY_SELECTED_TEAM_B, selectedIndex.toString())
698+
getSelection()?.name?.let {
699+
stateProperties.setProperty(PROPERTY_SELECTED_TEAM_B, it )
700+
}
690701
}
691702
}
692703
}
@@ -695,14 +706,21 @@ class ConfigurationPanel : JPanel() {
695706
private fun defaultTeamComboBoxActionPerformed() { // GEN-FIRST:event_defaultTeamComboBoxActionPerformed
696707
} // GEN-LAST:event_defaultTeamComboBoxActionPerformed
697708

698-
private fun setDefaultTeam(defaultTeamData: TeamData?) {
709+
fun setDefaultTeamCandidate(teamData: TeamData) = teamData
710+
.takeIf { defaultTeamComboBox!!.isEnabled }
711+
?.also {
712+
saveDefaultTeam(it)
713+
setDefaultTeam(it)
714+
}
715+
716+
private fun setDefaultTeam(defaultTeamData: TeamData) {
699717
setDefaultTeamButton!!.foreground = Color.BLACK
700718
setDefaultTeamButton!!.isEnabled = false
701719
defaultTeamComboBox!!.isEnabled = false
702720
syncButton!!.isEnabled = true
703721
try {
704722
for (i in 0 until defaultTeamComboBox!!.model.size) {
705-
if ((defaultTeamComboBox!!.model.getElementAt(i) as TeamData).name == defaultTeamData!!.name) {
723+
if ((defaultTeamComboBox!!.model.getElementAt(i) as TeamData).name == defaultTeamData.name) {
706724
defaultTeamComboBox!!.selectedItem = defaultTeamComboBox!!.model.getElementAt(i)
707725
break
708726
}
@@ -750,8 +768,8 @@ class ConfigurationPanel : JPanel() {
750768
private var logoLabel: JLabel? = null
751769
private var setDefaultTeamButton: JButton? = null
752770
private var syncButton: JButton? = null
753-
private var teamAComboBox: JComboBox<TeamData>? = null
754-
private var teamBComboBox: JComboBox<TeamData>? = null
771+
private var teamAComboBox: JComboBox<TeamData?>? = null
772+
private var teamBComboBox: JComboBox<TeamData?>? = null
755773
private var randomLevelButton: JButton? = null // End of variables declaration//GEN-END:variables
756774

757775
/**

src/main/kotlin/org/openbase/planetsudo/view/configuration/CreateTeamFrame.kt

+4-1
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,10 @@ class CreateTeamFrame : JFrame() {
7272
createButton!!.foreground = Color.RED
7373
return
7474
}
75-
MainGUI.instance!!.configurationPanel!!.updateTeamList()
75+
MainGUI.instance!!.configurationPanel!!.apply {
76+
updateTeamList(teamData)
77+
setDefaultTeamCandidate(teamData)
78+
}
7679
isVisible = false
7780
reset()
7881
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package org.openbase.planetsudo.view.util
2+
3+
import javax.swing.JComboBox
4+
5+
@Suppress("UNCHECKED_CAST")
6+
fun <T> JComboBox<T>.getSelection(): T? = if(itemCount == 0) null else selectedItem as? T
7+
8+
fun <T> JComboBox<T>.getItems(): List<T> = (0..itemCount).map { getItemAt(it) }

0 commit comments

Comments
 (0)