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_extensions.hxx" 30*cdf0e10cSrcweir #include "groupboxwiz.hxx" 31*cdf0e10cSrcweir #include "commonpagesdbp.hxx" 32*cdf0e10cSrcweir #include <tools/debug.hxx> 33*cdf0e10cSrcweir #include <vcl/svapp.hxx> 34*cdf0e10cSrcweir #include <vcl/msgbox.hxx> 35*cdf0e10cSrcweir #include "optiongrouplayouter.hxx" 36*cdf0e10cSrcweir #include "dbpilots.hrc" 37*cdf0e10cSrcweir 38*cdf0e10cSrcweir 39*cdf0e10cSrcweir //#define GBW_STATE_DATASELECTION 0 40*cdf0e10cSrcweir #define GBW_STATE_OPTIONLIST 0 41*cdf0e10cSrcweir #define GBW_STATE_DEFAULTOPTION 1 42*cdf0e10cSrcweir #define GBW_STATE_OPTIONVALUES 2 43*cdf0e10cSrcweir #define GBW_STATE_DBFIELD 3 44*cdf0e10cSrcweir #define GBW_STATE_FINALIZE 4 45*cdf0e10cSrcweir 46*cdf0e10cSrcweir //......................................................................... 47*cdf0e10cSrcweir namespace dbp 48*cdf0e10cSrcweir { 49*cdf0e10cSrcweir //......................................................................... 50*cdf0e10cSrcweir 51*cdf0e10cSrcweir using namespace ::com::sun::star::uno; 52*cdf0e10cSrcweir using namespace ::com::sun::star::lang; 53*cdf0e10cSrcweir using namespace ::com::sun::star::beans; 54*cdf0e10cSrcweir using namespace ::com::sun::star::form; 55*cdf0e10cSrcweir using namespace ::svt; 56*cdf0e10cSrcweir 57*cdf0e10cSrcweir //===================================================================== 58*cdf0e10cSrcweir //= OGroupBoxWizard 59*cdf0e10cSrcweir //===================================================================== 60*cdf0e10cSrcweir //--------------------------------------------------------------------- 61*cdf0e10cSrcweir OGroupBoxWizard::OGroupBoxWizard( Window* _pParent, 62*cdf0e10cSrcweir const Reference< XPropertySet >& _rxObjectModel, const Reference< XMultiServiceFactory >& _rxORB ) 63*cdf0e10cSrcweir :OControlWizard(_pParent, ModuleRes(RID_DLG_GROUPBOXWIZARD), _rxObjectModel, _rxORB) 64*cdf0e10cSrcweir ,m_bVisitedDefault(sal_False) 65*cdf0e10cSrcweir ,m_bVisitedDB(sal_False) 66*cdf0e10cSrcweir { 67*cdf0e10cSrcweir initControlSettings(&m_aSettings); 68*cdf0e10cSrcweir 69*cdf0e10cSrcweir m_pPrevPage->SetHelpId(HID_GROUPWIZARD_PREVIOUS); 70*cdf0e10cSrcweir m_pNextPage->SetHelpId(HID_GROUPWIZARD_NEXT); 71*cdf0e10cSrcweir m_pCancel->SetHelpId(HID_GROUPWIZARD_CANCEL); 72*cdf0e10cSrcweir m_pFinish->SetHelpId(HID_GROUPWIZARD_FINISH); 73*cdf0e10cSrcweir } 74*cdf0e10cSrcweir 75*cdf0e10cSrcweir //--------------------------------------------------------------------- 76*cdf0e10cSrcweir sal_Bool OGroupBoxWizard::approveControl(sal_Int16 _nClassId) 77*cdf0e10cSrcweir { 78*cdf0e10cSrcweir return FormComponentType::GROUPBOX == _nClassId; 79*cdf0e10cSrcweir } 80*cdf0e10cSrcweir 81*cdf0e10cSrcweir //--------------------------------------------------------------------- 82*cdf0e10cSrcweir OWizardPage* OGroupBoxWizard::createPage(::svt::WizardTypes::WizardState _nState) 83*cdf0e10cSrcweir { 84*cdf0e10cSrcweir switch (_nState) 85*cdf0e10cSrcweir { 86*cdf0e10cSrcweir // case GBW_STATE_DATASELECTION: 87*cdf0e10cSrcweir // return new OTableSelectionPage(this); 88*cdf0e10cSrcweir // 89*cdf0e10cSrcweir case GBW_STATE_OPTIONLIST: 90*cdf0e10cSrcweir return new ORadioSelectionPage(this); 91*cdf0e10cSrcweir 92*cdf0e10cSrcweir case GBW_STATE_DEFAULTOPTION: 93*cdf0e10cSrcweir return new ODefaultFieldSelectionPage(this); 94*cdf0e10cSrcweir 95*cdf0e10cSrcweir case GBW_STATE_OPTIONVALUES: 96*cdf0e10cSrcweir return new OOptionValuesPage(this); 97*cdf0e10cSrcweir 98*cdf0e10cSrcweir case GBW_STATE_DBFIELD: 99*cdf0e10cSrcweir return new OOptionDBFieldPage(this); 100*cdf0e10cSrcweir 101*cdf0e10cSrcweir case GBW_STATE_FINALIZE: 102*cdf0e10cSrcweir return new OFinalizeGBWPage(this); 103*cdf0e10cSrcweir } 104*cdf0e10cSrcweir 105*cdf0e10cSrcweir return NULL; 106*cdf0e10cSrcweir } 107*cdf0e10cSrcweir 108*cdf0e10cSrcweir //--------------------------------------------------------------------- 109*cdf0e10cSrcweir WizardTypes::WizardState OGroupBoxWizard::determineNextState( ::svt::WizardTypes::WizardState _nCurrentState ) const 110*cdf0e10cSrcweir { 111*cdf0e10cSrcweir switch (_nCurrentState) 112*cdf0e10cSrcweir { 113*cdf0e10cSrcweir // case GBW_STATE_DATASELECTION: 114*cdf0e10cSrcweir // return GBW_STATE_OPTIONLIST; 115*cdf0e10cSrcweir // 116*cdf0e10cSrcweir case GBW_STATE_OPTIONLIST: 117*cdf0e10cSrcweir return GBW_STATE_DEFAULTOPTION; 118*cdf0e10cSrcweir 119*cdf0e10cSrcweir case GBW_STATE_DEFAULTOPTION: 120*cdf0e10cSrcweir return GBW_STATE_OPTIONVALUES; 121*cdf0e10cSrcweir 122*cdf0e10cSrcweir case GBW_STATE_OPTIONVALUES: 123*cdf0e10cSrcweir if (getContext().aFieldNames.getLength()) 124*cdf0e10cSrcweir return GBW_STATE_DBFIELD; 125*cdf0e10cSrcweir else 126*cdf0e10cSrcweir return GBW_STATE_FINALIZE; 127*cdf0e10cSrcweir 128*cdf0e10cSrcweir case GBW_STATE_DBFIELD: 129*cdf0e10cSrcweir return GBW_STATE_FINALIZE; 130*cdf0e10cSrcweir } 131*cdf0e10cSrcweir 132*cdf0e10cSrcweir return WZS_INVALID_STATE; 133*cdf0e10cSrcweir } 134*cdf0e10cSrcweir 135*cdf0e10cSrcweir //--------------------------------------------------------------------- 136*cdf0e10cSrcweir void OGroupBoxWizard::enterState(::svt::WizardTypes::WizardState _nState) 137*cdf0e10cSrcweir { 138*cdf0e10cSrcweir // some stuff to do before calling the base class (modifying our settings) 139*cdf0e10cSrcweir switch (_nState) 140*cdf0e10cSrcweir { 141*cdf0e10cSrcweir case GBW_STATE_DEFAULTOPTION: 142*cdf0e10cSrcweir if (!m_bVisitedDefault) 143*cdf0e10cSrcweir { // assume that the first of the radio buttons should be selected 144*cdf0e10cSrcweir DBG_ASSERT(m_aSettings.aLabels.size(), "OGroupBoxWizard::enterState: should never have reached this state!"); 145*cdf0e10cSrcweir m_aSettings.sDefaultField = m_aSettings.aLabels[0]; 146*cdf0e10cSrcweir } 147*cdf0e10cSrcweir m_bVisitedDefault = sal_True; 148*cdf0e10cSrcweir break; 149*cdf0e10cSrcweir 150*cdf0e10cSrcweir case GBW_STATE_DBFIELD: 151*cdf0e10cSrcweir if (!m_bVisitedDB) 152*cdf0e10cSrcweir { // try to generate a default for the DB field 153*cdf0e10cSrcweir // (simply use the first field in the DB names collection) 154*cdf0e10cSrcweir if (getContext().aFieldNames.getLength()) 155*cdf0e10cSrcweir m_aSettings.sDBField = getContext().aFieldNames[0]; 156*cdf0e10cSrcweir } 157*cdf0e10cSrcweir m_bVisitedDB = sal_True; 158*cdf0e10cSrcweir break; 159*cdf0e10cSrcweir } 160*cdf0e10cSrcweir 161*cdf0e10cSrcweir // setting the def button .... to be done before the base class is called, too, 'cause the base class 162*cdf0e10cSrcweir // calls the pages, which are allowed to override our def button behaviour 163*cdf0e10cSrcweir defaultButton(GBW_STATE_FINALIZE == _nState ? WZB_FINISH : WZB_NEXT); 164*cdf0e10cSrcweir 165*cdf0e10cSrcweir // allow "finish" on the last page only 166*cdf0e10cSrcweir enableButtons(WZB_FINISH, GBW_STATE_FINALIZE == _nState); 167*cdf0e10cSrcweir // allow previous on all pages but the first one 168*cdf0e10cSrcweir enableButtons(WZB_PREVIOUS, GBW_STATE_OPTIONLIST != _nState); 169*cdf0e10cSrcweir // allow next on all pages but the last one 170*cdf0e10cSrcweir enableButtons(WZB_NEXT, GBW_STATE_FINALIZE != _nState); 171*cdf0e10cSrcweir 172*cdf0e10cSrcweir OControlWizard::enterState(_nState); 173*cdf0e10cSrcweir } 174*cdf0e10cSrcweir 175*cdf0e10cSrcweir //--------------------------------------------------------------------- 176*cdf0e10cSrcweir void OGroupBoxWizard::createRadios() 177*cdf0e10cSrcweir { 178*cdf0e10cSrcweir try 179*cdf0e10cSrcweir { 180*cdf0e10cSrcweir OOptionGroupLayouter aLayouter(getServiceFactory()); 181*cdf0e10cSrcweir aLayouter.doLayout(getContext(), getSettings()); 182*cdf0e10cSrcweir } 183*cdf0e10cSrcweir catch(Exception&) 184*cdf0e10cSrcweir { 185*cdf0e10cSrcweir DBG_ERROR("OGroupBoxWizard::createRadios: caught an exception while creating the radio shapes!"); 186*cdf0e10cSrcweir } 187*cdf0e10cSrcweir } 188*cdf0e10cSrcweir 189*cdf0e10cSrcweir //--------------------------------------------------------------------- 190*cdf0e10cSrcweir sal_Bool OGroupBoxWizard::onFinish() 191*cdf0e10cSrcweir { 192*cdf0e10cSrcweir // commit the basic control setttings 193*cdf0e10cSrcweir commitControlSettings(&m_aSettings); 194*cdf0e10cSrcweir 195*cdf0e10cSrcweir // create the radio buttons 196*cdf0e10cSrcweir createRadios(); 197*cdf0e10cSrcweir 198*cdf0e10cSrcweir return OControlWizard::onFinish(); 199*cdf0e10cSrcweir } 200*cdf0e10cSrcweir 201*cdf0e10cSrcweir //===================================================================== 202*cdf0e10cSrcweir //= ORadioSelectionPage 203*cdf0e10cSrcweir //===================================================================== 204*cdf0e10cSrcweir //--------------------------------------------------------------------- 205*cdf0e10cSrcweir ORadioSelectionPage::ORadioSelectionPage( OControlWizard* _pParent ) 206*cdf0e10cSrcweir :OGBWPage(_pParent, ModuleRes(RID_PAGE_GROUPRADIOSELECTION)) 207*cdf0e10cSrcweir ,m_aFrame (this, ModuleRes(FL_DATA)) 208*cdf0e10cSrcweir ,m_aRadioNameLabel (this, ModuleRes(FT_RADIOLABELS)) 209*cdf0e10cSrcweir ,m_aRadioName (this, ModuleRes(ET_RADIOLABELS)) 210*cdf0e10cSrcweir ,m_aMoveRight (this, ModuleRes(PB_MOVETORIGHT)) 211*cdf0e10cSrcweir ,m_aMoveLeft (this, ModuleRes(PB_MOVETOLEFT)) 212*cdf0e10cSrcweir ,m_aExistingRadiosLabel (this, ModuleRes(FT_RADIOBUTTONS)) 213*cdf0e10cSrcweir ,m_aExistingRadios (this, ModuleRes(LB_RADIOBUTTONS)) 214*cdf0e10cSrcweir { 215*cdf0e10cSrcweir FreeResource(); 216*cdf0e10cSrcweir 217*cdf0e10cSrcweir if (getContext().aFieldNames.getLength()) 218*cdf0e10cSrcweir { 219*cdf0e10cSrcweir enableFormDatasourceDisplay(); 220*cdf0e10cSrcweir } 221*cdf0e10cSrcweir else 222*cdf0e10cSrcweir { 223*cdf0e10cSrcweir adjustControlForNoDSDisplay(&m_aFrame); 224*cdf0e10cSrcweir adjustControlForNoDSDisplay(&m_aRadioNameLabel); 225*cdf0e10cSrcweir adjustControlForNoDSDisplay(&m_aRadioName); 226*cdf0e10cSrcweir adjustControlForNoDSDisplay(&m_aMoveRight); 227*cdf0e10cSrcweir adjustControlForNoDSDisplay(&m_aMoveLeft); 228*cdf0e10cSrcweir adjustControlForNoDSDisplay(&m_aExistingRadiosLabel); 229*cdf0e10cSrcweir adjustControlForNoDSDisplay(&m_aExistingRadios, sal_True); 230*cdf0e10cSrcweir } 231*cdf0e10cSrcweir 232*cdf0e10cSrcweir m_aMoveLeft.SetClickHdl(LINK(this, ORadioSelectionPage, OnMoveEntry)); 233*cdf0e10cSrcweir m_aMoveRight.SetClickHdl(LINK(this, ORadioSelectionPage, OnMoveEntry)); 234*cdf0e10cSrcweir m_aRadioName.SetModifyHdl(LINK(this, ORadioSelectionPage, OnNameModified)); 235*cdf0e10cSrcweir m_aExistingRadios.SetSelectHdl(LINK(this, ORadioSelectionPage, OnEntrySelected)); 236*cdf0e10cSrcweir 237*cdf0e10cSrcweir implCheckMoveButtons(); 238*cdf0e10cSrcweir m_aExistingRadios.EnableMultiSelection(sal_True); 239*cdf0e10cSrcweir 240*cdf0e10cSrcweir getDialog()->defaultButton(&m_aMoveRight); 241*cdf0e10cSrcweir 242*cdf0e10cSrcweir m_aExistingRadios.SetAccessibleRelationMemberOf(&m_aExistingRadios); 243*cdf0e10cSrcweir m_aExistingRadios.SetAccessibleRelationLabeledBy(&m_aExistingRadiosLabel); 244*cdf0e10cSrcweir } 245*cdf0e10cSrcweir 246*cdf0e10cSrcweir //--------------------------------------------------------------------- 247*cdf0e10cSrcweir void ORadioSelectionPage::ActivatePage() 248*cdf0e10cSrcweir { 249*cdf0e10cSrcweir OGBWPage::ActivatePage(); 250*cdf0e10cSrcweir m_aRadioName.GrabFocus(); 251*cdf0e10cSrcweir } 252*cdf0e10cSrcweir 253*cdf0e10cSrcweir //--------------------------------------------------------------------- 254*cdf0e10cSrcweir void ORadioSelectionPage::initializePage() 255*cdf0e10cSrcweir { 256*cdf0e10cSrcweir OGBWPage::initializePage(); 257*cdf0e10cSrcweir 258*cdf0e10cSrcweir m_aRadioName.SetText(String()); 259*cdf0e10cSrcweir 260*cdf0e10cSrcweir // no need to initialize the list of radios here 261*cdf0e10cSrcweir // (we're the only one affecting this special setting, so it will be in the same state as last time this 262*cdf0e10cSrcweir // page was commited) 263*cdf0e10cSrcweir 264*cdf0e10cSrcweir implCheckMoveButtons(); 265*cdf0e10cSrcweir } 266*cdf0e10cSrcweir 267*cdf0e10cSrcweir //--------------------------------------------------------------------- 268*cdf0e10cSrcweir sal_Bool ORadioSelectionPage::commitPage( ::svt::WizardTypes::CommitPageReason _eReason ) 269*cdf0e10cSrcweir { 270*cdf0e10cSrcweir if (!OGBWPage::commitPage(_eReason)) 271*cdf0e10cSrcweir return sal_False; 272*cdf0e10cSrcweir 273*cdf0e10cSrcweir // copy the names of the radio buttons to be inserted 274*cdf0e10cSrcweir // and initialize the values 275*cdf0e10cSrcweir OOptionGroupSettings& rSettings = getSettings(); 276*cdf0e10cSrcweir rSettings.aLabels.clear(); 277*cdf0e10cSrcweir rSettings.aValues.clear(); 278*cdf0e10cSrcweir rSettings.aLabels.reserve(m_aExistingRadios.GetEntryCount()); 279*cdf0e10cSrcweir rSettings.aValues.reserve(m_aExistingRadios.GetEntryCount()); 280*cdf0e10cSrcweir for (::svt::WizardTypes::WizardState i=0; i<m_aExistingRadios.GetEntryCount(); ++i) 281*cdf0e10cSrcweir { 282*cdf0e10cSrcweir rSettings.aLabels.push_back(m_aExistingRadios.GetEntry(i)); 283*cdf0e10cSrcweir rSettings.aValues.push_back(String::CreateFromInt32((sal_Int32)(i + 1))); 284*cdf0e10cSrcweir } 285*cdf0e10cSrcweir 286*cdf0e10cSrcweir return sal_True; 287*cdf0e10cSrcweir } 288*cdf0e10cSrcweir 289*cdf0e10cSrcweir //--------------------------------------------------------------------- 290*cdf0e10cSrcweir IMPL_LINK( ORadioSelectionPage, OnMoveEntry, PushButton*, _pButton ) 291*cdf0e10cSrcweir { 292*cdf0e10cSrcweir sal_Bool bMoveLeft = (&m_aMoveLeft == _pButton); 293*cdf0e10cSrcweir if (bMoveLeft) 294*cdf0e10cSrcweir { 295*cdf0e10cSrcweir while (m_aExistingRadios.GetSelectEntryCount()) 296*cdf0e10cSrcweir m_aExistingRadios.RemoveEntry(m_aExistingRadios.GetSelectEntryPos(0)); 297*cdf0e10cSrcweir } 298*cdf0e10cSrcweir else 299*cdf0e10cSrcweir { 300*cdf0e10cSrcweir m_aExistingRadios.InsertEntry(m_aRadioName.GetText()); 301*cdf0e10cSrcweir m_aRadioName.SetText(String()); 302*cdf0e10cSrcweir } 303*cdf0e10cSrcweir 304*cdf0e10cSrcweir implCheckMoveButtons(); 305*cdf0e10cSrcweir 306*cdf0e10cSrcweir //adjust the focus 307*cdf0e10cSrcweir if (bMoveLeft) 308*cdf0e10cSrcweir m_aExistingRadios.GrabFocus(); 309*cdf0e10cSrcweir else 310*cdf0e10cSrcweir m_aRadioName.GrabFocus(); 311*cdf0e10cSrcweir return 0L; 312*cdf0e10cSrcweir } 313*cdf0e10cSrcweir 314*cdf0e10cSrcweir //--------------------------------------------------------------------- 315*cdf0e10cSrcweir IMPL_LINK( ORadioSelectionPage, OnEntrySelected, ListBox*, /*_pList*/ ) 316*cdf0e10cSrcweir { 317*cdf0e10cSrcweir implCheckMoveButtons(); 318*cdf0e10cSrcweir return 0L; 319*cdf0e10cSrcweir } 320*cdf0e10cSrcweir 321*cdf0e10cSrcweir //--------------------------------------------------------------------- 322*cdf0e10cSrcweir IMPL_LINK( ORadioSelectionPage, OnNameModified, Edit*, /*_pList*/ ) 323*cdf0e10cSrcweir { 324*cdf0e10cSrcweir implCheckMoveButtons(); 325*cdf0e10cSrcweir return 0L; 326*cdf0e10cSrcweir } 327*cdf0e10cSrcweir 328*cdf0e10cSrcweir //--------------------------------------------------------------------- 329*cdf0e10cSrcweir bool ORadioSelectionPage::canAdvance() const 330*cdf0e10cSrcweir { 331*cdf0e10cSrcweir return 0 != m_aExistingRadios.GetEntryCount(); 332*cdf0e10cSrcweir } 333*cdf0e10cSrcweir 334*cdf0e10cSrcweir //--------------------------------------------------------------------- 335*cdf0e10cSrcweir void ORadioSelectionPage::implCheckMoveButtons() 336*cdf0e10cSrcweir { 337*cdf0e10cSrcweir sal_Bool bHaveSome = (0 != m_aExistingRadios.GetEntryCount()); 338*cdf0e10cSrcweir sal_Bool bSelectedSome = (0 != m_aExistingRadios.GetSelectEntryCount()); 339*cdf0e10cSrcweir sal_Bool bUnfinishedInput = (0 != m_aRadioName.GetText().Len()); 340*cdf0e10cSrcweir 341*cdf0e10cSrcweir m_aMoveLeft.Enable(bSelectedSome); 342*cdf0e10cSrcweir m_aMoveRight.Enable(bUnfinishedInput); 343*cdf0e10cSrcweir 344*cdf0e10cSrcweir getDialog()->enableButtons(WZB_NEXT, bHaveSome); 345*cdf0e10cSrcweir 346*cdf0e10cSrcweir if (bUnfinishedInput) 347*cdf0e10cSrcweir { 348*cdf0e10cSrcweir if (0 == (m_aMoveRight.GetStyle() & WB_DEFBUTTON)) 349*cdf0e10cSrcweir getDialog()->defaultButton(&m_aMoveRight); 350*cdf0e10cSrcweir } 351*cdf0e10cSrcweir else 352*cdf0e10cSrcweir { 353*cdf0e10cSrcweir if (WB_DEFBUTTON == (m_aMoveRight.GetStyle() & WB_DEFBUTTON)) 354*cdf0e10cSrcweir getDialog()->defaultButton(WZB_NEXT); 355*cdf0e10cSrcweir } 356*cdf0e10cSrcweir } 357*cdf0e10cSrcweir 358*cdf0e10cSrcweir //===================================================================== 359*cdf0e10cSrcweir //= ODefaultFieldSelectionPage 360*cdf0e10cSrcweir //===================================================================== 361*cdf0e10cSrcweir //--------------------------------------------------------------------- 362*cdf0e10cSrcweir ODefaultFieldSelectionPage::ODefaultFieldSelectionPage( OControlWizard* _pParent ) 363*cdf0e10cSrcweir :OMaybeListSelectionPage(_pParent, ModuleRes(RID_PAGE_DEFAULTFIELDSELECTION)) 364*cdf0e10cSrcweir ,m_aFrame (this, ModuleRes(FL_DEFAULTSELECTION)) 365*cdf0e10cSrcweir ,m_aDefaultSelectionLabel (this, ModuleRes(FT_DEFAULTSELECTION)) 366*cdf0e10cSrcweir ,m_aDefSelYes (this, ModuleRes(RB_DEFSELECTION_YES)) 367*cdf0e10cSrcweir ,m_aDefSelNo (this, ModuleRes(RB_DEFSELECTION_NO)) 368*cdf0e10cSrcweir ,m_aDefSelection (this, ModuleRes(LB_DEFSELECTIONFIELD)) 369*cdf0e10cSrcweir { 370*cdf0e10cSrcweir FreeResource(); 371*cdf0e10cSrcweir 372*cdf0e10cSrcweir announceControls(m_aDefSelYes, m_aDefSelNo, m_aDefSelection); 373*cdf0e10cSrcweir m_aDefSelection.SetDropDownLineCount(10); 374*cdf0e10cSrcweir m_aDefSelection.SetAccessibleRelationLabeledBy( &m_aDefSelYes ); 375*cdf0e10cSrcweir m_aDefSelection.SetAccessibleRelationMemberOf(&m_aDefaultSelectionLabel); 376*cdf0e10cSrcweir } 377*cdf0e10cSrcweir 378*cdf0e10cSrcweir //--------------------------------------------------------------------- 379*cdf0e10cSrcweir void ODefaultFieldSelectionPage::initializePage() 380*cdf0e10cSrcweir { 381*cdf0e10cSrcweir OMaybeListSelectionPage::initializePage(); 382*cdf0e10cSrcweir 383*cdf0e10cSrcweir const OOptionGroupSettings& rSettings = getSettings(); 384*cdf0e10cSrcweir 385*cdf0e10cSrcweir // fill the listbox 386*cdf0e10cSrcweir m_aDefSelection.Clear(); 387*cdf0e10cSrcweir for ( ConstStringArrayIterator aLoop = rSettings.aLabels.begin(); 388*cdf0e10cSrcweir aLoop != rSettings.aLabels.end(); 389*cdf0e10cSrcweir ++aLoop 390*cdf0e10cSrcweir ) 391*cdf0e10cSrcweir m_aDefSelection.InsertEntry(*aLoop); 392*cdf0e10cSrcweir 393*cdf0e10cSrcweir 394*cdf0e10cSrcweir implInitialize(rSettings.sDefaultField); 395*cdf0e10cSrcweir } 396*cdf0e10cSrcweir 397*cdf0e10cSrcweir //--------------------------------------------------------------------- 398*cdf0e10cSrcweir sal_Bool ODefaultFieldSelectionPage::commitPage( ::svt::WizardTypes::CommitPageReason _eReason ) 399*cdf0e10cSrcweir { 400*cdf0e10cSrcweir if (!OMaybeListSelectionPage::commitPage(_eReason)) 401*cdf0e10cSrcweir return sal_False; 402*cdf0e10cSrcweir 403*cdf0e10cSrcweir OOptionGroupSettings& rSettings = getSettings(); 404*cdf0e10cSrcweir implCommit(rSettings.sDefaultField); 405*cdf0e10cSrcweir 406*cdf0e10cSrcweir return sal_True; 407*cdf0e10cSrcweir } 408*cdf0e10cSrcweir 409*cdf0e10cSrcweir //===================================================================== 410*cdf0e10cSrcweir //= OOptionValuesPage 411*cdf0e10cSrcweir //===================================================================== 412*cdf0e10cSrcweir //--------------------------------------------------------------------- 413*cdf0e10cSrcweir OOptionValuesPage::OOptionValuesPage( OControlWizard* _pParent ) 414*cdf0e10cSrcweir :OGBWPage(_pParent, ModuleRes(RID_PAGE_OPTIONVALUES)) 415*cdf0e10cSrcweir ,m_aFrame (this, ModuleRes(FL_OPTIONVALUES)) 416*cdf0e10cSrcweir ,m_aDescription (this, ModuleRes(FT_OPTIONVALUES_EXPL)) 417*cdf0e10cSrcweir ,m_aValueLabel (this, ModuleRes(FT_OPTIONVALUES)) 418*cdf0e10cSrcweir ,m_aValue (this, ModuleRes(ET_OPTIONVALUE)) 419*cdf0e10cSrcweir ,m_aOptionsLabel (this, ModuleRes(FT_RADIOBUTTONS)) 420*cdf0e10cSrcweir ,m_aOptions (this, ModuleRes(LB_RADIOBUTTONS)) 421*cdf0e10cSrcweir ,m_nLastSelection((::svt::WizardTypes::WizardState)-1) 422*cdf0e10cSrcweir { 423*cdf0e10cSrcweir FreeResource(); 424*cdf0e10cSrcweir 425*cdf0e10cSrcweir m_aOptions.SetSelectHdl(LINK(this, OOptionValuesPage, OnOptionSelected)); 426*cdf0e10cSrcweir 427*cdf0e10cSrcweir m_aOptions.SetAccessibleRelationMemberOf(&m_aOptions); 428*cdf0e10cSrcweir m_aOptions.SetAccessibleRelationLabeledBy(&m_aOptionsLabel); 429*cdf0e10cSrcweir } 430*cdf0e10cSrcweir 431*cdf0e10cSrcweir //--------------------------------------------------------------------- 432*cdf0e10cSrcweir IMPL_LINK( OOptionValuesPage, OnOptionSelected, ListBox*, /*NOTINTERESTEDIN*/ ) 433*cdf0e10cSrcweir { 434*cdf0e10cSrcweir implTraveledOptions(); 435*cdf0e10cSrcweir return 0L; 436*cdf0e10cSrcweir } 437*cdf0e10cSrcweir 438*cdf0e10cSrcweir //--------------------------------------------------------------------- 439*cdf0e10cSrcweir void OOptionValuesPage::ActivatePage() 440*cdf0e10cSrcweir { 441*cdf0e10cSrcweir OGBWPage::ActivatePage(); 442*cdf0e10cSrcweir m_aValue.GrabFocus(); 443*cdf0e10cSrcweir } 444*cdf0e10cSrcweir 445*cdf0e10cSrcweir //--------------------------------------------------------------------- 446*cdf0e10cSrcweir void OOptionValuesPage::implTraveledOptions() 447*cdf0e10cSrcweir { 448*cdf0e10cSrcweir if ((::svt::WizardTypes::WizardState)-1 != m_nLastSelection) 449*cdf0e10cSrcweir { 450*cdf0e10cSrcweir // save the value for the last option 451*cdf0e10cSrcweir DBG_ASSERT((size_t)m_nLastSelection < m_aUncommittedValues.size(), "OOptionValuesPage::implTraveledOptions: invalid previous selection index!"); 452*cdf0e10cSrcweir m_aUncommittedValues[m_nLastSelection] = m_aValue.GetText(); 453*cdf0e10cSrcweir } 454*cdf0e10cSrcweir 455*cdf0e10cSrcweir m_nLastSelection = m_aOptions.GetSelectEntryPos(); 456*cdf0e10cSrcweir DBG_ASSERT((size_t)m_nLastSelection < m_aUncommittedValues.size(), "OOptionValuesPage::implTraveledOptions: invalid new selection index!"); 457*cdf0e10cSrcweir m_aValue.SetText(m_aUncommittedValues[m_nLastSelection]); 458*cdf0e10cSrcweir } 459*cdf0e10cSrcweir 460*cdf0e10cSrcweir //--------------------------------------------------------------------- 461*cdf0e10cSrcweir void OOptionValuesPage::initializePage() 462*cdf0e10cSrcweir { 463*cdf0e10cSrcweir OGBWPage::initializePage(); 464*cdf0e10cSrcweir 465*cdf0e10cSrcweir const OOptionGroupSettings& rSettings = getSettings(); 466*cdf0e10cSrcweir DBG_ASSERT(rSettings.aLabels.size(), "OOptionValuesPage::initializePage: no options!!"); 467*cdf0e10cSrcweir DBG_ASSERT(rSettings.aLabels.size() == rSettings.aValues.size(), "OOptionValuesPage::initializePage: inconsistent data!"); 468*cdf0e10cSrcweir 469*cdf0e10cSrcweir // fill the list with all available options 470*cdf0e10cSrcweir m_aOptions.Clear(); 471*cdf0e10cSrcweir m_nLastSelection = -1; 472*cdf0e10cSrcweir for ( ConstStringArrayIterator aLoop = rSettings.aLabels.begin(); 473*cdf0e10cSrcweir aLoop != rSettings.aLabels.end(); 474*cdf0e10cSrcweir ++aLoop 475*cdf0e10cSrcweir ) 476*cdf0e10cSrcweir m_aOptions.InsertEntry(*aLoop); 477*cdf0e10cSrcweir 478*cdf0e10cSrcweir // remember the values ... can't set them directly in the settings without the explicit commit call 479*cdf0e10cSrcweir // so we need have a copy of the values 480*cdf0e10cSrcweir m_aUncommittedValues = rSettings.aValues; 481*cdf0e10cSrcweir 482*cdf0e10cSrcweir // select the first entry 483*cdf0e10cSrcweir m_aOptions.SelectEntryPos(0); 484*cdf0e10cSrcweir implTraveledOptions(); 485*cdf0e10cSrcweir } 486*cdf0e10cSrcweir 487*cdf0e10cSrcweir //--------------------------------------------------------------------- 488*cdf0e10cSrcweir sal_Bool OOptionValuesPage::commitPage( ::svt::WizardTypes::CommitPageReason _eReason ) 489*cdf0e10cSrcweir { 490*cdf0e10cSrcweir if (!OGBWPage::commitPage(_eReason)) 491*cdf0e10cSrcweir return sal_False; 492*cdf0e10cSrcweir 493*cdf0e10cSrcweir OOptionGroupSettings& rSettings = getSettings(); 494*cdf0e10cSrcweir 495*cdf0e10cSrcweir // commit the current value 496*cdf0e10cSrcweir implTraveledOptions(); 497*cdf0e10cSrcweir // copy the uncommitted values 498*cdf0e10cSrcweir rSettings.aValues = m_aUncommittedValues; 499*cdf0e10cSrcweir 500*cdf0e10cSrcweir return sal_True; 501*cdf0e10cSrcweir } 502*cdf0e10cSrcweir 503*cdf0e10cSrcweir //===================================================================== 504*cdf0e10cSrcweir //= OOptionDBFieldPage 505*cdf0e10cSrcweir //===================================================================== 506*cdf0e10cSrcweir //--------------------------------------------------------------------- 507*cdf0e10cSrcweir OOptionDBFieldPage::OOptionDBFieldPage( OControlWizard* _pParent ) 508*cdf0e10cSrcweir :ODBFieldPage(_pParent) 509*cdf0e10cSrcweir { 510*cdf0e10cSrcweir setDescriptionText(String(ModuleRes(RID_STR_GROUPWIZ_DBFIELD))); 511*cdf0e10cSrcweir } 512*cdf0e10cSrcweir 513*cdf0e10cSrcweir //--------------------------------------------------------------------- 514*cdf0e10cSrcweir String& OOptionDBFieldPage::getDBFieldSetting() 515*cdf0e10cSrcweir { 516*cdf0e10cSrcweir return getSettings().sDBField; 517*cdf0e10cSrcweir } 518*cdf0e10cSrcweir 519*cdf0e10cSrcweir //===================================================================== 520*cdf0e10cSrcweir //= OFinalizeGBWPage 521*cdf0e10cSrcweir //===================================================================== 522*cdf0e10cSrcweir //--------------------------------------------------------------------- 523*cdf0e10cSrcweir OFinalizeGBWPage::OFinalizeGBWPage( OControlWizard* _pParent ) 524*cdf0e10cSrcweir :OGBWPage(_pParent, ModuleRes(RID_PAGE_OPTIONS_FINAL)) 525*cdf0e10cSrcweir ,m_aFrame (this, ModuleRes(FL_NAMEIT)) 526*cdf0e10cSrcweir ,m_aNameLabel (this, ModuleRes(FT_NAMEIT)) 527*cdf0e10cSrcweir ,m_aName (this, ModuleRes(ET_NAMEIT)) 528*cdf0e10cSrcweir ,m_aThatsAll (this, ModuleRes(FT_THATSALL)) 529*cdf0e10cSrcweir { 530*cdf0e10cSrcweir FreeResource(); 531*cdf0e10cSrcweir } 532*cdf0e10cSrcweir 533*cdf0e10cSrcweir //--------------------------------------------------------------------- 534*cdf0e10cSrcweir void OFinalizeGBWPage::ActivatePage() 535*cdf0e10cSrcweir { 536*cdf0e10cSrcweir OGBWPage::ActivatePage(); 537*cdf0e10cSrcweir m_aName.GrabFocus(); 538*cdf0e10cSrcweir } 539*cdf0e10cSrcweir 540*cdf0e10cSrcweir //--------------------------------------------------------------------- 541*cdf0e10cSrcweir bool OFinalizeGBWPage::canAdvance() const 542*cdf0e10cSrcweir { 543*cdf0e10cSrcweir return false; 544*cdf0e10cSrcweir } 545*cdf0e10cSrcweir 546*cdf0e10cSrcweir //--------------------------------------------------------------------- 547*cdf0e10cSrcweir void OFinalizeGBWPage::initializePage() 548*cdf0e10cSrcweir { 549*cdf0e10cSrcweir OGBWPage::initializePage(); 550*cdf0e10cSrcweir 551*cdf0e10cSrcweir const OOptionGroupSettings& rSettings = getSettings(); 552*cdf0e10cSrcweir m_aName.SetText(rSettings.sControlLabel); 553*cdf0e10cSrcweir } 554*cdf0e10cSrcweir 555*cdf0e10cSrcweir //--------------------------------------------------------------------- 556*cdf0e10cSrcweir sal_Bool OFinalizeGBWPage::commitPage( ::svt::WizardTypes::CommitPageReason _eReason ) 557*cdf0e10cSrcweir { 558*cdf0e10cSrcweir if (!OGBWPage::commitPage(_eReason)) 559*cdf0e10cSrcweir return sal_False; 560*cdf0e10cSrcweir 561*cdf0e10cSrcweir getSettings().sControlLabel = m_aName.GetText(); 562*cdf0e10cSrcweir 563*cdf0e10cSrcweir return sal_True; 564*cdf0e10cSrcweir } 565*cdf0e10cSrcweir 566*cdf0e10cSrcweir //......................................................................... 567*cdf0e10cSrcweir } // namespace dbp 568*cdf0e10cSrcweir //......................................................................... 569*cdf0e10cSrcweir 570