package Ġcom . github . gr ish berg . profiler . ui Ċ Ċ import Ġcom . github . gr ish berg . profiler . common . settings . Settings Repository Ċ import Ġjava . io . File Ċ import Ġjava . util .* Ċ import Ġjavax . swing . J Menu Ċ import Ġjavax . swing . J MenuItem Ċ Ċ private Ġconst Ġval ĠSET T INGS _ HISTORY Ġ= Ġ" Main . history " Ċ private Ġconst Ġval ĠMAX _ HISTORY _ SIZE Ġ= Ġ 1 0 Ċ private Ġconst Ġval ĠFILE _ MENU _ ITEMS _ COUNT _ BEFORE _ HISTORY Ġ= Ġ 1 0 ĊĊ Ċ class ĠMenu History Items ( ĊĠĠĠ Ġprivate Ġval Ġmenu : ĠJ Menu , ĊĠĠĠ Ġprivate Ġval Ġsettings : ĠSettings Repository , ĊĠĠĠ Ġprivate Ġval Ġopen Trace File Delegate : ĠOpen Trace File Delegate Ċ ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġrecent Files Ġ= ĠLinkedList < String >() ĊĠĠĠ Ġprivate Ġvar Ġcurrent Opened File : ĠFile ? Ġ= Ġnull ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġrecent Files . addAll ( settings . getString List ( SETTINGS _ HISTORY )) ĊĠĠĠĠĠĠĠ Ġfor Ġ( recent FileName Ġin Ġrecent Files ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrecent File Ġ= ĠFile ( recent FileName ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrecent File MenuItem Ġ= ĠJ MenuItem ( create Short FileName ( recent File )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrecent File MenuItem . addActionListener Ġ{ Ġopen Trace File Delegate . open Trace File ( recent File ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu . add ( recent File MenuItem ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd ToFile History ( file : ĠFile ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrecent Files . add ( 0 , Ġfile . absolute Path ) ĊĠĠĠĠĠĠĠ Ġval Ġsize : ĠInt Ġ= Ġrecent Files . size ĊĠĠĠĠĠĠĠ Ġif Ġ( size Ġ> ĠMAX _ HISTORY _ SIZE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin ĠMAX _ HISTORY _ SIZE Ġuntil Ġsize ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrecent Files . remove Last () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsettings . setString List ( SETTINGS _ HISTORY , Ġrecent Files ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( current Opened File Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd History MenuItem ( current Opened File !! ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcurrent Opened File Ġ= Ġfile ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd History MenuItem ( file : ĠFile ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrecent File MenuItem Ġ= ĠJ MenuItem ( create Short FileName ( file )) ĊĠĠĠĠĠĠĠ Ġrecent File MenuItem . addActionListener Ġ{ Ġopen Trace File Delegate . open Trace File ( file ) Ġ} ĊĠĠĠĠĠĠĠ Ġmenu . insert ( recent File MenuItem , ĠFILE _ MENU _ ITEMS _ COUNT _ BEFORE _ HISTORY ) ĊĊĠĠĠĠĠĠĠ Ġval Ġrecent Items Count Ġ= Ġmenu . item Count Ġ- ĠFILE _ MENU _ ITEMS _ COUNT _ BEFORE _ HISTORY ĊĠĠĠĠĠĠĠ Ġif Ġ( recent Items Count Ġ> ĠMAX _ HISTORY _ SIZE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdelta Ġ= Ġrecent Items Count Ġ- ĠMAX _ HISTORY _ SIZE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġdelta Ġdown To Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu . remove ( FILE _ MENU _ ITEMS _ COUNT _ BEFORE _ HISTORY Ġ+ ĠMAX _ HISTORY _ SIZE Ġ+ Ġdelta Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Short FileName ( recent File : ĠFile ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġrecent File . name ĊĠĠĠ Ġ} Ċ } Ċ