// ĠCopyright Ġ 2 0 0 0 - 2 0 2 1 ĠJetBrains Ġs . r . o . Ġand Ġcontributors . ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ Ċ package Ġorg . jetbrains . kotlin . tools . project Wizard . core . entity . settings ĊĊ Ċ import Ġorg . jetbrains . kotlin . tools . project Wizard . core . Reader Ċ import Ġorg . jetbrains . kotlin . tools . project Wizard . core . entity . Setting Validator Ċ import Ġorg . jetbrains . kotlin . tools . project Wizard . core . entity . Validation Result Ċ import Ġorg . jetbrains . kotlin . tools . project Wizard . core . entity . setting Validator Ċ import Ġorg . jetbrains . kotlin . tools . project Wizard . ph ases . Generation Phase Ċ Ċ abstract Ġclass ĠSetting Builder < V Ġ: ĠAny , ĠT Ġ: ĠSetting Type < V >>( ĊĠĠĠ Ġprivate Ġval Ġpath : ĠString , ĊĠĠĠ Ġprivate Ġval Ġtitle : ĠString , ĊĠĠĠ Ġprivate Ġval Ġneeded At Phase : ĠGeneration Phase Ċ ) Ġ{ ĊĠĠĠ Ġvar Ġis Available : ĠReader . () Ġ-> ĠBoolean Ġ= Ġ{ Ġtrue Ġ} ĊĠĠĠ Ġopen Ġvar ĠdefaultValue : ĠSetting DefaultValue < V >? Ġ= Ġnull ĊĊĠĠĠ Ġvar Ġvalidate On Project Creation Ġ= Ġtrue ĊĠĠĠ Ġvar Ġis S av able : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġvar Ġis Required : ĠBoolean ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġdescription : ĠString ? Ġ= Ġnull ĊĊĠĠĠ Ġfun Ġvalue ( value : ĠV ) Ġ= ĠSetting DefaultValue . Value ( value ) ĊĠĠĠ Ġfun Ġdynamic ( getter : ĠReader .( Setting Reference < V , ĠSetting Type < V >>) Ġ-> ĠV ?) Ġ= ĊĠĠĠĠĠĠĠ ĠSetting DefaultValue . Dynamic ( getter ) ĊĊĠĠĠ Ġprotected Ġvar Ġvalidator Ġ= ĊĠĠĠĠĠĠĠ ĠSetting Validator < V > Ġ{ ĠValidation Result . OK Ġ} ĊĊĠĠĠ Ġfun Ġvalidate ( validator : ĠSetting Validator < V >) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . validator Ġ= Ġthis . validator Ġand Ġvalidator ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġvalidate ( validator : ĠReader .( V ) Ġ-> ĠValidation Result ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . validator Ġ= Ġthis . validator Ġand Ġsetting Validator ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalidator ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġabstract Ġval Ġtype : ĠT ĊĊĠĠĠ Ġfun Ġbuild Internal () Ġ= ĠInternal Setting ( ĊĠĠĠĠĠĠĠ Ġpath Ġ= Ġpath , ĊĠĠĠĠĠĠĠ Ġtitle Ġ= Ġtitle , ĊĠĠĠĠĠĠĠ Ġdescription Ġ= Ġdescription , ĊĠĠĠĠĠĠĠ ĠdefaultValue Ġ= ĠdefaultValue , ĊĠĠĠĠĠĠĠ Ġis Available Ġ= Ġis Available , ĊĠĠĠĠĠĠĠ Ġis Required Ġ= Ġis Required Ġ?: Ġ( defaultValue Ġ== Ġnull ), ĊĠĠĠĠĠĠĠ Ġis S av able Ġ= Ġis S av able , ĊĠĠĠĠĠĠĠ Ġneeded At Phase Ġ= Ġneeded At Phase , ĊĠĠĠĠĠĠĠ Ġvalidator Ġ= Ġvalidator , ĊĠĠĠĠĠĠĠ Ġvalidate On Project Creation Ġ= Ġvalidate On Project Creation , ĊĠĠĠĠĠĠĠ Ġtype Ġ= Ġtype ĊĠĠĠ Ġ) Ċ }