// Ġ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 . refactor ing . extract Method . new Impl . inplace Ċ Ċ import Ġcom . intellij . java . refactor ing . Java Ref actor ing Bundle Ċ import Ġcom . intellij . openapi . action System . An ActionEvent Ċ import Ġcom . intellij . openapi . keymap . Key map Util Ċ import Ġcom . intellij . openapi . project . D umb Aware Action Ċ import Ġcom . intellij . openapi . ui . Dialog Panel Ċ import Ġcom . intellij . ui . layout .* Ċ import Ġjavax . swing . J Component Ċ import Ġjavax . swing . Layout Focus Traversal Policy Ċ Ċ class ĠExtract Method Popup Provider ( val Ġannotate Default : ĠBoolean ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmake Static Default : ĠBoolean ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstatic Pass Fields : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĊĠ Ġvar Ġannotate Ġ= Ġannotate Default ĊĠĠĠ Ġprivate Ġset ĊĊĠ Ġvar Ġmake Static Ġ= Ġmake Static Default ĊĠĠĠ Ġprivate Ġset ĊĊĠ Ġval Ġis Changed : ĠBoolean ĊĠĠĠ Ġget () Ġ= Ġannotate Ġ!= Ġannotate Default Ġ|| Ġmake Static Ġ!= Ġmake Static Default ĊĊĠ Ġprivate Ġvar Ġchange Listener : Ġ() Ġ-> ĠUnit Ġ= Ġ{} ĊĊĠ Ġfun Ġset ChangeListener ( listener : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġchange Listener Ġ= Ġlistener ĊĠ Ġ} ĊĊĠ Ġprivate Ġvar Ġshow Dialog Action : Ġ( An ActionEvent ?) Ġ-> ĠUnit Ġ= Ġ{} ĊĠ Ġfun ĠsetShow Dialog Action ( action : Ġ( An ActionEvent ?) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġshow Dialog Action Ġ= Ġaction ĊĠ Ġ} ĊĊĠ Ġprivate Ġval ĠACTION _ EXTRACT _ METHOD Ġ= Ġ" Extract Method " ĊĊĠ Ġval Ġpanel : ĠDialog Panel Ġby Ġlazy Ġ{ Ġcreate Panel () Ġ} ĊĊĠ Ġval Ġmake Static Label Ġ= Ġif Ġ( static Pass Fields ) Ġ{ ĊĠĠĠ ĠJava Ref actor ing Bundle . message (" extract . method . checkbox . make . static . and . pass . fields ") ĊĠ Ġ} Ġelse Ġ{ ĊĠĠĠ ĠJava Ref actor ing Bundle . message (" extract . method . checkbox . make . static ") ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġcreate Panel (): ĠDialog Panel Ġ{ ĊĠĠĠ Ġvar Ġhas Focused Element Ġ= Ġfalse ĊĠĠĠ Ġfun ĠCell Builder < J Component >. set Focus If Empty () Ġ{ ĊĠĠĠĠĠ Ġif Ġ(! Ġhas Focused Element ) Ġ{ ĊĠĠĠĠĠĠĠ Ġhas Focused Element Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġfocused () ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġpanel Ġ= Ġpanel Ġ{ ĊĠĠĠĠĠ Ġif Ġ( annotate Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrow Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠcheckBox ( Java Ref actor ing Bundle . message (" extract . method . checkbox . annotate "), Ġannotate Ġ?: Ġfalse ) Ġ{ Ġ_, ĠcheckBox Ġ-> Ġannotate Ġ= ĠcheckBox . isSelected ; Ġchange Listener . invoke () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Focus If Empty () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġif Ġ( make Static Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrow Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠcheckBox ( make Static Label , Ġmake Static Ġ?: Ġfalse ) Ġ{ Ġ_, ĠcheckBox Ġ-> Ġmake Static Ġ= ĠcheckBox . isSelected ; Ġchange Listener . invoke () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Focus If Empty () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġrow Ġ{ ĊĠĠĠĠĠĠĠ Ġcell Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġlink ( Java Ref actor ing Bundle . message (" extract . method . link . label . more . options "), Ġnull ) Ġ{ Ġshow Dialog Action ( null ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply To Component Ġ{ Ġis Focus able Ġ= Ġtrue Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġcomment ( Key map Util . getFirst Keyboard Shortcut Text ( ACTION _ EXTRACT _ METHOD )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġpanel . is Focus Cycle Root Ġ= Ġtrue ĊĠĠĠ Ġpanel . focus Traversal Policy Ġ= ĠLayout Focus Traversal Policy () ĊĊĠĠĠ ĠD umb Aware Action . create Ġ{ ĊĠĠĠĠĠ Ġshow Dialog Action ( it ) ĊĠĠĠ Ġ}. register Custom Shortcut Set ( Key map Util . getActive Key map Shortcut s ( ACTION _ EXTRACT _ METHOD ), Ġpanel ) ĊĊĠĠĠ Ġreturn Ġpanel ĊĠ Ġ} Ċ Ċ }