updated interfaces and observers

This commit is contained in:
Basile Burg 2014-11-30 04:07:08 +01:00
parent e0c3d9495f
commit f6b2c02031
2 changed files with 19 additions and 4 deletions

View File

@ -100,10 +100,10 @@ type
*)
ICEMainMenuProvider = interface
['ICEMainMenuProvider']
// item must contain the full items tree to be added
procedure menuDeclare(out item: TMenuItem);
// the implementer can update the actions used in the menu declared previously.
procedure menuActionsUpdate;
// item is a new mainMenu entry. item must be filled with the sub-items to be added.
procedure menuDeclare(item: TMenuItem);
// item is the mainMenu entry declared previously. the sub items can be updated, deleted.
procedure menuUpdate(item: TMenuItem);
end;
(**
* An implementer agregates its observers menus.

View File

@ -52,6 +52,8 @@ type
fObservers: TObjectList;
// test for a specific interface when adding an observer.
function acceptObserver(aObject: TObject): boolean; virtual;
function getObserversCount: Integer;
function getObserver(index: Integer): TObject;
public
constructor create; virtual;
destructor destroy; override;
@ -59,6 +61,9 @@ type
procedure addObserver(anObserver: TObject);
procedure removeObserver(anObserver: TObject);
procedure updateObservers; virtual;
//
property observersCount: Integer read getObserversCount;
property observers[index: Integer]: TObject read getObserver;
end;
var
@ -164,6 +169,16 @@ begin
exit(false);
end;
function TCECustomSubject.getObserversCount: Integer;
begin
exit(fObservers.Count);
end;
function TCECustomSubject.getObserver(index: Integer): TObject;
begin
exit(fObservers.Items[index]);
end;
procedure TCECustomSubject.addObserver(anObserver: TObject);
begin
if not acceptObserver(anObserver) then