// ĠCopyright Ġ 2 0 0 0 - 2 0 2 1 Ġ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 Ġorg . intellij . plugins . markdown . file Actions . export Ċ Ċ import Ġcom . intellij . openapi . observable . properties . Graph Property Impl . Companion . graph Property Ċ import Ġcom . intellij . openapi . observable . properties . Property Graph Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . openapi . ui . ComboBox Ċ import Ġcom . intellij . openapi . ui . Dialog Panel Ċ import Ġcom . intellij . openapi . ui . Validation Info Ċ import Ġcom . intellij . openapi . util . io . File Util Ċ import Ġcom . intellij . openapi . vfs . Virtual File Ċ import Ġcom . intellij . ui . Simple List Cell Renderer Ċ import Ġcom . intellij . ui . layout .* Ċ import Ġorg . intellij . plugins . markdown . Markdown Bundle Ċ import Ġorg . intellij . plugins . markdown . file Actions . Markdown File Actions Base Dialog Ċ import Ġjava . awt . Border Layout Ċ import Ġjava . io . File Ċ import Ġjavax . swing . Default ComboBox Model Ċ import Ġjavax . swing . J Component Ċ import Ġjavax . swing . J List Ċ Ċ internal Ġclass ĠMarkdown Export Dialog ( ĊĠ Ġtarget File : ĠVirtual File , ĊĠ Ġsuggested FilePath : ĠString , ĊĠ Ġproject : ĠProject Ċ ) Ġ: ĠMarkdown File Actions Base Dialog ( project , Ġsuggested FilePath , Ġtarget File ) Ġ{ ĊĠ Ġprivate Ġlateinit Ġvar ĠfileType Selector : ĠCombo Box < Markdown Export Provider > ĊĠ Ġprivate Ġlateinit Ġvar Ġselected FileType : ĠMarkdown Export Provider ĊĊĠ Ġprivate Ġval Ġsupported Export Providers : ĠList < Markdown Export Provider > ĊĠĠĠ Ġget () Ġ= ĠMarkdown Export Provider . all Providers ĊĊĠ Ġinit Ġ{ ĊĠĠĠ Ġtitle Ġ= ĠMarkdown Bundle . message (" markdown . export . from . docx . dialog . title ") ĊĠĠĠ Ġset OK ButtonText ( Markdown Bundle . message (" markdown . export . dialog . ok . button ")) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġdo Action ( selected File Url : ĠString ) Ġ{ ĊĠĠĠ Ġval Ġprovider Ġ= Ġsupported Export Providers . find Ġ{ Ġit Ġ== Ġselected FileType Ġ} Ġ?: Ġreturn ĊĠĠĠ Ġval ĠoutputFile Ġ= Ġ"$ selected File Url .${ provider . format Description . extension }" ĊĊĠĠĠ Ġprovider . export File ( project , Ġtarget File , ĠoutputFile ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġget FileName If Exist ( dir : ĠString , ĠfileName Without Extension : ĠString ): ĠString ? Ġ{ ĊĠĠĠ Ġval ĠfullName Ġ= Ġ"$ fileName Without Extension .${ fileType Selector . item . format Description . extension }" ĊĠĠĠ Ġreturn Ġif Ġ( File Util . exists ( File Util . join ( dir , ĠfullName ))) ĠfullName Ġelse Ġnull ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠLayout Builder . create FileType Field () Ġ= Ġrow Ġ{ ĊĠĠĠ Ġval Ġmodel Ġ= ĠDefault ComboBox Model ( supported Export Providers . to Typed Array ()) ĊĠĠĠ Ġval ĠfileType Property Ġ= ĠProperty Graph (). graph Property Ġ{ Ġselected FileType Ġ} ĊĠĠĠ ĠfileType Property . after Change Ġ{ Ġselected FileType Ġ= Ġit Ġ} ĊĊĠĠĠ Ġselected FileType Ġ= Ġfind First Valid Provider () Ġ?: Ġsupported Export Providers . first () ĊĠĠĠ Ġlabel ( Markdown Bundle . message (" markdown . export . dialog . file type . label ")) ĊĠĠĠ ĠfileType Selector Ġ= Ġcombo Box ( model , ĠfileType Property , ĠFile Type Renderer ()) ĊĠĠĠĠĠ Ġ. with Validation On Apply Ġ{ Ġvalidate FileType ( it ) Ġ} ĊĠĠĠĠĠ Ġ. focused () ĊĠĠĠĠĠ Ġ. component ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġget Settings Components (): ĠDialog Panel Ġ{ ĊĠĠĠ Ġval Ġpanel Ġ= ĠDialog Panel ( Border Layout ()) ĊĠĠĠ Ġsupported Export Providers ĊĠĠĠĠĠ Ġ. map NotNull Ġ{ ĊĠĠĠĠĠĠĠ Ġit . create Settings Component ( project , ĠFile ( suggest ed FilePath )) ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġvisible ( fileType Selector . selected Value Is ( it )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ. forEach Ġ{ Ġpanel . add ( it ) Ġ} ĊĊĠĠĠ Ġreturn Ġpanel ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġfind First Valid Provider (): ĠMarkdown Export Provider ? Ġ= ĊĠĠĠ Ġsupported Export Providers . find Ġ{ Ġit . validate ( project , Ġtarget File ) Ġ== Ġnull Ġ} ĊĊĠ Ġprivate Ġfun ĠJ Component . visible ( predicate : ĠComponent Predicate ) Ġ{ ĊĠĠĠ Ġis Visible Ġ= Ġpredicate () ĊĠĠĠ Ġpredicate . addListener Ġ{ Ġis Visible Ġ= Ġit Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun ĠValidation Info Builder . validate FileType ( combo box : ĠCombo Box < Markdown Export Provider >): ĠValidation Info ? Ġ{ ĊĠĠĠ Ġval Ġprovider Ġ= Ġcombo box . item ĊĠĠĠ Ġval ĠerrorMessage Ġ= Ġprovider . validate ( project , Ġtarget File ) ĊĠĠĠ Ġreturn ĠerrorMessage ?. let (:: error ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġinner Ġclass ĠFile Type Renderer Ġ: ĠSimple List Cell Renderer < Markdown Export Provider >() Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġcustomize ( ĊĠĠĠĠĠ Ġlist : ĠJ List < out ĠMarkdown Export Provider >, ĊĠĠĠĠĠ Ġvalue : ĠMarkdown Export Provider ?, ĊĠĠĠĠĠ Ġindex : ĠInt , ĊĠĠĠĠĠ Ġselected : ĠBoolean , ĊĠĠĠĠĠ Ġhas Focus : ĠBoolean ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠ Ġif Ġ( value Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġtext Ġ= Ġvalue . format Description . format Name ĊĠĠĠĠĠ Ġval ĠerrorMessage Ġ= Ġvalue . validate ( project , Ġtarget File ) ĊĠĠĠĠĠ Ġif Ġ( errorMessage Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġtool Tip Text Ġ= ĠerrorMessage ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġis Enabled Ġ= Ġtrue ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ