Skip to content

Commit

Permalink
Make the sizing of windows more portable
Browse files Browse the repository at this point in the history
This is done using preferredSize for the actual content.

This commit also fixes the issue that windows are too small on macOS when using the darklaf library. (That was actually an issue with darklaf that will probably be fixed with the next released darklaf version. Still, this approch should be more portable across different operating systems.)
  • Loading branch information
hannesbraun committed Dec 30, 2021
1 parent 22b5379 commit e1220ad
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 22 deletions.
7 changes: 4 additions & 3 deletions src/main/kotlin/org/magmaoffenburg/roboviz/gui/MainWindow.kt
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ class MainWindow : JFrame(), ServerComm.ServerChangeListener, LogPlayer.StateCha
initializeMenu()
initializeGLCanvas()

pack()
isVisible = true // set visible after everything is initialized
instance = this

Expand All @@ -56,7 +57,6 @@ class MainWindow : JFrame(), ServerComm.ServerChangeListener, LogPlayer.StateCha
private fun initializeWindow() {
title = windowTitle
defaultCloseOperation = EXIT_ON_CLOSE
size = Dimension(Graphics.frameWidth, Graphics.frameHeight)
jMenuBar = JMenuBar()
iconImage = ImageIO.read(MainWindow::class.java.getResource("/images/icon.png"))

Expand All @@ -70,8 +70,8 @@ class MainWindow : JFrame(), ServerComm.ServerChangeListener, LogPlayer.StateCha

addWindowListener(object : WindowAdapter() {
override fun windowClosing(e: WindowEvent?) {
Graphics.frameWidth = width
Graphics.frameHeight = height
Graphics.frameWidth = glCanvas.width
Graphics.frameHeight = glCanvas.height

Main.config.write()
Renderer.instance.dispose(glCanvas)
Expand Down Expand Up @@ -138,6 +138,7 @@ class MainWindow : JFrame(), ServerComm.ServerChangeListener, LogPlayer.StateCha
glCanvas = GLCanvas(glCapabilities)
glCanvas.focusTraversalKeysEnabled = false

glCanvas.preferredSize = Dimension(Graphics.frameWidth, Graphics.frameHeight)
add(glCanvas, BorderLayout.CENTER)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,12 @@ object ControlsHelpWindow : JFrame() {
init {
initializeWindow()
createTextArea()
pack()
}

private fun initializeWindow() {
title = "Help"
size = Dimension(600, 800)
iconImage = ImageIO.read(ControlsHelpWindow::class.java.getResource("/images/icon.png"))
minimumSize = Dimension(400, 500)
}

private fun createTextArea() {
Expand All @@ -31,7 +30,10 @@ object ControlsHelpWindow : JFrame() {
textArea.text = loadText()
textArea.caretPosition = 0

add(JScrollPane(textArea))
add(JScrollPane(textArea).apply {
minimumSize = Dimension(400, 500)
preferredSize = Dimension(600, 800)
})
}

private fun loadText(): String {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,14 +38,14 @@ class LogPlayerControlsPanel : JFrame(), LogPlayer.StateChangeListener {
init {
initializeWindow()
createControls()

pack()
}

private fun initializeWindow() {
title = "Log Player"
defaultCloseOperation = DO_NOTHING_ON_CLOSE
size = Dimension(380, 120)
isResizable = false
layout = FlowLayout(FlowLayout.LEADING, 5, 7)
iconImage = ImageIO.read(MainWindow::class.java.getResource("/images/icon.png"))
}

Expand All @@ -58,22 +58,13 @@ class LogPlayerControlsPanel : JFrame(), LogPlayer.StateChangeListener {
previousGoalBtn = createBtn(previousGoalIcon, "Previous goal") { previousGoal() }
nextGoalBtn = createBtn(nextGoalIcon, "Next goal") { nextGoal() }

add(fileOpenBtn)
add(rewindBtn)
add(previousFrameBtn)
add(playPauseBtn)
add(nextFrameBtn)
add(previousGoalBtn)
add(nextGoalBtn)

add(Box.createHorizontalStrut(20))

playbackSpeedSpinner = JSpinner(SpinnerNumberModel(1.0, -10.0, 10.0, 0.25)).apply {
toolTipText = "Playback speed factor"
preferredSize = Dimension(60, 30)
addChangeListener { setPlaybackSpeed(this.value as Double) }
}
add(playbackSpeedSpinner)

//slider = JSlider(0 ,logPlayer.numFrames, logPlayer.desiredFrame).apply {
slider = JSlider(0 , 100, 1).apply {
Expand All @@ -83,7 +74,23 @@ class LogPlayerControlsPanel : JFrame(), LogPlayer.StateChangeListener {
if (!ignoreSliderEvent) selectFrame(this.value)
}
}
add(slider)

add(JPanel(FlowLayout(FlowLayout.LEADING, 5, 7)).apply {
preferredSize = Dimension(380, 77)

add(fileOpenBtn)
add(rewindBtn)
add(previousFrameBtn)
add(playPauseBtn)
add(nextFrameBtn)
add(previousGoalBtn)
add(nextGoalBtn)

add(Box.createHorizontalStrut(20))

add(playbackSpeedSpinner)
add(slider)
})
}

private fun fileOpen() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ object ConfigWindow : JFrame() {

private fun initializeWindow() {
title = "RoboViz Configuration"
size = Dimension(350, 470)
iconImage = ImageIO.read(ConfigWindow::class.java.getResource("/images/icon.png"))
isResizable = false
}
Expand Down Expand Up @@ -62,9 +61,11 @@ object ConfigWindow : JFrame() {
}

this.rootPane.defaultButton = saveButton
this.layout = BorderLayout()
this.add(tabbedPane, BorderLayout.CENTER)
this.add(bottomPanel, BorderLayout.PAGE_END)
this.add(JPanel(BorderLayout()).apply {
preferredSize = Dimension(350, 444)
add(tabbedPane, BorderLayout.CENTER)
add(bottomPanel, BorderLayout.PAGE_END)
})
}

/**
Expand Down

0 comments on commit e1220ad

Please sign in to comment.