package Ġio . github . paul griff ith . log Ċ Ċ import Ġcom . form dev . flat l af . extras . Flat SVG Icon Ċ import Ġio . github . paul griff ith . utils . Action Ċ import Ġio . github . paul griff ith . utils . Flat ScrollPane Ċ import Ġio . github . paul griff ith . utils . Tool Panel Ċ import Ġjava . awt . Desktop Ċ import Ġjava . nio . file . Path Ċ import Ġjavax . swing . Icon Ċ import Ġjavax . swing . J PopupMenu Ċ import Ġjavax . swing . J Text Pane Ċ import Ġkotlin . io . path . name Ċ import Ġkotlin . io . path . read Lines Ċ import Ġkotlin . io . path . use Lines Ċ Ċ class ĠLog View ( private Ġval Ġpaths : ĠList < Path >) Ġ: ĠTool Panel () Ġ{ ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġto Open Ġ= Ġpaths . sorted () ĊĠĠĠĠĠĠĠ Ġname Ġ= Ġto Open . first (). name ĊĠĠĠĠĠĠĠ Ġtool Tip Text Ġ= Ġto Open . first (). toString () ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġevents Ġ= Ġto Open . flatMap Ġ{ Ġpath Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpath . use Lines Ġ{ ĠLog Panel . parse Logs ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( Log Panel ( events ), Ġ" push , Ġgrow ") ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog Panel . LOGGER . info (" Unable Ġto Ġparse Ġ${ paths . join ToString ()} Ġas Ġa Ġwrapper Ġlog ; Ġopening Ġas Ġa Ġtext Ġfile ", Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFlat ScrollPane ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJ Text Pane (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Editable Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġto Open . flatMap Ġ{ Ġpath Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpath . read Lines () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. join ToString ( separator Ġ= Ġ"\ n ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" push , Ġgrow " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġicon : ĠIcon Ġ= ĠFlat SVG Icon (" icons / bx - file . svg ") ĊĊĠĠĠ Ġoverride Ġfun Ġcustomize PopupMenu ( menu : ĠJ PopupMenu ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( paths . size Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu . add Separator () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAction ( name Ġ= Ġ" Open Ġin ĠExternal ĠEditor ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdesktop Ġ= ĠDesktop . get Desktop () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpaths . forEach Ġ{ Ġpath Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdesktop . open ( path . to File ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ