Coverage Summary for Class: BizGenDefaultAppSettings (ru.eda.plgn.bizgen.plugin.settings.model)
| Class |
Class, %
|
Method, %
|
Branch, %
|
Line, %
|
Instruction, %
|
| BizGenDefaultAppSettings |
100%
(1/1)
|
100%
(2/2)
|
|
100%
(2/2)
|
100%
(7/7)
|
package ru.eda.plgn.bizgen.plugin.settings.model
import ru.eda.plgn.bizgen.plugin.actions.GeneratorActionProvider
import ru.eda.plgn.bizgen.plugin.deepCopyByJson
import ru.eda.plgn.bizgen.plugin.di.getBizGenService
/**
* Основной конфиг плагина.
*
* @author Dmitry_Emelyanenko
*/
open class BizGenAppSettings {
/** Режим уведомления. */
var notificationMode: BizGenNotificationMode = BizGenNotificationMode.DISABLE
/** Актуальный список действий. */
var actualActions: MutableList<PersistenceActionSetting> = initSettingActions()
/** Признак, что необходимо вставить результат работы генератора в буфер обмена. */
var insToClipboard: Boolean = true
/** Сброс настроек до значений по умолчанию. */
open fun restoreFromDefault() {
actualActions.clear()
actualActions.addAll(BizGenDefaultAppSettings.getDefault().actualActions)
}
private fun initSettingActions(): MutableList<PersistenceActionSetting> {
val actions = getBizGenService<GeneratorActionProvider>().getInfos()
return actions.mapIndexed { index, action ->
PersistenceActionSetting(
id = action.id,
position = index,
description = action.name,
active = true
)
}.toMutableList()
}
/**
* Настройка для конкретного действия.
*
* @property id идентификатор действия
* @property position позиция в общем списке действий
* @property description описание
* @property active признак, что действие активное
* @author Dmitry_Emelyanenko
*/
data class PersistenceActionSetting(
override var id: String = "",
override var position: Int = 0,
override var description: String = "",
override var active: Boolean = true,
) : ActionSettingsView
/** Отражение настроек для конкретного действия. */
interface ActionSettingsView {
/** Идентификатор действия. */
val id: String
/** Позиция в общем списке действий. */
val position: Int
/** Описание. */
val description: String
/** Признак, что действие активное. */
val active: Boolean
}
/**
* Режимы уведомлений.
*
* @property description описание режима, которое будет отображаться в UI компоненте
* @author Dmitry_Emelyanenko
*/
enum class BizGenNotificationMode(val description: String) {
/** Лог событий "Колокольчик". */
BELL("""Лог событий "Колокольчик""""),
/** Всплывающее окно. */
HINT("Всплывающее окно"),
/** Выключено. */
DISABLE("Выключено"),
}
}
/**
* Значение конфига по умолчанию.
*
* @author Dmitry_Emelyanenko
*/
internal object BizGenDefaultAppSettings {
private val DEFAULT: BizGenAppSettings = BizGenAppSettings()
/**
* Получение конфига по умолчанию.
*
* Применяется подход с копированием объекта, чтобы исключить мутацию его по ссылке.
*
* @return клон конфигурации по умолчанию
*/
fun getDefault(): BizGenAppSettings {
return DEFAULT.deepCopyByJson()
}
}