3. EPMO Open Source Coordination Office Redaction File Detail Report

Produced by Araxis Merge on 3/22/2018 8:25:51 AM Central Daylight Time. See www.araxis.com for information about Merge. This report uses XHTML and CSS2, and is best viewed with a modern standards-compliant browser. For optimum results when printing this report, use landscape orientation and enable printing of background images and colours in your browser.

3.1 Files compared

# Location File Last Modified
1 Build_3_Patch_32_Jan_2018.zip\Components\ZZZ fZZ_EventLog.pas Thu Mar 15 14:58:58 2018 UTC
2 Build_3_Patch_32_Jan_2018.zip\Components\ZZZ fZZ_EventLog.pas Fri Mar 16 21:02:28 2018 UTC

3.2 Comparison summary

Description Between
Files 1 and 2
Text Blocks Lines
Unchanged 2 1026
Changed 1 2
Inserted 0 0
Removed 0 0

3.3 Comparison options

Whitespace
Character case Differences in character case are significant
Line endings Differences in line endings (CR and LF characters) are ignored
CR/LF characters Not shown in the comparison detail

3.4 Active regular expressions

No regular expressions were active.

3.5 Comparison detail

  1   unit fZZ_E ventLog;
  2   {
  3   ========== ========== ========== ========== ========== ========== ========== ==========
  4   *
  5   *       Pa ckage:         develo pment tool
  6   *       Da te Created :   5/08/1 2
  7   *       Si te:            Hines  OIFO
  8   *       De velopers:
  9   *                          PII                          
  10   *
  11   *       De scription:     Event  log  prese ntation wi ndow
  12   *
  13   ========== ========== ========== ========== ========== ========== ========== ==========
  14   }
  15  
  16   interface
  17  
  18   uses
  19     Windows,  Messages,  SysUtils
  20     , Classe s, Graphic s, Control s, Forms,
  21     Dialogs,  StdCtrls,  ExtCtrls,  ActnList,  Menus, St dActns, Bu ttons, Img List;
  22  
  23   type
  24     TZZ_Even tLog = cla ss(TObject )
  25     private
  26       fLogLi mit: Integ er;
  27       fEvent Log: TStri ngList;
  28       fChang eTracker:  TNotifyEve nt;
  29       proced ure setCha ngeTracker (aTracker:  TNotifyEv ent);
  30       proced ure setLog Limit(aLim it: Intege r);
  31     public
  32       proper ty ChangeT racker: TN otifyEvent  read fCha ngeTracker  write set ChangeTrac ker;
  33       proper ty EventLo g: TString List read  fEventLog  write fEve ntLog;
  34       proper ty LogLimi t: Integer  read fLog Limit writ e setLogLi mit;
  35       constr uctor Crea te;
  36       destru ctor Destr oy; overri de;
  37     end;
  38  
  39     TfrmEven tLog = cla ss(TForm)
  40       pnlTim eline: TPa nel;
  41       pnlMai nTitle: TP anel;
  42       pnlBot tom: TPane l;
  43       lbLog:  TListBox;
  44       Splitt er1: TSpli tter;
  45       Panel1 : TPanel;
  46       mm: TM emo;
  47       pnlTit le: TPanel ;
  48       Action List1: TAc tionList;
  49       acRefr eshLog: TA ction;
  50       MainMe nu1: TMain Menu;
  51       Window Close1: TW indowClose ;
  52       File1:  TMenuItem ;
  53       Refres h1: TMenuI tem;
  54       N1: TM enuItem;
  55       Close1 : TMenuIte m;
  56       SpeedB utton1: TS peedButton ;
  57       acSave As: TActio n;
  58       SpeedB utton2: TS peedButton ;
  59       ImageL ist1: TIma geList;
  60       Panel2 : TPanel;
  61       OpenDi alog1: TOp enDialog;
  62       acSetL imit: TAct ion;
  63       acClea r: TAction ;
  64       SpeedB utton5: TS peedButton ;
  65       SpeedB utton6: TS peedButton ;
  66       ckbWra p: TCheckB ox;
  67       acWrap : TAction;
  68       pnlBot tomDetails : TPanel;
  69       pnlLim it: TPanel ;
  70       acLoad : TAction;
  71       SpeedB utton3: TS peedButton ;
  72       edHigh : TEdit;
  73       proced ure lbLogC lick(Sende r: TObject );
  74       proced ure acRefr eshLogExec ute(Sender : TObject) ;
  75       proced ure Close1 Click(Send er: TObjec t);
  76       proced ure FormCr eate(Sende r: TObject );
  77       proced ure acSave AsExecute( Sender: TO bject);
  78       proced ure acSetL imitExecut e(Sender:  TObject);
  79       proced ure acClea rExecute(S ender: TOb ject);
  80       proced ure acWrap Execute(Se nder: TObj ect);
  81       proced ure acLoad Execute(Se nder: TObj ect);
  82       proced ure lbLogD rawItem(Co ntrol: TWi nControl;  Index: Int eger;
  83         Rect : TRect; S tate: TOwn erDrawStat e);
  84       proced ure edHigh Change(Sen der: TObje ct);
  85     private
  86       { Priv ate declar ations }
  87       fEvent Log: TStri ngList;
  88       Curren t: TObject ;
  89       functi on findObj ect(anObje ct: TObjec t): Intege r;
  90       proced ure restor ePosition;
  91       proced ure Refres hLog;
  92       proced ure ShowLo gSizeInfo;
  93     public
  94       { Publ ic declara tions }
  95       proced ure Update Log(aLog:T StringList =nil);
  96       proced ure EventL ogPresente rOnChange( Sender:TOb ject);
  97       proced ure setVie wMode(aPar ented:Bool ean=false) ;
  98     end;
  99  
  100   var
  101     frmEvent Log: TfrmE ventLog;
  102  
  103   function n ewEventLog : TZZ_Even tLog;
  104   function a ddEvent(aD escription :String;an Event:TObj ect):Boole an;
  105   function a ddRPCEvent (anEvent:T Object): B oolean;
  106   function a ddTracker( aTracker:  TNotifyEve nt):Boolea n;
  107  
  108   procedure  ShowEventL og(aModal:  Boolean=T rue);
  109   function s etParented Log(aParen t:TWinCont rol):Boole an;
  110  
  111   implementa tion
  112  
  113   uses
  114     uZZ_Desc ribedItem,  uZZ_RPCEv ent
  115     ;
  116  
  117   {$R *.dfm}
  118  
  119   var
  120     EL: TZZ_ EventLog;
  121  
  122   ////////// ////////// ////////// ////////// ////////// ////////// ////////// //////////
  123   function a ddRPCEvent (anEvent:T Object): B oolean;
  124   var
  125     sDescrip tion: Stri ng;
  126   begin
  127     Result : = False;
  128     if not A ssigned(EL ) then
  129       begin
  130         Show Message(TR PCEventIte m(anEvent) .RPC);
  131         Free AndNil(anE vent);
  132         Exit ;
  133       end;
  134     sDescrip tion :=
  135       Format (' %-25.25 s',[TRPCEv entItem(an Event).RPC ]) +
  136       Format DateTime('  hh:mm:ss. zzz', TRPC EventItem( anEvent).S tart);
  137     EL.Event Log.Insert Object(0,s Descriptio n,anEvent) ;
  138     Result : = true;
  139   end;
  140  
  141  
  142   function a ddEvent(aD escription :String;an Event:TObj ect): Bool ean;
  143   begin
  144     Result : = False;
  145     if not A ssigned(EL ) then
  146       Exit;
  147     EL.Event Log.Insert Object(0,a Descriptio n,anEvent) ;
  148     Result : = true;
  149   end;
  150  
  151   function a ddTracker( aTracker:  TNotifyEve nt):Boolea n;
  152   begin
  153     Result : = False;
  154     if not A ssigned(EL ) then
  155       Exit;
  156     EL.Chang eTracker : = aTracker ;
  157     Result : = true;
  158   end;
  159  
  160   function n ewEventLog : TZZ_Even tLog;
  161   begin
  162     if not A ssigned(EL ) then
  163       EL :=  TZZ_EventL og.Create;
  164     result : = EL;
  165   end;
  166  
  167  
  168   ////////// ////////// ////////// ////////// ////////// ////////// ////////// //////////
  169   procedure  ShowEventL og(aModal:  Boolean=T rue);
  170   begin
  171     if not A ssigned(fr mEventLog)  then
  172       Applic ation.Crea teForm(Tfr mEventLog, frmEventLo g);
  173     if not A ssigned(fr mEventLog)  then Exit ;
  174  
  175     frmEvent Log.Update Log(EL.Eve ntLog);
  176     frmEvent Log.Refres hLog;
  177  
  178     if frmEv entLog.Par ent = nil   then
  179       if aMo dal then
  180         frmE ventLog.Sh owModal
  181       else
  182         frmE ventLog.Sh ow;
  183  
  184     frmEvent Log.Left : = 0;
  185     frmEvent Log.Top :=  0;
  186   end;
  187  
  188   procedure  setFormPar ented(aFor m: TForm;  aParent: T WinControl );
  189   begin
  190     if aForm .Parent <>  aParent t hen
  191       begin
  192         aFor m.BorderSt yle := bsN one;
  193         aFor m.Parent : = aParent;
  194         aFor m.Align :=  alClient;
  195         aFor m.Menu :=  nil;
  196         aFor m.Show;
  197       end;
  198   end;
  199  
  200   function s etParented Log(aParen t:TWinCOnt rol): Bool ean;
  201   begin
  202     Result : = False;
  203     if Assig ned(frmEve ntLog) the n
  204       begin
  205         setF ormParente d(frmEvent Log,aParen t);
  206         frmE ventLog.se tViewMode( True);
  207         Resu lt := True ;
  208       end;
  209   end;
  210  
  211   ////////// ////////// ////////// ////////// ////////// ////////// ////////// //////////
  212  
  213   constructo r TZZ_Even tLog.Creat e;
  214   begin
  215     inherite d;
  216     fEventLo g := TStri ngList.Cre ate;
  217     fLogLimi t := 500;
  218   end;
  219  
  220   destructor  TZZ_Event Log.Destro y;
  221   begin
  222     EventLog .OnChange  := nil;
  223     if Assig ned(EventL og) then
  224       while  EventLog.C ount > 0 d o
  225         begi n
  226           if  Assigned( EventLog.O bjects[0])  then
  227              try
  228                TObject( EventLog.O bjects[0]) .Free;
  229              except
  230              end;
  231           Ev entLog.Del ete(0);
  232         end;
  233   end;
  234  
  235   procedure  TZZ_EventL og.setChan geTracker( aTracker:  TNotifyEve nt);
  236   begin
  237     fChangeT racker :=  aTracker;
  238     EventLog .OnChange  := aTracke r;
  239   end;
  240  
  241   procedure  TZZ_EventL og.setLogL imit(aLimi t: Integer );
  242   begin
  243     if aLimi t <= fLogL imit then
  244       begin
  245         whil e EventLog .Count > a Limit do
  246         begi n
  247           if  EventLog. Objects[Ev entLog.Cou nt - 1] <>  nil then
  248              EventLog.O bjects[Eve ntLog.Coun t - 1].Fre e;
  249           Ev entLog.Del ete(EventL og.Count -  1);
  250         end;
  251       end;
  252     fLogLimi t := aLimi t;
  253   end;
  254  
  255   ////////// ////////// ////////// ////////// ////////// ////////// ////////// //////////
  256  
  257   procedure  TfrmEventL og.FormCre ate(Sender : TObject) ;
  258   begin
  259     AddTrack er(EventLo gPresenter OnChange);
  260   end;
  261  
  262   procedure  TfrmEventL og.Refresh Log;
  263   begin
  264     if not A ssigned(fE ventLog) t hen
  265       exit;
  266     lbLog.En abled := F alse;
  267     EL.LogLi mit := EL. LogLimit;
  268     lbLog.It ems.Assign (fEventLog );
  269     RestoreP osition;
  270     lbLog.En abled := T rue;
  271     Applicat ion.Proces sMessages;
  272   end;
  273  
  274   procedure  TfrmEventL og.lbLogCl ick(Sender : TObject) ;
  275   var
  276     X: ImDes cribe;
  277   begin
  278     if lbLog .ItemIndex  >= 0 then
  279       begin
  280         Curr ent := lbL og.Items.O bjects[lbL og.ItemInd ex];
  281  
  282         if A ssigned(Cu rrent) and  Current.G etInterfac e(ImDescri be,X) then
  283           mm .Text := X .getDescri ption.Text
  284         else
  285           be gin
  286              mm.Text :=  '';
  287              pnlTitle.C aption :=  '';
  288           en d;
  289       end
  290     else
  291       begin
  292         mm.T ext := '';
  293         pnlt itle.Capti on := '';
  294         Curr ent := nil ;
  295       end;
  296   end;
  297  
  298   function T frmEventLo g.findObje ct(anObjec t:TObject) : Integer;
  299   var
  300     i: Integ er;
  301   begin
  302     Result : = -1;
  303     for i :=  0 to lbLo g.Items.Co unt - 1 do
  304       begin
  305         if a nObject =  lbLog.Item s.Objects[ i] then
  306           be gin
  307              Result :=  i;
  308              break;
  309           en d;
  310       end;
  311   end;
  312  
  313   procedure  TfrmEventL og.restore Position;
  314   var
  315     i: Integ er;
  316   begin
  317     if not A ssigned(Cu rrent) the n
  318       Exit;
  319     i := fin dObject(Cu rrent);
  320     if i >=0  then
  321       lbLog. ItemIndex  := i;
  322   end;
  323  
  324   procedure  TfrmEventL og.Close1C lick(Sende r: TObject );
  325   begin
  326     Close;
  327   end;
  328  
  329   procedure  TfrmEventL og.ShowLog SizeInfo;
  330   begin
  331     if assig ned(fEvent Log) then
  332       pnlBot tom.Captio n := Forma t(' %d ',[ fEventLog. Count]);
  333     if assig ned(EL) th en
  334       pnlLim it.Caption  := Format ('(%d) ',[ EL.LogLimi t]);
  335   end;
  336  
  337   procedure  TfrmEventL og.UpdateL og(aLog:TS tringList= nil);
  338   begin
  339     if Assig ned(aLog)  then
  340       fEvent Log := aLo g;
  341     RefreshL og;
  342     lbLog.It emIndex :=  0;
  343     lbLogCli ck(nil);
  344     ShowLogS izeInfo;
  345     Applicat ion.Proces sMessages;
  346   end;
  347  
  348   procedure  TfrmEventL og.acRefre shLogExecu te(Sender:  TObject);
  349   begin
  350     UpdateLo g(fEventLo g);
  351   end;
  352  
  353   procedure  TfrmEventL og.EventLo gPresenter OnChange(S ender:TObj ect);
  354   begin
  355     UpdateLo g(TStringL ist(Sender ));
  356   end;
  357  
  358   procedure  TfrmEventL og.setView Mode(aPare nted:Boole an=false);
  359   begin
  360     pnlTitle .ParentCol or := aPar ented;
  361     pnlMainT itle.Paren tColor :=  aParented;
  362     pnlBotto m.ParentCo lor := aPa rented;
  363   end;
  364  
  365   procedure  TfrmEventL og.acSaveA sExecute(S ender: TOb ject);
  366   var
  367     i: Integ er;
  368     s: Strin g;
  369     sN: Stri ng;
  370     X: ImDes cribe;
  371     SL : TSt ringList;
  372   begin
  373     if OpenD ialog1.Exe cute then
  374       begin
  375         sN : = OpenDial og1.FileNa me;
  376         for  i := lbLog .Items.Cou nt -1 down to 0 do
  377           be gin
  378              Current :=  lbLog.Ite ms.Objects [i];
  379              if Assigne d(Current)  and Curre nt.GetInte rface(ImDe scribe,X)  then
  380                s := s +  '--'+lbLo g.Items[i]  + #13#10  + X.getDes cription.T ext + #13# 10
  381              else
  382                s := s +  #13#10
  383           en d;
  384         SL : = TStringL ist.Create ;
  385         SL.T ext := s;
  386         SL.S aveToFile( sN);
  387         SL.F ree;
  388       end;
  389   end;
  390  
  391   procedure  TfrmEventL og.acSetLi mitExecute (Sender: T Object);
  392   var
  393     InputStr ing: strin g;
  394   begin
  395     InputStr ing:= Inpu tBox('Log  Size Limit ', 'Enter  # of recor ds to keep  in the Lo g', IntToS tr(EL.LogL imit));
  396     if Input String <>  IntToStr(E L.LogLimit ) then
  397       begin
  398         EL.L ogLimit :=  StrToIntD ef(InputSt ring,EL.Lo gLimit);
  399         Show LogSizeInf o;
  400       end;
  401   end;
  402  
  403   procedure  TfrmEventL og.acClear Execute(Se nder: TObj ect);
  404   begin
  405     if Messa geDlg('Era se Log now ?',
  406       mtConf irmation,  [mbYes, mb No], 0) =  mrYes then
  407       begin
  408         lbLo g.Enabled  := False;
  409         whil e fEventLo g.Count >  0 do
  410         begi n
  411           if  fEventLog .Objects[f EventLog.C ount - 1]  <> nil the n
  412              fEventLog. Objects[fE ventLog.Co unt - 1].F ree;
  413           fE ventLog.De lete(fEven tLog.Count  - 1);
  414         end;
  415         lbLo g.Enabled  := True;
  416       end;
  417     Applicat ion.Proces sMessages;
  418   end;
  419  
  420   procedure  TfrmEventL og.acWrapE xecute(Sen der: TObje ct);
  421   begin
  422     mm.WordW rap := ckb Wrap.Check ed;
  423     if ckbWr ap.Checked  then
  424       mm.Scr ollBars :=  ssVertica l
  425     else
  426       mm.Scr ollBars :=  ssBoth;
  427     pnlBotto mDetails.V isible :=  ckbWrap.Ch ecked;
  428   end;
  429  
  430   procedure  TfrmEventL og.acLoadE xecute(Sen der: TObje ct);
  431   var
  432     sEventNa me,sEventD escription ,
  433     s, sN: S tring;
  434     i, iCoun t: integer ;
  435     SL: TStr ingList;
  436  
  437     procedur e LogEvent ;
  438     begin
  439       if sEv entName+sE ventDescri ption <> ' ' then
  440         AddE vent(sEven tName,getD escribedIt em(sEventN ame,sEvent Descriptio n));
  441     end;
  442  
  443   begin
  444     if OpenD ialog1.Exe cute then
  445       begin
  446         sN : = OpenDial og1.FileNa me;
  447         SL : = TStringL ist.Create ;
  448         SL.L oadFromFil e(sN);
  449         i :=  0;
  450         iCou nt := 0;
  451         sEve ntName :=  '-- File I mport -- B EGIN';
  452         sEve ntDescript ion := 'Fi le: '+sN;
  453         whil e i < SL.C ount do
  454           be gin
  455              s := SL[i] ;
  456              if pos('-- ',s)=1 the n
  457                begin
  458                  LogEve nt;
  459                  sEvent Name := '' ;
  460                  sEvent Descriptio n := '';
  461                  sEvent Name := co py(s,3,Len gth(s));
  462                  inc(iC ount);
  463                end
  464              else
  465                sEventDe scription  := sEventD escription  + s + #13 #10;
  466              inc(i);
  467           en d;
  468         sEve ntName :=  '-- File I mport -- E ND';
  469         sEve ntDescript ion := 'To tal lines:  '+IntToSt r(SL.Count )+ #13#10+
  470           'T otal event s: ' + Int ToStr(iCou nt-1);
  471         LogE vent;
  472         SL.F ree;
  473       end;
  474   end;
  475  
  476   procedure  TfrmEventL og.lbLogDr awItem(Con trol: TWin Control; I ndex: Inte ger;
  477     Rect: TR ect; State : TOwnerDr awState);
  478   var
  479     s: Strin g;
  480   begin
  481     inherite d;
  482     s := edH igh.Text;
  483     with (Co ntrol as T ListBox).C anvas do
  484       begin
  485         if ( Length(s)> 0) and (po s(s,(Contr ol as TLis tBox).Item s[Index])> 0) then
  486           Fo nt.Color : = clRed
  487         else  if (odSel ected in S tate) then
  488           Fo nt.Color : = clWhite
  489         else
  490           Fo nt.Color : = clWindow text;
  491         Fill Rect(Rect) ;
  492         Text Out(Rect.L eft, Rect. Top, (Cont rol as TLi stBox).Ite ms[Index]) ;
  493         if o dFocused I n State th en
  494           be gin
  495              Brush.Colo r := lbLog .Color;
  496              DrawFocusR ect(Rect);
  497           en d;
  498       end;
  499   end;
  500  
  501   procedure  TfrmEventL og.edHighC hange(Send er: TObjec t);
  502   begin
  503     inherite d;
  504     lbLog.In validate;
  505     Applicat ion.Proces sMessages;
  506   end;
  507  
  508   initializa tion
  509     newEvent Log;
  510  
  511   finalizati on
  512     FreeAndN il(EL);
  513   end.
  514