package Ġorg . jetbrains . research . refactor ing Demo Plugin . statistics Ċ Ċ import Ġcom . intellij . openapi . application . Application Manager Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . ui . components . JB ScrollPane Ċ import Ġcom . intellij . ui . table . JB Table Ċ import Ġorg . jetbrains . research . refactor ing Demo Plugin . Demo Plugin Bundle Ċ import Ġorg . jetbrains . research . refactor ing Demo Plugin . util . count Lines Ċ import Ġorg . jetbrains . research . refactor ing Demo Plugin . util . extract Java Classes Ċ import Ġjava . awt . Border Layout Ċ import Ġjavax . swing . JPanel Ċ import Ġjavax . swing . table . Default TableModel Ċ Ċ class ĠMy Tool Window Content ( private Ġval Ġproject : ĠProject ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġmy Tool Window Content : ĠJPanel Ġ= ĠJPanel ( Border Layout ()) ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġcreate Content () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Content () Ġ{ ĊĠĠĠĠĠĠĠ ĠApplication Manager . getApplication (). invoke And Wait Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠApplication Manager . getApplication (). run Write Action Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtable Model Ġ= ĠDefault TableModel () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtable Ġ= ĠJ B Table ( table Model ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtable Model . addColumn ( Demo Plugin Bundle . message (" tool . window . class . name ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtable Model . addColumn ( Demo Plugin Bundle . message (" tool . window . field . count ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtable Model . addColumn ( Demo Plugin Bundle . message (" tool . window . method . count ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtable Model . addColumn ( Demo Plugin Bundle . message (" tool . window . lines . of . code ")) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġentries : ĠHashMap < String , ĠClass Statistics > Ġ= Ġcalculate Statistics For Classes () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentries . forEach Ġ{ Ġe Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtable Model . add Row ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . key , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . value . field Count , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . value . method Count , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . value . loc ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscroll Pane Ġ= ĠJ B ScrollPane ( table ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmy Tool Window Content . add ( scroll Pane , ĠBorderLayout . CENTER ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcalculate Statistics For Classes (): ĠHashMap < String , ĠClass Statistics > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresults : ĠHashMap < String , ĠClass Statistics > Ġ= Ġhash Map Of () ĊĠĠĠĠĠĠĠ Ġval Ġclasses Ġ= Ġextract Java Classes ( project ) ĊĠĠĠĠĠĠĠ Ġclasses . forEach Ġ{ Ġclazz Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( clazz . qualified Name Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstatistics Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClass Statistics ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclazz . fields . size , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclazz . methods . size , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount Lines ( clazz . text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresults [ clazz . qualified Name !! ] Ġ= Ġstatistics ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġresults ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetContent (): ĠJPanel Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmy Tool Window Content ĊĠĠĠ Ġ} Ċ } Ċ