// ĠCopyright Ġ 2 0 1 9 ĠAmazon . com , ĠInc . Ġor Ġits Ġaffiliates . ĠAll ĠRights ĠReserved . Ċ // ĠSPDX - License - Identifier : ĠApache - 2 . 0 Ċ Ċ package Ġsoftware . aws . tool k its . jetbrains . ui . feedback Ċ Ċ import Ġcom . intellij . openapi . action System . An ActionEvent Ċ import Ġcom . intellij . openapi . application . Application Manager Ċ import Ġcom . intellij . openapi . application . Modal ity State Ċ import Ġcom . intellij . openapi . project . D umb Aware Action Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . openapi . ui . Dialog Wrapper Ċ import Ġcom . intellij . openapi . ui . Messages Ċ import Ġcom . intellij . openapi . ui . Validation Info Ċ import Ġicons . Aws Icons Ċ import Ġorg . jetbrains . annotations . Test Only Ċ import Ġsoftware . aws . tool k its . jetbrains . services . telemetry . Telemetry Service Ċ import Ġsoftware . aws . tool k its . resources . message Ċ Ċ class ĠFeedback Dialog ( project : ĠProject ) Ġ: ĠDialog Wrapper ( project ) Ġ{ ĊĠĠĠ Ġval Ġpanel Ġ= ĠSubmit Feedback Panel ( init ially Positive Ġ= Ġtrue ) ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġtitle Ġ= Ġfeedback Title ĊĠĠĠĠĠĠĠ Ġset OK ButtonText ( message (" feedback . submit _ button ")) ĊĠĠĠĠĠĠĠ Ġinit () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdo OK Action () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( ok Action . isEnabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset OK ButtonText ( message (" feedback . submit ting ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis OK Action Enabled Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsentiment Ġ= Ġpanel . sentiment Ġ?: Ġthrow ĠIllegalStateException (" sentiment Ġwas Ġnull Ġafter Ġvalidation ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcomment Ġ= Ġpanel . comment Ġ?: Ġthrow ĠIllegalStateException (" comment Ġwas Ġnull Ġafter Ġvalidation ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠApplication Manager . getApplication (). execute On P ooled Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTe lemetry Service . getInstance (). send Feedback ( sentiment , Ġcomment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApplication Manager . getApplication (). invoke Later ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclose ( OK _ EXIT _ CODE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĠMod ality State . state For Component ( panel . panel )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMessages . showMessageDialog ( panel . panel , Ġmessage (" feedback . submit _ failed ", Ġe ), Ġmessage (" feedback . submit _ failed _ title "), Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġoverride Ġfun Ġdo Validate (): ĠValidation Info ? Ġ{ ĊĠĠĠĠĠĠĠ Ġpanel . sentiment Ġ?: Ġreturn ĠValidation Info ( message (" feedback . validation . no _ sentiment ")) ĊĠĠĠĠĠĠĠ Ġval Ġcomment Ġ= Ġpanel . comment ĊĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomment . isNull OrEmpty () Ġ-> ĠValidation Info ( message (" feedback . validation . empty _ comment ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomment . length Ġ>= ĠSubmit Feedback Panel . MAX _ LENGTH Ġ-> ĠValidation Info ( message (" feedback . validation . comment _ too _ long ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Center Panel () Ġ= Ġpanel . panel ĊĊĠĠĠ Ġ@ Test Only ĊĠĠĠ Ġinternal Ġfun Ġget View ForTesting (): ĠSubmit Feedback Panel Ġ= Ġpanel ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġfeedback Title Ġ= Ġmessage (" feedback . title ") ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Action ( project : ĠProject ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠD umb Aware Action ( feedback Title , Ġmessage (" feedback . description "), ĠAws Icons . Misc . SM ILE _ GRE Y ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠactionPerformed ( e : ĠAn ActionEvent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFeedback Dialog ( project ). show AndGet () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ