package Ġcom . jetbrains . package search . intellij . plugin . ui . tool window . panels . management . left Ċ Ċ import Ġcom . intellij . ide . Copy Provider Ċ import Ġcom . intellij . openapi . action System . DataContext Ċ import Ġcom . intellij . openapi . action System . DataProvider Ċ import Ġcom . intellij . ui . Animated Icon Ċ import Ġcom . intellij . ui . Hyper link Label Ċ import Ġcom . intellij . ui . List Speed Search Ċ import Ġcom . intellij . ui . Popup Handler Ċ import Ġcom . intellij . ui . Speed Search Comparator Ċ import Ġcom . intellij . ui . components . JB List Ċ import Ġcom . intellij . util . text . Version Comparator Util Ċ import Ġcom . intellij . util . ui . UI Util Ċ import Ġcom . jetbrains . package search . intellij . plugin . Package Search Bundle Ċ import Ġcom . jetbrains . package search . intellij . plugin . look s Like Gradle Variable Ċ import Ġcom . jetbrains . package search . intellij . plugin . ui . R ider UI Ċ import Ġcom . jetbrains . package search . intellij . plugin . ui . tool window . confirm ations . Package Operations Confirmation Dialog Ċ import Ġcom . jetbrains . package search . intellij . plugin . ui . tool window . models . Executable Package Operation Ċ import Ġcom . jetbrains . package search . intellij . plugin . ui . tool window . models . Package Search Dependency Ċ 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 . models . asList Ċ import Ġjava . awt . Component Ċ import Ġjava . awt . Cursor Ċ import Ġjava . awt . Point Ċ import Ġjava . awt . event . Focus Adapter Ċ import Ġjava . awt . event . Focus Event Ċ import Ġjava . awt . event . Mouse Adapter Ċ import Ġjava . awt . event . MouseEvent Ċ import Ġjava . util . ArrayList Ċ import Ġjavax . swing . Default ListModel Ċ import Ġjavax . swing . Default List Selection Model Ċ import Ġjavax . swing . List Selection Model Ċ Ċ class ĠPackages Smart List ( val ĠviewModel : ĠPackage Search Tool Window Model ) Ġ: ĊĠĠĠ ĠJ B List < Packages Smart Item >( emptyList ()), ĠData Provider , ĠCopy Provider Ġ{ ĊĊĠĠĠ Ġvar Ġtransfer Focus Up : Ġ() Ġ-> ĠUnit Ġ= Ġ{ Ġtransfer Focus Backward () Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġupdate Content Lock Ġ= ĠObject () ĊĊĠĠĠ Ġprivate Ġval Ġlist Model : ĠDefault ListModel < Packages Smart Item > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġmodel Ġas ĠDefault ListModel < Packages Smart Item > ĊĊĠĠĠ Ġprivate Ġval Ġheader Link Handler Ġ= Ġcreate Link Activation Listener ( this ) ĊĠĠĠ Ġprivate Ġval Ġupgrade All Link Ġ= ĠHyper link Label ( Package Search Bundle . message (" package search . ui . tool window . actions . upgrade All . text ")). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġis Visible Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġadd Hyper link Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( viewModel . upgrade Count In Context . value Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġselected Project Module Ġ= ĠviewModel . selected Project Module . value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġselected Remote Repository Ġ= ĠviewModel . selected Remote Repository . value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġselected Remote Repository Ids Ġ= Ġselected Remote Repository . asList () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġproject Modules Ġ= Ġif Ġ( selected Project Module Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( selected Project Module ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . project Modules . value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġselected Only Stable Ġ= ĠviewModel . selected Only Stable . value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġupgrade Requests Ġ= ĠviewModel . prepare Package Operation Targets For ( project Modules , Ġselected Remote Repository ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . version . isNotBlank () Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ! look s Like Gradle Variable ( it . version ) Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVersion Comparator Util . compare ( it . version , Ġit . package Search Dependency . get Latest Available Version ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Only Stable , Ġselected Remote Repository Ids )) Ġ< Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. sorted By Ġ{ Ġit . project Module . get FullName () Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= ĠPackage Search Bundle . message (" package search . ui . tool window . actions . upgrade All . text ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġupgrade Requests To Execute Ġ= ĠPackage Operations Confirmation Dialog . show ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . project , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ+ Ġ( selected Project Module ?. name ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġ${ Package Search Bundle . message (" package search . ui . tool window . actions . upgrade All . button . title Suffix ", Ġit )}" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ?: Ġ""), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPackage Search Bundle . message (" package search . ui . tool window . actions . upgrade All . button . text "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Only Stable , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Remote Repository Ids , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupgrade Requests ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( upgrade Requests To Execute . any ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . execute Operations ( upgrade Requests To Execute . map Ġ{ Ġtarget Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtarget Version Ġ= Ġtarget . package Search Dependency . get Latest Available Version ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Only Stable , Ġselected Remote Repository Ids ) Ġ?: Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoperation Ġ= Ġtarget . get Apply Operation ( target Version ) !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExec utable Package Operation ( operation , Ġtarget , Ġtarget Version ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġinstalled Header Ġ= ĠPackages Smart Item . Header ( Package Search Bundle . message (" package search . ui . tool window . tab . packages . installed Packages ")) ĊĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Header Link ( upgrade All Link ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġval Ġavailable Header Ġ= ĠPackages Smart Item . Header ( Package Search Bundle . message (" package search . ui . tool window . tab . packages . search Results ")) ĊĊĠĠĠ Ġprivate Ġval Ġpackage Items : ĠList < Packages Smart Item . Package > Ġget () Ġ= Ġlist Model . elements (). toList (). filter Is Instance < Packages Smart Item . Package >() ĊĠĠĠ Ġval Ġhas Package Items : ĠBoolean Ġget () Ġ= Ġpackage Items . any () ĊĠĠĠ Ġval Ġfirst Package Index : ĠInt Ġget () Ġ= Ġlist Model . elements (). toList (). indexOf First Ġ{ Ġit Ġis ĠPackages Smart Item . Package Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġpackage Selection Listeners Ġ= ĠArrayList <( Package Search Dependency ) Ġ-> ĠUnit >() ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" Un stable Api Usage ") Ġ// Ġyo lo ĊĠĠĠĠĠĠĠ Ġput Client Property ( Animated Icon . ANIM ATION _ IN _ RENDER ER _ ALLOWED , Ġtrue ) ĊĊĠĠĠĠĠĠĠ Ġcell Renderer Ġ= ĠPackages Smart Renderer ( viewModel ) ĊĠĠĠĠĠĠĠ Ġselection Model Ġ= ĠB rief Items Selection Model () ĊĊĠĠĠĠĠĠĠ Ġlist Model . addElement ( installed Header ) ĊĠĠĠĠĠĠĠ Ġlist Model . addElement ( available Header ) ĊĊĠĠĠĠĠĠĠ ĠR ider UI . override KeyStroke ( this , Ġ" j list : RIGHT ", Ġ" RIGHT ") Ġ{ Ġtransfer Focus () Ġ} ĊĠĠĠĠĠĠĠ ĠR ider UI . override KeyStroke ( this , Ġ" j list : ENTER ", Ġ" ENTER ") Ġ{ Ġtransfer Focus () Ġ} ĊĠĠĠĠĠĠĠ ĠR ider UI . override KeyStroke ( this , Ġ" shift ĠENTER ") Ġ{ Ġthis . transfer Focus Up () Ġ} ĊĠĠĠĠĠĠĠ ĠR ider UI . add Keyboard Popup Handler ( this , Ġ" alt ĠENTER ") Ġ{ Ġitems Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġitems . first () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item Ġis ĠPackages Smart Item . Package ) ĠPackages Smart Item Popup ( viewModel , Ġitem . meta ) Ġelse Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġadd List Selection Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġselected Value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( selectedIndex Ġ>= Ġ 0 Ġ&& Ġitem Ġis ĠPackages Smart Item . Package ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġensure Index Is Visible ( selectedIndex ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( listener Ġin Ġpackage Selection Listeners ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener ( item . meta ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġadd Focus Listener ( object Ġ: ĠFocus Adapter () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġfocus G ained ( e : ĠFocus Event ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( has Package Items Ġ&& Ġselected Index Ġ== Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Index Ġ= Ġfirst Package Index ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġinstall Popup Handler () ĊĊĠĠĠĠĠĠĠ Ġadd Mouse Listener ( header Link Handler ) ĊĠĠĠĠĠĠĠ Ġadd Mouse Motion Listener ( header Link Handler ) ĊĊĠĠĠĠĠĠĠ ĠList Speed Search ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġis ĠPackages Smart Item . Package ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . meta . identifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomparator Ġ= ĠSpeed Search Comparator ( false ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠviewModel . search Term . adv ise ( viewModel . lifetime ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupgrade All Link . isVisible Ġ= ĠviewModel . upgrade Count In Context . value Ġ> Ġ 0 Ġ&& Ġit . isEmpty () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠviewModel . upgrade Count In Context . adv ise ( viewModel . lifetime ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ> Ġ 0 Ġ&& ĠviewModel . search Term . value . isBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupgrade All Link . set Hyper link Text ( Package Search Bundle . message (" package search . ui . tool window . actions . upgrade All . text . with Count ", Ġit )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupgrade All Link . isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupgrade All Link . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinstall Popup Handler () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġlist . add Mouse Listener ( object Ġ: ĠPopup Handler () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġinvoke Popup ( comp : ĠComponent ?, Ġx : ĠInt , Ġy : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġindex Ġ= Ġlist . location To Index ( Point ( x , Ġy Ġ- Ġ 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġelement Ġ= Ġlist . model . getElement At ( index ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( element Ġ!= Ġnull Ġ&& Ġelement Ġis ĠPackages Smart Item . Package ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( selected Value Ġ== Ġnull Ġ|| Ġselected Value Ġas ĠPackages Smart Item Ġ!= Ġelement ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsetSelected Value ( element , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpopup Ġ= ĠPackages Smart Item Popup ( viewModel , Ġelement . meta ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpopup . show ( list , Ġx , Ġy ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcalc Display Items ( packages : ĠList < Package Search Dependency >): ĠList < Packages Smart Item > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdisplay Items Ġ= Ġmutable ListOf < Packages Smart Item >() ĊĊĠĠĠĠĠĠĠ Ġval Ġinstalled Packages Ġ= Ġpackages . filter Ġ{ Ġit . is Installed Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= ĠPackage Search Bundle . message (" package search . ui . tool window . tab . packages . installed Packages . with Count ", Ġinstalled Packages . size ) ĊĠĠĠĠĠĠĠ Ġinstalled Header . title Ġ= Ġmessage Ġ+ Ġ( viewModel . selected Project Module . value ?. name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ Ġ" Ġ${ Package Search Bundle . message (" package search . ui . tool window . tab . packages . installed Packages . title Suffix ", Ġit )}" Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġ"") ĊĊĠĠĠĠĠĠĠ Ġval Ġavailable Packages Ġ= Ġpackages . filter Not Ġ{ Ġit . is Installed Ġ} ĊĊĠĠĠĠĠĠĠ Ġavailable Header . title Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPackage Search Bundle . message (" package search . ui . tool window . tab . packages . search Results . with Count ", Ġavailable Packages . size ) ĊĠĠĠĠĠĠĠ Ġavailable Header . visible Ġ= Ġavailable Packages . any () Ġ|| ĠviewModel . search Term . value . isNotEmpty () ĊĊĠĠĠĠĠĠĠ Ġdisplay Items . add ( installed Header ) ĊĠĠĠĠĠĠĠ Ġdisplay Items . addAll ( installed Packages . map Ġ{ ĠPackages Smart Item . Package ( it ) Ġ}) ĊĠĠĠĠĠĠĠ Ġdisplay Items . add ( available Header ) ĊĠĠĠĠĠĠĠ Ġdisplay Items . addAll ( available Packages . map Ġ{ ĠPackages Smart Item . Package ( it ) Ġ}) ĊĠĠĠĠĠĠĠ Ġreturn Ġdisplay Items ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate All Packages ( packages : ĠList < Package Search Dependency >) Ġ{ ĊĠĠĠĠĠĠĠ Ġsynchronized ( update Content Lock ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdisplay Items Ġ= Ġcalc Display Items ( packages ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġsave Ġselected Ġpackage ĠId ; Ġwe Ġhave Ġto Ġrestore Ġselection Ġafter Ġthe Ġlist Ġre building ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġselected Package Index Ġ= Ġselected Index ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġselected Package Id Ġ= ĠviewModel . selected Package . value . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( selected Value Ġas ĠPackages Smart Item . Package ?) ?. meta ?. identifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġre selected Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ(( index , Ġitem ) Ġin Ġdisplay Items . with Index ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ< Ġlist Model . size ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Model . set ( index , Ġitem ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Model . add ( index , Ġitem ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item Ġis ĠPackages Smart Item . Package Ġ&& Ġitem . meta . identifier Ġ== Ġselected Package Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ!= Ġselected Package Index ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Index Ġ= Ġindex ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre selected Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( list Model . size () Ġ> Ġdisplay Items . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Model . remove Range ( display Items . size , Ġlist Model . size () Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! re selected ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġif Ġthere Ġis Ġno Ġthe Ġold Ġselected Ġpackage Ġin Ġthe Ġnew Ġlist ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclear Selection () Ġ// Ġwe Ġhave Ġto Ġclear Ġthe Ġselection ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Package Selection Listener ( listener : Ġ( Package Search Dependency ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġpackage Selection Listeners . add ( listener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠIt Ġis Ġpossible Ġto Ġselect Ġonly Ġpackage Ġitems ; Ġf akes Ġand Ġheaders Ġshould Ġbe Ġignored ĊĠĠĠ Ġprivate Ġinner Ġclass ĠB rief Items Selection Model Ġ: ĠDefault List Selection Model () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . selection Mode Ġ= ĠList Selection Model . SINGLE _ SELECTION Ġ// ĠTODO : ĠMULTI PLE _ INTERVAL _ SELECTION Ġsupport ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġis Package Item ( index : ĠInt ) Ġ= Ġlist Model . getElement At ( index ) Ġis ĠPackages Smart Item . Package ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġset Selection Interval ( index 0 : ĠInt , Ġindex 1 : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Package Item ( index 0 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . setSelection Interval ( index 0 , Ġindex 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( anchor Selection Index Ġ< Ġindex 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġindex 0 Ġuntil Ġlist Model . size ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Package Item ( i )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . setSelection Interval ( i , Ġi ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġindex 0 Ġdown To Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Package Item ( i )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . setSelection Interval ( i , Ġi ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . clear Selection () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransfer Focus Up () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Selected Package (): ĠPackages Smart Item . Package ? Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( this . selectedIndex Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist Model . getElement At ( this . selectedIndex ) Ġas ? ĠPackages Smart Item . Package ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetData ( data Id : ĠString ) Ġ= Ġget Selected Package ()?. getData ( data Id , ĠviewModel . selected Project Module . value ) ĊĊĠĠĠ Ġoverride Ġfun Ġperform Copy ( data Context : ĠData Context ) Ġ{ ĊĠĠĠĠĠĠĠ Ġget Selected Package ()?. perform Copy ( data Context ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis Copy Enabled ( data Context : ĠData Context ) Ġ= Ġget Selected Package ()?. is Copy Enabled ( data Context ) Ġ?: Ġfalse ĊĠĠĠ Ġoverride Ġfun Ġis Copy Visible ( data Context : ĠData Context ) Ġ= Ġget Selected Package ()?. is Copy Visible ( data Context ) Ġ?: Ġfalse ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Link Activation Listener ( list : ĠJ B List < Packages Smart Item >) Ġ= Ġobject Ġ: ĠMouse Adapter () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ@ Suppress (" Too Generic Exception Ca ught ") Ġ// ĠGu arding Ġagainst Ġrandom Ġruntime Ġfailures ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġhyper link Hover Field Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHyper link Label :: class . java . getDeclared Field (" my Mouse Hover ") ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġlast Hover ed Hyper link Label : ĠHyper link Label ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġtry Set Hover ing ( target : ĠHyper link Label ?, Ġvalue : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( target Ġ== Ġnull ) Ġreturn ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhyper link Hover Field ?. is Accessible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhyper link Hover Field ?. set ( target , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ignored : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠNo - op ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġmouse Moved ( e : ĠMouseEvent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhyper link Label Ġ= Ġfind Hyper link Label At ( e . point ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( hyperlink Label Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( hyperlink Label Ġ!= Ġlast Hover ed Hyper link Label ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Set Hover ing ( last Hover ed Hyper link Label , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Set Hover ing ( hyperlink Label , Ġtrue ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Hover ed Hyper link Label Ġ= Ġhyper link Label ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . rep aint () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUI Util . set Cursor ( list , ĠCursor . get Pre defined Cursor ( Cursor . HAND _ CURSOR )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( last Hover ed Hyper link Label Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Set Hover ing ( last Hover ed Hyper link Label , Ġfalse ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Hover ed Hyper link Label Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . rep aint () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUI Util . set Cursor ( list , ĠCursor . getDefault Cursor ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġmouse Clicked ( e : ĠMouseEvent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhyper link Label Ġ= Ġfind Hyper link Label At ( e . point ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( hyperlink Label Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Set Hover ing ( last Hover ed Hyper link Label , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Set Hover ing ( hyperlink Label , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Hover ed Hyper link Label Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . rep aint () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhyper link Label . do Click () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġfind Hyper link Label At ( point : ĠPoint ): ĠHyper link Label ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġidx Ġ= Ġlist . location To Index ( point ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( idx Ġ< Ġ 0 ) Ġreturn Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcell Bounds Ġ= Ġlist . getCell Bounds ( idx , Ġidx ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! cell Bounds . contains ( point )) Ġreturn Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġlist . model . getElement At ( idx ) Ġas ? ĠPackages Smart Item . Header Ġ?: Ġreturn Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrenderer Component Ġ= Ġlist . cell Renderer . getList Cell Renderer Component ( list , Ġitem , Ġidx , Ġtrue , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrenderer Component . setBounds ( cell Bounds . x , Ġcell Bounds . y , Ġcell Bounds . width , Ġcell Bounds . height ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUI Util . layout Re cursively ( renderer Component ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrenderer Relative X Ġ= Ġpoint . x Ġ- Ġcell Bounds . x ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrenderer Relative Y Ġ= Ġpoint . y Ġ- Ġcell Bounds . y ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchild Component Ġ= ĠUI Util . get Dee pe st Component At ( renderer Component , Ġrenderer Relative X , Ġrenderer Relative Y ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( child Component Ġis ĠHyper link Label ) Ġreturn Ġchild Component ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ