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