Skip to content

Commit d065f7a

Browse files
authored
make first 2 pages of settings scrollable (#50)
1 parent 4b0694f commit d065f7a

3 files changed

Lines changed: 27 additions & 2 deletions

File tree

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
## [1.0.14]
44
- Support new intellij platform versions
55
- Update to Kotlin 1.9
6+
- Better support for smaller screens
67

78
## [1.0.13]
89
- Support for multi-app projects with multiple settings.gradle(.kts) files

src/main/kotlin/com/joetr/modulemaker/Constants.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import freemarker.template.Version
55

66
const val DEFAULT_PADDING = 4
77
const val EXTRA_PADDING = 8
8+
const val SCROLLBAR_WIDTH = 40
89

910
const val DEFAULT_EXIT_CODE = 2
1011

src/main/kotlin/com/joetr/modulemaker/SettingsDialogWrapper.kt

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -655,6 +655,7 @@ class SettingsDialogWrapper(
655655
androidTemplateScrollPane.preferredSize = Dimension(WINDOW_WIDTH, WINDOW_HEIGHT / 3 - EXTRA_PADDING * 2)
656656

657657
val templateDefaultPanel = JPanel()
658+
658659
val templateDefaultPanelLayout = SpringLayout()
659660
templateDefaultPanel.layout = templateDefaultPanelLayout
660661
templateDefaultPanel.add(kotlinTemplateLabel)
@@ -768,7 +769,13 @@ class SettingsDialogWrapper(
768769
templateDefaultPanel
769770
)
770771

771-
return templateDefaultPanel
772+
templateDefaultPanel.preferredSize = templateDefaultPanel.getPreferredDimensionForComponent()
773+
774+
return JScrollPane(
775+
templateDefaultPanel,
776+
ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,
777+
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS
778+
)
772779
}
773780

774781
private fun createEnhancedTemplateDefaultComponent(): JComponent {
@@ -1091,7 +1098,13 @@ class SettingsDialogWrapper(
10911098
glueModuleNameTextArea
10921099
)
10931100

1094-
return templateDefaultPanel
1101+
templateDefaultPanel.preferredSize = templateDefaultPanel.getPreferredDimensionForComponent()
1102+
1103+
return JScrollPane(
1104+
templateDefaultPanel,
1105+
ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,
1106+
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS
1107+
)
10951108
}
10961109

10971110
override fun createActions(): Array<Action> {
@@ -1198,4 +1211,14 @@ class SettingsDialogWrapper(
11981211
}
11991212
}
12001213
}
1214+
1215+
private fun JComponent.getPreferredDimensionForComponent(): Dimension {
1216+
var totalHeight = 0
1217+
for (component in this.components) {
1218+
val preferredSize = component.preferredSize
1219+
totalHeight += preferredSize.height
1220+
}
1221+
1222+
return Dimension(WINDOW_WIDTH - SCROLLBAR_WIDTH, totalHeight + SCROLLBAR_WIDTH * 2)
1223+
}
12011224
}

0 commit comments

Comments
 (0)