forked from bergsteiger/mindstream
-
Notifications
You must be signed in to change notification settings - Fork 0
/
msDiagrammsList.pas
117 lines (99 loc) · 2.52 KB
/
msDiagrammsList.pas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
unit msDiagrammsList;
interface
uses
{$Include msPersistent.mixin.pas}
,
{$Include msItemsHolder.mixin.pas}
,
{$Include msShapesProvider.mixin.pas}
msInterfaces,
System.Classes,
System.Types,
msInterfacedRefcounted
;
type
TmsItemsHolderParent = TmsInterfacedRefcounted;
TmsItem = ImsDiagramm;
{$Include msItemsHolder.mixin.pas}
TmsPersistentParent = TmsItemsHolder;
{$Include msPersistent.mixin.pas}
TmsShapesProviderParent = TmsPersistent;
{$Include msShapesProvider.mixin.pas}
TmsDiagrammsList = class abstract(TmsShapesProvider, ImsDiagrammsList)
protected
function AddNewDiagramm: ImsDiagramm;
procedure ItemAdded(const aDiagramm: ImsDiagramm); override;
function SelectDiagramm(const aDiagrammName: String): ImsDiagramm;
procedure DiagrammsForToolbarToList(aList: TStrings);
function FirstDiagramm: ImsDiagramm;
function pm_GetCount: Integer;
procedure Cleanup; override;
end;//TmsDiagrammsList
implementation
uses
{$Include msPersistent.mixin.pas}
{$Include msItemsHolder.mixin.pas}
,
{$Include msShapesProvider.mixin.pas}
System.SysUtils,
msDiagramm,
msInvalidators,
msShape,
msShapesForToolbar
;
{$Include msPersistent.mixin.pas}
{$Include msItemsHolder.mixin.pas}
{$Include msShapesProvider.mixin.pas}
// TmsDiagrammsList
procedure TmsDiagrammsList.Cleanup;
begin
// - ïåðåêðûòî ÷èñòî äëÿ îòëàäêè
inherited;
end;
function TmsDiagrammsList.AddNewDiagramm: ImsDiagramm;
const
cN : array [0..6] of String = ('main', 'methods', 'uses', 'call', 'state', 'inject', 'sequence');
begin
if (Self.ItemsCount >= Low(cN)) AND (Self.ItemsCount <= High(cN)) then
Result := TmsDiagramm.Create(cN[Self.ItemsCount])
else
Result := TmsDiagramm.Create('¹' + IntToStr(Self.ItemsCount + 1));
Self.Add(Result);
end;
procedure TmsDiagrammsList.ItemAdded(const aDiagramm: ImsDiagramm);
begin
inherited;
TmsInvalidators.DiagrammAdded(Self, aDiagramm);
end;
function TmsDiagrammsList.SelectDiagramm(const aDiagrammName: String): ImsDiagramm;
var
l_D : ImsDiagramm;
begin
Result := nil;
for l_D in Self do
if (l_D.Name = aDiagrammName) then
begin
Result := l_D;
break;
end;//l_D.Name = aDiagrammName
end;
procedure TmsDiagrammsList.DiagrammsForToolbarToList(aList: TStrings);
var
l_D : ImsDiagramm;
begin
aList.Clear;
for l_D in Self do
aList.Add(l_D.Name);
end;
function TmsDiagrammsList.FirstDiagramm: ImsDiagramm;
begin
if (Self.ItemsCount <= 0) then
Result := nil
else
Result := Self.FirstItem;
end;
function TmsDiagrammsList.pm_GetCount: Integer;
begin
Result := Self.ItemsCount;
end;
end.