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