Table.Header.Model
- Unit
- Source
Symbols
Symbol | Description |
---|---|
TTableHeaderModel | Models a dimension in a TTableModel . |
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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
///////////////////////////////////////////////////////////////////////////
// //
// Copyright (c) 2015 by Charta Software B.V. //
// All rights reserved //
// //
// Version: 1.7.0.83525 //
// Web site: https://pascal.chartasoftware.com/ //
// //
// This code and information are provided "as is" without warranty of //
// any kind. Dissemination of this information or reproduction of //
// this material is strictly forbidden unless prior written permission //
// is obtained from Charta Software B.V.. //
// //
///////////////////////////////////////////////////////////////////////////
unit Table.Header.Model;
interface
uses
Boolean,
Collection.List,
Integer._32,
Integer._32.Interval,
Integer._32.Interval.List.OrderedDisjoint,
Listeners,
Object_.Base,
Table.Header,
Table.Header.Identifier,
TypedValue,
Value;
type
TTableHeaderModel = class(TBaseObject)
private
FListeners: TListeners;
public
constructor Create(); override;
destructor Destroy(); override;
function GetCount(): TInteger32; virtual; abstract;
function GetHeaders(const Range: TInteger32Interval): TTableHeaders; virtual; abstract;
function GetDefaultHiddenHeaders(): TInteger32OrderedDisjointIntervalList; virtual;
function SupportsEditing(): TBoolean; virtual;
function HasHomogeneousValues(): TBoolean; virtual;
procedure SetValue(Index: TInteger32; const Value: TValue); virtual;
function GetValue(Index: TInteger32): TTypedValue;
function GetValues(const Indices: TInteger32Interval): TList<TTypedValue>; virtual;
function Insert(Index: TInteger32): TInteger32; virtual;
procedure Delete(const Indices: TInteger32OrderedDisjointIntervalList); virtual;
function CreateEmptyIdentifier(): TTableHeaderIdentifier; virtual;
procedure TriggerChangedEvent(); // TODO: Make protected
property Listeners: TListeners read FListeners;
end;
implementation
uses
Collection.List.Array_,
Exception.NotImplemented,
Object_.Reference.Counter,
Table.Header.Model.Event;
{ TTableHeaderModel }
constructor TTableHeaderModel.Create();
begin
inherited Create();
FListeners := TListeners.Create();
FListeners.AddReference();
end;
function TTableHeaderModel.CreateEmptyIdentifier(): TTableHeaderIdentifier;
begin
Result := nil;
end;
procedure TTableHeaderModel.Delete(const Indices: TInteger32OrderedDisjointIntervalList);
begin
end;
destructor TTableHeaderModel.Destroy();
begin
FListeners.ReleaseReference();
inherited Destroy();
end;
function TTableHeaderModel.GetDefaultHiddenHeaders(): TInteger32OrderedDisjointIntervalList;
begin
Result := TInteger32OrderedDisjointIntervalList.New();
end;
function TTableHeaderModel.GetValue(Index: TInteger32): TTypedValue;
var
TypedValues: TList<TTypedValue>;
begin
TypedValues := GetValues(TInteger32Interval.NewSingleValue(Index));
Result := TypedValues.ExtractFirst();
Result.DiscardReference();
TypedValues.Free();
end;
function TTableHeaderModel.GetValues(const Indices: TInteger32Interval): TList<TTypedValue>;
var
i: TInteger32;
begin
Result := TArrayList<TTypedValue>.Create();
Result.ElementManager := TReferenceCounter<TTypedValue>.Create();
for i := Indices.Low to Indices.High do
Result.Add(TTypedValue.NewUnknown());
end;
function TTableHeaderModel.HasHomogeneousValues(): TBoolean;
begin
Result := False;
end;
function TTableHeaderModel.Insert(Index: TInteger32): TInteger32;
begin
Result := -1;
end;
procedure TTableHeaderModel.SetValue(Index: TInteger32; const Value: TValue);
begin
raise ENotSupported.Create(ClassType, 'SetValue');
end;
function TTableHeaderModel.SupportsEditing(): TBoolean;
begin
Result := False;
end;
procedure TTableHeaderModel.TriggerChangedEvent();
begin
Listeners.DistributeEvent(TTableHeaderModelChangedEvent.Create(Self));
end;
end.