lazarus/components/sqldbrest/design/frasqldbfullrestschemaaditor.pp
2019-05-11 16:03:10 +00:00

174 lines
4.6 KiB
ObjectPascal

unit frasqldbfullrestschemaaditor;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, ExtCtrls, PropertyStorage, fraconnections, sqldb, sqldbrestschema, sqldbschemaedittools,
fraSQLDBRestSchemaEditor, sqldbrestbridge;
type
{ TSchemaEditorFrame }
TSchemaEditorFrame = class(TFrame)
fraConn: TfraConnections;
splConnection: TSplitter;
fraSchema: TSQLDBRestSchemaEditorFrame;
private
FOnSchemaChanged: TNotifyEvent;
procedure DoImportSchema(Sender: TObject);
procedure DoSchemaChanged(Sender: TObject);
function GetConnections: TSQLDBRestConnectionList;
function GetConnectionsFileName: String;
function GetConnectionsModified: Boolean;
function GetModified: Boolean;
function GetSchema: TSQLDBRestSchema;
procedure SetConnections(AValue: TSQLDBRestConnectionList);
procedure SetSchema(AValue: TSQLDBRestSchema);
public
Constructor Create(aOwner : TComponent);override;
Procedure ClearSchema;
Function CheckSave : Boolean;
Procedure LoadSchema(Const aFileName : String);
Procedure SaveSchema(Const aFileName : String);
Procedure LoadConnections(Const aFileName : String);
Procedure SaveConnections(Const aFileName : String);
Procedure LoadSession(aStorage : TCustomPropertyStorage);
Procedure SaveSession(aStorage : TCustomPropertyStorage);
Property ConnectionsFileName : String Read GetConnectionsFileName;
Property SchemaModified : Boolean Read GetModified;
Property ConnectionsModified : Boolean Read GetConnectionsModified;
Property OnSchemaChanged : TNotifyEvent Read FOnSchemaChanged Write FOnSchemaChanged;
Property Schema : TSQLDBRestSchema Read GetSchema Write SetSchema;
Property Connections : TSQLDBRestConnectionList Read GetConnections Write SetConnections;
end;
implementation
uses dlgrestfieldoptions;
{$R *.lfm}
{ TSchemaEditorFrame }
procedure TSchemaEditorFrame.DoImportSchema(Sender: TObject);
Var
RFO : TRestFieldOptions;
Conn : TSQLConnection;
begin
Conn:=(Sender as TMySQLDBRestConnection).MyConnection;
RFO:=fraSchema.ImportOpts;
if GetRestFieldOptions(RFO) then
FraSchema.Schema.PopulateResources(Conn,Nil,RFO);
end;
procedure TSchemaEditorFrame.DoSchemaChanged(Sender: TObject);
begin
if Assigned(FOnSchemaChanged) then
FOnSchemaChanged(Sender);
end;
function TSchemaEditorFrame.GetConnections: TSQLDBRestConnectionList;
begin
Result:=fraConn.Connections;
end;
function TSchemaEditorFrame.GetConnectionsFileName: String;
begin
Result:=fraConn.FileName;
end;
function TSchemaEditorFrame.GetConnectionsModified: Boolean;
begin
Result:=fraConn.Modified
end;
function TSchemaEditorFrame.GetModified: Boolean;
begin
Result:=fraSchema.Modified;
end;
function TSchemaEditorFrame.GetSchema: TSQLDBRestSchema;
begin
Result:=fraSchema.Schema;
end;
procedure TSchemaEditorFrame.SetConnections(AValue: TSQLDBRestConnectionList);
begin
FraConn.Connections:=aValue;
end;
procedure TSchemaEditorFrame.SetSchema(AValue: TSQLDBRestSchema);
begin
if Assigned(aValue) then
begin
Schema.Name:=aValue.Name;
Schema.Resources.Assign(aValue.Resources);
fraSchema.ShowResources;
end;
end;
constructor TSchemaEditorFrame.Create(aOwner: TComponent);
begin
inherited Create(aOwner);
fraConn.OnImportSchema:=@DoImportSchema;
fraSchema.ConnectionPane:=fraConn;
fraSchema.Connections:=fraConn.Connections;
fraSchema.OnChanged:=@DoSchemaChanged;
end;
procedure TSchemaEditorFrame.ClearSchema;
begin
FraSchema.ClearSchema;
end;
function TSchemaEditorFrame.CheckSave: Boolean;
begin
Result:=FraSchema.CheckSave;
end;
procedure TSchemaEditorFrame.LoadSchema(const aFileName: String);
begin
fraSchema.LoadFromFile(aFileName);
end;
procedure TSchemaEditorFrame.SaveSchema(const aFileName: String);
begin
fraSchema.SaveToFile(aFileName);
end;
procedure TSchemaEditorFrame.LoadConnections(const aFileName: String);
begin
fraConn.LoadConnections(aFileName);
end;
procedure TSchemaEditorFrame.SaveConnections(const aFileName: String);
begin
fraConn.SaveConnections(aFileName);
end;
procedure TSchemaEditorFrame.LoadSession(aStorage: TCustomPropertyStorage);
begin
fraConn.Width:=aStorage.ReadInteger('Connections_Width',fraConn.Width);
fraConn.Visible:=aStorage.ReadBoolean('Connections_Visible',fraConn.Visible);
fraConn.LoadSession(aStorage);
fraSchema.LoadSession(aStorage);
end;
procedure TSchemaEditorFrame.SaveSession(aStorage: TCustomPropertyStorage);
begin
aStorage.WriteInteger('Connections_Width',fraConn.Width);
aStorage.WriteBoolean('Connections_Visible',fraConn.Visible);
fraConn.SaveSession(aStorage);
fraSchema.SaveSession(aStorage);
end;
end.