/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠAnt on ĠSh uv ae v Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġorg . elasticsearch 4 idea . ui . explorer Ċ Ċ import Ġcom . intellij . ide . Common Actions Manager Ċ import Ġcom . intellij . ide . Tree Expand er Ċ import Ġcom . intellij . ide . util . tree View . Abstract Tree Structure Ċ import Ġcom . intellij . ide . util . tree View . Node Renderer Ċ import Ġcom . intellij . openapi . Disposable Ċ import Ġcom . intellij . openapi . action System . Action Manager Ċ import Ġcom . intellij . openapi . action System . DataContext Ċ import Ġcom . intellij . openapi . action System . Default Action Group Ċ import Ġcom . intellij . openapi . components . service Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . openapi . ui . Simple Tool Window Panel Ċ import Ġcom . intellij . openapi . ui . Splitter Ċ import Ġcom . intellij . openapi . util . Dis poser Ċ import Ġcom . intellij . ui . Animated Icon Ċ import Ġcom . intellij . ui . Popup Handler Ċ import Ġcom . intellij . ui . ScrollPane Factory Ċ import Ġcom . intellij . ui . Tree Speed Search Ċ import Ġcom . intellij . ui . components . JB Loading Panel Ċ import Ġcom . intellij . ui . tree . Async Tree Model Ċ import Ġcom . intellij . ui . tree . Structure Tree Model Ċ import Ġcom . intellij . ui . tree Structure . Tree Ċ import Ġcom . intellij . util . Edit Source On DoubleClick Handler . Tree Mouse Listener Ċ import Ġcom . intellij . util . ui . J BU I Ċ import Ġcom . intellij . util . ui . UI Util Ċ import Ġcom . intellij . util . ui . tree . Tree Util Ċ import Ġorg . elasticsearch 4 idea . model . Elasticsearch Cluster Ċ import Ġorg . elasticsearch 4 idea . model . Elasticsearch Index Ċ import Ġorg . elasticsearch 4 idea . model . Method Ċ import Ġorg . elasticsearch 4 idea . model . Request Ċ import Ġorg . elasticsearch 4 idea . service . Elasticsearch Manager Ċ import Ġorg . elasticsearch 4 idea . ui . Elasticsearch Clusters Listener Impl Ċ import Ġorg . elasticsearch 4 idea . ui . editor . Elasticsearch File Ċ import Ġorg . elasticsearch 4 idea . ui . editor . Elasticsearch FileSystem Ċ import Ġorg . elasticsearch 4 idea . ui . explorer . actions .* Ċ import Ġorg . elasticsearch 4 idea . ui . explorer . table . Elasticsearch Infos Table Ċ import Ġorg . elasticsearch 4 idea . ui . explorer . tree . Cluster Node Descriptor Ċ import Ġorg . elasticsearch 4 idea . ui . explorer . tree . Elasticsearch Explorer Tree Structure Ċ import Ġorg . elasticsearch 4 idea . ui . explorer . tree . Index Node Descriptor Ċ import Ġorg . elasticsearch 4 idea . utils . Task Utils Ċ import Ġjava . awt . Border Layout Ċ import Ġjava . awt . event . ActionEvent Ċ import Ġjava . awt . event . KeyEvent Ċ import Ġjava . awt . event . MouseEvent Ċ import Ġjavax . swing .* Ċ import Ġjavax . swing . tree . Default Mutable TreeNode Ċ import Ġjavax . swing . tree . Tree Path Ċ import Ġjavax . swing . tree . Tree Selection Model ĊĊ Ċ class ĠElasticsearch Explorer ( ĊĠĠĠ Ġprivate Ġval Ġproject : ĠProject Ċ ) Ġ: ĠSimple Tool Window Panel ( true , Ġtrue ), ĠDis posable Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġtree : ĠTree ĊĠĠĠ Ġprivate Ġval Ġtable : ĠElasticsearch Infos Table Ġ= ĠElasticsearch Infos Table () ĊĠĠĠ Ġprivate Ġval Ġinfo Table Panel : ĠJ B Loading Panel Ġ= ĠJ B Loading Panel ( Border Layout (), Ġthis , Ġ 1 0 0 ) ĊĠĠĠ Ġprivate Ġval Ġelasticsearch Manager Ġ= Ġproject . service < Elasticsearch Manager >() ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġinfo Table Panel . add ( ScrollPane Factory . create ScrollPane ( table )) ĊĊĠĠĠĠĠĠĠ Ġval Ġtree Panel Ġ= ĠJPanel ( Border Layout ()) ĊĠĠĠĠĠĠĠ Ġtree Ġ= Ġcreate Tree () ĊĠĠĠĠĠĠĠ Ġtoolbar Ġ= Ġcreate Toolbar Panel () ĊĠĠĠĠĠĠĠ Ġcreate Tree Popup Actions () ĊĠĠĠĠĠĠĠ Ġtable . empty Text . text Ġ= ĠTABLE _ EMPTY _ TEXT ĊĊĠĠĠĠĠĠĠ Ġtree Panel . add ( ScrollPane Factory . create ScrollPane ( tree )) ĊĊĠĠĠĠĠĠĠ Ġval Ġsplit ter Ġ= ĠSplit ter ( true , Ġ 0 . 6 f ) ĊĠĠĠĠĠĠĠ Ġsplit ter . first Component Ġ= Ġtree Panel ĊĠĠĠĠĠĠĠ Ġsplit ter . second Component Ġ= Ġinfo Table Panel ĊĠĠĠĠĠĠĠ Ġsplit ter . divider . background Ġ= ĠUI Util . getList Background () ĊĊĠĠĠĠĠĠĠ Ġset Content ( splitter ) ĊĊĠĠĠĠĠĠĠ Ġelasticsearch Manager . create All Clusters () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Tree (): ĠTree Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtree Structure Ġ= ĠElasticsearch Explorer Tree Structure ( project ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtree Model : ĠStructure Tree Model < *> Ġ= ĠStructure Tree Model < Abstract Tree Structure >( tree Structure , Ġthis ) ĊĠĠĠĠĠĠĠ Ġval Ġtree Ġ= ĠTree ( Async Tree Model ( tree Model , Ġthis )) ĊĠĠĠĠĠĠĠ Ġtree . is Root Visible Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġtree . shows Root Handles Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġtree . cell Renderer Ġ= ĠNode Renderer () ĊĠĠĠĠĠĠĠ Ġtree . empty Text . text Ġ= Ġ" Add ĠElasticsearch Ġcluster " ĊĠĠĠĠĠĠĠ Ġtree . selection Model . selection Mode Ġ= ĠTree Selection Model . DIS CONT IG UO US _ TREE _ SELECTION ĊĠĠĠĠĠĠĠ Ġtree . put Client Property ( Animated Icon . ANIM ATION _ IN _ RENDER ER _ ALLOWED , Ġtrue ) ĊĊĠĠĠĠĠĠĠ Ġval Ġlistener Ġ= ĠElasticsearch Clusters Listener Impl ( this , Ġtree Model ) ĊĠĠĠĠĠĠĠ Ġelasticsearch Manager . add Clusters Listener ( listener ) ĊĠĠĠĠĠĠĠ ĠDis poser . register ( this , ĠDis posable Ġ{ Ġelasticsearch Manager . remove Clusters Listener ( listener ) Ġ}) ĊĊĠĠĠĠĠĠĠ ĠTree Util . install Actions ( tree ) ĊĠĠĠĠĠĠĠ ĠTree Speed Search ( tree ) ĊĊĠĠĠĠĠĠĠ Ġobject Ġ: ĠTree Mouse Listener ( tree , Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġprocess DoubleClick ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe : ĠMouseEvent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Context : ĠData Context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtree Path : ĠTree Path ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtree Node Action () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. install On ( tree ) ĊĊĠĠĠĠĠĠĠ Ġtree . register Keyboard Action ( object Ġ: ĠAbstract Action () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠactionPerformed ( e : ĠAction Event ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtree Node Action () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}, ĠKey Stroke . getKey Stroke ( KeyEvent . VK _ ENTER , Ġ 0 ), ĠJ Component . WHEN _ FOC USED ) ĊĊĠĠĠĠĠĠĠ ĠTool Tip Manager . shared Instance (). register Component ( tree ) ĊĊĠĠĠĠĠĠĠ Ġtree . selection Model . add Tree Selection Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate NodeInfo () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtree ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate NodeInfo If Selected ( elasticsearch Cluster : ĠElasticsearch Cluster ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( getSelected Cluster () Ġ== Ġelasticsearch Cluster ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġget SelectedIndex ()?. cluster Ġ== Ġelasticsearch Cluster ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate NodeInfo () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate NodeInfo () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcluster Ġ= Ġthis . getSelected Cluster () ĊĠĠĠĠĠĠĠ Ġif Ġ( cluster Ġ!= Ġnull Ġ&& Ġcluster . is Loaded ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtable . empty Text . text Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinfo Table Panel . start Loading () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTask Utils . run Background Task (" Getting ĠElasticsearch Ġcluster Ġinfo ...") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelasticsearch Manager . prepare Get Cluster Info ( cluster ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. finally Ġ{ Ġcluster Info , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUI Util . invoke Later IfNeeded Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinfo Table Panel . stop Loading () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtable . update Infos ( cluster Info ?. to TableEntry List (). or Empty ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġindex Ġ= Ġthis . getSelected Index () ĊĠĠĠĠĠĠĠ Ġif Ġ( index Ġ!= Ġnull Ġ&& Ġindex . cluster . is Loaded ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtable . empty Text . text Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinfo Table Panel . start Loading () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTask Utils . run Background Task (" Getting ĠElasticsearch Ġindex Ġinfo ...") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelasticsearch Manager . prepare Get Index Info ( index ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. finally Ġ{ Ġindex Info , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUI Util . invoke Later IfNeeded Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinfo Table Panel . stop Loading () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtable . update Infos ( index Info ?. to TableEntry List (). or Empty ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtable . update Infos ( emptyList ()) ĊĠĠĠĠĠĠĠ Ġtable . empty Text . text Ġ= ĠTABLE _ EMPTY _ TEXT ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Tree Popup Actions () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġaction Popup Group Ġ= ĠDefault Action Group (" Elasticsearch Explorer Popup Group ", Ġtrue ) ĊĠĠĠĠĠĠĠ Ġval Ġrequest Index Info Provider Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠRequest ( path Ġ= Ġ"/ ${ getSelected Index ()?. name }", Ġmethod Ġ= ĠMethod . GET ) Ġ} ĊĠĠĠĠĠĠĠ Ġaction Popup Group . add ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRun Query Action ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Index Info Provider , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Index ĠInfo " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġrequest Index Stats Provider Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRequest ( path Ġ= Ġ"/ ${ getSelected Index ()?. name }/ _ stats ", Ġmethod Ġ= ĠMethod . GET ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġaction Popup Group . add ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRun Query Action ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Index Stats Provider , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Index ĠStats " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġaction Popup Group . add Separator () ĊĠĠĠĠĠĠĠ Ġaction Popup Group . add ( Create Index Action ( this )) ĊĠĠĠĠĠĠĠ Ġaction Popup Group . add ( Create Alias Action ( this )) ĊĠĠĠĠĠĠĠ Ġaction Popup Group . add ( Refresh Index Action ( this )) ĊĠĠĠĠĠĠĠ Ġaction Popup Group . add ( Flush Index Action ( this )) ĊĠĠĠĠĠĠĠ Ġaction Popup Group . add ( Force Merge Index Action ( this )) ĊĠĠĠĠĠĠĠ Ġaction Popup Group . add Separator () ĊĠĠĠĠĠĠĠ Ġval Ġrequest Info Ġ= ĠRequest ( path Ġ= Ġ"/", Ġmethod Ġ= ĠMethod . GET ) ĊĠĠĠĠĠĠĠ Ġaction Popup Group . add ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRun Query Action ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Info , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Info " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġrequest Stats Ġ= ĠRequest ( path Ġ= Ġ"/ _ stats ", Ġmethod Ġ= ĠMethod . GET ) ĊĠĠĠĠĠĠĠ Ġaction Popup Group . add ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRun Query Action ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Stats , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Indices ĠStats " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġrequest Nodes Stats Ġ= ĠRequest ( path Ġ= Ġ"/ _ nodes / stats ", Ġmethod Ġ= ĠMethod . GET ) ĊĠĠĠĠĠĠĠ Ġaction Popup Group . add ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRun Query Action ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Nodes Stats , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Nodes ĠStats " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġrequest Nodes Info Ġ= ĠRequest ( path Ġ= Ġ"/ _ nodes ", Ġmethod Ġ= ĠMethod . GET ) ĊĠĠĠĠĠĠĠ Ġaction Popup Group . add ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRun Query Action ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Nodes Info , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Nodes ĠInfo " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġrequest Plugins Ġ= ĠRequest ( path Ġ= Ġ"/ _ nodes / plugins ", Ġmethod Ġ= ĠMethod . GET ) ĊĠĠĠĠĠĠĠ Ġaction Popup Group . add ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRun Query Action ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Plugins , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Plugins " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġrequest Cluster State Ġ= ĠRequest ( path Ġ= Ġ"/ _ cluster / state ", Ġmethod Ġ= ĠMethod . GET ) ĊĠĠĠĠĠĠĠ Ġaction Popup Group . add ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRun Query Action ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Cluster State , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Cluster ĠState " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġrequest Cluster Health Ġ= ĠRequest ( path Ġ= Ġ"/ _ cluster / health ", Ġmethod Ġ= ĠMethod . GET ) ĊĠĠĠĠĠĠĠ Ġaction Popup Group . add ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRun Query Action ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Cluster Health , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Cluster ĠHealth " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġrequest Templates Ġ= ĠRequest ( path Ġ= Ġ"/ _ template ", Ġmethod Ġ= ĠMethod . GET ) ĊĠĠĠĠĠĠĠ Ġaction Popup Group . add ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRun Query Action ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Templates , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Templates " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġaction Popup Group . add Separator () ĊĠĠĠĠĠĠĠ Ġaction Popup Group . add ( Close Index Action ( this )) ĊĠĠĠĠĠĠĠ Ġaction Popup Group . add ( Open Index Action ( this )) ĊĠĠĠĠĠĠĠ Ġaction Popup Group . add ( Remove Action ( this )) ĊĊĠĠĠĠĠĠĠ ĠPopup Handler . install Popup Handler ( tree , Ġaction Popup Group , Ġ" POP UP ", ĠAction Manager . getInstance ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtree Node Action () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġindex Ġ= Ġget SelectedIndex () ĊĠĠĠĠĠĠĠ Ġif Ġ( index Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbody Ġ= Ġ" {\ n Ġ Ġ\" from \": Ġ 0 ,\ n Ġ Ġ\" size \": Ġ 2 0 ,\ n Ġ Ġ\" query \": Ġ{\ n ĠĠĠ Ġ\" match _ all \": Ġ{}\ n Ġ Ġ}\ n }" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠRequest ( path Ġ= Ġ"/ ${ index . name }/ _ search ", Ġbody Ġ= Ġbody , Ġmethod Ġ= ĠMethod . GET ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopen Query Editor ( index . cluster , Ġrequest , Ġ 0 . 3 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġcluster Ġ= Ġget Selected Cluster () ĊĠĠĠĠĠĠĠ Ġif Ġ( cluster Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTask Utils . run Background Task (" Getting ĠElasticsearch Ġcluster Ġinfo ...") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelasticsearch Manager . prepare Fetch Cluster ( cluster . label ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġopen Query Editor ( cluster : ĠElasticsearch Cluster , Ġrequest : ĠRequest , Ġbody To Response Pro portion : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ ĠElasticsearch FileSystem . instance ?. open Editor ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠElasticsearch File ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcluster , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbody To Response Pro portion ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Selected Clusters (): ĠList < Elasticsearch Cluster > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtree . selection Paths . or Empty (). as Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . last Path Component Ġas ĠDefault Mutable TreeNode Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . user Object Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠCluster Node Descriptor Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . element ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġif Ġ( it Ġis ĠIndex Node Descriptor ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( it . element ). cluster ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter NotNull () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. toList () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Selected Cluster (): ĠElasticsearch Cluster ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ( getSelected () Ġas ? ĠCluster Node Descriptor )?. element ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget SelectedIndex (): ĠElasticsearch Index ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ( getSelected () Ġas ? ĠIndex Node Descriptor )?. element ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Selected (): ĠAny ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( tree . selection Count Ġ!= Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġpath : ĠTree Path Ġ= Ġtree . selection Path Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġnode Ġ= Ġpath . last Path Component Ġas ĠDefault Mutable TreeNode ĊĠĠĠĠĠĠĠ Ġreturn Ġnode . user Object ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Toolbar Panel (): ĠJPanel Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgroup Ġ= ĠDefault Action Group () ĊĠĠĠĠĠĠĠ Ġgroup . add ( Add Cluster Action ( this )) ĊĠĠĠĠĠĠĠ Ġgroup . add ( Duplicate Cluster Action ( this )) ĊĠĠĠĠĠĠĠ Ġgroup . add ( Edit Cluster Action ( this )) ĊĠĠĠĠĠĠĠ Ġgroup . add Separator () ĊĠĠĠĠĠĠĠ Ġgroup . add ( Refresh Clusters Action ( this )) ĊĠĠĠĠĠĠĠ Ġgroup . add ( Open Query Editor Action ( this )) ĊĠĠĠĠĠĠĠ Ġgroup . add Separator () ĊĊĠĠĠĠĠĠĠ Ġval Ġtree Expand er : ĠTree Expand er Ġ= Ġobject Ġ: ĠTree Expand er Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġexpand All () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTree Util . expand All ( tree ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcollapse All () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTree Util . collapse All ( tree , Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcan Expand (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġelasticsearch Manager . get Clusters (). isNotEmpty () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcan Collapse (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcan Expand () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar Ġaction Ġ= ĠCommon Actions Manager . getInstance (). create Expand All Action ( tree Expand er , Ġthis ) ĊĠĠĠĠĠĠĠ Ġaction . template Presentation . description Ġ= Ġ" Expand Ġall Ġcluster Ġnodes " ĊĠĠĠĠĠĠĠ Ġgroup . add ( action ) ĊĠĠĠĠĠĠĠ Ġaction Ġ= ĠCommon Actions Manager . getInstance (). create Collapse All Action ( tree Expand er , Ġthis ) ĊĠĠĠĠĠĠĠ Ġaction . template Presentation . description Ġ= Ġ" Collapse Ġall Ġcluster Ġnodes " ĊĠĠĠĠĠĠĠ Ġgroup . add ( action ) ĊĊĠĠĠĠĠĠĠ Ġval Ġaction ToolBar Ġ= ĠAction Manager . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. create Action Toolbar (" Elasticsearch Explorer ToolBar ", Ġgroup , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġreturn ĠJ BU I . Panels . simple Panel ( action ToolBar . component ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdispose () Ġ{ ĊĠĠĠĠĠĠĠ ĠTool Tip Manager . shared Instance (). unregister Component ( tree ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( key Stroke Ġin Ġtree . registered Key St ro kes ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtree . unregister Keyboard Action ( key Stroke ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremove Selected Cluster ( selected Cluster : ĠElasticsearch Cluster ) Ġ{ ĊĠĠĠĠĠĠĠ Ġelasticsearch Manager . remove Cluster ( selected Cluster . label ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTABLE _ EMPTY _ TEXT Ġ= Ġ" Nothing Ġto Ġshow " ĊĠĠĠ Ġ} Ċ Ċ }