xref: /aoo4110/main/sw/source/ui/fldui/changedb.cxx (revision b1cdbd2c)
1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski  *
3*b1cdbd2cSJim Jagielski  * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski  * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski  * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski  * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski  * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski  * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski  * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski  *
11*b1cdbd2cSJim Jagielski  *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski  *
13*b1cdbd2cSJim Jagielski  * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski  * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski  * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski  * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski  * under the License.
19*b1cdbd2cSJim Jagielski  *
20*b1cdbd2cSJim Jagielski  *************************************************************/
21*b1cdbd2cSJim Jagielski 
22*b1cdbd2cSJim Jagielski 
23*b1cdbd2cSJim Jagielski 
24*b1cdbd2cSJim Jagielski // MARKER(update_precomp.py): autogen include statement, do not remove
25*b1cdbd2cSJim Jagielski #include "precompiled_sw.hxx"
26*b1cdbd2cSJim Jagielski 
27*b1cdbd2cSJim Jagielski 
28*b1cdbd2cSJim Jagielski #ifdef SW_DLLIMPLEMENTATION
29*b1cdbd2cSJim Jagielski #undef SW_DLLIMPLEMENTATION
30*b1cdbd2cSJim Jagielski #endif
31*b1cdbd2cSJim Jagielski 
32*b1cdbd2cSJim Jagielski 
33*b1cdbd2cSJim Jagielski #define _CHANGEDB_CXX
34*b1cdbd2cSJim Jagielski 
35*b1cdbd2cSJim Jagielski #include <svtools/stdctrl.hxx>
36*b1cdbd2cSJim Jagielski #ifndef _MSGBOX_HXX //autogen
37*b1cdbd2cSJim Jagielski #include <vcl/msgbox.hxx>
38*b1cdbd2cSJim Jagielski #endif
39*b1cdbd2cSJim Jagielski #include <com/sun/star/lang/XMultiServiceFactory.hpp>
40*b1cdbd2cSJim Jagielski #include <com/sun/star/container/XNameAccess.hpp>
41*b1cdbd2cSJim Jagielski #include <com/sun/star/sdb/XDatabaseAccess.hpp>
42*b1cdbd2cSJim Jagielski #include <comphelper/processfactory.hxx>
43*b1cdbd2cSJim Jagielski #include <sfx2/viewfrm.hxx>
44*b1cdbd2cSJim Jagielski 
45*b1cdbd2cSJim Jagielski #ifndef _VIEW_HXX
46*b1cdbd2cSJim Jagielski #include <view.hxx>
47*b1cdbd2cSJim Jagielski #endif
48*b1cdbd2cSJim Jagielski #include <wrtsh.hxx>
49*b1cdbd2cSJim Jagielski #ifndef _DBMGR_HXX
50*b1cdbd2cSJim Jagielski #include <dbmgr.hxx>
51*b1cdbd2cSJim Jagielski #endif
52*b1cdbd2cSJim Jagielski #include <fldmgr.hxx>
53*b1cdbd2cSJim Jagielski #include <expfld.hxx>
54*b1cdbd2cSJim Jagielski #include <txtatr.hxx>
55*b1cdbd2cSJim Jagielski #include <ndtxt.hxx>
56*b1cdbd2cSJim Jagielski #include <fldbas.hxx>
57*b1cdbd2cSJim Jagielski #include <dbfld.hxx>
58*b1cdbd2cSJim Jagielski #include <changedb.hxx>
59*b1cdbd2cSJim Jagielski 
60*b1cdbd2cSJim Jagielski #ifndef _FLDUI_HRC
61*b1cdbd2cSJim Jagielski #include <fldui.hrc>
62*b1cdbd2cSJim Jagielski #endif
63*b1cdbd2cSJim Jagielski #ifndef _UTLUI_HRC
64*b1cdbd2cSJim Jagielski #include <utlui.hrc>
65*b1cdbd2cSJim Jagielski #endif
66*b1cdbd2cSJim Jagielski #ifndef _CHANGEDB_HRC
67*b1cdbd2cSJim Jagielski #include <changedb.hrc>
68*b1cdbd2cSJim Jagielski #endif
69*b1cdbd2cSJim Jagielski 
70*b1cdbd2cSJim Jagielski #include <unomid.h>
71*b1cdbd2cSJim Jagielski 
72*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::uno;
73*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::container;
74*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::lang;
75*b1cdbd2cSJim Jagielski 
76*b1cdbd2cSJim Jagielski 
77*b1cdbd2cSJim Jagielski /*--------------------------------------------------------------------
78*b1cdbd2cSJim Jagielski 	Beschreibung: Feldeinfuegen bearbeiten
79*b1cdbd2cSJim Jagielski  --------------------------------------------------------------------*/
80*b1cdbd2cSJim Jagielski 
81*b1cdbd2cSJim Jagielski 
SwChangeDBDlg(SwView & rVw)82*b1cdbd2cSJim Jagielski SwChangeDBDlg::SwChangeDBDlg(SwView& rVw) :
83*b1cdbd2cSJim Jagielski 	SvxStandardDialog(&rVw.GetViewFrame()->GetWindow(), SW_RES(DLG_CHANGE_DB)),
84*b1cdbd2cSJim Jagielski 
85*b1cdbd2cSJim Jagielski     aDBListFL   (this, SW_RES(FL_DBLIST     )),
86*b1cdbd2cSJim Jagielski 	aUsedDBFT	(this, SW_RES(FT_USEDDB  	)),
87*b1cdbd2cSJim Jagielski 	aAvailDBFT	(this, SW_RES(FT_AVAILDB 	)),
88*b1cdbd2cSJim Jagielski 	aUsedDBTLB	(this, SW_RES(TLB_USEDDB  	)),
89*b1cdbd2cSJim Jagielski     aAvailDBTLB (this, SW_RES(TLB_AVAILDB   ), 0),
90*b1cdbd2cSJim Jagielski     aAddDBPB    (this, SW_RES(PB_ADDDB)),
91*b1cdbd2cSJim Jagielski     aDescFT     (this, SW_RES(FT_DESC       )),
92*b1cdbd2cSJim Jagielski 	aDocDBTextFT(this, SW_RES(FT_DOCDBTEXT	)),
93*b1cdbd2cSJim Jagielski 	aDocDBNameFT(this, SW_RES(FT_DOCDBNAME	)),
94*b1cdbd2cSJim Jagielski 	aOKBT		(this, SW_RES(BT_OK      	)),
95*b1cdbd2cSJim Jagielski 	aCancelBT	(this, SW_RES(BT_CANCEL  	)),
96*b1cdbd2cSJim Jagielski 	aHelpBT		(this, SW_RES(BT_HELP    	)),
97*b1cdbd2cSJim Jagielski //	aChangeBT	(this, SW_RES(BT_CHANGEDB    )),
98*b1cdbd2cSJim Jagielski     aImageList      (SW_RES(ILIST_DB_DLG    )),
99*b1cdbd2cSJim Jagielski     aImageListHC    (SW_RES(ILIST_DB_DLG_HC )),
100*b1cdbd2cSJim Jagielski 
101*b1cdbd2cSJim Jagielski     pSh(rVw.GetWrtShellPtr()),
102*b1cdbd2cSJim Jagielski     pMgr( new SwFldMgr() )
103*b1cdbd2cSJim Jagielski {
104*b1cdbd2cSJim Jagielski     aAvailDBTLB.SetWrtShell(*pSh);
105*b1cdbd2cSJim Jagielski     FillDBPopup();
106*b1cdbd2cSJim Jagielski 
107*b1cdbd2cSJim Jagielski 	FreeResource();
108*b1cdbd2cSJim Jagielski 
109*b1cdbd2cSJim Jagielski 	ShowDBName(pSh->GetDBData());
110*b1cdbd2cSJim Jagielski 	aOKBT.SetClickHdl(LINK(this, SwChangeDBDlg, ButtonHdl));
111*b1cdbd2cSJim Jagielski     aAddDBPB.SetClickHdl(LINK(this, SwChangeDBDlg, AddDBHdl));
112*b1cdbd2cSJim Jagielski 
113*b1cdbd2cSJim Jagielski 	aUsedDBTLB.SetSelectionMode(MULTIPLE_SELECTION);
114*b1cdbd2cSJim Jagielski 	aUsedDBTLB.SetStyle(aUsedDBTLB.GetStyle()|WB_HASLINES|WB_CLIPCHILDREN|WB_SORT|WB_HASBUTTONS|WB_HASBUTTONSATROOT|WB_HSCROLL);
115*b1cdbd2cSJim Jagielski 	aUsedDBTLB.SetSpaceBetweenEntries(0);
116*b1cdbd2cSJim Jagielski 
117*b1cdbd2cSJim Jagielski     aUsedDBTLB.SetNodeBitmaps( aImageList.GetImage(IMG_COLLAPSE),
118*b1cdbd2cSJim Jagielski                     aImageList.GetImage(IMG_EXPAND  ), BMP_COLOR_NORMAL );
119*b1cdbd2cSJim Jagielski     aUsedDBTLB.SetNodeBitmaps( aImageListHC.GetImage(IMG_COLLAPSE),
120*b1cdbd2cSJim Jagielski                     aImageListHC.GetImage(IMG_EXPAND  ), BMP_COLOR_HIGHCONTRAST );
121*b1cdbd2cSJim Jagielski 
122*b1cdbd2cSJim Jagielski 	Link aLink = LINK(this, SwChangeDBDlg, TreeSelectHdl);
123*b1cdbd2cSJim Jagielski 
124*b1cdbd2cSJim Jagielski 	aUsedDBTLB.SetSelectHdl(aLink);
125*b1cdbd2cSJim Jagielski 	aUsedDBTLB.SetDeselectHdl(aLink);
126*b1cdbd2cSJim Jagielski 	aAvailDBTLB.SetSelectHdl(aLink);
127*b1cdbd2cSJim Jagielski 	aAvailDBTLB.SetDeselectHdl(aLink);
128*b1cdbd2cSJim Jagielski 	TreeSelectHdl();
129*b1cdbd2cSJim Jagielski }
130*b1cdbd2cSJim Jagielski 
131*b1cdbd2cSJim Jagielski /*--------------------------------------------------------------------
132*b1cdbd2cSJim Jagielski 	Beschreibung: Datenbank-Listboxen initialisieren
133*b1cdbd2cSJim Jagielski  --------------------------------------------------------------------*/
134*b1cdbd2cSJim Jagielski 
135*b1cdbd2cSJim Jagielski 
FillDBPopup()136*b1cdbd2cSJim Jagielski void SwChangeDBDlg::FillDBPopup()
137*b1cdbd2cSJim Jagielski {
138*b1cdbd2cSJim Jagielski 	Reference<XNameAccess> xDBContext;
139*b1cdbd2cSJim Jagielski 	Reference< XMultiServiceFactory > xMgr( ::comphelper::getProcessServiceFactory() );
140*b1cdbd2cSJim Jagielski 	if( xMgr.is() )
141*b1cdbd2cSJim Jagielski 	{
142*b1cdbd2cSJim Jagielski 		Reference<XInterface> xInstance = xMgr->createInstance( C2U( "com.sun.star.sdb.DatabaseContext" ));
143*b1cdbd2cSJim Jagielski 		xDBContext = Reference<XNameAccess>(xInstance, UNO_QUERY) ;
144*b1cdbd2cSJim Jagielski 	}
145*b1cdbd2cSJim Jagielski 	DBG_ASSERT(xDBContext.is(), "com.sun.star.sdb.DataBaseContext: service not available");
146*b1cdbd2cSJim Jagielski 
147*b1cdbd2cSJim Jagielski 	const SwDBData& rDBData = pSh->GetDBData();
148*b1cdbd2cSJim Jagielski 	String sDBName(rDBData.sDataSource);
149*b1cdbd2cSJim Jagielski 	String sTableName(rDBData.sCommand);
150*b1cdbd2cSJim Jagielski 	aAvailDBTLB.Select(sDBName, sTableName, aEmptyStr);
151*b1cdbd2cSJim Jagielski 
152*b1cdbd2cSJim Jagielski 	SvStringsDtor aAllDBNames(5, 5);
153*b1cdbd2cSJim Jagielski 
154*b1cdbd2cSJim Jagielski     Sequence< ::rtl::OUString > aDBNames = xDBContext->getElementNames();
155*b1cdbd2cSJim Jagielski     const ::rtl::OUString* pDBNames = aDBNames.getConstArray();
156*b1cdbd2cSJim Jagielski     sal_Int32 nDBCount = aDBNames.getLength();
157*b1cdbd2cSJim Jagielski     for(sal_Int32 i = 0; i < nDBCount; i++)
158*b1cdbd2cSJim Jagielski 	{
159*b1cdbd2cSJim Jagielski         aAllDBNames.Insert(new String(pDBNames[i]), aAllDBNames.Count());
160*b1cdbd2cSJim Jagielski 	}
161*b1cdbd2cSJim Jagielski 
162*b1cdbd2cSJim Jagielski 	SvStringsDtor aDBNameList(5, 1);
163*b1cdbd2cSJim Jagielski 	pSh->GetAllUsedDB( aDBNameList, &aAllDBNames );
164*b1cdbd2cSJim Jagielski 
165*b1cdbd2cSJim Jagielski 	sal_uInt16 nCount = aDBNameList.Count();
166*b1cdbd2cSJim Jagielski 	aUsedDBTLB.Clear();
167*b1cdbd2cSJim Jagielski 	SvLBoxEntry *pFirst = 0;
168*b1cdbd2cSJim Jagielski 	SvLBoxEntry *pLast = 0;
169*b1cdbd2cSJim Jagielski 
170*b1cdbd2cSJim Jagielski     for (sal_uInt16 k = 0; k < nCount; k++)
171*b1cdbd2cSJim Jagielski 	{
172*b1cdbd2cSJim Jagielski         sDBName = *aDBNameList.GetObject(k);
173*b1cdbd2cSJim Jagielski 		sDBName = sDBName.GetToken(0);
174*b1cdbd2cSJim Jagielski 		pLast = Insert(sDBName);
175*b1cdbd2cSJim Jagielski 		if (!pFirst)
176*b1cdbd2cSJim Jagielski 			pFirst = pLast;
177*b1cdbd2cSJim Jagielski 	}
178*b1cdbd2cSJim Jagielski 
179*b1cdbd2cSJim Jagielski 	if (pFirst)
180*b1cdbd2cSJim Jagielski 	{
181*b1cdbd2cSJim Jagielski 		aUsedDBTLB.MakeVisible(pFirst);
182*b1cdbd2cSJim Jagielski 		aUsedDBTLB.Select(pFirst);
183*b1cdbd2cSJim Jagielski 	}
184*b1cdbd2cSJim Jagielski 
185*b1cdbd2cSJim Jagielski }
186*b1cdbd2cSJim Jagielski 
187*b1cdbd2cSJim Jagielski /*--------------------------------------------------------------------
188*b1cdbd2cSJim Jagielski 	Beschreibung:
189*b1cdbd2cSJim Jagielski  --------------------------------------------------------------------*/
190*b1cdbd2cSJim Jagielski 
191*b1cdbd2cSJim Jagielski 
Insert(const String & rDBName)192*b1cdbd2cSJim Jagielski SvLBoxEntry* SwChangeDBDlg::Insert(const String& rDBName)
193*b1cdbd2cSJim Jagielski {
194*b1cdbd2cSJim Jagielski 	String sDBName(rDBName.GetToken(0, DB_DELIM));
195*b1cdbd2cSJim Jagielski 	String sTableName(rDBName.GetToken(1, DB_DELIM));
196*b1cdbd2cSJim Jagielski 	int nCommandType = rDBName.GetToken(2, DB_DELIM).ToInt32();
197*b1cdbd2cSJim Jagielski 	SvLBoxEntry* pParent;
198*b1cdbd2cSJim Jagielski 	SvLBoxEntry* pChild;
199*b1cdbd2cSJim Jagielski 
200*b1cdbd2cSJim Jagielski 	sal_uInt16 nParent = 0;
201*b1cdbd2cSJim Jagielski 	sal_uInt16 nChild = 0;
202*b1cdbd2cSJim Jagielski 
203*b1cdbd2cSJim Jagielski     Image aTableImg = aImageList.GetImage(IMG_DBTABLE);
204*b1cdbd2cSJim Jagielski     Image aDBImg = aImageList.GetImage(IMG_DB);
205*b1cdbd2cSJim Jagielski     Image aQueryImg = aImageList.GetImage(IMG_DBQUERY);
206*b1cdbd2cSJim Jagielski     Image aHCTableImg = aImageListHC.GetImage(IMG_DBTABLE);
207*b1cdbd2cSJim Jagielski     Image aHCDBImg = aImageListHC.GetImage(IMG_DB);
208*b1cdbd2cSJim Jagielski     Image aHCQueryImg = aImageListHC.GetImage(IMG_DBQUERY);
209*b1cdbd2cSJim Jagielski     Image& rToInsert = nCommandType ? aQueryImg : aTableImg;
210*b1cdbd2cSJim Jagielski     Image& rHCToInsert = nCommandType ? aHCQueryImg : aHCTableImg;
211*b1cdbd2cSJim Jagielski     while ((pParent = aUsedDBTLB.GetEntry(nParent++)) != NULL)
212*b1cdbd2cSJim Jagielski 	{
213*b1cdbd2cSJim Jagielski 		if (sDBName == aUsedDBTLB.GetEntryText(pParent))
214*b1cdbd2cSJim Jagielski 		{
215*b1cdbd2cSJim Jagielski 			while ((pChild = aUsedDBTLB.GetEntry(pParent, nChild++)) != NULL)
216*b1cdbd2cSJim Jagielski 			{
217*b1cdbd2cSJim Jagielski 				if (sTableName == aUsedDBTLB.GetEntryText(pChild))
218*b1cdbd2cSJim Jagielski 					return pChild;
219*b1cdbd2cSJim Jagielski 			}
220*b1cdbd2cSJim Jagielski             SvLBoxEntry* pRet = aUsedDBTLB.InsertEntry(sTableName, rToInsert, rToInsert, pParent);
221*b1cdbd2cSJim Jagielski             aUsedDBTLB.SetExpandedEntryBmp(pRet, rHCToInsert, BMP_COLOR_HIGHCONTRAST);
222*b1cdbd2cSJim Jagielski             aUsedDBTLB.SetCollapsedEntryBmp(pRet, rHCToInsert, BMP_COLOR_HIGHCONTRAST);
223*b1cdbd2cSJim Jagielski             pRet->SetUserData((void*)nCommandType);
224*b1cdbd2cSJim Jagielski 			return pRet;
225*b1cdbd2cSJim Jagielski 		}
226*b1cdbd2cSJim Jagielski 	}
227*b1cdbd2cSJim Jagielski     pParent = aUsedDBTLB.InsertEntry(sDBName, aDBImg, aDBImg);
228*b1cdbd2cSJim Jagielski     aUsedDBTLB.SetExpandedEntryBmp(pParent, aHCDBImg, BMP_COLOR_HIGHCONTRAST);
229*b1cdbd2cSJim Jagielski     aUsedDBTLB.SetCollapsedEntryBmp(pParent, aHCDBImg, BMP_COLOR_HIGHCONTRAST);
230*b1cdbd2cSJim Jagielski 
231*b1cdbd2cSJim Jagielski     SvLBoxEntry* pRet = aUsedDBTLB.InsertEntry(sTableName, rToInsert, rToInsert, pParent);
232*b1cdbd2cSJim Jagielski     aUsedDBTLB.SetExpandedEntryBmp(pRet, rHCToInsert, BMP_COLOR_HIGHCONTRAST);
233*b1cdbd2cSJim Jagielski     aUsedDBTLB.SetCollapsedEntryBmp(pRet, rHCToInsert, BMP_COLOR_HIGHCONTRAST);
234*b1cdbd2cSJim Jagielski     pRet->SetUserData((void*)nCommandType);
235*b1cdbd2cSJim Jagielski 	return pRet;
236*b1cdbd2cSJim Jagielski }
237*b1cdbd2cSJim Jagielski 
238*b1cdbd2cSJim Jagielski /*--------------------------------------------------------------------
239*b1cdbd2cSJim Jagielski 	Beschreibung: Dialog zerstoeren
240*b1cdbd2cSJim Jagielski  --------------------------------------------------------------------*/
~SwChangeDBDlg()241*b1cdbd2cSJim Jagielski __EXPORT SwChangeDBDlg::~SwChangeDBDlg()
242*b1cdbd2cSJim Jagielski {
243*b1cdbd2cSJim Jagielski 	delete pMgr;
244*b1cdbd2cSJim Jagielski }
245*b1cdbd2cSJim Jagielski 
246*b1cdbd2cSJim Jagielski /*--------------------------------------------------------------------
247*b1cdbd2cSJim Jagielski 	 Beschreibung:	Schliessen
248*b1cdbd2cSJim Jagielski  --------------------------------------------------------------------*/
Apply()249*b1cdbd2cSJim Jagielski void __EXPORT SwChangeDBDlg::Apply()
250*b1cdbd2cSJim Jagielski {
251*b1cdbd2cSJim Jagielski 	UpdateFlds();
252*b1cdbd2cSJim Jagielski }
253*b1cdbd2cSJim Jagielski /*--------------------------------------------------------------------
254*b1cdbd2cSJim Jagielski 	 Beschreibung:
255*b1cdbd2cSJim Jagielski  --------------------------------------------------------------------*/
UpdateFlds()256*b1cdbd2cSJim Jagielski void SwChangeDBDlg::UpdateFlds()
257*b1cdbd2cSJim Jagielski {
258*b1cdbd2cSJim Jagielski 	SvStringsDtor aDBNames( (sal_uInt8)aUsedDBTLB.GetSelectionCount(), 1 );
259*b1cdbd2cSJim Jagielski 	SvLBoxEntry* pEntry = aUsedDBTLB.FirstSelected();
260*b1cdbd2cSJim Jagielski 
261*b1cdbd2cSJim Jagielski 	while( pEntry )
262*b1cdbd2cSJim Jagielski 	{
263*b1cdbd2cSJim Jagielski 		if( aUsedDBTLB.GetParent( pEntry ))
264*b1cdbd2cSJim Jagielski 		{
265*b1cdbd2cSJim Jagielski 			String* pTmp = new String( aUsedDBTLB.GetEntryText(
266*b1cdbd2cSJim Jagielski 											aUsedDBTLB.GetParent( pEntry )));
267*b1cdbd2cSJim Jagielski 			*pTmp += DB_DELIM;
268*b1cdbd2cSJim Jagielski 			*pTmp += aUsedDBTLB.GetEntryText( pEntry );
269*b1cdbd2cSJim Jagielski 			*pTmp += DB_DELIM;
270*b1cdbd2cSJim Jagielski 			int nCommandType = (int)(sal_uLong)pEntry->GetUserData();
271*b1cdbd2cSJim Jagielski             *pTmp += String::CreateFromInt32(nCommandType);
272*b1cdbd2cSJim Jagielski 			aDBNames.Insert(pTmp, aDBNames.Count() );
273*b1cdbd2cSJim Jagielski 		}
274*b1cdbd2cSJim Jagielski 		pEntry = aUsedDBTLB.NextSelected(pEntry);
275*b1cdbd2cSJim Jagielski 	}
276*b1cdbd2cSJim Jagielski 
277*b1cdbd2cSJim Jagielski 	pSh->StartAllAction();
278*b1cdbd2cSJim Jagielski 	String sTableName, sColumnName;
279*b1cdbd2cSJim Jagielski     sal_Bool bIsTable = sal_False;
280*b1cdbd2cSJim Jagielski     String sTemp(aAvailDBTLB.GetDBName(sTableName, sColumnName, &bIsTable));
281*b1cdbd2cSJim Jagielski 	sTemp += DB_DELIM;
282*b1cdbd2cSJim Jagielski 	sTemp += sTableName;
283*b1cdbd2cSJim Jagielski     sTemp += DB_DELIM;
284*b1cdbd2cSJim Jagielski     sTemp += bIsTable ? '0' : '1';
285*b1cdbd2cSJim Jagielski 	pSh->ChangeDBFields( aDBNames, sTemp);
286*b1cdbd2cSJim Jagielski 	pSh->EndAllAction();
287*b1cdbd2cSJim Jagielski }
288*b1cdbd2cSJim Jagielski 
289*b1cdbd2cSJim Jagielski /*------------------------------------------------------------------------
290*b1cdbd2cSJim Jagielski  Beschreibung:
291*b1cdbd2cSJim Jagielski ------------------------------------------------------------------------*/
292*b1cdbd2cSJim Jagielski 
293*b1cdbd2cSJim Jagielski 
IMPL_LINK(SwChangeDBDlg,ButtonHdl,Button *,EMPTYARG)294*b1cdbd2cSJim Jagielski IMPL_LINK( SwChangeDBDlg, ButtonHdl, Button *, EMPTYARG )
295*b1cdbd2cSJim Jagielski {
296*b1cdbd2cSJim Jagielski 	String sTableName, sColumnName;
297*b1cdbd2cSJim Jagielski 	SwDBData aData;
298*b1cdbd2cSJim Jagielski     sal_Bool bIsTable = sal_False;
299*b1cdbd2cSJim Jagielski     aData.sDataSource = aAvailDBTLB.GetDBName(sTableName, sColumnName, &bIsTable);
300*b1cdbd2cSJim Jagielski 	aData.sCommand = sTableName;
301*b1cdbd2cSJim Jagielski     aData.nCommandType = bIsTable ? 0 : 1;;
302*b1cdbd2cSJim Jagielski     pSh->ChgDBData(aData);
303*b1cdbd2cSJim Jagielski 	ShowDBName(pSh->GetDBData());
304*b1cdbd2cSJim Jagielski 	EndDialog(RET_OK);
305*b1cdbd2cSJim Jagielski 
306*b1cdbd2cSJim Jagielski 	return 0;
307*b1cdbd2cSJim Jagielski }
308*b1cdbd2cSJim Jagielski 
309*b1cdbd2cSJim Jagielski /*------------------------------------------------------------------------
310*b1cdbd2cSJim Jagielski  Beschreibung:
311*b1cdbd2cSJim Jagielski ------------------------------------------------------------------------*/
312*b1cdbd2cSJim Jagielski 
313*b1cdbd2cSJim Jagielski 
IMPL_LINK(SwChangeDBDlg,TreeSelectHdl,SvTreeListBox *,EMPTYARG)314*b1cdbd2cSJim Jagielski IMPL_LINK( SwChangeDBDlg, TreeSelectHdl, SvTreeListBox *, EMPTYARG )
315*b1cdbd2cSJim Jagielski {
316*b1cdbd2cSJim Jagielski 	sal_Bool bEnable = sal_False;
317*b1cdbd2cSJim Jagielski 
318*b1cdbd2cSJim Jagielski 	SvLBoxEntry* pEntry = aAvailDBTLB.GetCurEntry();
319*b1cdbd2cSJim Jagielski 
320*b1cdbd2cSJim Jagielski 	if (pEntry)
321*b1cdbd2cSJim Jagielski 	{
322*b1cdbd2cSJim Jagielski 		if (aAvailDBTLB.GetParent(pEntry))
323*b1cdbd2cSJim Jagielski 			bEnable = sal_True;
324*b1cdbd2cSJim Jagielski 		aOKBT.Enable( bEnable );
325*b1cdbd2cSJim Jagielski 	}
326*b1cdbd2cSJim Jagielski 	return 0;
327*b1cdbd2cSJim Jagielski }
328*b1cdbd2cSJim Jagielski 
329*b1cdbd2cSJim Jagielski /*--------------------------------------------------------------------
330*b1cdbd2cSJim Jagielski 	Beschreibung: Datenbankname fuer Anzeige wandeln
331*b1cdbd2cSJim Jagielski  --------------------------------------------------------------------*/
332*b1cdbd2cSJim Jagielski 
ShowDBName(const SwDBData & rDBData)333*b1cdbd2cSJim Jagielski void SwChangeDBDlg::ShowDBName(const SwDBData& rDBData)
334*b1cdbd2cSJim Jagielski {
335*b1cdbd2cSJim Jagielski 	String sTmp(rDBData.sDataSource);
336*b1cdbd2cSJim Jagielski 	String sName;
337*b1cdbd2cSJim Jagielski 	sTmp += '.';
338*b1cdbd2cSJim Jagielski 	sTmp += (String)rDBData.sCommand;
339*b1cdbd2cSJim Jagielski 
340*b1cdbd2cSJim Jagielski 	for (sal_uInt16 i = 0; i < sTmp.Len(); i++)
341*b1cdbd2cSJim Jagielski 	{
342*b1cdbd2cSJim Jagielski 		sName += sTmp.GetChar(i);
343*b1cdbd2cSJim Jagielski 		if (sTmp.GetChar(i) == '~')
344*b1cdbd2cSJim Jagielski 			sName += '~';
345*b1cdbd2cSJim Jagielski 	}
346*b1cdbd2cSJim Jagielski 
347*b1cdbd2cSJim Jagielski 	aDocDBNameFT.SetText(sName);
348*b1cdbd2cSJim Jagielski }
349*b1cdbd2cSJim Jagielski /*-- 27.05.2004 09:14:01---------------------------------------------------
350*b1cdbd2cSJim Jagielski 
351*b1cdbd2cSJim Jagielski   -----------------------------------------------------------------------*/
IMPL_LINK(SwChangeDBDlg,AddDBHdl,PushButton *,EMPTYARG)352*b1cdbd2cSJim Jagielski IMPL_LINK( SwChangeDBDlg, AddDBHdl, PushButton *, EMPTYARG )
353*b1cdbd2cSJim Jagielski {
354*b1cdbd2cSJim Jagielski     String sNewDB = SwNewDBMgr::LoadAndRegisterDataSource();
355*b1cdbd2cSJim Jagielski     if(sNewDB.Len())
356*b1cdbd2cSJim Jagielski         aAvailDBTLB.AddDataSource(sNewDB);
357*b1cdbd2cSJim Jagielski     return 0;
358*b1cdbd2cSJim Jagielski }
359*b1cdbd2cSJim Jagielski 
360