package Ġorg . elixir _ lang . debugger . settings . ste pping . module _ filter Ċ Ċ import Ġcom . intellij . openapi . wm . Ide Focus Manager Ċ import Ġcom . intellij . ui . Boolean TableCell Editor Ċ import Ġcom . intellij . ui . Boolean TableCell Renderer Ċ import Ġcom . intellij . ui . Table Util Ċ import Ġcom . intellij . ui . Toolbar Decorator Ċ import Ġcom . intellij . ui . table . JB Table Ċ import Ġcom . intellij . util . ui . Component With Empty Text Ċ import Ġcom . intellij . util . ui . Status Text Ċ import Ġorg . elixir _ lang . debugger . settings . ste pping . Module Filter Ċ import Ġorg . elixir _ lang . debugger . settings . ste pping . module _ filter . editor . table . Model Ċ import Ġjava . awt . Border Layout Ċ import Ġjava . awt . Dimension Ċ import Ġjavax . swing . JPanel Ċ import Ġjavax . swing . J Table Ċ import Ġorg . elixir _ lang . debugger . settings . ste pping . module _ filter . editor . table . cell _ renderer . Module Filter Ġas ĠModule Filter Cell Renderer Ċ Ċ class ĠEditor : ĠJPanel ( Border Layout ()), ĠComponent With Empty Text Ġ{ ĊĠĠĠ Ġvar Ġfilters : ĠList < Module Filter > ĊĠĠĠĠĠĠĠĠ Ġget () Ġ= Ġtable Model . filters ĊĠĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġtable Model . filters Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġtable Model Ġ= ĠModel () ĊĠĠĠ Ġval Ġtable Ġ= ĠJ B Table ( table Model ). apply Ġ{ ĊĠĠĠĠĠĠĠ ĠsetShow Grid ( false ) ĊĠĠĠĠĠĠĠ Ġinter cell Spacing Ġ= ĠDimension ( 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġauto Resize Mode Ġ= ĠJ Table . AUTO _ RE SIZE _ LAST _ COLUMN ĊĠĠĠĠĠĠĠ Ġcolumn Selection Allowed Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġpreferred Scroll able Viewport Size Ġ= ĠDimension ( 2 0 0 , Ġrow Height Ġ* ĠJ B Table . PREFERRED _ SCROLL ABLE _ VIEW PORT _ HEIGHT _ IN _ ROWS ) ĊĊĠĠĠĠĠĠĠ Ġtable Header Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġcolumn Model . getColumn ( Model . ENABLED _ COLUMN _ INDEX ). let Ġ{ Ġcolumn Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTable Util . setup Checkbox Column ( column ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolumn . cell Editor Ġ= ĠBoolean TableCell Editor () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolumn . cell Renderer Ġ= ĠBoolean TableCell Renderer () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcolumn Model . getColumn ( Model . FILTER _ COLUMN _ INDEX ). let Ġ{ Ġcolumn Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolumn . cell Renderer Ġ= ĠModule Filter Cell Renderer ( this @ Editor ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdecorator Ġ= ĠToolbar Decorator ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. create Decorator ( table ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Add Action Ġ{ Ġadd Pattern Filter () Ġ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Remove Action Ġ{ ĠTable Util . remove Selected Items ( table ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Button Comparator (" Add ", Ġ" Remove ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. create Panel () ĊĊĠĠĠĠĠĠĠ Ġadd ( decorator , ĠBorderLayout . CENTER ) ĊĊĠĠĠĠĠĠĠ Ġempty Text . text Ġ= Ġ" No Ġmodule Ġpattern Ġconfigured " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Empty Text (): ĠStatus Text Ġ= Ġtable . empty Text ĊĊĠĠĠ Ġfun Ġstop Editing () Ġ{ ĊĠĠĠĠĠĠĠ Ġtable . cell Editor ?. stop Cell Editing () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠPrivate ĠFunctions ĊĊĠĠĠ Ġprivate Ġfun Ġadd Filter ( pattern : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfilter Ġ= ĠModule Filter ( pattern Ġ= Ġpattern ) ĊĊĠĠĠĠĠĠĠ Ġtable Model . add Row ( filter ). let Ġ{ Ġrow Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselect Row ( row ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscroll To Row ( row ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfocus () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Pattern Filter () Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Filter ("* ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġscroll To Row ( row : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtable . scroll Rect To Visible ( table . getCell Rect ( row , Ġ 0 , Ġtrue )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġselect Row ( row : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtable . selection Model . setSelection Interval ( row , Ġrow ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfocus () Ġ{ ĊĠĠĠĠĠĠĠ ĠIde Focus Manager . getGlobal Instance (). do When Focus Set tles Down Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIde Focus Manager . getGlobal Instance (). request Focus ( table , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ