package Ġcom . mad fish . ide . view Ċ Ċ import Ġcom . intellij . openapi . action System . Action Manager Ċ import Ġcom . intellij . openapi . action System . Action Places Ċ import Ġcom . intellij . openapi . action System . DataProvider Ċ import Ġcom . intellij . openapi . action System . Default Action Group Ċ import Ġcom . intellij . openapi . application . Application Manager Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . openapi . ui . Simple Tool Window Panel Ċ import Ġcom . intellij . openapi . ui . Vertical Flow Layout Ċ import Ġcom . intellij . ui .* Ċ import Ġcom . intellij . ui . components . panels . Wrapper Ċ import Ġcom . intellij . ui . table . TableView Ċ import Ġcom . intellij . util . ui . Column Info Ċ import Ġcom . intellij . util . ui . J BU I Ċ import Ġcom . intellij . util . ui . List TableModel Ċ import Ġcom . intellij . util . ui . UI Util Ċ import Ġcom . intellij . util . ui . table . Components List Focus Traversal Policy Ċ import Ġcom . mad fish . ide . action . RH Export Action Ċ import Ġcom . mad fish . ide . action . RH Refresh Action Ċ import Ġcom . mad fish . ide . action . RH Settings Action Ċ import Ġcom . mad fish . ide . action . RH Web Action Ċ import Ġcom . mad fish . ide . configurable . RH Data Ċ import Ġcom . mad fish . ide . messages . READ HUB _ REFRESH _ TOPIC Ċ import Ġcom . mad fish . ide . messages . READ HUB _ VIEW _ TOPIC Ċ import Ġcom . mad fish . ide . messages . TableView Listener Ċ import Ġcom . mad fish . ide . model . RH Base Item Ċ import Ġcom . mad fish . ide . model . RH Category Ċ import Ġcom . mad fish . ide . util . RH Data Keys Ċ import Ġcom . mad fish . ide . util . RH Util Ċ import Ġnet . mig info com . swing . M ig Layout Ċ import Ġjava . awt .* Ċ import Ġjavax . swing .* Ċ import Ġjavax . swing . event . Document Event Ċ import Ġjavax . swing . table . TableCell Renderer Ċ import Ġjavax . swing . text . Bad Location Exception Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠR og er âĦ ¢ Ċ Ġ*/ Ċ open Ġclass ĠR H Tool Window Content ( var Ġproject : ĠProject , Ġvar Ġcategory : ĠR H Category ) Ġ{ ĊĠĠĠ Ġvar Ġmy Table Ġ= ĠTable View < RH Base Item >() ĊĠĠĠ Ġvar Ġmy Link Panel Ġ= ĠJPanel ( Vertical Flow Layout ( Vertical Flow Layout . LEFT , Ġ 0 , Ġ 2 , Ġtrue , Ġfalse )) ĊĠĠĠ Ġval Ġbackground : ĠColor Ġ= ĠUI Util . getTable Background () ĊĠĠĠ Ġprivate Ġvar Ġmy Summary Panel Ġ= ĠHtml Panel () ĊĠĠĠ Ġprivate Ġvar Ġload More Btn Ġ= ĠJButton ( RH Util . message (" View . load More ")) ĊĠĠĠ Ġprivate Ġvar Ġmy Pagination Label Ġ= ĠJLabel () ĊĊĠĠĠ Ġprivate Ġval Ġprovider : ĠData Provider Ġ= ĠData Provider Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR H Data Keys . table Item .` is `( it ) Ġ-> Ġmy Table . selected Object ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Table Content ( filter Text : ĠString Ġ= Ġ"") Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcolumns Ġ= Ġget Columns () ĊĠĠĠĠĠĠĠ Ġval Ġmodel Ġ= ĠList TableModel < RH Base Item >( columns , ĠR H Data . instance . getItems ( category , Ġfilter Text )) ĊĠĠĠĠĠĠĠ Ġmy Table . set Paint Busy ( false ) ĊĠĠĠĠĠĠĠ Ġmy Table . setModel AndUpdate Columns ( model ) ĊĠĠĠĠĠĠĠ Ġmy Table . column Model . getColumn ( columns . size Ġ- Ġ 1 ). maxWidth Ġ= Ġ 8 0 Ċ // ĠĠĠĠĠĠĠ Ġmy Table . set Row Selection Interval ( 0 , Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġscroll To TableRow ( idx : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmy Table . selection Model . setSelection Interval ( idx , Ġidx ) ĊĠĠĠĠĠĠĠ Ġmy Table . scroll Rect To Visible ( Rectangle ( my Table . getCell Rect ( idx , Ġ 0 , Ġtrue ))) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Summary Panel () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġitem Ġ= ĠR H Data Keys . table Item . getData ( provider ) ĊĠĠĠĠĠĠĠ Ġmy Summary Panel . margin Ġ= ĠIn sets ( 2 0 , Ġ 1 0 , Ġ 2 0 , Ġ 1 0 ) ĊĠĠĠĠĠĠĠ Ġmy Summary Panel . text Ġ= Ġ"< html >< head >" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUI Util . getC ss Font Declaration ( UI Util . getLabel Font (), ĠUI Util . getLabel Foreground (), Ġnull , Ġnull ) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"</ head >< body >${ item ?. get Summary Text (). or Empty () }</ body ></ html >" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Link Panel () Ġ{ ĊĠĠĠĠĠĠĠ Ġmy Link Panel . border Ġ= ĠIde Border Factory . create Empty Border ( 1 5 , Ġ 1 0 , Ġ 2 0 , Ġ 1 0 ) ĊĠĠĠĠĠĠĠ Ġmy Link Panel . removeAll () ĊĠĠĠĠĠĠĠ Ġset Link Content ( my Link Panel , ĠR H Data Keys . table Item . getData ( provider )) ĊĠĠĠĠĠĠĠ Ġmy Link Panel . rep aint () ĊĠĠĠĠĠĠĠ Ġmy Link Panel . re validate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġset Link Content ( parent : ĠJPanel , Ġitem : ĠR H Base Item ? Ġ= Ġnull ) Ġ{} ĊĊĠĠĠ Ġopen Ġfun Ġget Columns (): ĠArray < Column Info < RH Base Item , ĠString >> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtitle Column Ġ= Ġobject Ġ: ĠColumn Info < RH Base Item , ĠString >(" ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvalue Of ( item : ĠR H Base Item ?) Ġ= Ġitem ?. getTitle Text (). or Empty () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Renderer ( item : ĠR H Base Item ?): ĠTable Cell Renderer ? Ġ= ĠR H Base Cell Renderer ( item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġdatetime Column Ġ= Ġobject Ġ: ĠColumn Info < RH Base Item , ĠString >(" ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvalue Of ( item : ĠR H Base Item ?) Ġ= ĠR H Util . getTime Delta ( item ?. get DateTime ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Renderer ( item : ĠR H Base Item ?): ĠTable Cell Renderer ? Ġ= ĠR H Small Cell Renderer () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠarrayOf ( title Column , Ġdatetime Column ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġset View () ĊĠĠĠĠĠĠĠ Ġsubscribe Events () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsubscribe Events () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbus Connection Ġ= Ġproject . message Bus . connect ( project ) ĊĠĠĠĠĠĠĠ Ġbus Connection . subscribe ( READ HUB _ VIEW _ TOPIC , Ġobject Ġ: ĠTable View Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Item Clicked ( name : ĠString , Ġobj : ĠR H Base Item ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( name Ġ== Ġcategory . getName () Ġ&& Ġobj Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR H Data . instance . setItem As Read ( obj ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Summary Panel () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Link Panel () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Pagination Label () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġupdate Table ( name : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApplication Manager . getApplication (). invoke Later Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Table Content () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Pagination Label () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Summary Panel () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Link Panel () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset View () Ġ{ ĊĠĠĠĠĠĠĠ Ġupdate Table Content () ĊĠĠĠĠĠĠĠ Ġinit Table Style () ĊĠĠĠĠĠĠĠ Ġset Summary Panel () ĊĠĠĠĠĠĠĠ Ġset Link Panel () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠCalled Ġonly Ġonce Ġ*/ ĊĠĠĠ Ġopen Ġfun Ġinit Table Style () Ġ{ ĊĠĠĠĠĠĠĠ Ġmy Table . empty Text . text Ġ= ĠR H Util . message (" View . empty Table ") ĊĠĠĠĠĠĠĠ Ġmy Table . setSelection Mode ( List Selection Model . SINGLE _ SELECTION ) ĊĠĠĠĠĠĠĠ Ġmy Table . show Horizontal Lines Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġmy Table . show Vertical Lines Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġmy Table . inter cell Spacing Ġ= ĠJ BU I . empty Size () ĊĠĠĠĠĠĠĠ Ġmy Table . set Show Grid ( false ) ĊĠĠĠĠĠĠĠ Ġmy Table . column Model . column Selection Allowed Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġmy Table . row Height Ġ= Ġ 2 5 ĊĠĠĠĠĠĠĠ Ġmy Table . background Ġ= Ġbackground ĊĠĠĠĠĠĠĠ ĠScroll ing Util . install Actions ( my Table , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġmy Table . selection Model . add List Selection Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! it . value Is Adjust ing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject . message Bus . sync Publisher ( READ HUB _ VIEW _ TOPIC ). on Item Clicked ( category . getName (), Ġmy Table . selected Object ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcreate Tool Window (): ĠSimple Tool Window Panel Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpanel Ġ= ĠSimple Tool Window Panel ( false , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġpanel . setContent ( create Root Panel ()) ĊĠĠĠĠĠĠĠ Ġreturn Ġpanel ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Root Panel (): ĠJPanel Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsplit ter Ġ= ĠOne Pixel Splitter ( false , Ġ 0 . 6 f ) ĊĠĠĠĠĠĠĠ Ġsplit ter . first Component Ġ= Ġbuild Table Component () ĊĠĠĠĠĠĠĠ Ġsplit ter . second Component Ġ= Ġbuild Detail Component () ĊĊĠĠĠĠĠĠĠ Ġval Ġroot Panel Ġ= ĠJPanel ( Border Layout ()) ĊĠĠĠĠĠĠĠ Ġroot Panel . add ( splitter ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠAvoid Ġdefault Ġfocus Ġon ĠSearch Field ĊĠĠĠĠĠĠĠ Ġroot Panel . is Focus Cycle Root Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġroot Panel . focus Traversal Policy Ġ= Ġobject Ġ: ĠComponents List Focus Traversal Policy () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Ordered Components (): ĠList < Component > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠlistOf ( my Table ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġroot Panel ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ å·¦ ä¾§ ï¼Ī ä¸Ĭ ï¼ī åĪĹè¡¨ éĿ¢ æĿ¿ çļĦ ĠToolbar ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġbuild Table Toolbar (): ĠJ Component ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġaction Group Ġ= ĠDefault Action Group () ĊĠĠĠĠĠĠĠ Ġaction Group . add Separator () ĊĠĠĠĠĠĠĠ Ġaction Group . add ( RH Refresh Action ()) ĊĠĠĠĠĠĠĠ Ġaction Group . add ( RH Web Action ( category )) ĊĠĠĠĠĠĠĠ Ġaction Group . add ( RH Settings Action ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġtoolbar Ġ= ĠAction Manager . getInstance (). create Action Toolbar ( Action Places . TOOL BAR , Ġaction Group , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġtoolbar . setTarget Component ( my Table ) ĊĊĠĠĠĠĠĠĠ Ġval Ġsearch Field Ġ= Ġobject Ġ: ĠSearch TextField ( true ) Ġ{} ĊĠĠĠĠĠĠĠ Ġsearch Field . add Document Listener ( object Ġ: ĠDocument Adapter () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġtext Changed ( e : ĠDocument Event ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Table Content ( getText ( e )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Pagination Label () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Summary Panel () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Link Panel () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġfun ĠgetText ( e : ĠDocument Event ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . document . getText ( 0 , Ġe . document . length ). trim () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠBad Location Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġval Ġwrapper Ġ= ĠWrapper ( search Field ) ĊĠĠĠĠĠĠĠ Ġwrapper . set Vertical Size Refer ent ( toolbar . component ) ĊĠĠĠĠĠĠĠ Ġwrapper . border Ġ= ĠJ BU I . B orders . empty Left ( 5 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġpanel Ġ= ĠJPanel ( M ig Layout (" ins Ġ 0 , Ġfill ", Ġ"[ left ] 0 [ left , Ġfill ] push [ right ]", Ġ" center ")) ĊĠĠĠĠĠĠĠ Ġpanel . add ( wrapper ) ĊĠĠĠĠĠĠĠ Ġpanel . add ( toolbar . component ) ĊĠĠĠĠĠĠĠ Ġpanel . add ( my Pagination Label ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġpanel ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Pagination Label () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( my Table . selected Row Ġ>= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmy Pagination Label . text Ġ= Ġ"${ ( my Table . selected Row Ġ+ Ġ 1 )} Ġ/ Ġ${ my Table . list TableModel . items . size }" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmy Pagination Label . font Ġ= ĠJ BU I . Fonts . small Font () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmy Pagination Label . border Ġ= ĠJ BU I . B orders . empty Right ( 3 0 ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmy Pagination Label . text Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ å·¦ ä¾§ ï¼Ī ä¸Ń ï¼ī åĪĹè¡¨ éĿ¢ æĿ¿ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġbuild Table Pane (): ĠJPanel Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpanel Ġ= ĠJPanel ( Border Layout ()) ĊĠĠĠĠĠĠĠ Ġval Ġpane Ġ= ĠScroll Pane Factory . create ScrollPane ( my Table , ĠSide Border . TOP ) ĊĠĠĠĠĠĠĠ Ġpane . vertical ScrollBar . add Adjustment Listener Ġ{ Ġe Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmax Offset Ġ= Ġpane . vertical ScrollBar . maximum Ġ- Ġpane . vertical ScrollBar . height ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( max Offset Ġ> Ġ 0 Ġ&& Ġe . value Ġ== Ġmax Offset ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġload More Btn . isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( max Offset Ġ- Ġe . value Ġ> Ġload More Btn . height Ġ* Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġload More Btn . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġpanel . add ( pane , ĠBorderLayout . CENTER ) ĊĠĠĠĠĠĠĠ Ġpanel . add ( load More Btn , ĠBorderLayout . SO UTH ) ĊĠĠĠĠĠĠĠ Ġload More Btn . addActionListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmy Table . set Paint Busy ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject . message Bus . sync Publisher ( READ HUB _ REFRESH _ TOPIC ). load Prev Items ( category ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload More Btn . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġload More Btn . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġreturn Ġpanel ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ å·¦ ä¾§ å®¹åĻ¨ ç»Ħä»¶ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġbuild Table Component (): ĠSimple Tool Window Panel Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpanel Ġ= ĠSimple Tool Window Panel ( true , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġpanel . set Toolbar ( build Table Toolbar ()) ĊĠĠĠĠĠĠĠ Ġpanel . setContent ( build Table Pane ()) ĊĠĠĠĠĠĠĠ Ġreturn Ġpanel ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ åı³ ä¾§ ï¼Ī ä¸Ĭ ï¼ī æĳ ĺ è¦ģ éĿ¢ æĿ¿ çļĦ ĠToolbar ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġbuild Summary Toolbar (): ĠJ Component ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġaction Group Ġ= ĠDefault Action Group () ĊĠĠĠĠĠĠĠ Ġaction Group . add ( RH Export Action ( provider )) ĊĊĠĠĠĠĠĠĠ Ġval Ġtoolbar Ġ= ĠAction Manager . getInstance (). create Action Toolbar ( Action Places . TOOL BAR , Ġaction Group , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġtoolbar . setTarget Component ( my Summary Panel ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtoolbar . component ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ åı³ ä¾§ ï¼Ī ä¸Ĭ ï¼ī æĳ ĺ è¦ģ éĿ¢ æĿ¿ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġbuild Summary Panel (): ĠSimple Tool Window Panel Ġ{ ĊĠĠĠĠĠĠĠ Ġmy Summary Panel . background Ġ= Ġbackground ĊĠĠĠĠĠĠĠ Ġval Ġsummary Pane Ġ= ĠScroll Pane Factory . create ScrollPane ( my Summary Panel , ĠSide Border . TOP ) ĊĊĠĠĠĠĠĠĠ Ġval Ġpanel Ġ= ĠSimple Tool Window Panel ( true , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġpanel . set Toolbar ( build Summary Toolbar ()) ĊĠĠĠĠĠĠĠ Ġpanel . setContent ( summary Pane ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġpanel ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ åı³ ä¾§ å®¹åĻ¨ ç»Ħä»¶ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġopen Ġfun Ġbuild Detail Component (): ĠJ Component Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsplit ter Ġ= ĠOne Pixel Splitter ( true , Ġ 0 . 7 f ) ĊĊĠĠĠĠĠĠĠ Ġmy Link Panel . background Ġ= Ġbackground ĊĠĠĠĠĠĠĠ Ġval Ġlink Pane Ġ= ĠScroll Pane Factory . create ScrollPane ( my Link Panel , ĠSide Border . TOP ) ĊĠĠĠĠĠĠĠ Ġsplit ter . first Component Ġ= Ġbuild Summary Panel () ĊĠĠĠĠĠĠĠ Ġsplit ter . second Component Ġ= Ġlink Pane ĊĊĠĠĠĠĠĠĠ Ġreturn Ġsplit ter ĊĠĠĠ Ġ} Ċ } Ċ