// Ġ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 . internal Ċ Ċ import Ġcom . intellij . openapi . action System . An Action Ċ import Ġcom . intellij . openapi . action System . An ActionEvent Ċ import Ġcom . intellij . openapi . action System . Keyboard Shortcut Ċ import Ġcom . intellij . openapi . file Chooser . FileChooser Factory Ċ import Ġcom . intellij . openapi . file Chooser . File Saver Descriptor Ċ import Ġcom . intellij . openapi . keymap . Key map Manager Ċ Ċ class ĠKey map To Csv Action Ġ: ĠAn Action () Ġ{ ĊĠ Ġoverride Ġfun ĠactionPerformed ( e : ĠAn ActionEvent ) Ġ{ ĊĠĠĠ Ġval Ġall Shortcut s Ġ= Ġlinked Map Of < String , ĠMutable Map < String , ĠMutable List < String >> >() ĊĠĠĠ Ġval Ġseen Modifier Sets Ġ= Ġmutable Set Of < String >() ĊĠĠĠ Ġval Ġcolumns Ġ= Ġmutable ListOf ("", Ġ" shift ", Ġ" ctrl ", Ġ" alt ", Ġ" meta ") ĊĊĠĠĠ Ġfor Ġ( key Ġin Ġ' A ' .. ' Z ') Ġ{ ĊĠĠĠĠĠ Ġall Shortcut s [ key . toString ()] Ġ= Ġhash Map Of () ĊĠĠĠ Ġ} ĊĠĠĠ Ġfor Ġ( key Ġin Ġ' 0 ' .. ' 9 ') Ġ{ ĊĠĠĠĠĠ Ġall Shortcut s [ key . toString ()] Ġ= Ġhash Map Of () ĊĠĠĠ Ġ} ĊĠĠĠ Ġfor Ġ( key Ġin Ġ 1 .. 1 2 ) Ġ{ ĊĠĠĠĠĠ Ġall Shortcut s [" F $ key "] Ġ= Ġhash Map Of () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġkey map Ġ= ĠKey map Manager . getInstance (). active Key map ĊĠĠĠ Ġfor Ġ( action Id Ġin Ġkey map . action IdList ) Ġ{ ĊĠĠĠĠĠ Ġval Ġshortcuts Ġ= Ġkey map . get Shortcut s ( action Id ). filter Is Instance < Keyboard Shortcut >() ĊĠĠĠĠĠ Ġfor Ġ( shortcut Ġin Ġshortcuts ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġkey Stroke Ġ= Ġshortcut . first KeyStroke ĊĠĠĠĠĠĠĠ Ġval Ġstr Ġ= Ġkey Stroke . toString () ĊĠĠĠĠĠĠĠ Ġval Ġkey Name Ġ= Ġstr . substring After Last (' Ġ', Ġstr ) ĊĠĠĠĠĠĠĠ Ġval Ġmodifiers Ġ= Ġstr . substring Before Last (' Ġ'). replace (" pressed ", Ġ""). trim () ĊĠĠĠĠĠĠĠ Ġseen Modifier Sets Ġ+= Ġmodifiers ĊĠĠĠĠĠĠĠ Ġval Ġfor Key Ġ= Ġall Shortcut s . get Or Put ( key Name ) Ġ{ Ġhash Map Of () Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġaction Ids Ġ= Ġfor Key . get Or Put ( modifiers ) Ġ{ Ġmutable ListOf () Ġ} ĊĠĠĠĠĠĠĠ Ġaction Ids . add ( action Id ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfor Ġ( seen Modifier Set Ġin Ġseen Modifier Sets ) Ġ{ ĊĠĠĠĠĠ Ġif Ġ( seen Modifier Set Ġ! in Ġcolumns ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcolumns . add ( seen Modifier Set ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġresult Ġ= Ġbuild String Ġ{ ĊĠĠĠĠĠ Ġappend ln (" key ," Ġ+ Ġcolumns . join ToString ("," )) ĊĠĠĠĠĠ Ġfor Ġ(( key , Ġshortcuts ForKey ) Ġin Ġall Shortcut s ) Ġ{ ĊĠĠĠĠĠĠĠ Ġappend ( key ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( column Ġin Ġcolumns ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġappend (",") ĊĠĠĠĠĠĠĠĠĠ Ġval Ġactions For Shortcut Ġ= Ġshortcuts ForKey [ column ] Ġ?: Ġempty List < String >() ĊĠĠĠĠĠĠĠĠĠ Ġappend ( actions For Shortcut . join ToString ("| ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġappend ln () ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġdialog Ġ= ĠFile Chooser Factory . getInstance (). create Save FileDialog ( ĊĠĠĠĠĠ ĠFile Saver Descriptor (" Export ĠKey map Ġto Ġ. csv ", Ġ" Select Ġfile Ġto Ġsave Ġto :", Ġ" csv "), Ġe . project ) ĊĠĠĠ Ġval Ġvirtual File Wrapper Ġ= Ġdialog . save ( null ) ĊĠĠĠ Ġvirtual File Wrapper ?. file ?. write Text ( result . replace ("\ n ", Ġ"\ r \ n ")) ĊĠ Ġ} Ċ }