Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
package com.mitteloupe.cag.cleanarchitecturegenerator

import com.intellij.openapi.project.Project
import com.intellij.openapi.ui.ComboBox
import com.intellij.openapi.ui.DialogWrapper
import com.intellij.openapi.ui.ValidationInfo
import com.intellij.ui.components.JBTextField
import com.intellij.ui.dsl.builder.bindItem
import com.intellij.ui.dsl.builder.bindSelected
import com.intellij.ui.dsl.builder.panel
import com.mitteloupe.cag.cleanarchitecturegenerator.form.OnChangeDocumentListener
import com.mitteloupe.cag.cleanarchitecturegenerator.form.PredicateDocumentFilter
import java.io.File
import javax.swing.JCheckBox
import javax.swing.JComponent
import javax.swing.text.AbstractDocument

Expand All @@ -23,34 +23,34 @@ class CreateCleanArchitectureFeatureDialog(
private val featureNameTextField = JBTextField()
private val featurePackageTextField = JBTextField()
private var lastFeatureName: String = PLACEHOLDER
private val appModuleComboBox = ComboBox(appModuleDirectories.map { it.name }.toTypedArray())
private val ktlintCheckBox = JCheckBox("ktlint")
private val detektCheckBox = JCheckBox("detekt")

val featureName: String
get() = featureNameTextField.text

val featurePackageName: String
get() = featurePackageTextField.text.trim()

private var appModuleSelectedIndex: Int = 0

val selectedAppModuleDirectory: File?
get() =
if (appModuleDirectories.isEmpty()) {
null
} else {
val selectedIndex = appModuleComboBox.selectedIndex
if (selectedIndex in appModuleDirectories.indices) {
appModuleDirectories[selectedIndex]
if (appModuleSelectedIndex in appModuleDirectories.indices) {
appModuleDirectories[appModuleSelectedIndex]
} else {
null
}
}

private var enableKtlintInternal: Boolean = false
val enableKtlint: Boolean
get() = ktlintCheckBox.isSelected
get() = enableKtlintInternal

private var enableDetektInternal: Boolean = false
val enableDetekt: Boolean
get() = detektCheckBox.isSelected
get() = enableDetektInternal

init {
title = CleanArchitectureGeneratorBundle.message("info.feature.generator.title")
Expand Down Expand Up @@ -101,7 +101,12 @@ class CreateCleanArchitectureFeatureDialog(
panel {
if (appModuleDirectories.size >= 2) {
row(CleanArchitectureGeneratorBundle.message("dialog.feature.app.module.label")) {
cell(appModuleComboBox)
val appModules = appModuleDirectories.map { it.name }
comboBox(appModules, null)
.bindItem(
getter = { appModules[appModuleSelectedIndex] },
setter = { appModuleSelectedIndex = it?.let(appModules::indexOf) ?: 0 }
)
}
}
row(CleanArchitectureGeneratorBundle.message("dialog.feature.name.label")) {
Expand All @@ -111,8 +116,8 @@ class CreateCleanArchitectureFeatureDialog(
cell(featurePackageTextField)
}
row(CleanArchitectureGeneratorBundle.message("dialog.feature.code.quality.label")) {
cell(ktlintCheckBox)
cell(detektCheckBox)
checkBox("ktlint").bindSelected(::enableKtlintInternal)
checkBox("detekt").bindSelected(::enableDetektInternal)
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,16 @@ package com.mitteloupe.cag.cleanarchitecturegenerator
import com.intellij.openapi.project.Project
import com.intellij.openapi.ui.DialogWrapper
import com.intellij.openapi.ui.ValidationInfo
import com.intellij.ui.dsl.builder.bindSelected
import com.intellij.ui.dsl.builder.panel
import javax.swing.JCheckBox
import javax.swing.JComponent

class CreateCleanArchitecturePackageDialog(
project: Project
) : DialogWrapper(project) {
private val enableComposeCheckBox = JCheckBox(CleanArchitectureGeneratorBundle.message("dialog.architecture.compose.label"), true)
private val enableKtlintCheckBox = JCheckBox(CleanArchitectureGeneratorBundle.message("dialog.architecture.ktlint.label"), false)
private val enableDetektCheckBox = JCheckBox(CleanArchitectureGeneratorBundle.message("dialog.architecture.detekt.label"), false)
private var enableCompose: Boolean = true
private var enableKtlint: Boolean = false
private var enableDetekt: Boolean = false

init {
title = CleanArchitectureGeneratorBundle.message("info.architecture.generator.title")
Expand All @@ -22,21 +22,24 @@ class CreateCleanArchitecturePackageDialog(
override fun createCenterPanel(): JComponent =
panel {
row {
cell(enableComposeCheckBox)
checkBox(CleanArchitectureGeneratorBundle.message("dialog.architecture.compose.label"))
.bindSelected(::enableCompose)
}
row {
cell(enableKtlintCheckBox)
checkBox(CleanArchitectureGeneratorBundle.message("dialog.architecture.ktlint.label"))
.bindSelected(::enableKtlint)
}
row {
cell(enableDetektCheckBox)
checkBox(CleanArchitectureGeneratorBundle.message("dialog.architecture.detekt.label"))
.bindSelected(::enableDetekt)
}
}

override fun doValidate(): ValidationInfo? = null

fun isComposeEnabled(): Boolean = enableComposeCheckBox.isSelected
fun isComposeEnabled(): Boolean = enableCompose

fun isKtlintEnabled(): Boolean = enableKtlintCheckBox.isSelected
fun isKtlintEnabled(): Boolean = enableKtlint

fun isDetektEnabled(): Boolean = enableDetektCheckBox.isSelected
fun isDetektEnabled(): Boolean = enableDetekt
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,77 +3,66 @@ package com.mitteloupe.cag.cleanarchitecturegenerator
import com.intellij.openapi.project.Project
import com.intellij.openapi.ui.DialogWrapper
import com.intellij.openapi.ui.ValidationInfo
import com.intellij.ui.components.JBCheckBox
import com.intellij.ui.components.JBLabel
import com.intellij.ui.components.JBTextField
import com.intellij.ui.dsl.builder.bindSelected
import com.intellij.ui.dsl.builder.bindText
import com.intellij.ui.dsl.builder.panel
import com.intellij.util.ui.UIUtil
import com.mitteloupe.cag.cleanarchitecturegenerator.form.PredicateDocumentFilter
import javax.swing.Box
import javax.swing.BoxLayout
import javax.swing.JComponent
import javax.swing.JPanel
import java.awt.EventQueue.invokeLater
import javax.swing.text.AbstractDocument

private const val DATA_SOURCE_SUFFIX = "DataSource"

class CreateDataSourceDialog(
project: Project?
) : DialogWrapper(project) {
private val dataSourceNameTextField = JBTextField()
private val ktorCheckBox = JBCheckBox("Add Ktor dependencies")
private val retrofitCheckBox = JBCheckBox("Add Retrofit dependencies")
private lateinit var dataSourceNameTextField: JBTextField

val dataSourceNameWithSuffix: String
get() = "$dataSourceName$DATA_SOURCE_SUFFIX"

private val dataSourceName: String
get() = dataSourceNameTextField.text.trim()
private var dataSourceName: String = ""

private var useKtorInternal: Boolean = false
val useKtor: Boolean
get() = ktorCheckBox.isSelected
get() = useKtorInternal

private var useRetrofitInternal: Boolean = false
val useRetrofit: Boolean
get() = retrofitCheckBox.isSelected
get() = useRetrofitInternal

init {
title = CleanArchitectureGeneratorBundle.message("info.datasource.generator.title")
init()

dataSourceNameTextField.columns = 20

(dataSourceNameTextField.document as AbstractDocument).documentFilter =
PredicateDocumentFilter { !it.isWhitespace() }
}

override fun getPreferredFocusedComponent(): JComponent = dataSourceNameTextField

override fun createCenterPanel(): JComponent {
val suffixLabel =
JBLabel(DATA_SOURCE_SUFFIX).apply {
foreground = UIUtil.getLabelDisabledForeground()
}

val nameWithSuffixPanel =
JPanel().apply {
layout = BoxLayout(this, BoxLayout.X_AXIS)
add(dataSourceNameTextField)
add(Box.createHorizontalStrut(4))
add(suffixLabel)
}

return panel {
override fun createCenterPanel() =
panel {
row(CleanArchitectureGeneratorBundle.message("dialog.datasource.name.label")) {
cell(nameWithSuffixPanel)
textField()
.bindText({ dataSourceName }, { dataSourceName = it })
.applyToComponent {
(document as AbstractDocument).documentFilter =
PredicateDocumentFilter { !it.isWhitespace() }
dataSourceNameTextField = this
}
label(DATA_SOURCE_SUFFIX)
.applyToComponent {
foreground = UIUtil.getLabelDisabledForeground()
}
}
row {
cell(ktorCheckBox)
checkBox("Add Ktor dependencies")
.bindSelected(::useKtorInternal)
}
row {
cell(retrofitCheckBox)
checkBox("Add Retrofit dependencies")
.bindSelected(::useRetrofitInternal)
}
}.apply {
invokeLater { dataSourceNameTextField.requestFocusInWindow() }
}
}

override fun doValidate(): ValidationInfo? =
if (dataSourceName.isEmpty()) {
Expand Down
Loading