/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 1 9 ĠJetBrains Ġs . r . o . Ġand ĠKotlin ĠProgramming ĠLanguage Ġcontributors . Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe Ġlicense / LICENSE . txt Ġfile . Ċ Ġ*/ Ċ package Ġorg . jetbrains . kotlin . idea . refactor ing . copy Ċ Ċ import Ġcom . intellij . ide . util . Directory Chooser Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . openapi . ui . Dialog Wrapper Ċ import Ġcom . intellij . openapi . ui . Messages Ċ import Ġcom . intellij . openapi . vfs . Virtual File Ċ import Ġcom . intellij . psi . Psi Directory Ċ import Ġcom . intellij . psi . Psi Manager Ċ import Ġcom . intellij . refactor ing . Help ID Ċ import Ġcom . intellij . refactor ing . Move Destination Ċ import Ġcom . intellij . refactor ing . Package Wrapper Ċ import Ġcom . intellij . refactor ing . Ref actor ing Bundle Ċ import Ġcom . intellij . refactor ing . copy . Copy Files Or Directories Dialog Ċ import Ġcom . intellij . refactor ing . ui . PackageName Reference Editor Combo Ċ import Ġcom . intellij . ui . Editor TextField Ċ import Ġcom . intellij . ui . Recent s Manager Ċ import Ġcom . intellij . ui . Reference Editor Combo With Browse Button Ċ import Ġcom . intellij . usage View . Usage View Util Ċ import Ġcom . intellij . util . Incorrect OperationException Ċ import Ġcom . intellij . util . ui . Form Builder Ċ import Ġcom . intellij . util . ui . UI Util Ċ import Ġorg . jetbrains . annotations . Non N ls Ċ import Ġorg . jetbrains . kotlin . idea . core . get Package Ċ import Ġorg . jetbrains . kotlin . idea . Kotlin Bundle Ċ import Ġorg . jetbrains . kotlin . idea . refactor ing . Pass Ċ import Ġorg . jetbrains . kotlin . idea . refactor ing . has Identifiers Only Ċ import Ġorg . jetbrains . kotlin . idea . refactor ing . ui . Kotlin Destination Folder ComboBox Ċ import Ġorg . jetbrains . kotlin . idea . roots . getS uit able Destination Source Roots Ċ import Ġorg . jetbrains . kotlin . idea . util . source Root Ċ import Ġorg . jetbrains . kotlin . name . Fq Name Unsafe Ċ import Ġorg . jetbrains . kotlin . psi . Kt Named Declaration Ċ import Ġjava . awt . Border Layout Ċ import Ġjava . awt . Font Ċ import Ġjavax . swing . J Component Ċ import Ġjavax . swing . JLabel Ċ import Ġjavax . swing . JPanel Ċ import Ġkotlin . math . max Ċ Ċ // ĠBased Ġon Ġcom . intellij . refactor ing . copy . Copy Class Dialog Ċ class ĠCopy Kotlin Declaration Dialog ( ĊĠĠĠ Ġdeclaration : ĠK t Named Declaration , ĊĠĠĠ Ġprivate Ġval Ġdefault Target Directory : ĠPsi Directory ?, ĊĠĠĠ Ġprivate Ġval Ġproject : ĠProject Ċ ) Ġ: ĠDialog Wrapper ( project , Ġtrue ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġinformation Label Ġ= ĠJLabel () ĊĠĠĠ Ġprivate Ġval ĠclassName Field Ġ= ĠEditor TextField ("") ĊĠĠĠ Ġprivate Ġval Ġpackage Label Ġ= ĠJLabel () ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠpackageName Field : ĠReference Editor Combo With Browse Button ĊĠĠĠ Ġprivate Ġval Ġopen In Editor CheckBox Ġ= ĠCopy Files Or Directories Dialog . create Open In Editor CB () ĊĠĠĠ Ġprivate Ġval Ġdestination ComboBox Ġ= Ġobject Ġ: ĠKotlin Destination Folder ComboBox () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Target Package () Ġ= ĠpackageName Field . text . trim () ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġreport Base In Test Selection In Source () Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġoriginal File Ġ= Ġdeclaration . containing File ĊĊĠĠĠ Ġvar Ġtarget Directory : ĠMove Destination ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġval Ġtarget Source Root : ĠVirtual File ? ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ(( destination ComboBox . comboBox . selected Item Ġas ? ĠDirectory Chooser . Item Wrapper )?. directory Ġ?: Ġoriginal File ). source Root ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġinformation Label . text Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRefactor ing Bundle . message (" copy . class . copy . 0 . 1 ", ĠUsage View Util . getType ( declaration ), ĠUsage View Util . getLong Name ( declaration )) ĊĠĠĠĠĠĠĠ Ġinformation Label . font Ġ= Ġinformation Label . font . derive Font ( Font . BOLD ) ĊĊĠĠĠĠĠĠĠ Ġinit () ĊĊĠĠĠĠĠĠĠ Ġdestination ComboBox . setData ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Target Directory , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPass Ġ{ ĠsetError Text ( it , Ġdestination ComboBox ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ ĠpackageName Field . child Component ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠclassName Field . text Ġ= ĠUsage View Util . get ShortName ( declaration ) ĊĠĠĠĠĠĠĠ ĠclassName Field . selectAll () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Preferred Focused Component () Ġ= ĠclassName Field ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Center Panel () Ġ= ĠJPanel ( Border Layout ()) ĊĊĠĠĠ Ġoverride Ġfun Ġcreate North Panel (): ĠJ Component ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġqualified Name Ġ= Ġqualified Name ĊĠĠĠĠĠĠĠ ĠpackageName Field Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPackage Name Reference Editor Combo ( qualified Name , Ġproject , ĠREC ENTS _ KEY , ĠRefactor ing Bundle . message (" choose . destination . package ")) ĊĠĠĠĠĠĠĠ ĠpackageName Field . setText Field Preferred Width ( max ( qualified Name . length Ġ+ Ġ 5 , Ġ 4 0 )) ĊĠĠĠĠĠĠĠ Ġpackage Label . text Ġ= ĠRefactor ing Bundle . message (" destination . package ") ĊĠĠĠĠĠĠĠ Ġpackage Label . label For Ġ= ĠpackageName Field ĊĊĠĠĠĠĠĠĠ Ġval Ġlabel Ġ= ĠJLabel ( Ref actor ing Bundle . message (" target . destination . folder ")) ĊĠĠĠĠĠĠĠ Ġval Ġis Multiple Source Roots Ġ= ĠgetS uit able Destination Source Roots ( project ). size Ġ> Ġ 1 ĊĠĠĠĠĠĠĠ Ġdestination ComboBox . isVisible Ġ= Ġis Multiple Source Roots ĊĠĠĠĠĠĠĠ Ġlabel . isVisible Ġ= Ġis Multiple Source Roots ĊĠĠĠĠĠĠĠ Ġlabel . label For Ġ= Ġdestination ComboBox ĊĊĠĠĠĠĠĠĠ Ġval Ġpanel Ġ= ĠJPanel ( Border Layout ()) ĊĠĠĠĠĠĠĠ Ġpanel . add ( open In Editor CheckBox , ĠBorderLayout . EAST ) ĊĠĠĠĠĠĠĠ Ġreturn ĠForm Builder . create Form Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. addComponent ( information Label ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Labeled Component ( Ref actor ing Bundle . message (" copy . files . new . name . label "), ĠclassName Field , ĠUI Util . LARGE _ VG AP ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Labeled Component ( package Label , ĠpackageName Field ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Labeled Component ( label , Ġdestination ComboBox ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. addComponent ( panel ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. panel ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġqualified Name : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġdefault Target Directory ?. get Package ()?. qualified Name Ġ?: Ġ"" ĊĊĠĠĠ Ġval ĠnewName : ĠString ? ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠclassName Field . text ĊĊĠĠĠ Ġval Ġopen In Editor : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġopen In Editor CheckBox . isSelected ĊĊĠĠĠ Ġprivate Ġfun Ġcheck For Errors (): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠpackageName Ġ= ĠpackageName Field . text ĊĠĠĠĠĠĠĠ Ġval ĠnewName Ġ= ĠnewName ĊĊĠĠĠĠĠĠĠ Ġval Ġmanager Ġ= ĠPsi Manager . getInstance ( project ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( packageName . isNotEmpty () Ġ&& Ġ! Fq Name Unsafe ( packageName ). has Identifiers Only ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠRefactor ing Bundle . message (" invalid . target . package . name . specified ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( new Name . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠRefactor ing Bundle . message (" no . class . name . specified ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Directory Ġ= Ġdestination ComboBox . select Directory ( Package Wrapper ( manager , ĠpackageName ), Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠInc orrect OperationException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġe . message ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtarget Directory ?. getTarget IfExists ( default Target Directory )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtarget FileName Ġ= ĠnewName Ġ+ Ġ"." Ġ+ Ġoriginal File . virtual File . extension ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . find File ( target FileName ) Ġ== Ġoriginal File ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠKotlin Bundle . message (" error . text . can . t . copy . class . to . the . containing . file ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdo OK Action () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠpackageName Ġ= ĠpackageName Field . text ĊĊĠĠĠĠĠĠĠ Ġval Ġerror String Ġ= Ġcheck For Errors () ĊĠĠĠĠĠĠĠ Ġif Ġ( error String Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( error String . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMessages . showMessageDialog ( project , Ġerror String , ĠRefactor ing Bundle . message (" error . title "), ĠMessages . getError Icon ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠclassName Field . request Focus In Window () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠRecent s Manager . getInstance ( project ). register Recent Entry ( REC ENTS _ KEY , ĠpackageName ) ĊĠĠĠĠĠĠĠ ĠCopy Files Or Directories Dialog . save Open In Editor State ( open In Editor CheckBox . isSelected ) ĊĊĠĠĠĠĠĠĠ Ġsuper . do OK Action () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Help Id () Ġ= ĠHelp ID . COPY _ CLASS ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Non N ls ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠREC ENTS _ KEY Ġ= Ġ" Copy Kotlin Declaration Dialog . REC ENTS _ KEY " ĊĠĠĠ Ġ} Ċ } Ċ