diff options
Diffstat (limited to 'extras/tiopf/mvp/basic_intf.pas')
-rw-r--r-- | extras/tiopf/mvp/basic_intf.pas | 114 |
1 files changed, 103 insertions, 11 deletions
diff --git a/extras/tiopf/mvp/basic_intf.pas b/extras/tiopf/mvp/basic_intf.pas index efe58d4a..1d1aad80 100644 --- a/extras/tiopf/mvp/basic_intf.pas +++ b/extras/tiopf/mvp/basic_intf.pas @@ -7,6 +7,13 @@ interface type // forward declarations ISubject = interface; + IMVPView = interface; + ICommandMenuItem = interface; + IString = interface; + + + // event types + TSelectStringEvent = procedure(const AString: IString) of object; IObserver = interface(IInterface) @@ -34,23 +41,23 @@ type ['{7CF62F51-9412-445C-9E8C-DE94F2B1E280}'] procedure Accept(const Visitor: IVisitor); end; - IListModel = interface(IInterface) ['{1A772375-1263-4790-8827-F7BEA358674A}'] function GetCount: Integer; function GetItem(Idx: Integer): IInterface; - procedure Add(Item: IInterface); + procedure Add(const Item: IInterface); procedure Clear; - procedure Insert(Item, Before: IInterface); - procedure Move(Item, Before: IInterface); - procedure Remove(Item: IInterface); + function IndexOf(const Item: IInterface): Integer; + procedure Insert(const Item, Before: IInterface); + procedure Move(const Item, Before: IInterface); + procedure Remove(const Item: IInterface); property Count: Integer read GetCount; property Item[Idx: Integer]: IInterface read GetItem; end; -{ - + +(* IController = interface(IInterface) ['{4A99C01A-D025-4562-8E94-3A0C873CE894}'] function GetModel: IModel; @@ -60,7 +67,7 @@ type property Model: IModel read GetModel write SetModel; property View: IView read GetView write SetView; end; -} +*) IString = interface(IInterface) ['{E76984A4-1287-4353-8370-A7332B9FB1CB}'] @@ -70,9 +77,9 @@ type end; - IStringListModel = interface(IInterface) + IStringListModel = interface(IListModel) ['{769804CD-89E4-43C7-B8EF-783BFE27214E}'] - function GetItem(Idx: Integer): IString; + function GetItem(Idx: Integer): IString; overload; property Item[Idx: Integer]: IString read GetItem; end; @@ -81,8 +88,9 @@ type ['{F4DDA0EA-E982-4785-8602-5B32E8DD6DA2}'] procedure AddItem(const Item: IInterface); procedure Clear; + function GetCount: integer; procedure RemoveItem(const Item: IInterface); - procedure SelectModel; + property Count: integer read GetCount; end; @@ -90,7 +98,9 @@ type ['{B333C7E1-B124-4D08-A640-DC02F36264C7}'] procedure BindSelection(const Selection: ISelection); function Execute: Boolean; + function GetEnabled: Boolean; function GetText: string; + property Enabled: Boolean read GetEnabled; property Text: string read GetText; end; @@ -100,6 +110,88 @@ type // empty interface end; + + ICommandVisitor = interface(IVisitor) + ['{628B3A4A-30D1-48D3-8B46-090F08AD2AC8}'] + procedure VisitComand(const Command: ICommand); + end; + + + ICommandMenu = interface(IInterface) + ['{3C666D8F-6BED-454B-8BFE-28422943B300}'] + function AddItem(const Caption: string; Enabled: Boolean): ICommandMenuItem; + end; + + + ICommandMenuItem = interface(IInterface) + ['{7DFCF2BD-70DA-4DAC-B8D5-C6FB882267CF}'] + function GetCaption: string; + function GetChecked: Boolean; + function GetCommand: ICommand; + procedure SetCaption(const AValue: string); + procedure SetChecked(const AValue: Boolean); + procedure SetCommand(const AValue: ICommand); + property Caption: string read GetCaption write SetCaption; + property Checked: Boolean read GetChecked write SetChecked; + property Command: ICommand read GetCommand write SetCommand; + end; + + + IStringVisitor = interface(IVisitor) + ['{DA12355F-0727-41B3-9080-DDAF20797FC5}'] + procedure VisitString(const Str: IString); + end; + + + IMVPModel = interface(IInterface) + ['{85223140-B263-4413-89E3-BFA37E9D3112}'] + function GetCommandSet: ICommandSet; + function GetCurrentSelection: ISelection; + property CommandSet: ICommandSet read GetCommandSet; + property CurrentSelection: ISelection read GetCurrentSelection; + end; + + + IMVPPresenter = interface(IInterface) + ['{5B8477DA-A006-4DE1-B304-9512BFAD7507}'] + function GetCommandMenu: ICommandMenu; + function GetModel: IMVPModel; + function GetView: IMVPView; + procedure SetCommandMenu(const AValue: ICommandMenu); + procedure SetModel(const AValue: IMVPModel); + procedure SetView(const AValue: IMVPView); + property CommandMenu: ICommandMenu read GetCommandMenu write SetCommandMenu; + property Model: IMVPModel read GetModel write SetModel; + property View: IMVPView read GetView write SetView; + end; + + + IMVPView = interface(IInterface) + ['{2C575FE7-BACD-46EC-9D72-AEDA44836B20}'] + procedure AdoptCommandMenu(const Value: ICommandMenu); + procedure OrphanCommandMenu(const Value: ICommandMenu); + end; + + + IStringListView = interface(IMVPView) + ['{D834710A-9C1A-42D1-A29B-7F9F8FB46426}'] + function GetOnSelectString: TSelectStringEvent; + procedure SetOnSelectString(const AValue: TSelectStringEvent); + property OnSelectString: TSelectStringEvent read GetOnSelectString write SetOnSelectString; + end; + + + IStringMoveVisitor = interface(IStringVisitor) + ['{DB89C96F-DA90-43ED-A621-51B70E6C600E}'] + function GetCanDemote: Boolean; + function GetCanPromote: Boolean; + property CanDemote: Boolean read GetCanDemote; + property CanPromote: Boolean read GetCanPromote; + end; + + + + implementation |