package Ġcom . jetbrains . package search . intellij . plugin . ui . tool window Ċ Ċ import Ġcom . intellij . Project Topics Ċ import Ġcom . intellij . openapi . module . Module Ċ import Ġcom . intellij . openapi . project . D umb Un aware H ider Ċ import Ġcom . intellij . openapi . project . Module Listener Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . openapi . rd . create Lifetime Ċ import Ġcom . intellij . openapi . roots . Module Root Event Ċ import Ġcom . intellij . openapi . roots . Module Root Listener Ċ import Ġcom . intellij . openapi . ui . Simple Tool Window Panel Ċ import Ġcom . intellij . openapi . wm . Tool Window Ċ import Ġcom . intellij . ui . content . Content Factory Ċ import Ġcom . intellij . ui . content . Content Manager Ċ import Ġcom . jetbrains . package search . intellij . plugin . Package Search Bundle Ċ import Ġcom . jetbrains . package search . intellij . plugin . extensibility . Project Module Provider Ċ import Ġcom . jetbrains . package search . intellij . plugin . ui . tool window . models . Package Search Tool Window Model Ċ import Ġcom . jetbrains . package search . intellij . plugin . ui . tool window . panels . Package Search Panel Base Ċ import Ġcom . jetbrains . package search . intellij . plugin . ui . tool window . panels . Simple Tool Window With Two Toolbar s Panel Ċ import Ġcom . jetbrains . package search . intellij . plugin . ui . tool window . panels . management . Package Management Panel Ċ import Ġcom . jetbrains . package search . intellij . plugin . ui . tool window . panels . repositories . Repository Management Panel Ċ import Ġjavax . swing . J Component Ċ import Ġjavax . swing . JLabel Ċ Ċ class ĠPackage Search Tool Window Availability Service ( val Ġproject : ĠProject ) Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġtool Window : ĠTool Window ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġtool Window Contents Created Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġwas Available Ġ= Ġfalse ĊĊĠĠĠ Ġfun Ġinitialize ( tool Window : ĠTool Window ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . tool Window Ġ= Ġtool Window ĊĊĠĠĠĠĠĠĠ Ġset Availability Based On Project Modules ( project ) ĊĠĠĠĠĠĠĠ Ġstart Monitoring () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstart Monitoring () Ġ{ ĊĠĠĠĠĠĠĠ Ġproject . message Bus . connect (). subscribe ( Project Topics . PROJECT _ ROOT S , Ġobject Ġ: ĠModule Root Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġroots Changed ( event : ĠModule Root Event ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Availability Based On Project Modules ( project ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġproject . message Bus . connect (). subscribe ( Project Topics . MODULES , Ġobject Ġ: ĠModule Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġmodule Added ( p : ĠProject , Ġmodule : ĠModule ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Availability Based On Project Modules ( project ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġmodule Removed ( p : ĠProject , Ġmodule : ĠModule ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Availability Based On Project Modules ( project ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Availability Based On Project Modules ( project : ĠProject ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġis Available Ġ= ĠProject Module Provider . obtain All Project Modules For ( project ). any () ĊĠĠĠĠĠĠĠ Ġtool Window ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( was Available Ġ!= Ġis Available Ġ|| Ġ! tool Window Contents Created ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Tool Window Contents ( it , Ġis Available ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Tool Window Contents ( tool Window : ĠTool Window , Ġis Available : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtool Window Contents Created Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġwas Available Ġ= Ġis Available ĊĊĠĠĠĠĠĠĠ Ġtool Window . title Ġ= ĠPackage Search Bundle . message (" package search . ui . tool window . title ") ĊĊĠĠĠĠĠĠĠ Ġval Ġcontent Factory Ġ= ĠContent Factory . SERVICE . getInstance () ĊĠĠĠĠĠĠĠ Ġval Ġcontent Manager Ġ= Ġtool Window . content Manager ĊĊĠĠĠĠĠĠĠ Ġcontent Manager . removeAll Contents ( false ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! is Available ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Manager . add Content ( Content Factory . SERVICE . getInstance (). create Content ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠD umb Un aware H ider ( JLabel ()). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Content Visible ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġempty Text . text Ġ= ĠPackage Search Bundle . message (" package search . ui . tool window . tab . no Modules ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPackage Search Bundle . message (" package search . ui . tool window . tab . packages . title "), Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Closeable Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġlifetime Ġ= Ġproject . create Lifetime () ĊĠĠĠĠĠĠĠ Ġval Ġmodel Ġ= ĠPackage Search Tool Window Model ( project , Ġlifetime ) ĊĠĠĠĠĠĠĠ Ġproject . put UserData ( Package Search Tool Window Factory . Tool Window Model Key , Ġmodel ) ĊĊĠĠĠĠĠĠĠ Ġval Ġpanels Ġ= Ġmutable ListOf < Package Search Panel Base >( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPackage Management Panel ( model ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRepository Management Panel ( model ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( panel Ġin Ġpanels ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpanel Content Ġ= Ġpanel . content Ġ// Ġshould Ġbe Ġexecuted Ġbefore Ġtool bars ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtoolbar Ġ= Ġpanel . toolbar ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtop Toolbar Ġ= Ġpanel . top Toolbar ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( top Toolbar Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Manager . add Tab ( panel . title , Ġpanel Content , Ġtoolbar ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontent Ġ= Ġcontent Factory . create Content ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSimple Tool Window With Two Toolbar s Panel ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoolbar !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtop Toolbar , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpanel Content ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), Ġpanel . title , Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent . is Closeable Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Manager . add Content ( content ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠContent Manager . add Tab ( title : ĠString , Ġcontent : ĠJ Component , Ġtoolbar : ĠJ Component ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Content ( Content Factory . SERVICE . getInstance (). create Content ( null , Ġtitle , Ġfalse ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomponent Ġ= ĠSimple Tool Window Panel ( false ). set Provide Quick Actions ( true ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Content ( content ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoolbar ?. let Ġ{ Ġset Toolbar ( it ) Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Closeable Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} Ċ } Ċ