Files
libreoffice/chart2/source/controller/dialogs/tp_DataSource.hxx

208 lines
6.2 KiB
C++
Raw Normal View History

INTEGRATION: CWS chart2mst3 (1.1.2); FILE ADDED 2007/02/27 16:28:00 bm 1.1.2.17: #i71233# disable dialog commit when there are invalid ranges or series with missing mandatory roles 2007/02/27 13:45:31 bm 1.1.2.16: Disable controls and tabs when invalid ranges were entered 2007/02/09 12:31:18 bm 1.1.2.15: implement adaptions for different look in wizard and stand-alone source data dialog, according to spec FlexibleSourceRangeSelection 2006/12/05 23:45:17 iha 1.1.2.14: #i71675# enable set data label range for xy charts 2006/10/24 11:55:16 bm 1.1.2.13: enable range chooser in Calc 2006/06/28 11:18:32 dr 1.1.2.12: clean up tab order of controls 2005/11/14 17:54:33 iha 1.1.2.11: don't update model again at end of execute as this was done already - undo is done outside of the dialog 2005/10/11 09:20:16 bm 1.1.2.10: license header change 2005/05/12 20:02:17 sab 1.1.2.9: get access to ranges 2005/05/09 09:50:56 bm 1.1.2.8: moved parts of API to data namespace 2005/04/19 14:34:41 bm 1.1.2.7: fixing the data source/range chooser dialogs 2005/04/15 14:48:08 bm 1.1.2.6: data source and range choose dialog rework 2004/06/29 12:21:54 bm 1.1.2.5: shared data for range chooser and data source tab pages 2004/06/17 10:03:25 bm 1.1.2.4: data source dialog is a tab dialog now using the same tabpages as the wizard 2004/05/27 15:54:21 iha 1.1.2.3: #i20344# provide charttype template 2004/05/26 13:18:40 bm 1.1.2.2: dialog behaviour improvements 2004/05/24 17:36:32 bm 1.1.2.1: Flexible Source Range Dialog became a tab page nowsource/controller/dialogs/tp_DataSource.src
2007-05-22 16:45:11 +00:00
/*************************************************************************
*
* OpenOffice.org - a multi-platform office productivity suite
*
* $RCSfile: tp_DataSource.hxx,v $
*
* $Revision: 1.2 $
*
* last change: $Author: vg $ $Date: 2007-05-22 17:45:11 $
*
* 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
*
************************************************************************/
#ifndef CHART2_DATASOURCETABPAGE_HXX
#define CHART2_DATASOURCETABPAGE_HXX
#ifndef _SVTOOLS_WIZARDMACHINE_HXX_
#include <svtools/wizardmachine.hxx>
#endif
#include "DialogModel.hxx"
#include "TabPageNotifiable.hxx"
// header for class Edit
#ifndef _SV_EDIT_HXX
#include <vcl/edit.hxx>
#endif
// header for class ListBox
#ifndef _SV_LSTBOX_HXX
#include <vcl/lstbox.hxx>
#endif
// header for class PushButton, OKButton, CancelButton, HelpButton
#ifndef _SV_BUTTON_HXX
#include <vcl/button.hxx>
#endif
// header for class FixedText, FixedLine
#ifndef _SV_FIXED_HXX
#include <vcl/fixed.hxx>
#endif
// header for class SvTabListBox
#ifndef _SVTABBX_HXX
#include <svtools/svtabbx.hxx>
#endif
// header for class SvTreeListBox
#ifndef _SVTREEBOX_HXX
#include <svtools/svtreebx.hxx>
#endif
#ifndef _COM_SUN_STAR_CHART2_XCHARTDOCUMENT_HPP_
#include <com/sun/star/chart2/XChartDocument.hpp>
#endif
#ifndef _COM_SUN_STAR_CHART2_XDIAGRAM_HPP_
#include <com/sun/star/chart2/XDiagram.hpp>
#endif
#ifndef _COM_SUN_STAR_CHART2_DATA_XDATAPROVIDER_HPP_
#include <com/sun/star/chart2/data/XDataProvider.hpp>
#endif
#ifndef _COM_SUN_STAR_CHART2_XDATASERIES_HPP_
#include <com/sun/star/chart2/XDataSeries.hpp>
#endif
#ifndef _COM_SUN_STAR_SHEET_XRANGESELECTION_HPP_
#include <com/sun/star/sheet/XRangeSelection.hpp>
#endif
#include <utility>
#include <vector>
#include <memory>
#include "RangeSelectionListener.hxx"
#include "RangeSelectionButton.hxx"
namespace com { namespace sun { namespace star {
namespace chart2 {
class XChartType;
}}}}
namespace chart
{
class ChartTypeTemplateProvider;
class DialogModel;
class DataSourceTabPage :
public ::svt::OWizardPage,
public RangeSelectionListenerParent
{
public:
explicit DataSourceTabPage(
Window * pParent,
DialogModel & rDialogModel,
ChartTypeTemplateProvider* pTemplateProvider,
Dialog * pParentDialog,
bool bHideDescription = false );
virtual ~DataSourceTabPage();
// OWizardPage
virtual void ActivatePage();
virtual void initializePage();
DECL_LINK( SeriesSelectionChangedHdl, void* );
DECL_LINK( RoleSelectionChangedHdl, void* );
DECL_LINK( MainRangeButtonClickedHdl, void* );
DECL_LINK( CategoriesRangeButtonClickedHdl, void* );
DECL_LINK( AddButtonClickedHdl, void* );
DECL_LINK( RemoveButtonClickedHdl, void* );
DECL_LINK( RangeModifiedHdl, void* );
DECL_LINK( CategoriesRangeModifiedHdl, void* );
DECL_LINK( UpButtonClickedHdl, void* );
DECL_LINK( DownButtonClickedHdl, void* );
// ____ RangeSelectionListenerParent ____
virtual void listeningFinished( const ::rtl::OUString & rNewRange );
virtual void disposingRangeSelection();
void updateControlState();
protected:
/** updates the internal data according to the content of the given edit
field. If pField is 0, all relevant fields are used
@return
<TRUE/> if the text from the field is a valid format to the internal
data was valid
*/
bool updateModelFromControl( Edit * pField = 0 );
/// disable all controls (while Calc range chooser is active)
void disableAll();
::com::sun::star::uno::Reference< ::com::sun::star::sheet::XRangeSelectionListener >
getSelectionRangeListener();
/** @return </TRUE>, if the edit field contains a valid range entry. if no
XCellRangesAccess can be obtained, </TRUE> is returned.
*/
bool isRangeFieldContentValid( Edit & rEdit );
/** @return </TRUE>, if the tab-page is in a consistent (commitable) state
*/
bool isValid();
void setDirty();
bool isDirty() const;
void updateControlsFromDialogModel();
void fillSeriesListBox();
void fillRoleListBox();
private:
FixedText m_aFT_CAPTION;
FixedText m_aFT_SERIES;
::std::auto_ptr< SvTreeListBox > m_apLB_SERIES;
PushButton m_aBTN_ADD;
PushButton m_aBTN_REMOVE;
PushButton m_aBTN_UP;
PushButton m_aBTN_DOWN;
FixedText m_aFT_ROLE;
SvTabListBox m_aLB_ROLE;
FixedText m_aFT_RANGE;
Edit m_aEDT_RANGE;
RangeSelectionButton m_aIMB_RANGE_MAIN;
FixedText m_aFT_CATEGORIES;
FixedText m_aFT_DATALABELS;//used for xy charts
Edit m_aEDT_CATEGORIES;
RangeSelectionButton m_aIMB_RANGE_CAT;
::rtl::OUString m_aFixedTextRange;
ChartTypeTemplateProvider * m_pTemplateProvider;
DialogModel & m_rDialogModel;
Edit * m_pCurrentRangeChoosingField;
bool m_bIsDirty;
sal_Int32 m_nLastChartTypeGroupIndex;
Dialog * m_pParentDialog;
TabPageNotifiable * m_pTabPageNotifiable;
};
} // namespace chart
// CHART2_DATASOURCETABPAGE_HXX
#endif