/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 2 0 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* Ġ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 Ġcom . android . tools . profil ers . memory Ċ Ċ import Ġcom . android . tools . adt ui . model . Aspect Observer Ċ import Ġcom . android . tools . profil ers . Profiler Combo box Ċ import Ġcom . android . tools . profil ers . Profiler Combo box Cell Renderer Ċ import Ġcom . android . tools . profil ers . memory . adapters . instance filters . Capture Object Instance Filter Ċ import Ġcom . intellij . openapi . application . Application Manager Ċ import Ġjava . util . concurrent . Executor Ċ import Ġjavax . swing . Default ComboBox Model Ċ import Ġjavax . swing . JLabel Ċ import Ġjavax . swing . J List Ċ import Ġjavax . swing . List Cell Renderer Ċ Ċ internal Ġclass ĠMemory Instance Filter Menu ( selection : ĠMemory Capture Selection ): ĠAs pect Observer () Ġ{ ĊĠ Ġval Ġcomponent Ġ= ĠProfiler Combo box < Capture Object Instance Filter >() ĊĊĠ Ġinit Ġ{ ĊĠĠĠ Ġselection . aspect . add Dependency ( this ) ĊĠĠĠĠĠ Ġ. onChange ( Capture Selection Aspect . CURRENT _ LOADING _ CAPTURE ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcomponent . isVisible Ġ= Ġfalse ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ. onChange ( Capture Selection Aspect . CURRENT _ LOADED _ CAPTURE ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcapture Object Ġ= Ġselection . selected Capture ĊĠĠĠĠĠĠĠ Ġif Ġ( capture Object Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġval Ġfilters Ġ= Ġcapture Object . supported Instance Filters ĊĠĠĠĠĠĠĠĠĠ Ġif Ġ( filters . size Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġall Filters Ġ= ĠarrayOf < Capture Object Instance Filter ? >( null ) Ġ+ Ġfilters . to Typed Array () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomponent . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Visible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel Ġ= ĠDefault ComboBox Model ( all Filters ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrenderer Ġ= ĠInstance Filter Menu Renderer () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomponent . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġcomponent . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġcomponent . addActionListener Ġ{ ĊĠĠĠĠĠ Ġval Ġcapture Object Ġ= Ġselection . selected Capture !! ĊĠĠĠĠĠ Ġwhen Ġ( val Ġfilter Ġ= Ġcomponent . selected Item Ġas ĠCapture Object Instance Filter ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġnull Ġ-> Ġselection . removeAll Filters ( Executor ( Application Manager . getApplication () :: invoke Later )) ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġselection . set Filter ( filter , ĠExecutor ( Application Manager . getApplication () :: invoke Later )) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ Ċ // ĠInherit Ġfrom Ġ` Profiler Combo box Cell Renderer ` Ġto Ġproperly Ġrender Ġitems Ġfor Ġdifferent Ġselection Ġstates Ċ private Ġclass ĠInstance Filter Menu Renderer : ĠProfiler Combo box Cell Renderer < Capture Object Instance Filter ?> () Ġ{ ĊĠ Ġoverride Ġfun Ġcustomize Cell Renderer ( list : ĠJ List < out ĠCapture Object Instance Filter ? >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue : ĠCapture Object Instance Filter ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindex : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected : ĠBoolean , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhas Focus : ĠBoolean ) Ġ{ ĊĠĠĠ Ġappend (" Show Ġ${ value ?. displayName Ġ?: Ġ" all Ġclasses "} ") ĊĠ Ġ} Ċ } Ċ