xref: /AOO41X/main/dbaccess/source/ui/misc/WNameMatch.cxx (revision cdf0e10c4e3984b49a9502b011690b615761d4a3)
1*cdf0e10cSrcweir /*************************************************************************
2*cdf0e10cSrcweir  *
3*cdf0e10cSrcweir  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4*cdf0e10cSrcweir  *
5*cdf0e10cSrcweir  * Copyright 2000, 2010 Oracle and/or its affiliates.
6*cdf0e10cSrcweir  *
7*cdf0e10cSrcweir  * OpenOffice.org - a multi-platform office productivity suite
8*cdf0e10cSrcweir  *
9*cdf0e10cSrcweir  * This file is part of OpenOffice.org.
10*cdf0e10cSrcweir  *
11*cdf0e10cSrcweir  * OpenOffice.org is free software: you can redistribute it and/or modify
12*cdf0e10cSrcweir  * it under the terms of the GNU Lesser General Public License version 3
13*cdf0e10cSrcweir  * only, as published by the Free Software Foundation.
14*cdf0e10cSrcweir  *
15*cdf0e10cSrcweir  * OpenOffice.org is distributed in the hope that it will be useful,
16*cdf0e10cSrcweir  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17*cdf0e10cSrcweir  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18*cdf0e10cSrcweir  * GNU Lesser General Public License version 3 for more details
19*cdf0e10cSrcweir  * (a copy is included in the LICENSE file that accompanied this code).
20*cdf0e10cSrcweir  *
21*cdf0e10cSrcweir  * You should have received a copy of the GNU Lesser General Public License
22*cdf0e10cSrcweir  * version 3 along with OpenOffice.org.  If not, see
23*cdf0e10cSrcweir  * <http://www.openoffice.org/license.html>
24*cdf0e10cSrcweir  * for a copy of the LGPLv3 License.
25*cdf0e10cSrcweir  *
26*cdf0e10cSrcweir  ************************************************************************/
27*cdf0e10cSrcweir 
28*cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
29*cdf0e10cSrcweir #include "precompiled_dbaccess.hxx"
30*cdf0e10cSrcweir #ifndef DBAUI_WIZ_NAMEMATCHING_HXX
31*cdf0e10cSrcweir #include "WNameMatch.hxx"
32*cdf0e10cSrcweir #endif
33*cdf0e10cSrcweir #ifndef _TOOLS_DEBUG_HXX
34*cdf0e10cSrcweir #include <tools/debug.hxx>
35*cdf0e10cSrcweir #endif
36*cdf0e10cSrcweir #ifndef DBAUI_FIELDDESCRIPTIONS_HXX
37*cdf0e10cSrcweir #include "FieldDescriptions.hxx"
38*cdf0e10cSrcweir #endif
39*cdf0e10cSrcweir #ifndef DBAUI_WIZ_COPYTABLEDIALOG_HXX
40*cdf0e10cSrcweir #include "WCopyTable.hxx"
41*cdf0e10cSrcweir #endif
42*cdf0e10cSrcweir #ifndef _DBA_DBACCESS_HELPID_HRC_
43*cdf0e10cSrcweir #include "dbaccess_helpid.hrc"
44*cdf0e10cSrcweir #endif
45*cdf0e10cSrcweir #ifndef _DBU_MISC_HRC_
46*cdf0e10cSrcweir #include "dbu_misc.hrc"
47*cdf0e10cSrcweir #endif
48*cdf0e10cSrcweir #ifndef DBAUI_WIZARD_PAGES_HRC
49*cdf0e10cSrcweir #include "WizardPages.hrc"
50*cdf0e10cSrcweir #endif
51*cdf0e10cSrcweir #ifndef _SV_SCRBAR_HXX
52*cdf0e10cSrcweir #include <vcl/scrbar.hxx>
53*cdf0e10cSrcweir #endif
54*cdf0e10cSrcweir #ifndef DBAUI_WIZ_COPYTABLEDIALOG_HXX
55*cdf0e10cSrcweir #include "WCopyTable.hxx"
56*cdf0e10cSrcweir #endif
57*cdf0e10cSrcweir #ifndef _COM_SUN_STAR_SDBC_DATATYPE_HPP_
58*cdf0e10cSrcweir #include <com/sun/star/sdbc/DataType.hpp>
59*cdf0e10cSrcweir #endif
60*cdf0e10cSrcweir 
61*cdf0e10cSrcweir using namespace ::dbaui;
62*cdf0e10cSrcweir //========================================================================
63*cdf0e10cSrcweir // OWizColumnSelect
64*cdf0e10cSrcweir DBG_NAME(OWizNameMatching)
65*cdf0e10cSrcweir //========================================================================
66*cdf0e10cSrcweir OWizNameMatching::OWizNameMatching( Window* pParent)
67*cdf0e10cSrcweir 		:OWizardPage( pParent, ModuleRes( TAB_WIZ_NAME_MATCHING		) )
68*cdf0e10cSrcweir 		,m_FT_TABLE_LEFT(		this, ModuleRes( FT_TABLE_LEFT			) )
69*cdf0e10cSrcweir 		,m_FT_TABLE_RIGHT(		this, ModuleRes( FT_TABLE_RIGHT			) )
70*cdf0e10cSrcweir 		,m_CTRL_LEFT(			this, ModuleRes( CTRL_LEFT				) )
71*cdf0e10cSrcweir 		,m_CTRL_RIGHT(			this, ModuleRes( CTRL_RIGHT				) )
72*cdf0e10cSrcweir         ,m_ibColumn_up(         this, ModuleRes( IB_COLUMN_UP           ) )
73*cdf0e10cSrcweir         ,m_ibColumn_down(       this, ModuleRes( IB_COLUMN_DOWN         ) )
74*cdf0e10cSrcweir         ,m_ibColumn_up_right(   this, ModuleRes( IB_COLUMN_UP_RIGHT     ) )
75*cdf0e10cSrcweir         ,m_ibColumn_down_right( this, ModuleRes( IB_COLUMN_DOWN_RIGHT   ) )
76*cdf0e10cSrcweir 		,m_pbAll(				this, ModuleRes( PB_ALL					) )
77*cdf0e10cSrcweir 		,m_pbNone(				this, ModuleRes( PB_NONE					) )
78*cdf0e10cSrcweir 
79*cdf0e10cSrcweir {
80*cdf0e10cSrcweir 	DBG_CTOR(OWizNameMatching,NULL);
81*cdf0e10cSrcweir 
82*cdf0e10cSrcweir     m_ibColumn_up.SetClickHdl(LINK(this,OWizNameMatching,ButtonClickHdl));
83*cdf0e10cSrcweir     m_ibColumn_down.SetClickHdl(LINK(this,OWizNameMatching,ButtonClickHdl));
84*cdf0e10cSrcweir 
85*cdf0e10cSrcweir     m_ibColumn_up_right.SetClickHdl(LINK(this,OWizNameMatching,RightButtonClickHdl));
86*cdf0e10cSrcweir     m_ibColumn_down_right.SetClickHdl(LINK(this,OWizNameMatching,RightButtonClickHdl));
87*cdf0e10cSrcweir 
88*cdf0e10cSrcweir 	m_pbAll.SetClickHdl(LINK(this,OWizNameMatching,AllNoneClickHdl));
89*cdf0e10cSrcweir 	m_pbNone.SetClickHdl(LINK(this,OWizNameMatching,AllNoneClickHdl));
90*cdf0e10cSrcweir 
91*cdf0e10cSrcweir 	m_CTRL_LEFT.SetSelectHdl(LINK(this,OWizNameMatching,TableListClickHdl));
92*cdf0e10cSrcweir 	m_CTRL_RIGHT.SetSelectHdl(LINK(this,OWizNameMatching,TableListRightSelectHdl));
93*cdf0e10cSrcweir 	m_CTRL_RIGHT.EnableCheckButton( NULL );
94*cdf0e10cSrcweir 
95*cdf0e10cSrcweir 	m_CTRL_LEFT.SetStyle( m_CTRL_LEFT.GetStyle() | WB_FORCE_MAKEVISIBLE );
96*cdf0e10cSrcweir 	m_CTRL_RIGHT.SetStyle( m_CTRL_RIGHT.GetStyle() | WB_FORCE_MAKEVISIBLE );
97*cdf0e10cSrcweir 
98*cdf0e10cSrcweir 	m_sSourceText	= m_FT_TABLE_LEFT.GetText();
99*cdf0e10cSrcweir 	m_sSourceText.AppendAscii("\n");
100*cdf0e10cSrcweir 	m_sDestText		= m_FT_TABLE_RIGHT.GetText();
101*cdf0e10cSrcweir 	m_sDestText.AppendAscii("\n");
102*cdf0e10cSrcweir 
103*cdf0e10cSrcweir 	// set hiContrast
104*cdf0e10cSrcweir 	m_ibColumn_up.SetModeImage(ModuleRes(IMG_SORTUP_H),BMP_COLOR_HIGHCONTRAST);
105*cdf0e10cSrcweir 	m_ibColumn_down.SetModeImage(ModuleRes(IMG_SORTDOWN_H),BMP_COLOR_HIGHCONTRAST);
106*cdf0e10cSrcweir 	m_ibColumn_up_right.SetModeImage(ModuleRes(IMG_SORTUP_H),BMP_COLOR_HIGHCONTRAST);
107*cdf0e10cSrcweir 	m_ibColumn_down_right.SetModeImage(ModuleRes(IMG_SORTDOWN_H),BMP_COLOR_HIGHCONTRAST);
108*cdf0e10cSrcweir 
109*cdf0e10cSrcweir 	FreeResource();
110*cdf0e10cSrcweir }
111*cdf0e10cSrcweir // -----------------------------------------------------------------------
112*cdf0e10cSrcweir OWizNameMatching::~OWizNameMatching()
113*cdf0e10cSrcweir {
114*cdf0e10cSrcweir 	DBG_DTOR(OWizNameMatching,NULL);
115*cdf0e10cSrcweir }
116*cdf0e10cSrcweir 
117*cdf0e10cSrcweir // -----------------------------------------------------------------------
118*cdf0e10cSrcweir void OWizNameMatching::Reset()
119*cdf0e10cSrcweir {
120*cdf0e10cSrcweir 	// urspr"unglichen zustand wiederherstellen
121*cdf0e10cSrcweir 	DBG_CHKTHIS(OWizNameMatching,NULL);
122*cdf0e10cSrcweir 	// the left tree contains bitmaps so i need to resize the right one
123*cdf0e10cSrcweir 	if(m_bFirstTime)
124*cdf0e10cSrcweir 	{
125*cdf0e10cSrcweir 		m_CTRL_RIGHT.SetReadOnly(); // sets autoinc to readonly
126*cdf0e10cSrcweir 		m_CTRL_RIGHT.SetEntryHeight(m_CTRL_LEFT.GetEntryHeight());
127*cdf0e10cSrcweir 		m_CTRL_RIGHT.SetIndent(m_CTRL_LEFT.GetIndent());
128*cdf0e10cSrcweir 		m_CTRL_RIGHT.SetSpaceBetweenEntries(m_CTRL_LEFT.GetSpaceBetweenEntries());
129*cdf0e10cSrcweir 
130*cdf0e10cSrcweir 		m_bFirstTime = sal_False;
131*cdf0e10cSrcweir 	}
132*cdf0e10cSrcweir 
133*cdf0e10cSrcweir 	//	m_CTRL_LEFT.Clear();
134*cdf0e10cSrcweir }
135*cdf0e10cSrcweir // -----------------------------------------------------------------------
136*cdf0e10cSrcweir void OWizNameMatching::ActivatePage( )
137*cdf0e10cSrcweir {
138*cdf0e10cSrcweir 	DBG_CHKTHIS(OWizNameMatching,NULL);
139*cdf0e10cSrcweir 
140*cdf0e10cSrcweir 	// set source table name
141*cdf0e10cSrcweir     String aName = m_sSourceText;
142*cdf0e10cSrcweir 	aName += String(m_pParent->m_sSourceName);
143*cdf0e10cSrcweir 
144*cdf0e10cSrcweir 	m_FT_TABLE_LEFT.SetText(aName);
145*cdf0e10cSrcweir 
146*cdf0e10cSrcweir 	// set dest table name
147*cdf0e10cSrcweir     aName = m_sDestText;
148*cdf0e10cSrcweir 	aName += String(m_pParent->m_sName);
149*cdf0e10cSrcweir 	m_FT_TABLE_RIGHT.SetText(aName);
150*cdf0e10cSrcweir 
151*cdf0e10cSrcweir 
152*cdf0e10cSrcweir 	m_CTRL_LEFT.FillListBox(*m_pParent->getSrcVector());
153*cdf0e10cSrcweir 	m_CTRL_RIGHT.FillListBox(*m_pParent->getDestVector());
154*cdf0e10cSrcweir 
155*cdf0e10cSrcweir 	m_ibColumn_up.Enable( m_CTRL_LEFT.GetEntryCount() > 1 );
156*cdf0e10cSrcweir 	m_ibColumn_down.Enable( m_CTRL_LEFT.GetEntryCount() > 1 );
157*cdf0e10cSrcweir 
158*cdf0e10cSrcweir 	m_ibColumn_up_right.Enable( m_CTRL_RIGHT.GetEntryCount() > 1 );
159*cdf0e10cSrcweir 	m_ibColumn_down_right.Enable( m_CTRL_RIGHT.GetEntryCount() > 1 );
160*cdf0e10cSrcweir 
161*cdf0e10cSrcweir 
162*cdf0e10cSrcweir 	m_pParent->EnableButton(OCopyTableWizard::WIZARD_NEXT,sal_False);
163*cdf0e10cSrcweir 	m_CTRL_LEFT.GrabFocus();
164*cdf0e10cSrcweir }
165*cdf0e10cSrcweir // -----------------------------------------------------------------------
166*cdf0e10cSrcweir sal_Bool OWizNameMatching::LeavePage()
167*cdf0e10cSrcweir {
168*cdf0e10cSrcweir 	DBG_CHKTHIS(OWizNameMatching,NULL);
169*cdf0e10cSrcweir 
170*cdf0e10cSrcweir 	const ODatabaseExport::TColumnVector* pSrcColumns = m_pParent->getSrcVector();
171*cdf0e10cSrcweir 
172*cdf0e10cSrcweir 	m_pParent->m_vColumnPos.clear();
173*cdf0e10cSrcweir 	m_pParent->m_vColumnTypes.clear();
174*cdf0e10cSrcweir 	m_pParent->m_vColumnPos.resize( pSrcColumns->size(), ODatabaseExport::TPositions::value_type( COLUMN_POSITION_NOT_FOUND, COLUMN_POSITION_NOT_FOUND ) );
175*cdf0e10cSrcweir 	m_pParent->m_vColumnTypes.resize( pSrcColumns->size(), COLUMN_POSITION_NOT_FOUND );
176*cdf0e10cSrcweir 
177*cdf0e10cSrcweir 
178*cdf0e10cSrcweir 	sal_Int32 nParamPos = 0;
179*cdf0e10cSrcweir 	SvLBoxEntry* pLeftEntry = m_CTRL_LEFT.GetModel()->First();
180*cdf0e10cSrcweir 	SvLBoxEntry* pRightEntry = m_CTRL_RIGHT.GetModel()->First();
181*cdf0e10cSrcweir 	while(pLeftEntry && pRightEntry)
182*cdf0e10cSrcweir 	{
183*cdf0e10cSrcweir 		OFieldDescription* pSrcField = static_cast<OFieldDescription*>(pLeftEntry->GetUserData());
184*cdf0e10cSrcweir 		DBG_ASSERT(pSrcField,"OWizNameMatching: OColumn can not be null!");
185*cdf0e10cSrcweir 
186*cdf0e10cSrcweir 		ODatabaseExport::TColumnVector::const_iterator aSrcIter	= pSrcColumns->begin();
187*cdf0e10cSrcweir         ODatabaseExport::TColumnVector::const_iterator aSrcEnd	= pSrcColumns->end();
188*cdf0e10cSrcweir 		for(;aSrcIter != aSrcEnd && (*aSrcIter)->second != pSrcField;++aSrcIter)
189*cdf0e10cSrcweir 			;
190*cdf0e10cSrcweir 		const sal_Int32 nPos = ::std::distance(pSrcColumns->begin(),aSrcIter);
191*cdf0e10cSrcweir 
192*cdf0e10cSrcweir 		//	sal_Int32 nPos = m_CTRL_LEFT.GetModel()->GetAbsPos(pLeftEntry);
193*cdf0e10cSrcweir 		if(m_CTRL_LEFT.GetCheckButtonState(pLeftEntry) == SV_BUTTON_CHECKED)
194*cdf0e10cSrcweir 		{
195*cdf0e10cSrcweir 			OFieldDescription* pDestField = static_cast<OFieldDescription*>(pRightEntry->GetUserData());
196*cdf0e10cSrcweir 			DBG_ASSERT(pDestField,"OWizNameMatching: OColumn can not be null!");
197*cdf0e10cSrcweir 			const ODatabaseExport::TColumnVector* pDestColumns			= m_pParent->getDestVector();
198*cdf0e10cSrcweir 			ODatabaseExport::TColumnVector::const_iterator aDestIter	= pDestColumns->begin();
199*cdf0e10cSrcweir             ODatabaseExport::TColumnVector::const_iterator aDestEnd	= pDestColumns->end();
200*cdf0e10cSrcweir 
201*cdf0e10cSrcweir 			for(;aDestIter != aDestEnd && (*aDestIter)->second != pDestField;++aDestIter)
202*cdf0e10cSrcweir 				;
203*cdf0e10cSrcweir 
204*cdf0e10cSrcweir             OSL_ENSURE((nPos) < static_cast<sal_Int32>(m_pParent->m_vColumnPos.size()),"m_pParent->m_vColumnPos: Illegal index for vector");
205*cdf0e10cSrcweir 			m_pParent->m_vColumnPos[nPos].first	= ++nParamPos;
206*cdf0e10cSrcweir 			m_pParent->m_vColumnPos[nPos].second = ::std::distance(pDestColumns->begin(),aDestIter) + 1;
207*cdf0e10cSrcweir 			sal_Bool bNotConvert = sal_True;
208*cdf0e10cSrcweir 			TOTypeInfoSP pTypeInfo = m_pParent->convertType((*aDestIter)->second->getSpecialTypeInfo(),bNotConvert);
209*cdf0e10cSrcweir 			sal_Int32 nType = ::com::sun::star::sdbc::DataType::VARCHAR;
210*cdf0e10cSrcweir 			if ( pTypeInfo.get() )
211*cdf0e10cSrcweir 				nType = pTypeInfo->nType;
212*cdf0e10cSrcweir 			m_pParent->m_vColumnTypes[nPos] = nType;
213*cdf0e10cSrcweir 		}
214*cdf0e10cSrcweir 		else
215*cdf0e10cSrcweir 		{
216*cdf0e10cSrcweir 			m_pParent->m_vColumnPos[nPos].first = COLUMN_POSITION_NOT_FOUND;
217*cdf0e10cSrcweir 			m_pParent->m_vColumnPos[nPos].second = COLUMN_POSITION_NOT_FOUND;
218*cdf0e10cSrcweir 		}
219*cdf0e10cSrcweir 
220*cdf0e10cSrcweir 		pLeftEntry = m_CTRL_LEFT.GetModel()->Next(pLeftEntry);
221*cdf0e10cSrcweir 		pRightEntry = m_CTRL_RIGHT.GetModel()->Next(pRightEntry);
222*cdf0e10cSrcweir 	}
223*cdf0e10cSrcweir 
224*cdf0e10cSrcweir 	return sal_True;
225*cdf0e10cSrcweir }
226*cdf0e10cSrcweir // -----------------------------------------------------------------------
227*cdf0e10cSrcweir String OWizNameMatching::GetTitle() const { return String(ModuleRes(STR_WIZ_NAME_MATCHING_TITEL)); }
228*cdf0e10cSrcweir // -----------------------------------------------------------------------
229*cdf0e10cSrcweir IMPL_LINK( OWizNameMatching, ButtonClickHdl, Button *, pButton )
230*cdf0e10cSrcweir {
231*cdf0e10cSrcweir 	SvLBoxEntry* pEntry = m_CTRL_LEFT.FirstSelected();
232*cdf0e10cSrcweir 	if ( pEntry )
233*cdf0e10cSrcweir 	{
234*cdf0e10cSrcweir 		sal_Int32 nPos		= m_CTRL_LEFT.GetModel()->GetAbsPos(pEntry);
235*cdf0e10cSrcweir         if(pButton == &m_ibColumn_up && nPos)
236*cdf0e10cSrcweir 			--nPos;
237*cdf0e10cSrcweir         else if(pButton == &m_ibColumn_down)
238*cdf0e10cSrcweir 			nPos += 2;
239*cdf0e10cSrcweir 
240*cdf0e10cSrcweir 		m_CTRL_LEFT.ModelIsMoving(pEntry,NULL,nPos);
241*cdf0e10cSrcweir 		m_CTRL_LEFT.GetModel()->Move(pEntry,NULL,nPos);
242*cdf0e10cSrcweir 		m_CTRL_LEFT.ModelHasMoved(pEntry);
243*cdf0e10cSrcweir 
244*cdf0e10cSrcweir 		long nThumbPos		= m_CTRL_LEFT.GetVScroll()->GetThumbPos();
245*cdf0e10cSrcweir 		long nVisibleSize	= m_CTRL_LEFT.GetVScroll()->GetVisibleSize();
246*cdf0e10cSrcweir 
247*cdf0e10cSrcweir         if(pButton == &m_ibColumn_down && (nThumbPos+nVisibleSize+1) < nPos)
248*cdf0e10cSrcweir 		{
249*cdf0e10cSrcweir 			m_CTRL_LEFT.GetVScroll()->DoScrollAction(SCROLL_LINEDOWN);
250*cdf0e10cSrcweir 			//	m_CTRL_LEFT.MakeVisible(pEntry,sal_True);
251*cdf0e10cSrcweir 		}
252*cdf0e10cSrcweir 
253*cdf0e10cSrcweir 		TableListClickHdl(&m_CTRL_LEFT);
254*cdf0e10cSrcweir 	}
255*cdf0e10cSrcweir 
256*cdf0e10cSrcweir 
257*cdf0e10cSrcweir 	return 0;
258*cdf0e10cSrcweir }
259*cdf0e10cSrcweir //------------------------------------------------------------------------------
260*cdf0e10cSrcweir IMPL_LINK( OWizNameMatching, RightButtonClickHdl, Button *, pButton )
261*cdf0e10cSrcweir {
262*cdf0e10cSrcweir 	SvLBoxEntry* pEntry = m_CTRL_RIGHT.FirstSelected();
263*cdf0e10cSrcweir 	if ( pEntry )
264*cdf0e10cSrcweir 	{
265*cdf0e10cSrcweir 		sal_Int32 nPos		= m_CTRL_RIGHT.GetModel()->GetAbsPos(pEntry);
266*cdf0e10cSrcweir         if(pButton == &m_ibColumn_up_right && nPos)
267*cdf0e10cSrcweir 			--nPos;
268*cdf0e10cSrcweir         else if(pButton == &m_ibColumn_down_right)
269*cdf0e10cSrcweir 			nPos += 2;
270*cdf0e10cSrcweir 
271*cdf0e10cSrcweir 		m_CTRL_RIGHT.ModelIsMoving(pEntry,NULL,nPos);
272*cdf0e10cSrcweir 		m_CTRL_RIGHT.GetModel()->Move(pEntry,NULL,nPos);
273*cdf0e10cSrcweir 		m_CTRL_RIGHT.ModelHasMoved(pEntry);
274*cdf0e10cSrcweir 		long nThumbPos		= m_CTRL_RIGHT.GetVScroll()->GetThumbPos();
275*cdf0e10cSrcweir 		long nVisibleSize	= m_CTRL_RIGHT.GetVScroll()->GetVisibleSize();
276*cdf0e10cSrcweir 
277*cdf0e10cSrcweir         if(pButton == &m_ibColumn_down_right && (nThumbPos+nVisibleSize+1) < nPos)
278*cdf0e10cSrcweir 			m_CTRL_RIGHT.GetVScroll()->DoScrollAction(SCROLL_LINEDOWN);
279*cdf0e10cSrcweir 		TableListRightSelectHdl(&m_CTRL_RIGHT);
280*cdf0e10cSrcweir 	}
281*cdf0e10cSrcweir 	return 0;
282*cdf0e10cSrcweir }
283*cdf0e10cSrcweir //------------------------------------------------------------------------------
284*cdf0e10cSrcweir IMPL_LINK( OWizNameMatching, TableListClickHdl, void*, /*NOTINTERESTEDIN*/ )
285*cdf0e10cSrcweir {
286*cdf0e10cSrcweir 	SvLBoxEntry* pEntry = m_CTRL_LEFT.FirstSelected();
287*cdf0e10cSrcweir 	if(pEntry)
288*cdf0e10cSrcweir 	{
289*cdf0e10cSrcweir 		sal_uLong nPos			= m_CTRL_LEFT.GetModel()->GetAbsPos(pEntry);
290*cdf0e10cSrcweir 		SvLBoxEntry* pOldEntry = m_CTRL_RIGHT.FirstSelected();
291*cdf0e10cSrcweir 		if(pOldEntry && nPos != m_CTRL_RIGHT.GetModel()->GetAbsPos(pOldEntry))
292*cdf0e10cSrcweir 		{
293*cdf0e10cSrcweir 			if(pOldEntry)
294*cdf0e10cSrcweir 				m_CTRL_RIGHT.Select(pOldEntry,sal_False);
295*cdf0e10cSrcweir 			pOldEntry = m_CTRL_RIGHT.GetEntry(nPos);
296*cdf0e10cSrcweir 			if(pOldEntry)
297*cdf0e10cSrcweir 			{
298*cdf0e10cSrcweir 				sal_uLong nNewPos = m_CTRL_LEFT.GetModel()->GetAbsPos(m_CTRL_LEFT.GetFirstEntryInView());
299*cdf0e10cSrcweir 				if ( nNewPos - nPos == 1 )
300*cdf0e10cSrcweir 					--nNewPos;
301*cdf0e10cSrcweir 				m_CTRL_RIGHT.MakeVisible(m_CTRL_RIGHT.GetEntry(nNewPos),sal_True);
302*cdf0e10cSrcweir 				m_CTRL_RIGHT.Select(pOldEntry,sal_True);
303*cdf0e10cSrcweir 			}
304*cdf0e10cSrcweir 		}
305*cdf0e10cSrcweir 		else if(!pOldEntry)
306*cdf0e10cSrcweir 		{
307*cdf0e10cSrcweir 			pOldEntry = m_CTRL_RIGHT.GetEntry(nPos);
308*cdf0e10cSrcweir 			if(pOldEntry)
309*cdf0e10cSrcweir 			{
310*cdf0e10cSrcweir 				m_CTRL_RIGHT.Select(pOldEntry,sal_True);
311*cdf0e10cSrcweir 			}
312*cdf0e10cSrcweir 		}
313*cdf0e10cSrcweir 	}
314*cdf0e10cSrcweir 
315*cdf0e10cSrcweir 	return 0;
316*cdf0e10cSrcweir }
317*cdf0e10cSrcweir //------------------------------------------------------------------------------
318*cdf0e10cSrcweir IMPL_LINK( OWizNameMatching, TableListRightSelectHdl, void*, /*NOTINTERESTEDIN*/ )
319*cdf0e10cSrcweir {
320*cdf0e10cSrcweir 	SvLBoxEntry* pEntry = m_CTRL_RIGHT.FirstSelected();
321*cdf0e10cSrcweir 	if(pEntry)
322*cdf0e10cSrcweir 	{
323*cdf0e10cSrcweir 		sal_uLong nPos			= m_CTRL_RIGHT.GetModel()->GetAbsPos(pEntry);
324*cdf0e10cSrcweir 		SvLBoxEntry* pOldEntry = m_CTRL_LEFT.FirstSelected();
325*cdf0e10cSrcweir 		if(pOldEntry && nPos != m_CTRL_LEFT.GetModel()->GetAbsPos(pOldEntry))
326*cdf0e10cSrcweir 		{
327*cdf0e10cSrcweir 			if(pOldEntry)
328*cdf0e10cSrcweir 				m_CTRL_LEFT.Select(pOldEntry,sal_False);
329*cdf0e10cSrcweir 			pOldEntry = m_CTRL_LEFT.GetEntry(nPos);
330*cdf0e10cSrcweir 			if(pOldEntry)
331*cdf0e10cSrcweir 			{
332*cdf0e10cSrcweir 				sal_uLong nNewPos = m_CTRL_RIGHT.GetModel()->GetAbsPos(m_CTRL_RIGHT.GetFirstEntryInView());
333*cdf0e10cSrcweir 				if ( nNewPos - nPos == 1 )
334*cdf0e10cSrcweir 					nNewPos--;
335*cdf0e10cSrcweir 				m_CTRL_LEFT.MakeVisible(m_CTRL_LEFT.GetEntry(nNewPos),sal_True);
336*cdf0e10cSrcweir 				m_CTRL_LEFT.Select(pOldEntry,sal_True);
337*cdf0e10cSrcweir 			}
338*cdf0e10cSrcweir 		}
339*cdf0e10cSrcweir 		else if(!pOldEntry)
340*cdf0e10cSrcweir 		{
341*cdf0e10cSrcweir 			pOldEntry = m_CTRL_LEFT.GetEntry(nPos);
342*cdf0e10cSrcweir 			if(pOldEntry)
343*cdf0e10cSrcweir 			{
344*cdf0e10cSrcweir 				m_CTRL_LEFT.Select(pOldEntry,sal_True);
345*cdf0e10cSrcweir 			}
346*cdf0e10cSrcweir 		}
347*cdf0e10cSrcweir 	}
348*cdf0e10cSrcweir 
349*cdf0e10cSrcweir 	return 0;
350*cdf0e10cSrcweir }
351*cdf0e10cSrcweir // -----------------------------------------------------------------------
352*cdf0e10cSrcweir IMPL_LINK( OWizNameMatching, AllNoneClickHdl, Button *, pButton )
353*cdf0e10cSrcweir {
354*cdf0e10cSrcweir 	sal_Bool bAll = pButton == &m_pbAll;
355*cdf0e10cSrcweir 	SvLBoxEntry* pEntry = m_CTRL_LEFT.First();
356*cdf0e10cSrcweir 	while(pEntry)
357*cdf0e10cSrcweir 	{
358*cdf0e10cSrcweir 		m_CTRL_LEFT.SetCheckButtonState( pEntry, bAll ? SV_BUTTON_CHECKED : SV_BUTTON_UNCHECKED);
359*cdf0e10cSrcweir 		pEntry = m_CTRL_LEFT.Next(pEntry);
360*cdf0e10cSrcweir 	}
361*cdf0e10cSrcweir 
362*cdf0e10cSrcweir 	return 0;
363*cdf0e10cSrcweir }
364*cdf0e10cSrcweir // -----------------------------------------------------------------------
365*cdf0e10cSrcweir //========================================================================
366*cdf0e10cSrcweir // class OColumnString
367*cdf0e10cSrcweir //========================================================================
368*cdf0e10cSrcweir class OColumnString : public SvLBoxString
369*cdf0e10cSrcweir {
370*cdf0e10cSrcweir 	sal_Bool m_bReadOnly;
371*cdf0e10cSrcweir public:
372*cdf0e10cSrcweir 	OColumnString( SvLBoxEntry* pEntry, sal_uInt16 nFlags, const String& rStr,sal_Bool _RO)
373*cdf0e10cSrcweir 		:SvLBoxString(pEntry,nFlags,rStr)
374*cdf0e10cSrcweir 		,m_bReadOnly(_RO)
375*cdf0e10cSrcweir 	{
376*cdf0e10cSrcweir 	}
377*cdf0e10cSrcweir 
378*cdf0e10cSrcweir 	virtual void Paint(const Point& rPos, SvLBox& rDev, sal_uInt16 nFlags, SvLBoxEntry* pEntry);
379*cdf0e10cSrcweir 	//virtual void InitViewData( SvLBox* pView,SvLBoxEntry* pEntry, SvViewDataItem* pViewData);
380*cdf0e10cSrcweir };
381*cdf0e10cSrcweir 
382*cdf0e10cSrcweir 
383*cdf0e10cSrcweir 
384*cdf0e10cSrcweir //------------------------------------------------------------------------
385*cdf0e10cSrcweir /*
386*cdf0e10cSrcweir void OColumnString::InitViewData( SvLBox* pView,SvLBoxEntry* pEntry, SvViewDataItem* pViewData)
387*cdf0e10cSrcweir {
388*cdf0e10cSrcweir 	SvLBoxString::InitViewData(pView,pEntry,pViewData);
389*cdf0e10cSrcweir }
390*cdf0e10cSrcweir */
391*cdf0e10cSrcweir //------------------------------------------------------------------------
392*cdf0e10cSrcweir void OColumnString::Paint(const Point& rPos, SvLBox& rDev, sal_uInt16 /*nFlags*/, SvLBoxEntry* /*pEntry*/ )
393*cdf0e10cSrcweir {
394*cdf0e10cSrcweir 	if(m_bReadOnly)
395*cdf0e10cSrcweir 	{
396*cdf0e10cSrcweir 		const StyleSettings& rStyleSettings = rDev.GetSettings().GetStyleSettings();
397*cdf0e10cSrcweir 		rDev.SetTextColor( rStyleSettings.GetDisableColor() );
398*cdf0e10cSrcweir 		rDev.SetTextFillColor( rStyleSettings.GetFieldColor() );
399*cdf0e10cSrcweir 	}
400*cdf0e10cSrcweir 	rDev.DrawText( rPos, GetText() );
401*cdf0e10cSrcweir }
402*cdf0e10cSrcweir //========================================================================
403*cdf0e10cSrcweir OColumnTreeBox::OColumnTreeBox( Window* pParent, const ResId& rResId )
404*cdf0e10cSrcweir 	: OMarkableTreeListBox(pParent,NULL,rResId)
405*cdf0e10cSrcweir {
406*cdf0e10cSrcweir 	SetDragDropMode( 0 );
407*cdf0e10cSrcweir 	EnableInplaceEditing( sal_False );
408*cdf0e10cSrcweir 	SetStyle(GetStyle() | WB_BORDER | WB_HASBUTTONS | WB_HSCROLL);
409*cdf0e10cSrcweir 	SetSelectionMode( SINGLE_SELECTION );
410*cdf0e10cSrcweir }
411*cdf0e10cSrcweir //------------------------------------------------------------------------
412*cdf0e10cSrcweir void OColumnTreeBox::InitEntry(SvLBoxEntry* pEntry, const String& rStr, const Image& rImg1, const Image& rImg2, SvLBoxButtonKind eButtonKind)
413*cdf0e10cSrcweir {
414*cdf0e10cSrcweir 	DBTreeListBox::InitEntry( pEntry, rStr, rImg1, rImg2, eButtonKind );
415*cdf0e10cSrcweir 	SvLBoxString* pString = new OColumnString(pEntry, 0, rStr,sal_False);
416*cdf0e10cSrcweir 	if (pString)
417*cdf0e10cSrcweir 		pEntry->ReplaceItem( pString, pEntry->ItemCount() - 1 );
418*cdf0e10cSrcweir }
419*cdf0e10cSrcweir //------------------------------------------------------------------------
420*cdf0e10cSrcweir sal_Bool OColumnTreeBox::Select( SvLBoxEntry* pEntry, sal_Bool bSelect )
421*cdf0e10cSrcweir {
422*cdf0e10cSrcweir 	if(bSelect)
423*cdf0e10cSrcweir 	{
424*cdf0e10cSrcweir 		OFieldDescription* pColumn = static_cast<OFieldDescription*>(pEntry->GetUserData());
425*cdf0e10cSrcweir 		if(!(pColumn->IsAutoIncrement() && m_bReadOnly))
426*cdf0e10cSrcweir 			bSelect = DBTreeListBox::Select( pEntry,bSelect );
427*cdf0e10cSrcweir 	}
428*cdf0e10cSrcweir 	else
429*cdf0e10cSrcweir 		bSelect = DBTreeListBox::Select( pEntry,bSelect );
430*cdf0e10cSrcweir 	return bSelect;
431*cdf0e10cSrcweir }
432*cdf0e10cSrcweir //------------------------------------------------------------------------
433*cdf0e10cSrcweir void OColumnTreeBox::FillListBox( const ODatabaseExport::TColumnVector& _rList)
434*cdf0e10cSrcweir {
435*cdf0e10cSrcweir 	Clear();
436*cdf0e10cSrcweir 	ODatabaseExport::TColumnVector::const_iterator aIter = _rList.begin();
437*cdf0e10cSrcweir     ODatabaseExport::TColumnVector::const_iterator aEnd = _rList.end();
438*cdf0e10cSrcweir 	for(;aIter != aEnd;++aIter)
439*cdf0e10cSrcweir 	{
440*cdf0e10cSrcweir 		SvLBoxEntry* pEntry = InsertEntry((*aIter)->first,0,sal_False,LIST_APPEND,(*aIter)->second);
441*cdf0e10cSrcweir 		SvButtonState eState = !(m_bReadOnly && (*aIter)->second->IsAutoIncrement()) ? SV_BUTTON_CHECKED : SV_BUTTON_UNCHECKED;
442*cdf0e10cSrcweir 		SetCheckButtonState( pEntry, eState );
443*cdf0e10cSrcweir 	}
444*cdf0e10cSrcweir }
445*cdf0e10cSrcweir // -----------------------------------------------------------------------------
446*cdf0e10cSrcweir 
447*cdf0e10cSrcweir 
448*cdf0e10cSrcweir 
449*cdf0e10cSrcweir 
450*cdf0e10cSrcweir 
451