/* Ċ Ġ* Ġ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 . adt ui Ċ Ċ import Ġcom . android . tools . adt ui . common . Ad t Ui Utils Ċ import Ġcom . android . tools . adt ui . common . link Foreground Ċ import Ġcom . android . tools . adt ui . model . formatter . Number Formatter Ċ import Ġcom . google . common . annotations . Visible ForTesting Ċ import Ġcom . intellij . ui . components . JB Label Ċ import Ġjava . awt . Font Ċ import Ġjava . awt . event . Focus Event Ċ import Ġjava . awt . event . Focus Listener Ċ import Ġjava . awt . event . Key Adapter Ċ import Ġjava . awt . event . KeyEvent Ċ import Ġjava . awt . event . MouseEvent Ċ import Ġjava . awt . event . Mouse Listener Ċ import Ġjava . awt . font . Text Attribute Ċ import Ġjavax . swing . Border Factory Ċ import Ġjavax . swing . BoxLayout Ċ import Ġjavax . swing . Icon Ċ import Ġjavax . swing . JLabel Ċ import Ġjavax . swing . JPanel Ċ import Ġjavax . swing . Swing Constants Ċ Ċ /** Ċ Ġ* ĠThis Ġclass Ġdraw s Ġa Ġproperly Ġformatted Ġnumber Ġwith Ġa Ġdescription Ġand Ġoptional Ġicon Ċ Ġ*/ Ċ class ĠStat Label Ġ@ Jvm Over loads Ġconstructor ( num : ĠLong , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdesc : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnum Font : ĠFont Ġ= ĠA dt Ui Utils . DEFAULT _ FONT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdesc Font : ĠFont Ġ= ĠA dt Ui Utils . DEFAULT _ FONT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġnum Formatter : Ġ( Long ) Ġ-> ĠString Ġ= ĠNumber Formatter :: format Integer , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġaction : ĠRunnable ? Ġ= Ġnull ) Ġ: ĠJPanel () Ġ{ ĊĠ Ġprivate Ġval Ġnum Label Ġ= ĠJ B Label (). apply Ġ{ Ġfont Ġ= Ġnum Font Ġ} ĊĠ Ġprivate Ġval Ġdesc Label Ġ= ĠJ B Label ( desc ). apply Ġ{ Ġfont Ġ= Ġdesc Font Ġ} ĊĊĠ Ġvar Ġnum Value : ĠLong Ġ= Ġnum ĊĠĠĠ Ġset ( newValue ) Ġ{ ĊĠĠĠĠĠ Ġnum Label . text Ġ= Ġnum Formatter ( newValue ) ĊĠĠĠ Ġ} ĊĊĠ Ġvar Ġicon : ĠIcon ? ĊĠĠĠ Ġget () Ġ= Ġnum Label . icon ĊĠĠĠ Ġset ( new Icon ) Ġ{ ĊĠĠĠĠĠ Ġnum Label . icon Ġ= Ġnew Icon ĊĠĠĠ Ġ} ĊĊĠ Ġinit Ġ{ ĊĠĠĠ Ġnum Value Ġ= Ġnum ĊĠĠĠ Ġlayout Ġ= ĠBox Layout ( this , ĠBox Layout . Y _ AXIS ) ĊĠĠĠ Ġborder Ġ= ĠBorder Factory . create Empty Border ( 4 , Ġ 6 , Ġ 4 , Ġ 6 ) ĊĠĠĠ Ġnum Label . horizontal Text Position Ġ= ĠSw ing Constants . LEFT ĊĠĠĠ Ġadd ( num Label ) ĊĠĠĠ Ġadd ( desc Label ) ĊĊĠĠĠ Ġ// ĠIf Ġthere Ġis Ġan Ġassociated Ġaction , Ġvis ually Ġindicate Ġso ĊĠĠĠ Ġif ( action Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġis Focus able Ġ= Ġtrue ĊĠĠĠĠĠ Ġnum Label . foreground Ġ= Ġlink Foreground ĊĠĠĠĠĠ Ġdesc Label . foreground Ġ= Ġlink Foreground ĊĠĠĠĠĠ Ġval Ġ( num Off , Ġnum On ) Ġ= Ġmake Under lined Font Switch ers ( num Label ) ĊĠĠĠĠĠ Ġval Ġ( desc Off , Ġdesc On ) Ġ= Ġmake Under lined Font Switch ers ( desc Label ) ĊĠĠĠĠĠ Ġfun Ġon () Ġ{ Ġnum On (); Ġdesc On () Ġ} ĊĠĠĠĠĠ Ġfun Ġoff () Ġ{ Ġnum Off (); Ġdesc Off () Ġ} ĊĠĠĠĠĠ Ġadd Mouse Listener ( object Ġ: ĠMouse Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġmouse Entered ( e : ĠMouseEvent ?) Ġ= Ġon () ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġmouse Exit ed ( e : ĠMouseEvent ?) Ġ= Ġoff () ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġmouse Clicked ( e : ĠMouseEvent ?) Ġ= Ġaction . run () ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġmouse Pressed ( e : ĠMouseEvent ?) Ġ{} ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġmouse Released ( e : ĠMouseEvent ?) Ġ{} ĊĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠ Ġadd Focus Listener ( object Ġ: ĠFocus Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġfocus G ained ( e : ĠFocus Event ?) Ġ= Ġon () ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġfocus Lost ( e : ĠFocus Event ?) Ġ= Ġoff () ĊĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠ Ġadd Key Listener ( object Ġ: ĠKey Adapter () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġkey Pressed ( e : ĠKeyEvent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġif Ġ(( e . keyCode Ġ== ĠKeyEvent . VK _ ENTER Ġ|| Ġe . keyCode Ġ== ĠKeyEvent . VK _ SPACE ) Ġ&& Ġis Focus Owner ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction . run () ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Visible ForTesting Ġval Ġnum Text : ĠString Ġget () Ġ= Ġnum Label . text ĊĠ Ġ@ Visible ForTesting Ġval Ġdesc Text : ĠString Ġget () Ġ= Ġdesc Label . text Ċ } Ċ Ċ /** Ċ Ġ* ĠReturns Ġa Ġpair Ġof Ġcallbacks Ġfor Ġchanging Ġand Ġrest oring Ġthe Ġlabel 's Ġfont Ċ Ġ*/ Ċ private Ġfun Ġmake Under lined Font Switch ers ( label : ĠJLabel ): ĠPair < () Ġ-> ĠUnit , Ġ() Ġ-> ĠUnit > Ġ{ ĊĠ Ġval Ġold Font Ġ= Ġlabel . font ĊĠ Ġval Ġnew Font Ġ= Ġold Font . derive Font ( old Font . attributes Ġ+ Ġ( Text Attribute . UNDER LINE Ġto ĠText Attribute . UNDER LINE _ ON )) ĊĠ Ġreturn ĠPair ({ Ġlabel . font Ġ= Ġold Font Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġlabel . font Ġ= Ġnew Font Ġ}) Ċ }