From 3aef5bb5e5bfa11350db4f751548667c5ad5abb9 Mon Sep 17 00:00:00 2001 From: Ansgar Becker Date: Sun, 13 Dec 2009 07:32:46 +0000 Subject: [PATCH] Unify Init() method of database object editors. --- source/helpers.pas | 1 + source/main.dfm | 8 ++-- source/main.pas | 81 +++++++++++++-------------------------- source/routine_editor.pas | 15 +++++--- source/table_editor.pas | 8 ++-- source/trigger_editor.pas | 6 +-- source/view.pas | 6 +-- 7 files changed, 52 insertions(+), 73 deletions(-) diff --git a/source/helpers.pas b/source/helpers.pas index 03a40dc7..0ef88ec8 100644 --- a/source/helpers.pas +++ b/source/helpers.pas @@ -148,6 +148,7 @@ type FModified: Boolean; procedure SetModified(Value: Boolean); public + procedure Init(ObjectName: WideString=''; ObjectType: TListNodeType=lntNone); Virtual; Abstract; property Modified: Boolean read FModified write SetModified; end; diff --git a/source/main.dfm b/source/main.dfm index d1d1acaf..ef7b6f57 100644 --- a/source/main.dfm +++ b/source/main.dfm @@ -1849,7 +1849,7 @@ object MainForm: TMainForm Enabled = False Hint = 'Create view ...' ImageIndex = 81 - OnExecute = actCreateViewExecute + OnExecute = actCreateDBObjectExecute end object actDataFirst: TAction Category = 'Data' @@ -1909,7 +1909,7 @@ object MainForm: TMainForm Enabled = False Hint = 'Create new table in selected database' ImageIndex = 14 - OnExecute = actCreateTableExecute + OnExecute = actCreateDBObjectExecute end object actEmptyTables: TAction Category = 'Database' @@ -2201,7 +2201,7 @@ object MainForm: TMainForm Caption = 'Stored routine' Hint = 'Create stored routine|Create stored procedure or function' ImageIndex = 119 - OnExecute = actCreateRoutineExecute + OnExecute = actCreateDBObjectExecute end object actEditObject: TAction Category = 'Database' @@ -2246,7 +2246,7 @@ object MainForm: TMainForm Caption = 'Trigger' Hint = 'Create a trigger' ImageIndex = 137 - OnExecute = actCreateTriggerExecute + OnExecute = actCreateDBObjectExecute end end object SaveDialog2: TSaveDialog diff --git a/source/main.pas b/source/main.pas index 76a4e026..43991301 100644 --- a/source/main.pas +++ b/source/main.pas @@ -450,8 +450,7 @@ type procedure loadWindowConfig; procedure saveWindowConfig; procedure setDefaultWindowConfig; - procedure actCreateTableExecute(Sender: TObject); - procedure actCreateViewExecute(Sender: TObject); + procedure actCreateDBObjectExecute(Sender: TObject); procedure menuConnectionsPopup(Sender: TObject); procedure actExitApplicationExecute(Sender: TObject); procedure DisplayChange(var msg: TMessage); message WM_DISPLAYCHANGE; @@ -671,7 +670,6 @@ type procedure actSelectAllExecute(Sender: TObject); procedure EnumerateRecentFilters; procedure LoadRecentFilter(Sender: TObject); - procedure actCreateRoutineExecute(Sender: TObject); procedure DataGridScroll(Sender: TBaseVirtualTree; DeltaX, DeltaY: Integer); procedure ListTablesEditing(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; var Allowed: Boolean); @@ -705,7 +703,6 @@ type procedure TimerFilterVTTimer(Sender: TObject); procedure PageControlMainContextPopup(Sender: TObject; MousePos: TPoint; var Handled: Boolean); procedure menuQueryHelpersGenerateStatementClick(Sender: TObject); - procedure actCreateTriggerExecute(Sender: TObject); private ReachedEOT : Boolean; FDelimiter: String; @@ -738,7 +735,7 @@ type procedure SetVisibleListColumns( List: TVirtualStringTree; Columns: TWideStringList ); procedure ToggleFilterPanel(ForceVisible: Boolean = False); procedure AutoCalcColWidths(Tree: TVirtualStringTree; PrevLayout: TWideStringlist = nil); - procedure PlaceObjectEditor(Which: TListNodeType); + function PlaceObjectEditor(Which: TListNodeType): TDBObjectEditor; procedure SetTabCaption(PageIndex: Integer; Text: WideString); function ConfirmTabClose(PageIndex: Integer): Boolean; procedure SaveQueryMemo(Tab: TQueryTab; Filename: String; OnlySelection: Boolean); @@ -852,7 +849,7 @@ type function GetRegKeyTable: String; procedure SaveListSetup( List: TVirtualStringTree ); procedure RestoreListSetup( List: TVirtualStringTree ); - procedure SetEditorTabCaption(Editor: TFrame; ObjName: WideString); + procedure SetEditorTabCaption(Editor: TDBObjectEditor; ObjName: WideString); procedure SetWindowCaption; procedure OnMessageHandler(var Msg: TMsg; var Handled: Boolean); function MaskMulti(str: WideString): WideString; @@ -1820,18 +1817,6 @@ begin end; -{** - Create a view -} -procedure TMainForm.actCreateViewExecute(Sender: TObject); -begin - tabEditor.TabVisible := True; - PagecontrolMain.ActivePage := tabEditor; - PlaceObjectEditor(lntView); - ViewEditor.Init; -end; - - {** Edit view } @@ -2456,12 +2441,23 @@ begin end; -procedure TMainForm.actCreateTableExecute(Sender: TObject); +procedure TMainForm.actCreateDBObjectExecute(Sender: TObject); +var + Editor: TDBObjectEditor; + ObjType: TListNodeType; + a: TAction; begin + // Create a new table, view, etc. tabEditor.TabVisible := True; PagecontrolMain.ActivePage := tabEditor; - PlaceObjectEditor(lntTable); - TableEditor.Init; + a := Sender as TAction; + ObjType := lntNone; + if a = actCreateTable then ObjType := lntTable + else if a = actCreateView then ObjType := lntView + else if a = actCreateRoutine then ObjType := lntProcedure + else if a = actCreateTrigger then ObjType := lntTrigger; + Editor := PlaceObjectEditor(ObjType); + Editor.Init; end; @@ -8077,24 +8073,6 @@ begin end; -procedure TMainForm.actCreateRoutineExecute(Sender: TObject); -begin - tabEditor.TabVisible := True; - PagecontrolMain.ActivePage := tabEditor; - PlaceObjectEditor(lntProcedure); - RoutineEditor.Init; -end; - - -procedure TMainForm.actCreateTriggerExecute(Sender: TObject); -begin - tabEditor.TabVisible := True; - PagecontrolMain.ActivePage := tabEditor; - PlaceObjectEditor(lntTrigger); - TriggerEditor.Init; -end; - - procedure TMainForm.DataGridScroll(Sender: TBaseVirtualTree; DeltaX, DeltaY: Integer); var query: String; @@ -8152,11 +8130,10 @@ begin end; -procedure TMainForm.PlaceObjectEditor(Which: TListNodeType); -var - frm: TFrame; +function TMainForm.PlaceObjectEditor(Which: TListNodeType): TDBObjectEditor; begin // Place the relevant editor frame onto the editor tab, hide all others + Result := nil; if (not (Which in [lntTable, lntCrashedTable])) and Assigned(TableEditor) then FreeAndNil(TableEditor); if (Which <> lntView) and Assigned(ViewEditor) then @@ -8168,26 +8145,26 @@ begin if Which in [lntTable, lntCrashedTable] then begin if not Assigned(TableEditor) then TableEditor := TfrmTableEditor.Create(tabEditor); - frm := TableEditor; + Result := TableEditor; end else if Which = lntView then begin if not Assigned(ViewEditor) then ViewEditor := TfrmView.Create(tabEditor); - frm := ViewEditor; + Result := ViewEditor; end else if Which in [lntProcedure, lntFunction] then begin if not Assigned(RoutineEditor) then RoutineEditor := TfrmRoutineEditor.Create(tabEditor); - frm := RoutineEditor; + Result := RoutineEditor; end else if Which = lntTrigger then begin if not Assigned(TriggerEditor) then TriggerEditor := TfrmTriggerEditor.Create(tabEditor); - frm := TriggerEditor; + Result := TriggerEditor; end else Exit; - frm.Parent := tabEditor; + Result.Parent := tabEditor; end; -procedure TMainForm.SetEditorTabCaption(Editor: TFrame; ObjName: WideString); +procedure TMainForm.SetEditorTabCaption(Editor: TDBObjectEditor; ObjName: WideString); var ObjType, Cap: WideString; IconIndex: Integer; @@ -8219,7 +8196,7 @@ end; procedure TMainForm.actEditObjectExecute(Sender: TObject); var NodeData: PVTreeData; - RoutineType: String; + RoutineType: TListNodeType; db: WideString; begin debug('actEditObjectExecute()'); @@ -8260,11 +8237,7 @@ begin lntFunction, lntProcedure: begin PlaceObjectEditor(SelectedTable.NodeType); - if SelectedTable.NodeType = lntFunction then - RoutineType := 'FUNCTION' - else - RoutineType := 'PROCEDURE'; - RoutineEditor.Init(SelectedTable.Text, RoutineType); + RoutineEditor.Init(SelectedTable.Text, SelectedTable.NodeType); end; lntTrigger: begin diff --git a/source/routine_editor.pas b/source/routine_editor.pas index 0b282d91..ecfec052 100644 --- a/source/routine_editor.pas +++ b/source/routine_editor.pas @@ -72,7 +72,7 @@ type public { Public declarations } constructor Create(AOwner: TComponent); override; - procedure Init(AlterRoutineName: WideString=''; AlterRoutineType: String=''); + procedure Init(ObjectName: WideString=''; ObjectType: TListNodeType=lntNone); override; end; @@ -112,7 +112,7 @@ begin end; -procedure TfrmRoutineEditor.Init(AlterRoutineName: WideString=''; AlterRoutineType: String=''); +procedure TfrmRoutineEditor.Init(ObjectName: WideString=''; ObjectType: TListNodeType=lntNone); var Results: TMySQLQuery; Create, Params: WideString; @@ -122,8 +122,9 @@ var i: Integer; begin MainForm.SetupSynEditors; - FAlterRoutineName := AlterRoutineName; - FAlterRoutineType := AlterRoutineType; + FAlterRoutineName := ObjectName; + if ObjectType = lntProcedure then FAlterRoutineType := 'PROCEDURE' + else FAlterRoutineType := 'FUNCTION'; editName.Text := FAlterRoutineName; comboType.ItemIndex := 0; comboReturns.Text := ''; @@ -492,8 +493,12 @@ end; procedure TfrmRoutineEditor.btnDiscardClick(Sender: TObject); +var + t: TListNodeType; begin - Init(FAlterRoutineName, FAlterRoutineType); + if FAlterRoutineType = 'PROCEDURE' then t := lntProcedure + else t := lntFunction; + Init(FAlterRoutineName, t); end; diff --git a/source/table_editor.pas b/source/table_editor.pas index 6aa02073..27b99424 100644 --- a/source/table_editor.pas +++ b/source/table_editor.pas @@ -188,7 +188,7 @@ type { Public declarations } constructor Create(AOwner: TComponent); override; destructor Destroy; override; - procedure Init(AlterTableName: WideString=''); + procedure Init(ObjectName: WideString=''; ObjectType: TListNodeType=lntNone); override; end; @@ -245,7 +245,7 @@ begin end; -procedure TfrmTableEditor.Init(AlterTableName: WideString=''); +procedure TfrmTableEditor.Init(ObjectName: WideString=''; ObjectType: TListNodeType=lntNone); var CreateTable, AttrName, AttrValue: WideString; rx: TRegExpr; @@ -254,12 +254,12 @@ begin Screen.Cursor := crHourglass; FLoaded := False; // Start with "basic" tab activated when just called - if FAlterTableName <> AlterTableName then + if FAlterTableName <> ObjectName then PageControlMain.ActivePage := tabBasic; comboEngine.Items := Mainform.Connection.TableEngines; comboEngine.ItemIndex := comboEngine.Items.IndexOf(Mainform.Connection.TableEngineDefault); comboCollation.Items := Mainform.Connection.CollationList; - FAlterTableName := AlterTableName; + FAlterTableName := ObjectName; listColumns.BeginUpdate; FColumns.Clear; btnClearIndexesClick(Self); diff --git a/source/trigger_editor.pas b/source/trigger_editor.pas index 5b5a4aea..5f9c0224 100644 --- a/source/trigger_editor.pas +++ b/source/trigger_editor.pas @@ -34,7 +34,7 @@ type public { Public declarations } constructor Create(AOwner: TComponent); override; - procedure Init(EditTriggerName: WideString=''); + procedure Init(ObjectName: WideString=''; ObjectType: TListNodeType=lntNone); override; end; implementation @@ -73,12 +73,12 @@ begin end; -procedure TfrmTriggerEditor.Init(EditTriggerName: WideString=''); +procedure TfrmTriggerEditor.Init(ObjectName: WideString=''; ObjectType: TListNodeType=lntNone); var Definition, TableList: TMySQLQuery; begin Mainform.SetupSynEditors; - FEditTriggerName := EditTriggerName; + FEditTriggerName := ObjectName; editName.Text := ''; SynMemoStatement.Text := ''; comboEvent.ItemIndex := 0; diff --git a/source/view.pas b/source/view.pas index d412d60e..cf959dc8 100644 --- a/source/view.pas +++ b/source/view.pas @@ -29,7 +29,7 @@ type public { Public declarations } constructor Create(AOwner: TComponent); override; - procedure Init(EditViewName: WideString=''); + procedure Init(ObjectName: WideString=''; ObjectType: TListNodeType=lntNone); override; end; @@ -56,13 +56,13 @@ end; {** FormShow: Fill controls with content in edit mode } -procedure TfrmView.Init(EditViewName: WideString=''); +procedure TfrmView.Init(ObjectName: WideString=''; ObjectType: TListNodeType=lntNone); var Results: TMySQLQuery; db: WideString; rx: TRegExpr; begin - FEditViewName := EditViewName; + FEditViewName := ObjectName; if FEditViewName <> '' then begin // Edit mode editName.Text := FEditViewName;