// ĠCopyright Ġ 2 0 0 0 - 2 0 2 0 ĠJetBrains Ġs . r . o . ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ package Ġcom . intellij . space . chat . ui Ċ Ċ import Ġcirc let . m 2 . channel . M 2 Channel Vm Ċ import Ġcom . intellij . openapi . application . run Write Action Ċ import Ġcom . intellij . space . components . Space Workspace Component Ċ import Ġcom . intellij . space . messages . Space Bundle Ċ import Ġcom . intellij . space . ui . Space Avatar Provider Ċ import Ġcom . intellij . ui . components . JB Label Ċ import Ġcom . intellij . util . ui . J BU I Ċ import Ġcom . intellij . util . ui . coder e view . timeline . comment . Submit table TextField Ċ import Ġcom . intellij . util . ui . coder e view . timeline . comment . Submit table TextField Model Ċ import Ġcom . intellij . util . ui . coder e view . timeline . comment . Submit table TextField Model Base Ċ import Ġlibraries . coroutines . extra . Lifetime Ċ import Ġnet . mig info com . layout . CC Ċ import Ġnet . mig info com . layout . LC Ċ import Ġnet . mig info com . swing . M ig Layout Ċ import Ġjavax . swing . J Component Ċ import Ġjavax . swing . JPanel Ċ Ċ internal Ġfun Ġcreate New Message Field ( ĊĠ Ġchat VM : ĠM 2 Channel Vm , ĊĠ Ġavatar Type : ĠSpace Chat Avatar Type , ĊĠ Ġpending State Provider : Ġ() Ġ-> ĠBoolean Ġ= Ġ{ Ġfalse Ġ}, ĊĠ Ġon Cancel : Ġ(() Ġ-> ĠUnit )? Ġ= Ġnull Ċ ): ĠJ Component Ġ{ ĊĠ Ġval Ġsubmit table Model Ġ= Ġobject Ġ: ĠSubmit table TextField Model Base ("") Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġsubmit () Ġ{ ĊĠĠĠĠĠ Ġchat VM . sendMessage ( document . text , Ġpending Ġ= Ġpending State Provider ()) ĊĠĠĠĠĠ Ġrun Write Action Ġ{ ĊĠĠĠĠĠĠĠ Ġdocument . setText ("") ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĠ Ġreturn ĠSpace Chat New Message With Avatar Component ( chat VM . lifetime , Ġavatar Type , Ġsubmit table Model , Ġon Cancel ) Ċ } Ċ Ċ internal Ġclass ĠSpace Chat New Message With Avatar Component ( ĊĠ Ġavatar Provider Lifetime : ĠL ifetime , ĊĠ Ġavatar Type : ĠSpace Chat Avatar Type , ĊĠ Ġsubmit table Model : ĠSubmit table TextField Model , ĊĠ Ġon Cancel : Ġ(() Ġ-> ĠUnit )? Ċ ) Ġ: ĠJPanel ( null ) Ġ{ ĊĠ Ġinit Ġ{ ĊĠĠĠ Ġis Opaque Ġ= Ġfalse ĊĠĠĠ Ġlayout Ġ= ĠM ig Layout ( LC (). grid Gap (" 0 ", Ġ" 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. in sets (" 0 ", Ġ" 0 ", Ġ" 0 ", Ġ" 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill ()). apply Ġ{ ĊĠĠĠĠĠ Ġcolumn Constraints Ġ= Ġ" [][] " ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġavatar Provider Ġ= ĠSpace Avatar Provider ( avatar Provider Lifetime , Ġthis , Ġavatar Type . size ) ĊĠĠĠ Ġval Ġavatar Ġ= Ġavatar Provider . get Icon ( Space Workspace Component . getInstance (). workspace . value !!. me . value ) ĊĠĠĠ Ġval Ġavatar Component Ġ= ĠJ BU I . Panels . simple Panel ( JB Label ( avatar )). apply Ġ{ ĊĠĠĠĠĠ Ġis Opaque Ġ= Ġfalse ĊĠĠĠĠĠ Ġborder Ġ= ĠJ BU I . B orders . empty Right ( Space Chat Item Component Factory . Item . AV AT AR _ GAP ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġsubmit table TextField Ġ= ĠSubmit table TextField ( ĊĠĠĠĠĠ ĠSpace Bundle . message (" chat . comment . action . text "), ĊĠĠĠĠĠ Ġsubmit table Model , ĊĠĠĠĠĠ Ġon Cancel Ġ= Ġon Cancel ĊĠĠĠ Ġ) ĊĠĠĠ Ġadd ( avatar Component , ĠCC (). push Y ()) ĊĠĠĠ Ġadd ( submit table TextField , ĠCC (). grow X (). push X (). align Y (" center ")) ĊĠ Ġ} Ċ }