1 //////////////////////////////////////////////////////////////////////////
2 //
3 // pgAdmin III - PostgreSQL Tools
4 //
5 // Copyright (C) 2002 - 2016, The pgAdmin Development Team
6 // This software is released under the PostgreSQL Licence
7 //
8 // ddColumnTextTool.cpp - Modification of simple text tool for editing composite figure columns
9 //
10 //////////////////////////////////////////////////////////////////////////
11
12 #include "pgAdmin3.h"
13
14 // wxWindows headers
15 #include <wx/wx.h>
16 #include <wx/textctrl.h>
17 #include <wx/choicdlg.h>
18
19 // App headers
20 #include "dd/dditems/tools/ddColumnTextTool.h"
21 #include "dd/dditems/figures/ddTextTableItemFigure.h"
22 #include "dd/dditems/figures/ddTableFigure.h"
23 #include "dd/dditems/utilities/ddTableNameDialog.h"
24
25 class hdDrawingEditor;
26
27
ddColumnTextTool(hdDrawingView * view,hdIFigure * fig,hdITool * dt,bool fastEdit,wxString dialogCaption,wxString dialogMessage)28 ddColumnTextTool::ddColumnTextTool(hdDrawingView *view, hdIFigure *fig, hdITool *dt, bool fastEdit , wxString dialogCaption, wxString dialogMessage):
29 hdSimpleTextTool(view, fig, dt, fastEdit, dialogCaption, dialogMessage)
30 {
31 if(colTextFigure->ms_classInfo.IsKindOf(&ddTextTableItemFigure::ms_classInfo))
32 colTextFigure = (ddTextTableItemFigure *) fig;
33 else
34 colTextFigure = NULL;
35 }
36
~ddColumnTextTool()37 ddColumnTextTool::~ddColumnTextTool()
38 {
39 }
40
mouseDown(hdMouseEvent & event)41 void ddColumnTextTool::mouseDown(hdMouseEvent &event)
42 {
43 hdSimpleTextTool::mouseDown(event);
44 }
45
callDialog(hdDrawingView * view)46 bool ddColumnTextTool::callDialog(hdDrawingView *view)
47 {
48 if(colTextFigure->getOwnerColumn() == NULL)
49 {
50 wxString colName = colTextFigure->getText();
51 wxString colShortName = colTextFigure->getAlias();
52 ddTableNameDialog *nameAliasDialog = new ddTableNameDialog(
53 view,
54 colName,
55 colShortName,
56 colTextFigure
57 );
58
59 int answer = nameAliasDialog->ShowModal();
60 bool change = false;
61
62 if(answer == wxOK)
63 {
64 //check if names changed
65 change = ! (colShortName.IsSameAs(nameAliasDialog->GetValue1()) && colShortName.IsSameAs(nameAliasDialog->GetValue2()));
66 if(change)
67 {
68 colTextFigure->setText(nameAliasDialog->GetValue1());
69 colTextFigure->setAlias(nameAliasDialog->GetValue2());
70 view->notifyChanged();
71 }
72 }
73 delete nameAliasDialog;
74 return change;
75 }
76 else
77 {
78 bool change = hdSimpleTextTool::callDialog(view);
79 if( change && colTextFigure->getOwnerColumn()->isGeneratedForeignKey()) //after a manual user column rename, deactivated automatic generation of fk name.
80 colTextFigure->getOwnerColumn()->deactivateGenFkName();
81 return change;
82 }
83 }
84