2007/03/07 16:51:44 bm 1.1.2.35: #i75207# use an overloaded leaveState() instead of disabling the roadmap entries. Disadvantage: the entries are shown as disabled, advantage: no crash 2007/02/28 16:07:28 bm 1.1.2.34: removed CHART2_ROADMAP_WIZARD define and else branch as we will not switch back from using the roadmap 2007/02/27 13:45:31 bm 1.1.2.33: Disable controls and tabs when invalid ranges were entered 2007/02/08 21:25:33 iha 1.1.2.32: resync m195 -> m202 2006/12/08 19:04:16 iha 1.1.2.31: corrected title of roadmap in wizard 2006/12/05 19:52:16 iha 1.1.2.30: don't append page title to wizard title 2006/11/10 21:03:05 iha 1.1.2.29: prevent immidiate redraw in wizard and according dialogs (important for charts with many data) 2006/10/27 14:59:19 iha 1.1.2.28: name consolidation 2006/10/24 11:55:15 bm 1.1.2.27: enable range chooser in Calc 2006/03/10 10:20:40 iha 1.1.2.26: don't use leading underscore 2006/03/08 12:57:14 bm 1.1.2.25: disable range tab-pages when having own data 2006/01/23 15:53:34 iha 1.1.2.24: #i61054# disable next button at wizard correctly 2006/01/12 17:54:34 iha 1.1.2.23: change name of wizard step 4 according to spec 2006/01/02 16:36:06 iha 1.1.2.22: #i58960# HelpId for Roadmap in Wizard 2005/11/30 08:51:52 iha 1.1.2.21: remove location page 2005/10/11 09:19:19 bm 1.1.2.20: license header change and CRs removed 2005/04/15 15:03:16 bm 1.1.2.19: commented-out code removed 2005/04/15 14:48:07 bm 1.1.2.18: data source and range choose dialog rework 2004/06/30 16:14:16 bm 1.1.2.17: some fixes 2004/06/29 12:21:52 bm 1.1.2.16: shared data for range chooser and data source tab pages 2004/06/09 22:08:12 iha 1.1.2.15: remove cancelbutton for case no roadmap 2004/06/09 18:43:47 iha 1.1.2.14: minor resource changes 2004/06/09 17:49:06 iha 1.1.2.13: added cancel button 2004/06/08 19:30:16 iha 1.1.2.12: added stops at first and last page; added roadmap (if 0) 2004/06/03 10:03:12 iha 1.1.2.11: changed signiture 'createPage' 2004/06/01 19:01:08 iha 1.1.2.10: set Finish as default button 2004/05/27 15:57:40 iha 1.1.2.9: #i20344# provide charttype template; added parameter bDoLiveUpdate 2004/05/24 17:46:02 bm 1.1.2.8: flexible source range tab-page added 2004/05/17 17:33:48 iha 1.1.2.7: provide object naming; resource cleanup 2004/05/05 20:45:04 iha 1.1.2.6: #i20344# added location tab page to chart wizard 2004/04/27 15:00:37 iha 1.1.2.5: warnings removed 2004/04/21 16:55:09 iha 1.1.2.4: #i20344# replace old type dialog with new type page 2004/04/21 11:31:39 bm 1.1.2.3: no FreeResource() call 2004/04/20 14:06:07 iha 1.1.2.2: add range chooser tabpage 2004/04/07 21:31:42 iha 1.1.2.1: #i20344# new
276 lines
8.5 KiB
C++
276 lines
8.5 KiB
C++
/*************************************************************************
|
|
*
|
|
* OpenOffice.org - a multi-platform office productivity suite
|
|
*
|
|
* $RCSfile: dlg_CreationWizard.cxx,v $
|
|
*
|
|
* $Revision: 1.2 $
|
|
*
|
|
* last change: $Author: vg $ $Date: 2007-05-22 17:32:17 $
|
|
*
|
|
* The Contents of this file are made available subject to
|
|
* the terms of GNU Lesser General Public License Version 2.1.
|
|
*
|
|
*
|
|
* GNU Lesser General Public License Version 2.1
|
|
* =============================================
|
|
* Copyright 2005 by Sun Microsystems, Inc.
|
|
* 901 San Antonio Road, Palo Alto, CA 94303, USA
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
* License version 2.1, as published by the Free Software Foundation.
|
|
*
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with this library; if not, write to the Free Software
|
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
|
* MA 02111-1307 USA
|
|
*
|
|
************************************************************************/
|
|
|
|
// MARKER(update_precomp.py): autogen include statement, do not remove
|
|
#include "precompiled_chart2.hxx"
|
|
|
|
#include "dlg_CreationWizard.hxx"
|
|
#include "dlg_CreationWizard.hrc"
|
|
#include "ResId.hxx"
|
|
#include "macros.hxx"
|
|
#include "Strings.hrc"
|
|
#include "HelpIds.hrc"
|
|
|
|
#include "tp_ChartType.hxx"
|
|
#include "tp_RangeChooser.hxx"
|
|
#include "tp_Wizard_TitlesAndObjects.hxx"
|
|
#include "tp_Location.hxx"
|
|
|
|
#include "tp_DataSource.hxx"
|
|
#include "ChartTypeTemplateProvider.hxx"
|
|
#include "DialogModel.hxx"
|
|
|
|
//.............................................................................
|
|
namespace chart
|
|
{
|
|
//.............................................................................
|
|
using namespace ::com::sun::star;
|
|
|
|
//#define LOCATION_PAGE 1
|
|
|
|
#define PATH_FULL 1
|
|
#define STATE_FIRST 0
|
|
#define STATE_CHARTTYPE STATE_FIRST
|
|
#define STATE_SIMPLE_RANGE 1
|
|
#define STATE_DATA_SERIES 2
|
|
#define STATE_OBJECTS 3
|
|
#define STATE_LOCATION 4
|
|
|
|
#ifdef LOCATION_PAGE
|
|
#define STATE_LAST STATE_LOCATION
|
|
#else
|
|
#define STATE_LAST STATE_OBJECTS
|
|
#endif
|
|
|
|
namespace
|
|
{
|
|
#ifdef LOCATION_PAGE
|
|
const sal_Int32 nPageCount = 5;
|
|
#else
|
|
const sal_Int32 nPageCount = 4;
|
|
#endif
|
|
}
|
|
|
|
CreationWizard::CreationWizard( Window* pParent, const uno::Reference< frame::XModel >& xChartModel
|
|
, const uno::Reference< uno::XComponentContext >& xContext
|
|
, sal_Int32 nOnePageOnlyIndex )
|
|
: svt::RoadmapWizard( pParent, SchResId(DLG_CHART_WIZARD)
|
|
, ( nOnePageOnlyIndex >= 0 && nOnePageOnlyIndex < nPageCount )
|
|
? WZB_HELP | WZB_CANCEL | WZB_FINISH
|
|
: WZB_HELP | WZB_CANCEL | WZB_PREVIOUS | WZB_NEXT | WZB_FINISH , SchResId( STR_WIZARD_ROADMAP_TITLE )
|
|
)
|
|
, m_xChartModel(xChartModel,uno::UNO_QUERY)
|
|
, m_xCC( xContext )
|
|
, m_bIsClosable(true)
|
|
, m_nOnePageOnlyIndex(nOnePageOnlyIndex)
|
|
, m_pTemplateProvider(0)
|
|
, m_nFirstState(STATE_FIRST)
|
|
, m_nLastState(STATE_LAST)
|
|
, m_aTimerTriggeredControllerLock( xChartModel )
|
|
, m_bCanTravel( true )
|
|
{
|
|
m_apDialogModel.reset( new DialogModel( m_xChartModel, m_xCC ));
|
|
// Do not call FreeResource(), because there are no sub-elements defined in
|
|
// the dialog resource
|
|
ShowButtonFixedLine( TRUE );
|
|
defaultButton( WZB_FINISH );
|
|
|
|
if( m_nOnePageOnlyIndex < 0 || m_nOnePageOnlyIndex >= nPageCount )
|
|
{
|
|
m_nOnePageOnlyIndex = -1;
|
|
this->setTitleBase(String(SchResId(STR_DLG_CHART_WIZARD)));
|
|
}
|
|
else
|
|
this->setTitleBase(String());
|
|
|
|
declarePath( PATH_FULL
|
|
, STATE_CHARTTYPE
|
|
, STATE_SIMPLE_RANGE
|
|
, STATE_DATA_SERIES
|
|
, STATE_OBJECTS
|
|
#ifdef LOCATION_PAGE
|
|
, STATE_LOCATION
|
|
#endif
|
|
, WZS_INVALID_STATE
|
|
);
|
|
this->SetRoadmapSmartHelpId( SmartId( HID_SCH_WIZARD_ROADMAP ) );
|
|
this->SetRoadmapInteractive( sal_True );
|
|
Size aAdditionalRoadmapSize( LogicToPixel( Size( 85, 0 ), MAP_APPFONT ) );
|
|
Size aSize( this->GetSizePixel() );
|
|
aSize.Width() += aAdditionalRoadmapSize.Width();
|
|
this->SetSizePixel( aSize );
|
|
|
|
uno::Reference< chart2::XChartDocument > xChartDoc( m_xChartModel, uno::UNO_QUERY );
|
|
bool bHasOwnData = (xChartDoc.is() && xChartDoc->hasInternalDataProvider());
|
|
|
|
if( bHasOwnData )
|
|
{
|
|
this->enableState( STATE_SIMPLE_RANGE, false );
|
|
this->enableState( STATE_DATA_SERIES, false );
|
|
}
|
|
|
|
// Call ActivatePage, to create and activate the first page
|
|
ActivatePage();
|
|
}
|
|
CreationWizard::~CreationWizard()
|
|
{
|
|
}
|
|
|
|
svt::OWizardPage* CreationWizard::createPage(WizardState nState)
|
|
{
|
|
svt::OWizardPage* pRet = 0;
|
|
if(m_nOnePageOnlyIndex!=-1 && m_nOnePageOnlyIndex!=nState)
|
|
return pRet;
|
|
bool bDoLiveUpdate = m_nOnePageOnlyIndex == -1;
|
|
switch( nState )
|
|
{
|
|
case STATE_CHARTTYPE:
|
|
{
|
|
m_aTimerTriggeredControllerLock.startTimer();
|
|
ChartTypeTabPage* pChartTypeTabPage = new ChartTypeTabPage(this,m_xChartModel,m_xCC,bDoLiveUpdate);
|
|
pRet = pChartTypeTabPage;
|
|
m_pTemplateProvider = pChartTypeTabPage;
|
|
if( m_pTemplateProvider &&
|
|
m_apDialogModel.get() )
|
|
m_apDialogModel->setTemplate( m_pTemplateProvider->getCurrentTemplate());
|
|
}
|
|
break;
|
|
case STATE_SIMPLE_RANGE:
|
|
{
|
|
m_aTimerTriggeredControllerLock.startTimer();
|
|
pRet = new RangeChooserTabPage(this,*(m_apDialogModel.get()),m_pTemplateProvider,this);
|
|
}
|
|
break;
|
|
case STATE_DATA_SERIES:
|
|
{
|
|
m_aTimerTriggeredControllerLock.startTimer();
|
|
pRet = new DataSourceTabPage(this,*(m_apDialogModel.get()),m_pTemplateProvider,this);
|
|
}
|
|
break;
|
|
case STATE_OBJECTS:
|
|
{
|
|
pRet = new TitlesAndObjectsTabPage(this,m_xChartModel,m_xCC);
|
|
m_aTimerTriggeredControllerLock.startTimer();
|
|
}
|
|
break;
|
|
#ifdef LOCATION_PAGE
|
|
case STATE_LOCATION:
|
|
{
|
|
m_aTimerTriggeredControllerLock.startTimer();
|
|
pRet = new LocationTabPage(this,m_xChartModel,m_xCC);
|
|
}
|
|
break;
|
|
#endif
|
|
default:
|
|
break;
|
|
}
|
|
if(pRet)
|
|
pRet->SetText(String());//remove title of pages to not get them in the wizard title
|
|
return pRet;
|
|
}
|
|
|
|
sal_Bool CreationWizard::leaveState( WizardState _nState )
|
|
{
|
|
return m_bCanTravel;
|
|
}
|
|
|
|
svt::WizardTypes::WizardState CreationWizard::determineNextState(WizardState nCurrentState)
|
|
{
|
|
if( !m_bCanTravel )
|
|
return WZS_INVALID_STATE;
|
|
if( nCurrentState == m_nLastState )
|
|
return WZS_INVALID_STATE;
|
|
svt::WizardTypes::WizardState nNextState = nCurrentState + 1;
|
|
while( !isStateEnabled( nNextState ) && nNextState <= m_nLastState )
|
|
++nNextState;
|
|
return (nNextState==m_nLastState+1) ? WZS_INVALID_STATE : nNextState;
|
|
}
|
|
void CreationWizard::enterState(WizardState nState)
|
|
{
|
|
m_aTimerTriggeredControllerLock.startTimer();
|
|
enableButtons( WZB_PREVIOUS, bool( nState > m_nFirstState ) );
|
|
enableButtons( WZB_NEXT, bool( nState < m_nLastState ) );
|
|
if( isStateEnabled( nState ))
|
|
svt::RoadmapWizard::enterState(nState);
|
|
}
|
|
|
|
bool CreationWizard::isClosable()
|
|
{
|
|
//@todo
|
|
return m_bIsClosable;
|
|
}
|
|
|
|
void CreationWizard::setInvalidPage( TabPage * /* pTabPage */ )
|
|
{
|
|
m_bCanTravel = false;
|
|
}
|
|
|
|
void CreationWizard::setValidPage( TabPage * /* pTabPage */ )
|
|
{
|
|
m_bCanTravel = true;
|
|
}
|
|
|
|
String CreationWizard::getStateDisplayName( WizardState nState )
|
|
{
|
|
USHORT nResId = 0;
|
|
switch( nState )
|
|
{
|
|
case STATE_CHARTTYPE:
|
|
nResId = STR_PAGE_CHARTTYPE;
|
|
break;
|
|
case STATE_SIMPLE_RANGE:
|
|
nResId = STR_PAGE_DATA_RANGE;
|
|
break;
|
|
case STATE_DATA_SERIES:
|
|
nResId = STR_OBJECT_DATASERIES_PLURAL;
|
|
break;
|
|
case STATE_OBJECTS:
|
|
nResId = STR_PAGE_CHART_ELEMENTS;
|
|
break;
|
|
#ifdef LOCATION_PAGE
|
|
case STATE_LOCATION:
|
|
nResId = STR_PAGE_CHART_LOCATION;
|
|
break;
|
|
#endif
|
|
default:
|
|
break;
|
|
}
|
|
return String(SchResId(nResId));
|
|
}
|
|
|
|
//.............................................................................
|
|
} //namespace chart
|
|
//.............................................................................
|