File: fraschematableseditor.pp

package info (click to toggle)
lazarus 2.2.6%2Bdfsg2-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 219,980 kB
  • sloc: pascal: 1,944,919; xml: 357,634; makefile: 270,608; cpp: 57,115; sh: 3,249; java: 609; perl: 297; sql: 222; ansic: 137
file content (157 lines) | stat: -rw-r--r-- 3,414 bytes parent folder | download | duplicates (4)
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
150
151
152
153
154
155
156
157
unit fraschematableseditor;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, Forms, Controls, ComCtrls, sqldbrestschema, sqldbschemaedittools;

type

  { TSQLDBRestSchemaTablesEditFrame }

  TSQLDBRestSchemaTablesEditFrame = class(TBaseEditFrame)
    ILSchema: TImageList;
    LVSchema: TListView;
    procedure LVSchemaDblClick(Sender: TObject);
  private
    FOnSelectResource: TNotifyEvent;
    FSchema: TSQLDBRestSchema;
    procedure AddResourceToList(Res: TSQLDBRestResource);
    procedure SetSchema(AValue: TSQLDBRestSchema);
    procedure ShowResource(LI: TListItem; Res: TSQLDBRestResource);
  Protected
    procedure SetFrameData(aData: TObject); override;
  public
    Procedure ShowSchema;
    Function Modified : Boolean; override;
    Procedure SaveData; override;
    Function FrameCaption : String; override;
    Property Schema : TSQLDBRestSchema Read FSchema Write SetSchema;
    Property OnSelectResource : TNotifyEvent Read FOnSelectResource Write FOnSelectResource;
  end;

implementation

uses dialogs;

Const
  idxChecked   = 0;
  idxUnChecked = 1;
  idxTable     = 2;

{$R *.lfm}

{ TSQLDBRestSchemaTablesEditFrame }

procedure TSQLDBRestSchemaTablesEditFrame.SetSchema(AValue: TSQLDBRestSchema);
begin
  if FSchema=AValue then Exit;
  FSchema:=AValue;
  ShowSchema;
end;

procedure TSQLDBRestSchemaTablesEditFrame.ShowResource(LI: TListItem;
  Res: TSQLDBRestResource);

  procedure ShowBool(Idx : Integer; B : Boolean);
  begin
    LI.SubItems[Idx]:='';
    if B then
      LI.SubItemImages[Idx]:=idxChecked;
  end;

  Procedure ShowOp(idx : Integer; O : TRestOperation);

  begin
    ShowBool(Idx,O in Res.AllowedOperations);
  end;

Var
  i : Integer;

begin
//  LI.StateIndex:=idxTable;
  LI.Data:=Res;
  LI.ImageIndex:=idxTable;
  LI.Caption:=Res.ResourceName;
  for I:=0 to LVSchema.ColumnCount-1 do
    LI.SubItems.Add('');
  LI.SubItems[0]:=Res.TableName;
  LI.SubItems[1]:=Res.ConnectionName;
  ShowBool(2,Res.Enabled);
  ShowBool(3,Res.InMetadata);
  ShowOp(4,roGet);
  ShowOp(5,roPost);
  ShowOp(6,roPut);
  ShowOp(7,roDelete);
  ShowOp(8,roOptions);
  ShowOp(9,roHead);

end;

procedure TSQLDBRestSchemaTablesEditFrame.SetFrameData(aData: TObject);
begin
  Schema:=aData as TSQLDBRestSchema;
end;

procedure TSQLDBRestSchemaTablesEditFrame.LVSchemaDblClick(Sender: TObject);
begin
  if Assigned(OnSelectResource) and Assigned(LVSchema.Selected) And Assigned(LVSchema.Selected.Data) then
    OnSelectResource(TSQLDBRestResource(LVSchema.Selected.Data));
end;

procedure TSQLDBRestSchemaTablesEditFrame.AddResourceToList(
  Res: TSQLDBRestResource);

Var
  LI : TListItem;

begin
  LI:=LVSchema.Items.Add;
  ShowResource(LI,Res);
end;

procedure TSQLDBRestSchemaTablesEditFrame.ShowSchema;

Var
  I : Integer;

begin
  With LVSchema.Items do
    begin
    BeginUpdate;
    try
      Clear;
      if Not assigned(Schema) then
        exit;
      For I:=0 to Schema.Resources.Count-1 do
        AddResourceToList(Schema.Resources[I]);
    finally
      EndUpdate;
    end;
    end;
end;

function TSQLDBRestSchemaTablesEditFrame.Modified: Boolean;
begin
  Result:=False;
end;

procedure TSQLDBRestSchemaTablesEditFrame.SaveData;
begin
  // nothing to do
end;

function TSQLDBRestSchemaTablesEditFrame.FrameCaption: String;
begin
  if FSchema=Nil then
    Result:=SUnknownObject
  else
    Result:=Schema.Name;
  Result:=Format(SEditObject,[SSchema,Result]);
end;

end.