/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 1 6 ĠJetBrains Ġs . r . o . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġorg . jetbrains . kotlin . idea . facet Ċ Ċ import Ġcom . intellij . facet . impl . ui . libraries . Delegating Libraries Validator Context Ċ import Ġcom . intellij . facet . ui .* Ċ import Ġcom . intellij . facet . ui . libraries . Framework Library Validator Ċ import Ġcom . intellij . util . ui . Form Builder Ċ import Ġcom . intellij . util . ui . UI Util Ċ import Ġorg . jetbrains . kotlin . config . Language Version Ċ import Ġorg . jetbrains . kotlin . config . Target Platform Kind Ċ import Ġjava . awt . Border Layout Ċ import Ġjavax . swing . J CheckBox Ċ import Ġjavax . swing . J ComboBox Ċ import Ġjavax . swing . J Component Ċ import Ġjavax . swing . JPanel Ċ Ċ class ĠKotlin Facet Editor General Tab ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġconfiguration : ĠKotlin Facet Configuration , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġeditor Context : ĠFac et Editor Context , ĊĠĠĠĠĠĠĠ Ġvalidators Manager : ĠFac et Validators Manager , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġcompiler Tab : ĠKotlin Facet Editor Compiler Tab Ċ ) Ġ: ĠFac et Editor Tab () Ġ{ ĊĠĠĠ Ġinner Ġclass ĠVersion Validator Ġ: ĠFac et Editor Validator () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcheck (): ĠValidation Result Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġapi Level Ġ= ĠapiVersion ComboBox . selected Item Ġas ? ĠLanguage Version ? Ġ?: Ġreturn ĠValidation Result . OK ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlanguage Level Ġ= Ġlanguage Version ComboBox . selected Item Ġas ? ĠLanguage Version ? Ġ?: Ġreturn ĠValidation Result . OK ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtarget Platform Ġ= Ġtarget Platform ComboBox . selected Item Ġas ĠTarget Platform Kind < *> ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlibrary Level Ġ= Ġget Library Language Level ( editor Context . module , Ġeditor Context . root Model , Ġtarget Platform ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( language Level Ġ< Ġapi Level Ġ|| Ġlibrary Level Ġ< Ġapi Level ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠValidation Result (" Language Ġversion / Runtime Ġversion Ġmay Ġnot Ġbe Ġless Ġthan ĠAPI Ġversion ", Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠValidation Result . OK ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġuse Project Settings CheckBox Ġ= ĠJ CheckBox (" Use Ġproject Ġsettings ") ĊĊĠĠĠ Ġprivate Ġval Ġlanguage Version ComboBox Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJ ComboBox < Language Version >( Language Version . values ()). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Renderer ( Description List Cell Renderer ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval ĠapiVersion ComboBox Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJ ComboBox < Language Version >( Language Version . values ()). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Renderer ( Description List Cell Renderer ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġtarget Platform ComboBox Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJ ComboBox < Target Platform Kind < *> >( Target Platform Kind . ALL _ PL AT FOR MS . to Typed Array ()). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Renderer ( Description List Cell Renderer ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġlibrary Validator : ĠFramework Library Validator ĊĠĠĠ Ġprivate Ġval Ġversion Validator Ġ= ĠVersion Validator () ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġlibrary Validator Ġ= ĠFramework Library Validator With Dynamic Description ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDeleg ating Libraries Validator Context ( editor Context ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalidators Manager , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" kotlin " ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġtarget Platform ComboBox . selected Item Ġas ĠTarget Platform Kind < *> Ġ} ĊĊĠĠĠĠĠĠĠ Ġvalidators Manager . register Validator ( library Validator ) ĊĠĠĠĠĠĠĠ Ġvalidators Manager . register Validator ( version Validator ) ĊĊĠĠĠĠĠĠĠ Ġuse Project Settings CheckBox . addActionListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuse Project Settings Changed () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġlanguage Version ComboBox . addActionListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalidators Manager . validate () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠapiVersion ComboBox . addActionListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalidators Manager . validate () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtarget Platform ComboBox . addActionListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalidators Manager . validate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Compiler Tab () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġupdate Compiler Tab () ĊĊĠĠĠĠĠĠĠ Ġreset () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġuse Project Settings Changed () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuse Module Specific Ġ= Ġ! use Project Settings CheckBox . isSelected ĊĠĠĠĠĠĠĠ Ġlanguage Version ComboBox . isEnabled Ġ= Ġuse Module Specific ĊĠĠĠĠĠĠĠ ĠapiVersion ComboBox . isEnabled Ġ= Ġuse Module Specific ĊĊĠĠĠĠĠĠĠ Ġupdate Compiler Tab () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Compiler Tab () Ġ{ ĊĠĠĠĠĠĠĠ Ġcompiler Tab . compiler Configurable . setTarget Platform ( chosen Platform ) ĊĠĠĠĠĠĠĠ ĠUI Util . setEnabled ( compiler Tab . compiler Configurable . content Pane , Ġ! use Project Settings CheckBox . isSelected , Ġtrue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis Modified (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( use Project Settings CheckBox . isSelected Ġ!= Ġconfiguration . settings . use Project Settings ) Ġreturn Ġtrue ĊĊĠĠĠĠĠĠĠ Ġreturn Ġwith ( configuration . settings . version Info ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( use Project Settings CheckBox . isSelected ) Ġreturn Ġtarget Platform ComboBox . selected Item Ġ!= Ġtarget Platform Kind ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġlanguage Version ComboBox . selected Item Ġ!= Ġlanguage Level ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġtarget Platform ComboBox . selected Item Ġ!= Ġtarget Platform Kind ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ|| ĠapiVersion ComboBox . selected Item Ġ!= Ġapi Level ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġreset () Ġ{ ĊĠĠĠĠĠĠĠ Ġuse Project Settings CheckBox . isSelected Ġ= Ġconfiguration . settings . use Project Settings ĊĠĠĠĠĠĠĠ Ġwith ( configuration . settings . version Info ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlanguage Version ComboBox . selected Item Ġ= Ġlanguage Level ĊĠĠĠĠĠĠĠĠĠĠĠ ĠapiVersion ComboBox . selected Item Ġ= Ġapi Level ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Platform ComboBox . selected Item Ġ= Ġtarget Platform Kind ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġuse Project Settings Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġapply () Ġ{ ĊĠĠĠĠĠĠĠ Ġconfiguration . settings . use Project Settings Ġ= Ġuse Project Settings CheckBox . isSelected ĊĠĠĠĠĠĠĠ Ġwith ( configuration . settings . version Info ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! use Project Settings CheckBox . isSelected ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlanguage Level Ġ= Ġlanguage Version ComboBox . selected Item Ġas ĠLanguage Version ? ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapi Level Ġ= ĠapiVersion ComboBox . selected Item Ġas ĠLanguage Version ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Platform Kind Ġ= Ġtarget Platform ComboBox . selected Item Ġas ĠTarget Platform Kind < *> ? ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget DisplayName () Ġ= Ġ" General " ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Component (): ĠJ Component Ġ{ ĊĠĠĠĠĠĠ Ġval Ġmain Panel Ġ= ĠJPanel ( Border Layout ()) ĊĠĠĠĠĠĠ Ġval Ġcontent Panel Ġ= ĠForm Builder ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. create Form Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. addComponent ( use Project Settings CheckBox ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Labeled Component ("& Language Ġversion : Ġ", Ġlanguage Version ComboBox ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Labeled Component ("& Standard Ġlibrary ĠAPI Ġversion : Ġ", ĠapiVersion ComboBox ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Labeled Component ("& Target Ġplatform : Ġ", Ġtarget Platform ComboBox ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. panel ĊĠĠĠĠĠĠĠ Ġmain Panel . add ( content Panel , ĠBorderLayout . NORTH ) ĊĠĠĠĠĠĠĠ Ġreturn Ġmain Panel ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdispose UI Resources () Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġchosen Platform : ĠTarget Platform Kind < *> ? ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġtarget Platform ComboBox . selected Item Ġas ĠTarget Platform Kind < *> ? Ċ } Ċ