summaryrefslogtreecommitdiff
path: root/reportdesign/source/core/sdr
diff options
context:
space:
mode:
authorMichael Stahl <mstahl@redhat.com>2012-01-28 20:52:10 +0100
committerMichael Stahl <mstahl@redhat.com>2012-01-28 20:52:10 +0100
commit00a6c3c148e4c0e867816b4c361abb19d9ece7eb (patch)
tree9e9f67205cd5b72f1031721273e1534a3a1e5b0f /reportdesign/source/core/sdr
parent28068f42895821cbfc399fe50c9888c566dbdc4d (diff)
replace obsolete "master" branch with README that points at new repoHEADmaster-deletedmaster
Diffstat (limited to 'reportdesign/source/core/sdr')
-rw-r--r--reportdesign/source/core/sdr/ModuleHelper.cxx142
-rw-r--r--reportdesign/source/core/sdr/PropertyForward.cxx209
-rw-r--r--reportdesign/source/core/sdr/ReportDrawPage.cxx158
-rw-r--r--reportdesign/source/core/sdr/ReportUndoFactory.cxx183
-rw-r--r--reportdesign/source/core/sdr/RptModel.cxx225
-rw-r--r--reportdesign/source/core/sdr/RptObject.cxx1271
-rw-r--r--reportdesign/source/core/sdr/RptObjectListener.cxx91
-rw-r--r--reportdesign/source/core/sdr/RptPage.cxx231
-rw-r--r--reportdesign/source/core/sdr/UndoActions.cxx451
-rw-r--r--reportdesign/source/core/sdr/UndoEnv.cxx697
-rw-r--r--reportdesign/source/core/sdr/formatnormalizer.cxx282
-rw-r--r--reportdesign/source/core/sdr/formatnormalizer.hxx97
12 files changed, 0 insertions, 4037 deletions
diff --git a/reportdesign/source/core/sdr/ModuleHelper.cxx b/reportdesign/source/core/sdr/ModuleHelper.cxx
deleted file mode 100644
index 5ad6abfa6..000000000
--- a/reportdesign/source/core/sdr/ModuleHelper.cxx
+++ /dev/null
@@ -1,142 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-#include "precompiled_reportdesign.hxx"
-#include "ModuleHelper.hxx"
-#include <comphelper/configurationhelper.hxx>
-#include <comphelper/processfactory.hxx>
-#include <osl/thread.h>
-#include <com/sun/star/util/XMacroExpander.hpp>
-#include <com/sun/star/beans/XPropertySet.hpp>
-#include <com/sun/star/uno/XComponentContext.hpp>
-#include <rtl/uri.hxx>
-#include <tools/debug.hxx>
-#include <svl/solar.hrc>
-
-#define EXPAND_PROTOCOL "vnd.sun.star.expand:"
-#define ENTER_MOD_METHOD() \
- ::osl::MutexGuard aGuard(s_aMutex); \
- ensureImpl()
-
-//.........................................................................
-namespace rptui
-{
-//.........................................................................
- using namespace ::com::sun::star;
-//=========================================================================
-//= OModuleImpl
-//=========================================================================
-/** implementation for <type>OModule</type>. not threadsafe, has to be guarded by it's owner
-*/
-class OModuleImpl
-{
- ResMgr* m_pRessources;
-
-public:
- /// ctor
- OModuleImpl();
- ~OModuleImpl();
-
- /// get the manager for the ressources of the module
- ResMgr* getResManager();
-};
-
-DBG_NAME( rpt_OModuleImpl )
-//-------------------------------------------------------------------------
-OModuleImpl::OModuleImpl()
- :m_pRessources(NULL)
-{
- DBG_CTOR( rpt_OModuleImpl,NULL);
-
-}
-
-//-------------------------------------------------------------------------
-OModuleImpl::~OModuleImpl()
-{
- if (m_pRessources)
- delete m_pRessources;
-
- DBG_DTOR( rpt_OModuleImpl,NULL);
-}
-
-//-------------------------------------------------------------------------
-ResMgr* OModuleImpl::getResManager()
-{
- // note that this method is not threadsafe, which counts for the whole class !
-
- if (!m_pRessources)
- {
- // create a manager with a fixed prefix
- m_pRessources = ResMgr::CreateResMgr("rptui");
- }
- return m_pRessources;
-}
-
-//=========================================================================
-//= OModule
-//=========================================================================
-::osl::Mutex OModule::s_aMutex;
-sal_Int32 OModule::s_nClients = 0;
-OModuleImpl* OModule::s_pImpl = NULL;
-//-------------------------------------------------------------------------
-ResMgr* OModule::getResManager()
-{
- ENTER_MOD_METHOD();
- return s_pImpl->getResManager();
-}
-
-//-------------------------------------------------------------------------
-void OModule::registerClient()
-{
- ::osl::MutexGuard aGuard(s_aMutex);
- ++s_nClients;
-}
-
-//-------------------------------------------------------------------------
-void OModule::revokeClient()
-{
- ::osl::MutexGuard aGuard(s_aMutex);
- if (!--s_nClients && s_pImpl)
- {
- delete s_pImpl;
- s_pImpl = NULL;
- }
-}
-
-//-------------------------------------------------------------------------
-void OModule::ensureImpl()
-{
- if (s_pImpl)
- return;
- s_pImpl = new OModuleImpl();
-}
-
-//.........................................................................
-} // namespace dbaui
-//.........................................................................
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/reportdesign/source/core/sdr/PropertyForward.cxx b/reportdesign/source/core/sdr/PropertyForward.cxx
deleted file mode 100644
index 7024af6b9..000000000
--- a/reportdesign/source/core/sdr/PropertyForward.cxx
+++ /dev/null
@@ -1,209 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-#include "precompiled_reportdesign.hxx"
-#include "PropertyForward.hxx"
-#include <com/sun/star/beans/PropertyValue.hpp>
-#include <com/sun/star/beans/PropertyAttribute.hpp>
-#include <comphelper/property.hxx>
-#include <com/sun/star/sdbcx/XAppend.hpp>
-#include <tools/debug.hxx>
-#include <tools/diagnose_ex.h>
-#include "corestrings.hrc"
-#include <o3tl/compat_functional.hxx>
-
-//........................................................................
-namespace rptui
-{
-//........................................................................
- using namespace ::com::sun::star::uno;
- using namespace ::com::sun::star::beans;
- using namespace reportdesign;
-
-DBG_NAME( rpt_OPropertyMediator )
-OPropertyMediator::OPropertyMediator(const Reference< XPropertySet>& _xSource
- ,const Reference< XPropertySet>& _xDest
- ,const TPropertyNamePair& _aNameMap
- ,sal_Bool _bReverse)
- : OPropertyForward_Base(m_aMutex)
- ,m_aNameMap(_aNameMap)
- ,m_xSource(_xSource)
- ,m_xDest(_xDest)
- ,m_bInChange(sal_False)
-{
- DBG_CTOR( rpt_OPropertyMediator,NULL);
- osl_incrementInterlockedCount(&m_refCount);
- OSL_ENSURE(m_xDest.is(),"Dest is NULL!");
- OSL_ENSURE(m_xSource.is(),"Source is NULL!");
- if ( m_xDest.is() && m_xSource.is() )
- {
- try
- {
- m_xDestInfo = m_xDest->getPropertySetInfo();
- m_xSourceInfo = m_xSource->getPropertySetInfo();
- if ( _bReverse )
- {
- ::comphelper::copyProperties(m_xDest,m_xSource);
- TPropertyNamePair::iterator aIter = m_aNameMap.begin();
- TPropertyNamePair::iterator aEnd = m_aNameMap.end();
- for (; aIter != aEnd; ++aIter)
- {
- Property aProp = m_xSourceInfo->getPropertyByName(aIter->first);
- if (0 == (aProp.Attributes & PropertyAttribute::READONLY))
- {
- Any aValue = _xDest->getPropertyValue(aIter->second.first);
- if ( 0 != (aProp.Attributes & PropertyAttribute::MAYBEVOID) || aValue.hasValue() )
- _xSource->setPropertyValue(aIter->first,aIter->second.second->operator()(aIter->second.first,aValue));
- }
- }
- }
- else
- {
- ::comphelper::copyProperties(m_xSource,m_xDest);
- TPropertyNamePair::iterator aIter = m_aNameMap.begin();
- TPropertyNamePair::iterator aEnd = m_aNameMap.end();
- for (; aIter != aEnd; ++aIter)
- _xDest->setPropertyValue(aIter->second.first,aIter->second.second->operator()(aIter->second.first,_xSource->getPropertyValue(aIter->first)));
- }
- startListening();
- }
- catch(Exception& e)
- {
- DBG_UNHANDLED_EXCEPTION();
- (void)e;
- }
- }
- osl_decrementInterlockedCount(&m_refCount);
-}
-// -----------------------------------------------------------------------------
-OPropertyMediator::~OPropertyMediator()
-{
- DBG_DTOR( rpt_OPropertyMediator,NULL);
-}
-// -----------------------------------------------------------------------------
-void SAL_CALL OPropertyMediator::propertyChange( const PropertyChangeEvent& evt ) throw(RuntimeException)
-{
- ::osl::MutexGuard aGuard(m_aMutex);
- if ( !m_bInChange )
- {
- m_bInChange = sal_True;
- try
- {
- sal_Bool bDest = (evt.Source == m_xDest);
- Reference<XPropertySet> xProp = bDest ? m_xSource : m_xDest;
- Reference<XPropertySetInfo> xPropInfo = bDest ? m_xSourceInfo : m_xDestInfo;
- if ( xProp.is() )
- {
- if ( xPropInfo.is() )
- {
- if ( xPropInfo->hasPropertyByName(evt.PropertyName) )
- xProp->setPropertyValue(evt.PropertyName,evt.NewValue);
- else
- {
- TPropertyNamePair::iterator aFind = m_aNameMap.find(evt.PropertyName);
- ::rtl::OUString sPropName;
- if ( aFind != m_aNameMap.end() )
- sPropName = aFind->second.first;
- else
- {
- aFind = ::std::find_if(
- m_aNameMap.begin(),
- m_aNameMap.end(),
- ::o3tl::compose1(
- ::std::bind2nd(::std::equal_to< ::rtl::OUString >(), evt.PropertyName),
- ::o3tl::compose1(::o3tl::select1st<TPropertyConverter>(),::o3tl::select2nd<TPropertyNamePair::value_type>())
- )
- );
- if ( aFind != m_aNameMap.end() )
- sPropName = aFind->first;
- }
- if ( sPropName.getLength() && xPropInfo->hasPropertyByName(sPropName) )
- xProp->setPropertyValue(sPropName,aFind->second.second->operator()(sPropName,evt.NewValue));
- else if ( evt.PropertyName == PROPERTY_CHARFONTNAME
- || evt.PropertyName == PROPERTY_CHARFONTSTYLENAME
- || evt.PropertyName == PROPERTY_CHARSTRIKEOUT
- || evt.PropertyName == PROPERTY_CHARWORDMODE
- || evt.PropertyName == PROPERTY_CHARROTATION
- || evt.PropertyName == PROPERTY_CHARSCALEWIDTH
- || evt.PropertyName == PROPERTY_CHARFONTFAMILY
- || evt.PropertyName == PROPERTY_CHARFONTCHARSET
- || evt.PropertyName == PROPERTY_CHARFONTPITCH
- || evt.PropertyName == PROPERTY_CHARHEIGHT
- || evt.PropertyName == PROPERTY_CHARUNDERLINE
- || evt.PropertyName == PROPERTY_CHARWEIGHT
- || evt.PropertyName == PROPERTY_CHARPOSTURE)
- {
- xProp->setPropertyValue(PROPERTY_FONTDESCRIPTOR,m_xSource->getPropertyValue(PROPERTY_FONTDESCRIPTOR));
- }
- }
- }
- }
- }
- catch(Exception&)
- {
- OSL_FAIL("Exception catched!");
- }
- m_bInChange = sal_False;
- }
-}
-// -----------------------------------------------------------------------------
-void SAL_CALL OPropertyMediator::disposing( const ::com::sun::star::lang::EventObject& /*_rSource*/ ) throw (RuntimeException)
-{
- ::osl::MutexGuard aGuard(m_aMutex);
- disposing();
-}
-// -----------------------------------------------------------------------------
-void SAL_CALL OPropertyMediator::disposing()
-{
- stopListening();
- m_xSource.clear();
- m_xSourceInfo.clear();
- m_xDest.clear();
- m_xDestInfo.clear();
-}
-// -----------------------------------------------------------------------------
-void OPropertyMediator::stopListening()
-{
- if ( m_xSource.is() )
- m_xSource->removePropertyChangeListener(::rtl::OUString(), this);
- if ( m_xDest.is() )
- m_xDest->removePropertyChangeListener(::rtl::OUString(), this);
-}
-// -----------------------------------------------------------------------------
-void OPropertyMediator::startListening()
-{
- if ( m_xSource.is() )
- m_xSource->addPropertyChangeListener(::rtl::OUString(), this);
- if ( m_xDest.is() )
- m_xDest->addPropertyChangeListener(::rtl::OUString(), this);
-}
-// -----------------------------------------------------------------------------
-//........................................................................
-} // namespace dbaccess
-//........................................................................
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/reportdesign/source/core/sdr/ReportDrawPage.cxx b/reportdesign/source/core/sdr/ReportDrawPage.cxx
deleted file mode 100644
index 6ce5a8e01..000000000
--- a/reportdesign/source/core/sdr/ReportDrawPage.cxx
+++ /dev/null
@@ -1,158 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-#include "precompiled_reportdesign.hxx"
-#include "ReportDrawPage.hxx"
-#include "RptObject.hxx"
-#include "RptModel.hxx"
-#include "RptDef.hxx"
-#include "corestrings.hrc"
-#include <comphelper/mimeconfighelper.hxx>
-#include <comphelper/classids.hxx>
-#include <comphelper/embeddedobjectcontainer.hxx>
-#include <comphelper/documentconstants.hxx>
-
-#include <svx/svdmodel.hxx>
-#include <com/sun/star/report/XFixedLine.hpp>
-#include <com/sun/star/beans/NamedValue.hpp>
-
-#include <tools/diagnose_ex.h>
-#include <svx/unoshape.hxx>
-
-namespace reportdesign
-{
- using namespace ::com::sun::star;
- using namespace rptui;
-
-OReportDrawPage::OReportDrawPage(SdrPage* _pPage
- ,const uno::Reference< report::XSection >& _xSection)
-: SvxDrawPage(_pPage)
-,m_xSection(_xSection)
-{
-}
-
-SdrObject* OReportDrawPage::_CreateSdrObject( const uno::Reference< drawing::XShape > & xDescr ) throw ()
-{
- uno::Reference< report::XReportComponent> xReportComponent(xDescr,uno::UNO_QUERY);
- if ( xReportComponent.is() )
- return OObjectBase::createObject(xReportComponent);
- return SvxDrawPage::_CreateSdrObject( xDescr );
-}
-
-uno::Reference< drawing::XShape > OReportDrawPage::_CreateShape( SdrObject *pObj ) const throw ()
-{
- OObjectBase* pBaseObj = dynamic_cast<OObjectBase*>(pObj);
- if ( !pBaseObj )
- return SvxDrawPage::_CreateShape( pObj );
-
- uno::Reference< report::XSection> xSection = m_xSection;
- uno::Reference< lang::XMultiServiceFactory> xFactory;
- if ( xSection.is() )
- xFactory.set(xSection->getReportDefinition(),uno::UNO_QUERY);
- uno::Reference< drawing::XShape > xRet;
- uno::Reference< drawing::XShape > xShape;
- if ( xFactory.is() )
- {
- bool bChangeOrientation = false;
- ::rtl::OUString sServiceName = pBaseObj->getServiceName();
- OSL_ENSURE(sServiceName.getLength(),"No Service Name given!");
-
- if ( pObj->ISA(OUnoObject) )
- {
- OUnoObject* pUnoObj = dynamic_cast<OUnoObject*>(pObj);
- if ( pUnoObj->GetObjIdentifier() == OBJ_DLG_FIXEDTEXT )
- {
- uno::Reference<beans::XPropertySet> xControlModel(pUnoObj->GetUnoControlModel(),uno::UNO_QUERY);
- if ( xControlModel.is() )
- xControlModel->setPropertyValue( PROPERTY_MULTILINE,uno::makeAny(sal_True));
- }
- else
- bChangeOrientation = pUnoObj->GetObjIdentifier() == OBJ_DLG_HFIXEDLINE;
- SvxShapeControl* pShape = new SvxShapeControl( pObj );
- xShape.set(*pShape,uno::UNO_QUERY);
- pShape->setShapeKind(pObj->GetObjIdentifier());
- }
- else if ( pObj->ISA(OCustomShape) )
- {
- SvxCustomShape* pShape = new SvxCustomShape( pObj );
- uno::Reference < drawing::XEnhancedCustomShapeDefaulter > xShape2 = pShape;
- xShape.set(xShape2,uno::UNO_QUERY);
- pShape->setShapeKind(pObj->GetObjIdentifier());
- }
- else if ( pObj->ISA(SdrOle2Obj) )
- {
- SdrOle2Obj* pOle2Obj = dynamic_cast<SdrOle2Obj*>(pObj);
- if ( !pOle2Obj->GetObjRef().is() )
- {
- sal_Int64 nAspect = embed::Aspects::MSOLE_CONTENT;
- uno::Reference < embed::XEmbeddedObject > xObj;
- ::rtl::OUString sName;
- xObj = pObj->GetModel()->GetPersist()->getEmbeddedObjectContainer().CreateEmbeddedObject(
- ::comphelper::MimeConfigurationHelper::GetSequenceClassIDRepresentation(
- ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("80243D39-6741-46C5-926E-069164FF87BB"))), sName );
- OSL_ENSURE(xObj.is(),"Embedded Object could not be created!");
-
- /**************************************************
- * Das leere OLE-Objekt bekommt ein neues IPObj
- **************************************************/
- pObj->SetEmptyPresObj(sal_False);
- pOle2Obj->SetOutlinerParaObject(NULL);
- pOle2Obj->SetObjRef(xObj);
- pOle2Obj->SetPersistName(sName);
- pOle2Obj->SetName(sName);
- pOle2Obj->SetAspect(nAspect);
- Rectangle aRect = pOle2Obj->GetLogicRect();
-
- Size aTmp = aRect.GetSize();
- awt::Size aSz( aTmp.Width(), aTmp.Height() );
- xObj->setVisualAreaSize( nAspect, aSz );
- }
- SvxOle2Shape* pShape = new SvxOle2Shape( pObj );
- xShape.set(*pShape,uno::UNO_QUERY);
- pShape->setShapeKind(pObj->GetObjIdentifier());
- }
-
- if ( !xShape.is() )
- xShape.set( SvxDrawPage::_CreateShape( pObj ) );
-
- try
- {
- OReportModel* pRptModel = static_cast<OReportModel*>(pObj->GetModel());
- xRet.set( pRptModel->createShape(sServiceName,xShape,bChangeOrientation ? 0 : 1), uno::UNO_QUERY_THROW );
- }
- catch( const uno::Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- }
-
- return xRet;
-}
-
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/reportdesign/source/core/sdr/ReportUndoFactory.cxx b/reportdesign/source/core/sdr/ReportUndoFactory.cxx
deleted file mode 100644
index d0a69d11a..000000000
--- a/reportdesign/source/core/sdr/ReportUndoFactory.cxx
+++ /dev/null
@@ -1,183 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-#include "precompiled_reportdesign.hxx"
-#include "ReportUndoFactory.hxx"
-#include "RptObject.hxx"
-#include "UndoActions.hxx"
-#include "RptResId.hrc"
-
-namespace rptui
-{
- using namespace ::com::sun::star;
-// -----------------------------------------------------------------------------
-SdrUndoAction* lcl_createUndo(SdrObject& rObject,Action _eAction,sal_uInt16 _nCommentId)
-{
- OObjectBase* pObj = dynamic_cast<OObjectBase*>(&rObject);
- if ( !pObj )
- return NULL;
- uno::Reference< report::XReportComponent> xReportComponent = pObj->getReportComponent();
- uno::Reference< report::XSection> xSection = pObj->getSection();
- uno::Reference< report::XGroup> xGroup = xSection->getGroup();
- SdrUndoAction* pUndo = NULL;
- if ( xGroup.is() )
- pUndo = new OUndoGroupSectionAction(*rObject.GetModel(),_eAction,OGroupHelper::getMemberFunction(xSection),xGroup,xReportComponent,_nCommentId);
- else
- pUndo = new OUndoReportSectionAction(*rObject.GetModel(),_eAction,OReportHelper::getMemberFunction(xSection),xSection->getReportDefinition(),xReportComponent,_nCommentId);
- return pUndo;
-}
-// -----------------------------------------------------------------------------
-DBG_NAME( rpt_OReportUndoFactory )
-// -----------------------------------------------------------------------------
-OReportUndoFactory::OReportUndoFactory() : m_pUndoFactory(new SdrUndoFactory)
-{
- DBG_CTOR( rpt_OReportUndoFactory,NULL);
-}
-// -----------------------------------------------------------------------------
-OReportUndoFactory::~OReportUndoFactory()
-{
- DBG_DTOR( rpt_OReportUndoFactory,NULL);
-}
-///////////////////////////////////////////////////////////////////////
-// shapes
-SdrUndoAction* OReportUndoFactory::CreateUndoMoveObject( SdrObject& rObject )
-{
- return m_pUndoFactory->CreateUndoMoveObject( rObject );
-}
-
-SdrUndoAction* OReportUndoFactory::CreateUndoMoveObject( SdrObject& rObject, const Size& rDist )
-{
- return m_pUndoFactory->CreateUndoMoveObject( rObject, rDist );
-}
-
-SdrUndoAction* OReportUndoFactory::CreateUndoGeoObject( SdrObject& rObject )
-{
- return m_pUndoFactory->CreateUndoGeoObject( rObject );
-}
-
-SdrUndoAction* OReportUndoFactory::CreateUndoAttrObject( SdrObject& rObject, bool bStyleSheet1, bool bSaveText )
-{
- return m_pUndoFactory->CreateUndoAttrObject( rObject, bStyleSheet1 ? sal_True : sal_False, bSaveText ? sal_True : sal_False );
-}
-
-SdrUndoAction* OReportUndoFactory::CreateUndoRemoveObject( SdrObject& rObject, bool bOrdNumDirect )
-{
- return m_pUndoFactory->CreateUndoRemoveObject( rObject, bOrdNumDirect ? sal_True : sal_False );
-}
-
-SdrUndoAction* OReportUndoFactory::CreateUndoInsertObject( SdrObject& rObject, bool /*bOrdNumDirect*/ )
-{
- return lcl_createUndo(rObject,rptui::Inserted,RID_STR_UNDO_INSERT_CONTROL);
-}
-
-SdrUndoAction* OReportUndoFactory::CreateUndoDeleteObject( SdrObject& rObject, bool /*bOrdNumDirect*/ )
-{
- return lcl_createUndo(rObject,rptui::Removed,RID_STR_UNDO_DELETE_CONTROL);
-}
-
-SdrUndoAction* OReportUndoFactory::CreateUndoNewObject( SdrObject& rObject, bool /*bOrdNumDirect*/ )
-{
- return lcl_createUndo(rObject,rptui::Inserted,RID_STR_UNDO_INSERT_CONTROL);
-}
-
-SdrUndoAction* OReportUndoFactory::CreateUndoCopyObject( SdrObject& rObject, bool bOrdNumDirect )
-{
- return m_pUndoFactory->CreateUndoCopyObject( rObject, bOrdNumDirect ? sal_True : sal_False );
-}
-
-SdrUndoAction* OReportUndoFactory::CreateUndoObjectOrdNum( SdrObject& rObject, sal_uInt32 nOldOrdNum1, sal_uInt32 nNewOrdNum1)
-{
- return m_pUndoFactory->CreateUndoObjectOrdNum( rObject, nOldOrdNum1, nNewOrdNum1 );
-}
-
-SdrUndoAction* OReportUndoFactory::CreateUndoReplaceObject( SdrObject& rOldObject, SdrObject& rNewObject, bool bOrdNumDirect )
-{
- return m_pUndoFactory->CreateUndoReplaceObject( rOldObject, rNewObject, bOrdNumDirect ? sal_True : sal_False );
-}
-
-SdrUndoAction* OReportUndoFactory::CreateUndoObjectLayerChange( SdrObject& rObject, SdrLayerID aOldLayer, SdrLayerID aNewLayer )
-{
- return m_pUndoFactory->CreateUndoObjectLayerChange( rObject, aOldLayer, aNewLayer );
-}
-
-SdrUndoAction* OReportUndoFactory::CreateUndoObjectSetText( SdrObject& rNewObj, sal_Int32 nText )
-{
- return m_pUndoFactory->CreateUndoObjectSetText( rNewObj, nText );
-}
-
-// layer
-SdrUndoAction* OReportUndoFactory::CreateUndoNewLayer(sal_uInt16 nLayerNum, SdrLayerAdmin& rNewLayerAdmin, SdrModel& rNewModel)
-{
- return m_pUndoFactory->CreateUndoNewLayer( nLayerNum, rNewLayerAdmin, rNewModel );
-}
-
-SdrUndoAction* OReportUndoFactory::CreateUndoDeleteLayer(sal_uInt16 nLayerNum, SdrLayerAdmin& rNewLayerAdmin, SdrModel& rNewModel)
-{
- return m_pUndoFactory->CreateUndoDeleteLayer( nLayerNum, rNewLayerAdmin, rNewModel );
-}
-
-SdrUndoAction* OReportUndoFactory::CreateUndoMoveLayer(sal_uInt16 nLayerNum, SdrLayerAdmin& rNewLayerAdmin, SdrModel& rNewModel, sal_uInt16 nNeuPos1)
-{
- return m_pUndoFactory->CreateUndoMoveLayer( nLayerNum, rNewLayerAdmin, rNewModel, nNeuPos1 );
-}
-
-// page
-SdrUndoAction* OReportUndoFactory::CreateUndoDeletePage(SdrPage& rPage)
-{
- return m_pUndoFactory->CreateUndoDeletePage( rPage );
-}
-
-SdrUndoAction* OReportUndoFactory::CreateUndoNewPage(SdrPage& rPage)
-{
- return m_pUndoFactory->CreateUndoNewPage( rPage );
-}
-
-SdrUndoAction* OReportUndoFactory::CreateUndoCopyPage(SdrPage& rPage)
-{
- return m_pUndoFactory->CreateUndoCopyPage( rPage );
-}
-
-SdrUndoAction* OReportUndoFactory::CreateUndoSetPageNum(SdrPage& rNewPg, sal_uInt16 nOldPageNum1, sal_uInt16 nNewPageNum1)
-{
- return m_pUndoFactory->CreateUndoSetPageNum( rNewPg, nOldPageNum1, nNewPageNum1 );
-}
- // master page
-SdrUndoAction* OReportUndoFactory::CreateUndoPageRemoveMasterPage(SdrPage& rChangedPage)
-{
- return m_pUndoFactory->CreateUndoPageRemoveMasterPage( rChangedPage );
-}
-
-SdrUndoAction* OReportUndoFactory::CreateUndoPageChangeMasterPage(SdrPage& rChangedPage)
-{
- return m_pUndoFactory->CreateUndoPageChangeMasterPage(rChangedPage);
-}
-
-//==================================================================
-} //rptui
-//==================================================================
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/reportdesign/source/core/sdr/RptModel.cxx b/reportdesign/source/core/sdr/RptModel.cxx
deleted file mode 100644
index 26dddb617..000000000
--- a/reportdesign/source/core/sdr/RptModel.cxx
+++ /dev/null
@@ -1,225 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-#include "precompiled_reportdesign.hxx"
-
-#include "RptModel.hxx"
-#include "RptPage.hxx"
-#include <dbaccess/dbsubcomponentcontroller.hxx>
-#include <tools/debug.hxx>
-#include <unotools/pathoptions.hxx>
-
-#include "UndoActions.hxx"
-#include "UndoEnv.hxx"
-#include "ReportUndoFactory.hxx"
-#include "ReportDefinition.hxx"
-#define ITEMID_COLOR 1
-#define ITEMID_BRUSH 2
-#define ITEMID_FONT 3
-#define ITEMID_FONTHEIGHT 4
-
-#include <svx/tbcontrl.hxx>
-#include "rptui_slotid.hrc"
-#include "RptDef.hxx"
-#include "corestrings.hrc"
-#include "FixedLine.hxx"
-#include "FormattedField.hxx"
-#include "FixedText.hxx"
-#include "ImageControl.hxx"
-#include "Shape.hxx"
-
-namespace rptui
-{
-using namespace reportdesign;
-using namespace com::sun::star;
-DBG_NAME( rpt_OReportModel )
-TYPEINIT1(OReportModel,SdrModel);
-
-//----------------------------------------------------------------------------
-
-OReportModel::OReportModel(::reportdesign::OReportDefinition* _pReportDefinition) :
- SdrModel(SvtPathOptions().GetPalettePath(),NULL,_pReportDefinition)
- ,m_pController(NULL)
- ,m_pReportDefinition(_pReportDefinition)
-{
- DBG_CTOR( rpt_OReportModel,0);
- SetAllowShapePropertyChangeListener(true);
- m_pUndoEnv = new OXUndoEnvironment(*this);
- m_pUndoEnv->acquire();
- SetSdrUndoFactory(new OReportUndoFactory);
-}
-
-//----------------------------------------------------------------------------
-OReportModel::~OReportModel()
-{
- DBG_DTOR( rpt_OReportModel,0);
- detachController();
- m_pUndoEnv->release();
-}
-// -----------------------------------------------------------------------------
-void OReportModel::detachController()
-{
- m_pReportDefinition = NULL;
- m_pController = NULL;
- m_pUndoEnv->EndListening( *this );
- ClearUndoBuffer();
- m_pUndoEnv->Clear(OXUndoEnvironment::Accessor());
-}
-//----------------------------------------------------------------------------
-SdrPage* OReportModel::AllocPage(bool /*bMasterPage*/)
-{
- DBG_CHKTHIS( rpt_OReportModel, 0);
- OSL_FAIL("Who called me!");
- return NULL;
-}
-
-//----------------------------------------------------------------------------
-
-void OReportModel::SetChanged( sal_Bool bChanged )
-{
- SdrModel::SetChanged( bChanged );
- SetModified( bChanged );
-}
-
-//----------------------------------------------------------------------------
-
-Window* OReportModel::GetCurDocViewWin()
-{
- return 0;
-}
-
-//----------------------------------------------------------------------------
-OXUndoEnvironment& OReportModel::GetUndoEnv()
-{
- return *m_pUndoEnv;
-}
-//----------------------------------------------------------------------------
-void OReportModel::SetModified(sal_Bool _bModified)
-{
- if ( m_pController )
- m_pController->setModified(_bModified);
-}
-// -----------------------------------------------------------------------------
-SdrPage* OReportModel::RemovePage(sal_uInt16 nPgNum)
-{
- OReportPage* pPage = dynamic_cast<OReportPage*>(SdrModel::RemovePage(nPgNum));
- return pPage;
-}
-// -----------------------------------------------------------------------------
-OReportPage* OReportModel::createNewPage(const uno::Reference< report::XSection >& _xSection)
-{
- OReportPage* pPage = new OReportPage( *this ,_xSection);
- InsertPage(pPage);
- m_pUndoEnv->AddSection(_xSection);
- return pPage;
-}
-// -----------------------------------------------------------------------------
-OReportPage* OReportModel::getPage(const uno::Reference< report::XSection >& _xSection)
-{
- OReportPage* pPage = NULL;
- sal_uInt16 nCount = GetPageCount();
- for (sal_uInt16 i = 0; i < nCount && !pPage ; ++i)
- {
- OReportPage* pRptPage = PTR_CAST( OReportPage, GetPage(i) );
- if ( pRptPage && pRptPage->getSection() == _xSection )
- pPage = pRptPage;
- }
- return pPage;
-}
-// -----------------------------------------------------------------------------
-SvxNumType OReportModel::GetPageNumType() const
-{
- uno::Reference< report::XReportDefinition > xReportDefinition( getReportDefinition() );
- if ( xReportDefinition.is() )
- return (SvxNumType)getStyleProperty<sal_Int16>(xReportDefinition,reportdesign::PROPERTY_NUMBERINGTYPE);
- return SVX_ARABIC;
-}
-
-// -----------------------------------------------------------------------------
-uno::Reference< report::XReportDefinition > OReportModel::getReportDefinition() const
-{
- uno::Reference< report::XReportDefinition > xReportDefinition = m_pReportDefinition;
- OSL_ENSURE( xReportDefinition.is(), "OReportModel::getReportDefinition: invalid model at our controller!" );
- return xReportDefinition;
-}
-// -----------------------------------------------------------------------------
-uno::Reference< uno::XInterface > OReportModel::createUnoModel()
-{
- return uno::Reference< uno::XInterface >(getReportDefinition(),uno::UNO_QUERY);
-}
-// -----------------------------------------------------------------------------
-uno::Reference< uno::XInterface > OReportModel::createShape(const ::rtl::OUString& aServiceSpecifier,uno::Reference< drawing::XShape >& _rShape,sal_Int32 nOrientation)
-{
- uno::Reference< uno::XInterface > xRet;
- if ( _rShape.is() )
- {
- if ( aServiceSpecifier == SERVICE_FORMATTEDFIELD )
- {
- uno::Reference<report::XFormattedField> xProp = new OFormattedField(m_pReportDefinition->getContext(),m_pReportDefinition,_rShape);
- xRet = xProp;
- if ( _rShape.is() )
- throw uno::Exception();
- xProp->setPropertyValue( PROPERTY_FORMATSSUPPLIER, uno::makeAny(uno::Reference< util::XNumberFormatsSupplier >(*m_pReportDefinition,uno::UNO_QUERY)) );
- }
- else if ( aServiceSpecifier == SERVICE_FIXEDTEXT)
- {
- xRet = static_cast<cppu::OWeakObject*>(new OFixedText(m_pReportDefinition->getContext(),m_pReportDefinition,_rShape));
- if ( _rShape.is() )
- throw uno::Exception();
- }
- else if ( aServiceSpecifier == SERVICE_FIXEDLINE)
- {
- xRet = static_cast<cppu::OWeakObject*>(new OFixedLine(m_pReportDefinition->getContext(),m_pReportDefinition,_rShape,nOrientation));
- if ( _rShape.is() )
- throw uno::Exception();
- }
- else if ( aServiceSpecifier == SERVICE_IMAGECONTROL )
- {
- xRet = static_cast<cppu::OWeakObject*>(new OImageControl(m_pReportDefinition->getContext(),m_pReportDefinition,_rShape));
- if ( _rShape.is() )
- throw uno::Exception();
- }
- else if ( aServiceSpecifier == SERVICE_REPORTDEFINITION )
- {
- xRet = static_cast<cppu::OWeakObject*>(new OReportDefinition(m_pReportDefinition->getContext(),m_pReportDefinition,_rShape));
- if ( _rShape.is() )
- throw uno::Exception();
- }
- else if ( _rShape.is() )
- {
- xRet = static_cast<cppu::OWeakObject*>(new OShape(m_pReportDefinition->getContext(),m_pReportDefinition,_rShape,aServiceSpecifier));
- if ( _rShape.is() )
- throw uno::Exception();
- }
- }
- return xRet;
-}
-//==================================================================
-} //rptui
-//==================================================================
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/reportdesign/source/core/sdr/RptObject.cxx b/reportdesign/source/core/sdr/RptObject.cxx
deleted file mode 100644
index 8e2917653..000000000
--- a/reportdesign/source/core/sdr/RptObject.cxx
+++ /dev/null
@@ -1,1271 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-#include "precompiled_reportdesign.hxx"
-#include "RptObject.hxx"
-#include <vector>
-#include <algorithm>
-
-#include <RptDef.hxx>
-#include <svx/unoshape.hxx>
-#include "RptModel.hxx"
-#include "RptObjectListener.hxx"
-#include <toolkit/helper/vclunohelper.hxx>
-#include <toolkit/helper/convert.hxx>
-#include "RptPage.hxx"
-#include "corestrings.hrc"
-#include <dbaccess/dbsubcomponentcontroller.hxx>
-#include "ModuleHelper.hxx"
-
-#include <RptResId.hrc>
-#include <svx/xflclit.hxx>
-#include <svx/xlnclit.hxx>
-#include <svx/xlndsit.hxx>
-#include <svx/xlineit0.hxx>
-#include <svx/sderitm.hxx>
-#include <svx/xlnwtit.hxx>
-#include <svx/xlntrit.hxx>
-#include <com/sun/star/style/XStyle.hpp>
-#include <com/sun/star/awt/XTabControllerModel.hpp>
-#include <com/sun/star/awt/XUnoControlContainer.hpp>
-#include <com/sun/star/awt/XVclContainerPeer.hpp>
-#include <com/sun/star/awt/XWindow.hpp>
-#include <com/sun/star/awt/TextAlign.hpp>
-#include <com/sun/star/beans/XPropertySet.hpp>
-#include <com/sun/star/beans/PropertyAttribute.hpp>
-#include <com/sun/star/script/XScriptEventsSupplier.hpp>
-#include <com/sun/star/container/XContainer.hpp>
-#include <com/sun/star/lang/XServiceInfo.hpp>
-#include <com/sun/star/report/XShape.hpp>
-#include <com/sun/star/report/XFixedLine.hpp>
-#include <com/sun/star/chart/ChartDataRowSource.hpp>
-#include <com/sun/star/chart2/data/XDataReceiver.hpp>
-#include <com/sun/star/chart2/data/DatabaseDataProvider.hpp>
-#include <com/sun/star/chart2/XChartDocument.hpp>
-#include <com/sun/star/style/VerticalAlignment.hpp>
-#include <com/sun/star/style/ParagraphAdjust.hpp>
-#include <com/sun/star/report/XFormattedField.hpp>
-#include <comphelper/genericpropertyset.hxx>
-#include <comphelper/processfactory.hxx>
-#include <comphelper/property.hxx>
-#include <tools/diagnose_ex.h>
-#include "PropertyForward.hxx"
-#include <connectivity/dbtools.hxx>
-#include <connectivity/dbconversion.hxx>
-#include "UndoActions.hxx"
-#include "UndoEnv.hxx"
-#include <algorithm>
-#include <functional>
-
-namespace rptui
-{
-
-using namespace ::com::sun::star;
-using namespace uno;
-using namespace beans;
-using namespace reportdesign;
-using namespace container;
-using namespace script;
-using namespace report;
-//----------------------------------------------------------------------------
-sal_uInt16 OObjectBase::getObjectType(const uno::Reference< report::XReportComponent>& _xComponent)
-{
- uno::Reference< lang::XServiceInfo > xServiceInfo( _xComponent , uno::UNO_QUERY );
- OSL_ENSURE(xServiceInfo.is(),"Who deletes the XServiceInfo interface!");
- if ( xServiceInfo.is() )
- {
- if ( xServiceInfo->supportsService( SERVICE_FIXEDTEXT ))
- return OBJ_DLG_FIXEDTEXT;
- if ( xServiceInfo->supportsService( SERVICE_FIXEDLINE ))
- {
- uno::Reference< report::XFixedLine> xFixedLine(_xComponent,uno::UNO_QUERY);
- return xFixedLine->getOrientation() ? OBJ_DLG_HFIXEDLINE : OBJ_DLG_VFIXEDLINE;
- }
- if ( xServiceInfo->supportsService( SERVICE_IMAGECONTROL))
- return OBJ_DLG_IMAGECONTROL;
- if ( xServiceInfo->supportsService( SERVICE_FORMATTEDFIELD ))
- return OBJ_DLG_FORMATTEDFIELD;
- if ( xServiceInfo->supportsService( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.drawing.OLE2Shape")) ) )
- return OBJ_OLE2;
- if ( xServiceInfo->supportsService( SERVICE_SHAPE ))
- return OBJ_CUSTOMSHAPE;
- if ( xServiceInfo->supportsService( SERVICE_REPORTDEFINITION ) )
- return OBJ_DLG_SUBREPORT;
- return OBJ_OLE2;
- }
- return 0;
-}
-// -----------------------------------------------------------------------------
-SdrObject* OObjectBase::createObject(const uno::Reference< report::XReportComponent>& _xComponent)
-{
- SdrObject* pNewObj = NULL;
- sal_uInt16 nType = OObjectBase::getObjectType(_xComponent);
- switch( nType )
- {
- case OBJ_DLG_FIXEDTEXT:
- {
- OUnoObject* pUnoObj = new OUnoObject( _xComponent
- ,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.form.component.FixedText"))
- ,OBJ_DLG_FIXEDTEXT);
- pNewObj = pUnoObj;
-
- uno::Reference<beans::XPropertySet> xControlModel(pUnoObj->GetUnoControlModel(),uno::UNO_QUERY);
- if ( xControlModel.is() )
- xControlModel->setPropertyValue( PROPERTY_MULTILINE,uno::makeAny(sal_True));
- }
- break;
- case OBJ_DLG_IMAGECONTROL:
- pNewObj = new OUnoObject(_xComponent
- ,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.form.component.DatabaseImageControl"))
- ,OBJ_DLG_IMAGECONTROL);
- break;
- case OBJ_DLG_FORMATTEDFIELD:
- pNewObj = new OUnoObject( _xComponent
- ,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.form.component.FormattedField"))
- ,OBJ_DLG_FORMATTEDFIELD);
- break;
- case OBJ_DLG_HFIXEDLINE:
- case OBJ_DLG_VFIXEDLINE:
- pNewObj = new OUnoObject( _xComponent
- ,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.UnoControlFixedLineModel"))
- ,nType);
- break;
- case OBJ_CUSTOMSHAPE:
- pNewObj = OCustomShape::Create( _xComponent );
- try
- {
- sal_Bool bOpaque = sal_False;
- _xComponent->getPropertyValue(PROPERTY_OPAQUE) >>= bOpaque;
- pNewObj->SetLayer(bOpaque ? RPT_LAYER_FRONT : RPT_LAYER_BACK);
- }
- catch(const uno::Exception&)
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- break;
- case OBJ_DLG_SUBREPORT:
- case OBJ_OLE2:
- pNewObj = OOle2Obj::Create( _xComponent,nType );
- break;
- default:
- OSL_FAIL("Unknown object id");
- break;
- }
-
- ensureSdrObjectOwnership( _xComponent );
-
- return pNewObj;
-}
-// -----------------------------------------------------------------------------
-namespace
-{
- class ParaAdjust : public AnyConverter
- {
- public:
- virtual ::com::sun::star::uno::Any operator() (const ::rtl::OUString& _sPropertyName,const ::com::sun::star::uno::Any& lhs) const
- {
- uno::Any aRet;
- if ( _sPropertyName.equalsAscii(PROPERTY_PARAADJUST) )
- {
- sal_Int16 nTextAlign = 0;
- lhs >>= nTextAlign;
- switch(nTextAlign)
- {
- case awt::TextAlign::LEFT:
- nTextAlign = style::ParagraphAdjust_LEFT;
- break;
- case awt::TextAlign::CENTER:
- nTextAlign = style::ParagraphAdjust_CENTER;
- break;
- case awt::TextAlign::RIGHT:
- nTextAlign = style::ParagraphAdjust_RIGHT;
- break;
- default:
- OSL_FAIL("Illegal text alignment value!");
- break;
- }
- aRet <<= (style::ParagraphAdjust)nTextAlign;
- }
- else
- {
- sal_Int16 nTextAlign = 0;
- sal_Int16 eParagraphAdjust = 0;
- lhs >>= eParagraphAdjust;
- switch(eParagraphAdjust)
- {
- case style::ParagraphAdjust_LEFT:
- case style::ParagraphAdjust_BLOCK:
- nTextAlign = awt::TextAlign::LEFT;
- break;
- case style::ParagraphAdjust_CENTER:
- nTextAlign = awt::TextAlign::CENTER;
- break;
- case style::ParagraphAdjust_RIGHT:
- nTextAlign = awt::TextAlign::RIGHT;
- break;
- default:
- OSL_FAIL("Illegal text alignment value!");
- break;
- }
- aRet <<= nTextAlign;
- }
- return aRet;
- }
- };
-}
-// -----------------------------------------------------------------------------
-const TPropertyNamePair& getPropertyNameMap(sal_uInt16 _nObjectId)
-{
- switch(_nObjectId)
- {
- case OBJ_DLG_IMAGECONTROL:
- {
- static TPropertyNamePair s_aNameMap;
- if ( s_aNameMap.empty() )
- {
- ::boost::shared_ptr<AnyConverter> aNoConverter(new AnyConverter());
- s_aNameMap.insert(TPropertyNamePair::value_type(PROPERTY_CONTROLBACKGROUND,TPropertyConverter(PROPERTY_BACKGROUNDCOLOR,aNoConverter)));
- s_aNameMap.insert(TPropertyNamePair::value_type(PROPERTY_CONTROLBORDER,TPropertyConverter(PROPERTY_BORDER,aNoConverter)));
- s_aNameMap.insert(TPropertyNamePair::value_type(PROPERTY_CONTROLBORDERCOLOR,TPropertyConverter(PROPERTY_BORDERCOLOR,aNoConverter)));
- }
- return s_aNameMap;
- }
-
- case OBJ_DLG_FIXEDTEXT:
- {
- static TPropertyNamePair s_aNameMap;
- if ( s_aNameMap.empty() )
- {
- ::boost::shared_ptr<AnyConverter> aNoConverter(new AnyConverter());
- s_aNameMap.insert(TPropertyNamePair::value_type(PROPERTY_CHARCOLOR,TPropertyConverter(PROPERTY_TEXTCOLOR,aNoConverter)));
- s_aNameMap.insert(TPropertyNamePair::value_type(PROPERTY_CONTROLBACKGROUND,TPropertyConverter(PROPERTY_BACKGROUNDCOLOR,aNoConverter)));
- s_aNameMap.insert(TPropertyNamePair::value_type(PROPERTY_CHARUNDERLINECOLOR,TPropertyConverter(PROPERTY_TEXTLINECOLOR,aNoConverter)));
- s_aNameMap.insert(TPropertyNamePair::value_type(PROPERTY_CHARRELIEF,TPropertyConverter(PROPERTY_FONTRELIEF,aNoConverter)));
- s_aNameMap.insert(TPropertyNamePair::value_type(PROPERTY_CHARFONTHEIGHT,TPropertyConverter(PROPERTY_FONTHEIGHT,aNoConverter)));
- s_aNameMap.insert(TPropertyNamePair::value_type(PROPERTY_CHARSTRIKEOUT,TPropertyConverter(PROPERTY_FONTSTRIKEOUT,aNoConverter)));
- s_aNameMap.insert(TPropertyNamePair::value_type(PROPERTY_CONTROLTEXTEMPHASISMARK,TPropertyConverter(PROPERTY_FONTEMPHASISMARK,aNoConverter)));
- s_aNameMap.insert(TPropertyNamePair::value_type(PROPERTY_CONTROLBORDER,TPropertyConverter(PROPERTY_BORDER,aNoConverter)));
- s_aNameMap.insert(TPropertyNamePair::value_type(PROPERTY_CONTROLBORDERCOLOR,TPropertyConverter(PROPERTY_BORDERCOLOR,aNoConverter)));
-
- ::boost::shared_ptr<AnyConverter> aParaAdjust(new ParaAdjust());
- s_aNameMap.insert(TPropertyNamePair::value_type(PROPERTY_PARAADJUST,TPropertyConverter(PROPERTY_ALIGN,aParaAdjust)));
- }
- return s_aNameMap;
- }
- case OBJ_DLG_FORMATTEDFIELD:
- {
- static TPropertyNamePair s_aNameMap;
- if ( s_aNameMap.empty() )
- {
- ::boost::shared_ptr<AnyConverter> aNoConverter(new AnyConverter());
- s_aNameMap.insert(TPropertyNamePair::value_type(PROPERTY_CHARCOLOR,TPropertyConverter(PROPERTY_TEXTCOLOR,aNoConverter)));
- s_aNameMap.insert(TPropertyNamePair::value_type(PROPERTY_CONTROLBACKGROUND,TPropertyConverter(PROPERTY_BACKGROUNDCOLOR,aNoConverter)));
- s_aNameMap.insert(TPropertyNamePair::value_type(PROPERTY_CHARUNDERLINECOLOR,TPropertyConverter(PROPERTY_TEXTLINECOLOR,aNoConverter)));
- s_aNameMap.insert(TPropertyNamePair::value_type(PROPERTY_CHARRELIEF,TPropertyConverter(PROPERTY_FONTRELIEF,aNoConverter)));
- s_aNameMap.insert(TPropertyNamePair::value_type(PROPERTY_CHARFONTHEIGHT,TPropertyConverter(PROPERTY_FONTHEIGHT,aNoConverter)));
- s_aNameMap.insert(TPropertyNamePair::value_type(PROPERTY_CHARSTRIKEOUT,TPropertyConverter(PROPERTY_FONTSTRIKEOUT,aNoConverter)));
- s_aNameMap.insert(TPropertyNamePair::value_type(PROPERTY_CONTROLTEXTEMPHASISMARK,TPropertyConverter(PROPERTY_FONTEMPHASISMARK,aNoConverter)));
- s_aNameMap.insert(TPropertyNamePair::value_type(PROPERTY_CONTROLBORDER,TPropertyConverter(PROPERTY_BORDER,aNoConverter)));
- s_aNameMap.insert(TPropertyNamePair::value_type(PROPERTY_CONTROLBORDERCOLOR,TPropertyConverter(PROPERTY_BORDERCOLOR,aNoConverter)));
- ::boost::shared_ptr<AnyConverter> aParaAdjust(new ParaAdjust());
- s_aNameMap.insert(TPropertyNamePair::value_type(PROPERTY_PARAADJUST,TPropertyConverter(PROPERTY_ALIGN,aParaAdjust)));
- }
- return s_aNameMap;
- }
-
- case OBJ_CUSTOMSHAPE:
- {
- static TPropertyNamePair s_aNameMap;
- if ( s_aNameMap.empty() )
- {
- ::boost::shared_ptr<AnyConverter> aNoConverter(new AnyConverter());
- s_aNameMap.insert(TPropertyNamePair::value_type(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("FillColor")),TPropertyConverter(PROPERTY_CONTROLBACKGROUND,aNoConverter)));
- s_aNameMap.insert(TPropertyNamePair::value_type(PROPERTY_PARAADJUST,TPropertyConverter(PROPERTY_ALIGN,aNoConverter)));
- }
- return s_aNameMap;
- }
-
- default:
- break;
- }
- static TPropertyNamePair s_aEmptyNameMap;
- return s_aEmptyNameMap;
-}
-// -----------------------------------------------------------------------------
-
-DBG_NAME( rpt_OObjectBase )
-OObjectBase::OObjectBase(const uno::Reference< report::XReportComponent>& _xComponent)
-:m_bIsListening(sal_False)
-{
- DBG_CTOR( rpt_OObjectBase,NULL);
- m_xReportComponent = _xComponent;
-}
-//----------------------------------------------------------------------------
-OObjectBase::OObjectBase(const ::rtl::OUString& _sComponentName)
-:m_sComponentName(_sComponentName)
-,m_bIsListening(sal_False)
-{
- DBG_CTOR( rpt_OObjectBase,NULL);
-}
-//----------------------------------------------------------------------------
-OObjectBase::~OObjectBase()
-{
- DBG_DTOR( rpt_OObjectBase,NULL);
- m_xMediator.reset();
- if ( isListening() )
- EndListening();
- m_xReportComponent.clear();
-}
-// -----------------------------------------------------------------------------
-uno::Reference< report::XSection> OObjectBase::getSection() const
-{
- uno::Reference< report::XSection> xSection;
- OReportPage* pPage = dynamic_cast<OReportPage*>(GetImplPage());
- if ( pPage )
- xSection = pPage->getSection();
- return xSection;
-}
-// -----------------------------------------------------------------------------
-uno::Reference< report::XReportComponent> OObjectBase::getReportComponent() const
-{
- return m_xReportComponent;
-}
-// -----------------------------------------------------------------------------
-uno::Reference< beans::XPropertySet> OObjectBase::getAwtComponent()
-{
- return uno::Reference< beans::XPropertySet>();
-}
-//----------------------------------------------------------------------------
-void OObjectBase::StartListening()
-{
- DBG_CHKTHIS( rpt_OObjectBase,NULL);
- OSL_ENSURE(!isListening(), "OUnoObject::StartListening: already listening!");
-
- if ( !isListening() && m_xReportComponent.is() )
- {
- m_bIsListening = sal_True;
-
- if ( !m_xPropertyChangeListener.is() )
- {
- m_xPropertyChangeListener = new OObjectListener( this );
- // register listener to all properties
- m_xReportComponent->addPropertyChangeListener( ::rtl::OUString() , m_xPropertyChangeListener );
- }
- }
-}
-//----------------------------------------------------------------------------
-void OObjectBase::EndListening(sal_Bool /*bRemoveListener*/)
-{
- DBG_CHKTHIS( rpt_OObjectBase,NULL);
- OSL_ENSURE(!m_xReportComponent.is() || isListening(), "OUnoObject::EndListening: not listening currently!");
-
- m_bIsListening = sal_False;
- if ( isListening() && m_xReportComponent.is() )
- {
- // XPropertyChangeListener
- if ( m_xPropertyChangeListener.is() )
- {
- // remove listener
- try
- {
- m_xReportComponent->removePropertyChangeListener( ::rtl::OUString() , m_xPropertyChangeListener );
- }
- catch(uno::Exception)
- {
- OSL_FAIL("OObjectBase::EndListening: Exception caught!");
- }
- }
- m_xPropertyChangeListener.clear();
- }
-}
-//----------------------------------------------------------------------------
-void OObjectBase::SetPropsFromRect(const Rectangle& _rRect)
-{
- DBG_CHKTHIS( rpt_OObjectBase,NULL);
- // set properties
- OReportPage* pPage = dynamic_cast<OReportPage*>(GetImplPage());
- if ( pPage && !_rRect.IsEmpty() )
- {
- uno::Reference<report::XSection> xSection = pPage->getSection();
- if ( xSection.is() && (static_cast<sal_uInt32>(_rRect.getHeight() + _rRect.Top()) > xSection->getHeight()) )
- xSection->setHeight(_rRect.getHeight() + _rRect.Top());
-
- // TODO
- //pModel->GetRefDevice()->Invalidate(INVALIDATE_CHILDREN);
- }
-}
-//----------------------------------------------------------------------------
-void OObjectBase::_propertyChange( const beans::PropertyChangeEvent& /*evt*/ ) throw( uno::RuntimeException)
-{
- DBG_CHKTHIS( rpt_OObjectBase,NULL);
-}
-//----------------------------------------------------------------------------
-void OObjectBase::SetObjectItemHelper(const SfxPoolItem& /*rItem*/)
-{
- // do nothing
-}
-
-//----------------------------------------------------------------------------
-sal_Bool OObjectBase::supportsService( const ::rtl::OUString& _sServiceName ) const
-{
- DBG_CHKTHIS( rpt_OObjectBase,NULL);
- sal_Bool bSupports = sal_False;
-
- Reference< lang::XServiceInfo > xServiceInfo( m_xReportComponent , UNO_QUERY );
- // TODO: cache xServiceInfo as member?
- if ( xServiceInfo.is() )
- bSupports = xServiceInfo->supportsService( _sServiceName );
-
- return bSupports;
-}
-
-//----------------------------------------------------------------------------
-void OObjectBase::ensureSdrObjectOwnership( const uno::Reference< uno::XInterface >& _rxShape )
-{
- // UNDO in the report designer is implemented at the level of the XShapes, not
- // at the level of SdrObjects. That is, if an object is removed from the report
- // design, then this happens by removing the XShape from the UNO DrawPage, and
- // putting this XShape (resp. the ReportComponent which wraps it) into an UNDO
- // action.
- // Unfortunately, the SvxDrawPage implementation usually deletes SdrObjects
- // which are removed from it, which is deadly for us. To prevent this,
- // we give the XShape implementation the ownership of the SdrObject, which
- // ensures the SvxDrawPage won't delete it.
- SvxShape* pShape = SvxShape::getImplementation( _rxShape );
- OSL_ENSURE( pShape, "OObjectBase::ensureSdrObjectOwnership: can't access the SvxShape!" );
- if ( pShape )
- {
- OSL_ENSURE( !pShape->HasSdrObjectOwnership(), "OObjectBase::ensureSdrObjectOwnership: called twice?" );
- pShape->TakeSdrObjectOwnership();
- }
-}
-
-//----------------------------------------------------------------------------
-uno::Reference< uno::XInterface > OObjectBase::getUnoShapeOf( SdrObject& _rSdrObject )
-{
- uno::Reference< uno::XInterface > xShape( _rSdrObject.getWeakUnoShape() );
- if ( xShape.is() )
- return xShape;
-
- xShape = _rSdrObject.SdrObject::getUnoShape();
- if ( !xShape.is() )
- return xShape;
-
- ensureSdrObjectOwnership( xShape );
-
- m_xKeepShapeAlive = xShape;
- return xShape;
-}
-
-//----------------------------------------------------------------------------
-TYPEINIT1(OCustomShape, SdrObjCustomShape);
-DBG_NAME( rpt_OCustomShape );
-OCustomShape::OCustomShape(const uno::Reference< report::XReportComponent>& _xComponent
- )
- :SdrObjCustomShape()
- ,OObjectBase(_xComponent)
-{
- DBG_CTOR( rpt_OCustomShape, NULL);
- impl_setUnoShape( uno::Reference< uno::XInterface >(_xComponent,uno::UNO_QUERY) );
- m_bIsListening = sal_True;
-}
-//----------------------------------------------------------------------------
-OCustomShape::OCustomShape(const ::rtl::OUString& _sComponentName)
- :SdrObjCustomShape()
- ,OObjectBase(_sComponentName)
-{
- DBG_CTOR( rpt_OCustomShape, NULL);
- m_bIsListening = sal_True;
-}
-
-//----------------------------------------------------------------------------
-OCustomShape::~OCustomShape()
-{
- DBG_DTOR( rpt_OCustomShape, NULL);
-}
-// -----------------------------------------------------------------------------
-sal_uInt16 OCustomShape::GetObjIdentifier() const
-{
- return sal_uInt16(OBJ_CUSTOMSHAPE);
-}
-//----------------------------------------------------------------------------
-sal_uInt32 OCustomShape::GetObjInventor() const
-{
- return ReportInventor;
-}
-//----------------------------------------------------------------------------
-SdrPage* OCustomShape::GetImplPage() const
-{
- return GetPage();
-}
-//----------------------------------------------------------------------------
-void OCustomShape::SetSnapRectImpl(const Rectangle& _rRect)
-{
- SetSnapRect( _rRect );
-}
-//----------------------------------------------------------------------------
-sal_Int32 OCustomShape::GetStep() const
-{
- // get step property
- sal_Int32 nStep = 0;
- OSL_FAIL("Who called me!");
- return nStep;
-}
-//----------------------------------------------------------------------------
-void OCustomShape::NbcMove( const Size& rSize )
-{
- if ( m_bIsListening )
- {
- m_bIsListening = sal_False;
-
- if ( m_xReportComponent.is() )
- {
- OReportModel* pRptModel = static_cast<OReportModel*>(GetModel());
- OXUndoEnvironment::OUndoEnvLock aLock(pRptModel->GetUndoEnv());
- m_xReportComponent->setPositionX(m_xReportComponent->getPositionX() + rSize.A());
- m_xReportComponent->setPositionY(m_xReportComponent->getPositionY() + rSize.B());
- }
-
- // set geometry properties
- SetPropsFromRect(GetSnapRect());
-
- m_bIsListening = sal_True;
- }
- else
- SdrObjCustomShape::NbcMove( rSize );
-}
-//----------------------------------------------------------------------------
-void OCustomShape::NbcResize(const Point& rRef, const Fraction& xFract, const Fraction& yFract)
-{
- SdrObjCustomShape::NbcResize( rRef, xFract, yFract );
-
- SetPropsFromRect(GetSnapRect());
-}
-//----------------------------------------------------------------------------
-void OCustomShape::NbcSetLogicRect(const Rectangle& rRect)
-{
- SdrObjCustomShape::NbcSetLogicRect(rRect);
- SetPropsFromRect(rRect);
-}
-//----------------------------------------------------------------------------
-bool OCustomShape::EndCreate(SdrDragStat& rStat, SdrCreateCmd eCmd)
-{
- bool bResult = SdrObjCustomShape::EndCreate(rStat, eCmd);
- if ( bResult )
- {
- OReportModel* pRptModel = static_cast<OReportModel*>(GetModel());
- if ( pRptModel )
- {
- OXUndoEnvironment::OUndoEnvLock aLock(pRptModel->GetUndoEnv());
- if ( !m_xReportComponent.is() )
- m_xReportComponent.set(getUnoShape(),uno::UNO_QUERY);
- }
- SetPropsFromRect(GetSnapRect());
- }
-
- return bResult;
-}
-
-//----------------------------------------------------------------------------
-void OCustomShape::SetObjectItemHelper(const SfxPoolItem& rItem)
-{
- SetObjectItem(rItem);
- // TODO
- //getSectionWindow()->getView()->AdjustMarkHdl();
-}
-
-// -----------------------------------------------------------------------------
-uno::Reference< beans::XPropertySet> OCustomShape::getAwtComponent()
-{
- return uno::Reference< beans::XPropertySet>(m_xReportComponent,uno::UNO_QUERY);
-}
-
-//----------------------------------------------------------------------------
-uno::Reference< uno::XInterface > OCustomShape::getUnoShape()
-{
- uno::Reference< uno::XInterface> xShape = OObjectBase::getUnoShapeOf( *this );
- if ( !m_xReportComponent.is() )
- {
- OReportModel* pRptModel = static_cast<OReportModel*>(GetModel());
- OXUndoEnvironment::OUndoEnvLock aLock(pRptModel->GetUndoEnv());
- m_xReportComponent.set(xShape,uno::UNO_QUERY);
- }
- return xShape;
-}
-
-//----------------------------------------------------------------------------
-//----------------------------------------------------------------------------
-TYPEINIT1(OUnoObject, SdrUnoObj);
-DBG_NAME( rpt_OUnoObject );
-//----------------------------------------------------------------------------
-OUnoObject::OUnoObject(const ::rtl::OUString& _sComponentName
- ,const ::rtl::OUString& rModelName
- ,sal_uInt16 _nObjectType)
- :SdrUnoObj(rModelName, sal_True)
- ,OObjectBase(_sComponentName)
- ,m_nObjectType(_nObjectType)
-{
- DBG_CTOR( rpt_OUnoObject, NULL);
- if ( rModelName.getLength() )
- impl_initializeModel_nothrow();
-}
-//----------------------------------------------------------------------------
-OUnoObject::OUnoObject(const uno::Reference< report::XReportComponent>& _xComponent
- ,const ::rtl::OUString& rModelName
- ,sal_uInt16 _nObjectType)
- :SdrUnoObj(rModelName, sal_True)
- ,OObjectBase(_xComponent)
- ,m_nObjectType(_nObjectType)
-{
- DBG_CTOR( rpt_OUnoObject, NULL);
- impl_setUnoShape( uno::Reference< uno::XInterface >( _xComponent, uno::UNO_QUERY ) );
-
- if ( rModelName.getLength() )
- impl_initializeModel_nothrow();
-
- if ( rModelName.getLength() )
- impl_initializeModel_nothrow();
-}
-//----------------------------------------------------------------------------
-OUnoObject::~OUnoObject()
-{
- DBG_DTOR( rpt_OUnoObject, NULL);
-}
-// -----------------------------------------------------------------------------
-void OUnoObject::impl_initializeModel_nothrow()
-{
- try
- {
- Reference< XFormattedField > xFormatted( m_xReportComponent, UNO_QUERY );
- if ( xFormatted.is() )
- {
- const Reference< XPropertySet > xModelProps( GetUnoControlModel(), UNO_QUERY_THROW );
- const ::rtl::OUString sTreatAsNumberProperty = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "TreatAsNumber" ) );
- xModelProps->setPropertyValue( sTreatAsNumberProperty, makeAny( sal_False ) );
- xModelProps->setPropertyValue( PROPERTY_VERTICALALIGN,m_xReportComponent->getPropertyValue(PROPERTY_VERTICALALIGN));
- }
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
-}
-// -----------------------------------------------------------------------------
-void OUnoObject::impl_setReportComponent_nothrow()
-{
- if ( m_xReportComponent.is() )
- return;
-
- OReportModel* pReportModel = static_cast<OReportModel*>(GetModel());
- OSL_ENSURE( pReportModel, "OUnoObject::impl_setReportComponent_nothrow: no report model!" );
- if ( !pReportModel )
- return;
-
- OXUndoEnvironment::OUndoEnvLock aLock( pReportModel->GetUndoEnv() );
- m_xReportComponent.set(getUnoShape(),uno::UNO_QUERY);
-
- impl_initializeModel_nothrow();
-}
-// -----------------------------------------------------------------------------
-sal_uInt16 OUnoObject::GetObjIdentifier() const
-{
- return sal_uInt16(m_nObjectType);
-}
-//----------------------------------------------------------------------------
-sal_uInt32 OUnoObject::GetObjInventor() const
-{
- return ReportInventor;
-}
-//----------------------------------------------------------------------------
-SdrPage* OUnoObject::GetImplPage() const
-{
- DBG_CHKTHIS( rpt_OUnoObject,NULL);
- return GetPage();
-}
-//----------------------------------------------------------------------------
-void OUnoObject::SetSnapRectImpl(const Rectangle& _rRect)
-{
- DBG_CHKTHIS( rpt_OUnoObject,NULL);
- SetSnapRect( _rRect );
-}
-//----------------------------------------------------------------------------
-sal_Int32 OUnoObject::GetStep() const
-{
- DBG_CHKTHIS( rpt_OUnoObject,NULL);
- // get step property
- sal_Int32 nStep = 0;
- OSL_FAIL("Who called me!");
- return nStep;
-}
-
-//----------------------------------------------------------------------------
-void OUnoObject::NbcMove( const Size& rSize )
-{
- DBG_CHKTHIS( rpt_OUnoObject,NULL);
-
- if ( m_bIsListening )
- {
- // stop listening
- OObjectBase::EndListening(sal_False);
-
- bool bPositionFixed = false;
- Size aUndoSize(0,0);
- bool bUndoMode = false;
- if ( m_xReportComponent.is() )
- {
- OReportModel* pRptModel = static_cast<OReportModel*>(GetModel());
- if (pRptModel->GetUndoEnv().IsUndoMode())
- {
- // if we are locked from outside, then we must not handle wrong moves, we are in UNDO mode
- bUndoMode = true;
- }
- OXUndoEnvironment::OUndoEnvLock aLock(pRptModel->GetUndoEnv());
-
- // LLA: why there exists getPositionX and getPositionY and NOT getPosition() which return a Point?
- int nNewX = m_xReportComponent->getPositionX() + rSize.A();
- m_xReportComponent->setPositionX(nNewX);
- int nNewY = m_xReportComponent->getPositionY() + rSize.B();
- if (nNewY < 0 && !bUndoMode)
- {
- aUndoSize.B() = abs(nNewY);
- bPositionFixed = true;
- nNewY = 0;
- }
- m_xReportComponent->setPositionY(nNewY);
- }
- if (bPositionFixed)
- {
- GetModel()->AddUndo(GetModel()->GetSdrUndoFactory().CreateUndoMoveObject(*this, aUndoSize));
- }
- // set geometry properties
- SetPropsFromRect(GetLogicRect());
-
- // start listening
- OObjectBase::StartListening();
- }
- else
- SdrUnoObj::NbcMove( rSize );
-}
-
-//----------------------------------------------------------------------------
-
-void OUnoObject::NbcResize(const Point& rRef, const Fraction& xFract, const Fraction& yFract)
-{
- DBG_CHKTHIS( rpt_OUnoObject,NULL);
- SdrUnoObj::NbcResize( rRef, xFract, yFract );
-
- // stop listening
- OObjectBase::EndListening(sal_False);
-
- // set geometry properties
- SetPropsFromRect(GetLogicRect());
-
- // start listening
- OObjectBase::StartListening();
-}
-//----------------------------------------------------------------------------
-void OUnoObject::NbcSetLogicRect(const Rectangle& rRect)
-{
- SdrUnoObj::NbcSetLogicRect(rRect);
- // stop listening
- OObjectBase::EndListening(sal_False);
-
- // set geometry properties
- SetPropsFromRect(rRect);
-
- // start listening
- OObjectBase::StartListening();
-}
-//----------------------------------------------------------------------------
-
-bool OUnoObject::EndCreate(SdrDragStat& rStat, SdrCreateCmd eCmd)
-{
- DBG_CHKTHIS( rpt_OUnoObject,NULL);
- bool bResult = SdrUnoObj::EndCreate(rStat, eCmd);
- if ( bResult )
- {
- impl_setReportComponent_nothrow();
- // set labels
- if ( m_xReportComponent.is() )
- {
- try
- {
- if ( supportsService( SERVICE_FIXEDTEXT ) )
- {
- m_xReportComponent->setPropertyValue( PROPERTY_LABEL, uno::makeAny(GetDefaultName(this)) );
- }
- }
- catch(const uno::Exception&)
- {
- DBG_UNHANDLED_EXCEPTION();
- }
-
- impl_initializeModel_nothrow();
- }
- // set geometry properties
- SetPropsFromRect(GetLogicRect());
- }
-
- return bResult;
-}
-//----------------------------------------------------------------------------
-::rtl::OUString OUnoObject::GetDefaultName(const OUnoObject* _pObj)
-{
- sal_uInt16 nResId = 0;
- ::rtl::OUString aDefaultName = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("HERE WE HAVE TO INSERT OUR NAME!"));
- if ( _pObj->supportsService( SERVICE_FIXEDTEXT ) )
- {
- nResId = RID_STR_CLASS_FIXEDTEXT;
- }
- else if ( _pObj->supportsService( SERVICE_FIXEDLINE ) )
- {
- nResId = RID_STR_CLASS_FIXEDLINE;
- }
- else if ( _pObj->supportsService( SERVICE_IMAGECONTROL ) )
- {
- nResId = RID_STR_CLASS_IMAGECONTROL;
- }
- else if ( _pObj->supportsService( SERVICE_FORMATTEDFIELD ) )
- {
- nResId = RID_STR_CLASS_FORMATTEDFIELD;
- }
-
- if (nResId)
- aDefaultName = ::rtl::OUString( String(ModuleRes(nResId)) );
-
- return aDefaultName;
-}
-
-// -----------------------------------------------------------------------------
-void OUnoObject::_propertyChange( const beans::PropertyChangeEvent& evt ) throw( uno::RuntimeException)
-{
- DBG_CHKTHIS( rpt_OUnoObject,NULL);
- OObjectBase::_propertyChange(evt);
- if (isListening())
- {
- if ( evt.PropertyName == PROPERTY_CHARCOLOR )
- {
- Reference<XPropertySet> xControlModel(GetUnoControlModel(),uno::UNO_QUERY);
- if ( xControlModel.is() )
- {
- OObjectBase::EndListening(sal_False);
- try
- {
- xControlModel->setPropertyValue(PROPERTY_TEXTCOLOR,evt.NewValue);
- }
- catch(uno::Exception&)
- {
- }
- OObjectBase::StartListening();
- }
- }
- else if ( evt.PropertyName == PROPERTY_NAME )
- {
- Reference<XPropertySet> xControlModel(GetUnoControlModel(),uno::UNO_QUERY);
- if ( xControlModel.is() && xControlModel->getPropertySetInfo()->hasPropertyByName(PROPERTY_NAME) )
- {
- // get old name
- ::rtl::OUString aOldName;
- evt.OldValue >>= aOldName;
-
- // get new name
- ::rtl::OUString aNewName;
- evt.NewValue >>= aNewName;
-
- if ( !aNewName.equals(aOldName) )
- {
- // set old name property
- OObjectBase::EndListening(sal_False);
- if ( m_xMediator.is() )
- m_xMediator.get()->stopListening();
- try
- {
- xControlModel->setPropertyValue( PROPERTY_NAME, evt.NewValue );
- }
- catch(uno::Exception&)
- {
- }
- if ( m_xMediator.is() )
- m_xMediator.get()->startListening();
- OObjectBase::StartListening();
- }
- }
- }
- }
-}
-// -----------------------------------------------------------------------------
-void OUnoObject::CreateMediator(sal_Bool _bReverse)
-{
- if ( !m_xMediator.is() )
- {
- impl_setReportComponent_nothrow();
-
- Reference<XPropertySet> xControlModel(GetUnoControlModel(),uno::UNO_QUERY);
- if ( !m_xMediator.is() && m_xReportComponent.is() && xControlModel.is() )
- m_xMediator = TMediator::createFromQuery(new OPropertyMediator(m_xReportComponent.get(),xControlModel,getPropertyNameMap(GetObjIdentifier()),_bReverse));
- OObjectBase::StartListening();
- }
-}
-// -----------------------------------------------------------------------------
-uno::Reference< beans::XPropertySet> OUnoObject::getAwtComponent()
-{
- return Reference<XPropertySet>(GetUnoControlModel(),uno::UNO_QUERY);
-}
-
-// -----------------------------------------------------------------------------
-uno::Reference< uno::XInterface > OUnoObject::getUnoShape()
-{
- return OObjectBase::getUnoShapeOf( *this );
-}
-// -----------------------------------------------------------------------------
-OUnoObject* OUnoObject::Clone() const
-{
- OUnoObject* pClone = CloneHelper< OUnoObject >();
- if ( pClone )
- {
- Reference<XPropertySet> xSource(const_cast<OUnoObject*>(this)->getUnoShape(),uno::UNO_QUERY);
- Reference<XPropertySet> xDest(pClone->getUnoShape(),uno::UNO_QUERY);
- if ( xSource.is() && xDest.is() )
- comphelper::copyProperties(xSource.get(),xDest.get());
- }
- return pClone;
-}
-//----------------------------------------------------------------------------
-// OOle2Obj
-//----------------------------------------------------------------------------
-TYPEINIT1(OOle2Obj, SdrOle2Obj);
-DBG_NAME( rpt_OOle2Obj );
-OOle2Obj::OOle2Obj(const uno::Reference< report::XReportComponent>& _xComponent,sal_uInt16 _nType)
- :SdrOle2Obj()
- ,OObjectBase(_xComponent)
- ,m_nType(_nType)
- ,m_bOnlyOnce(true)
-{
- DBG_CTOR( rpt_OOle2Obj, NULL);
-
- impl_setUnoShape( uno::Reference< uno::XInterface >( _xComponent, uno::UNO_QUERY ) );
- m_bIsListening = sal_True;
-}
-//----------------------------------------------------------------------------
-OOle2Obj::OOle2Obj(const ::rtl::OUString& _sComponentName,sal_uInt16 _nType)
- :SdrOle2Obj()
- ,OObjectBase(_sComponentName)
- ,m_nType(_nType)
- ,m_bOnlyOnce(true)
-{
- DBG_CTOR( rpt_OOle2Obj, NULL);
- m_bIsListening = sal_True;
-}
-//----------------------------------------------------------------------------
-OOle2Obj::~OOle2Obj()
-{
- DBG_DTOR( rpt_OOle2Obj, NULL);
-}
-// -----------------------------------------------------------------------------
-sal_uInt16 OOle2Obj::GetObjIdentifier() const
-{
- return m_nType;
-}
-//----------------------------------------------------------------------------
-sal_uInt32 OOle2Obj::GetObjInventor() const
-{
- return ReportInventor;
-}
-//----------------------------------------------------------------------------
-SdrPage* OOle2Obj::GetImplPage() const
-{
- DBG_CHKTHIS( rpt_OOle2Obj,NULL);
- return GetPage();
-}
-//----------------------------------------------------------------------------
-void OOle2Obj::SetSnapRectImpl(const Rectangle& _rRect)
-{
- DBG_CHKTHIS( rpt_OOle2Obj,NULL);
- SetSnapRect( _rRect );
-}
-//----------------------------------------------------------------------------
-sal_Int32 OOle2Obj::GetStep() const
-{
- DBG_CHKTHIS( rpt_OOle2Obj,NULL);
- // get step property
- sal_Int32 nStep = 0;
- OSL_FAIL("Who called me!");
- return nStep;
-}
-
-//----------------------------------------------------------------------------
-void OOle2Obj::NbcMove( const Size& rSize )
-{
- DBG_CHKTHIS( rpt_OOle2Obj,NULL);
-
- if ( m_bIsListening )
- {
- // stop listening
- OObjectBase::EndListening(sal_False);
-
- bool bPositionFixed = false;
- Size aUndoSize(0,0);
- bool bUndoMode = false;
- if ( m_xReportComponent.is() )
- {
- OReportModel* pRptModel = static_cast<OReportModel*>(GetModel());
- if (pRptModel->GetUndoEnv().IsUndoMode())
- {
- // if we are locked from outside, then we must not handle wrong moves, we are in UNDO mode
- bUndoMode = true;
- }
- OXUndoEnvironment::OUndoEnvLock aLock(pRptModel->GetUndoEnv());
-
- // LLA: why there exists getPositionX and getPositionY and NOT getPosition() which return a Point?
- int nNewX = m_xReportComponent->getPositionX() + rSize.A();
- // can this hinder us to set components outside the area?
- // if (nNewX < 0)
- // {
- // nNewX = 0;
- // }
- m_xReportComponent->setPositionX(nNewX);
- int nNewY = m_xReportComponent->getPositionY() + rSize.B();
- if (nNewY < 0 && !bUndoMode)
- {
- aUndoSize.B() = abs(nNewY);
- bPositionFixed = true;
- nNewY = 0;
- }
- m_xReportComponent->setPositionY(nNewY);
- }
- if (bPositionFixed)
- {
- GetModel()->AddUndo(GetModel()->GetSdrUndoFactory().CreateUndoMoveObject(*this, aUndoSize));
- }
- // set geometry properties
- SetPropsFromRect(GetLogicRect());
-
- // start listening
- OObjectBase::StartListening();
- }
- else
- SdrOle2Obj::NbcMove( rSize );
-}
-
-//----------------------------------------------------------------------------
-
-void OOle2Obj::NbcResize(const Point& rRef, const Fraction& xFract, const Fraction& yFract)
-{
- DBG_CHKTHIS( rpt_OOle2Obj,NULL);
- SdrOle2Obj::NbcResize( rRef, xFract, yFract );
-
- // stop listening
- OObjectBase::EndListening(sal_False);
-
- // set geometry properties
- SetPropsFromRect(GetLogicRect());
-
- // start listening
- OObjectBase::StartListening();
-}
-//----------------------------------------------------------------------------
-void OOle2Obj::NbcSetLogicRect(const Rectangle& rRect)
-{
- SdrOle2Obj::NbcSetLogicRect(rRect);
- // stop listening
- OObjectBase::EndListening(sal_False);
-
- // set geometry properties
- SetPropsFromRect(rRect);
-
- // start listening
- OObjectBase::StartListening();
-}
-//----------------------------------------------------------------------------
-
-bool OOle2Obj::EndCreate(SdrDragStat& rStat, SdrCreateCmd eCmd)
-{
- DBG_CHKTHIS( rpt_OOle2Obj,NULL);
- bool bResult = SdrOle2Obj::EndCreate(rStat, eCmd);
- if ( bResult )
- {
- OReportModel* pRptModel = static_cast<OReportModel*>(GetModel());
- if ( pRptModel )
- {
- OXUndoEnvironment::OUndoEnvLock aLock(pRptModel->GetUndoEnv());
- if ( !m_xReportComponent.is() )
- m_xReportComponent.set(getUnoShape(),uno::UNO_QUERY);
- }
- // set geometry properties
- SetPropsFromRect(GetLogicRect());
- }
-
- return bResult;
-}
-
-uno::Reference< beans::XPropertySet> OOle2Obj::getAwtComponent()
-{
- return uno::Reference< beans::XPropertySet>(m_xReportComponent,uno::UNO_QUERY);
-}
-
-// -----------------------------------------------------------------------------
-uno::Reference< uno::XInterface > OOle2Obj::getUnoShape()
-{
- uno::Reference< uno::XInterface> xShape = OObjectBase::getUnoShapeOf( *this );
- if ( !m_xReportComponent.is() )
- {
- OReportModel* pRptModel = static_cast<OReportModel*>(GetModel());
- OXUndoEnvironment::OUndoEnvLock aLock(pRptModel->GetUndoEnv());
- m_xReportComponent.set(xShape,uno::UNO_QUERY);
- }
- return xShape;
-}
-// -----------------------------------------------------------------------------
-uno::Reference< chart2::data::XDatabaseDataProvider > lcl_getDataProvider(const uno::Reference < embed::XEmbeddedObject >& _xObj)
-{
- uno::Reference< chart2::data::XDatabaseDataProvider > xSource;
- uno::Reference< embed::XComponentSupplier > xCompSupp(_xObj,uno::UNO_QUERY);
- if( xCompSupp.is())
- {
- uno::Reference< chart2::XChartDocument> xChartDoc( xCompSupp->getComponent(), uno::UNO_QUERY );
- if ( xChartDoc.is() )
- {
- xSource.set(xChartDoc->getDataProvider(),uno::UNO_QUERY);
- }
- }
- return xSource;
-}
-// -----------------------------------------------------------------------------
-// Clone() soll eine komplette Kopie des Objektes erzeugen.
-OOle2Obj* OOle2Obj::Clone() const
-{
- OOle2Obj* pObj = CloneHelper< OOle2Obj >();
- OReportModel* pRptModel = static_cast<OReportModel*>(GetModel());
- svt::EmbeddedObjectRef::TryRunningState( pObj->GetObjRef() );
- pObj->impl_createDataProvider_nothrow(pRptModel->getReportDefinition().get());
-
- uno::Reference< chart2::data::XDatabaseDataProvider > xSource( lcl_getDataProvider(GetObjRef()) );
- uno::Reference< chart2::data::XDatabaseDataProvider > xDest( lcl_getDataProvider(pObj->GetObjRef()) );
- if ( xSource.is() && xDest.is() )
- comphelper::copyProperties(xSource.get(),xDest.get());
-
- pObj->initializeChart(pRptModel->getReportDefinition().get());
- return pObj;
-}
-// -----------------------------------------------------------------------------
-void OOle2Obj::impl_createDataProvider_nothrow(const uno::Reference< frame::XModel>& _xModel)
-{
- try
- {
- uno::Reference < embed::XEmbeddedObject > xObj = GetObjRef();
- uno::Reference< chart2::data::XDataReceiver > xReceiver;
- uno::Reference< embed::XComponentSupplier > xCompSupp( xObj, uno::UNO_QUERY );
- if( xCompSupp.is())
- xReceiver.set( xCompSupp->getComponent(), uno::UNO_QUERY );
- OSL_ASSERT( xReceiver.is());
- if( xReceiver.is() )
- {
- uno::Reference< lang::XMultiServiceFactory> xFac(_xModel,uno::UNO_QUERY);
- uno::Reference< chart2::data::XDatabaseDataProvider > xDataProvider( xFac->createInstance(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.chart2.data.DataProvider"))),uno::UNO_QUERY);
- xReceiver->attachDataProvider( xDataProvider.get() );
- }
- }
- catch(uno::Exception)
- {
- }
-}
-// -----------------------------------------------------------------------------
-void OOle2Obj::initializeOle()
-{
- if ( m_bOnlyOnce )
- {
- m_bOnlyOnce = false;
- uno::Reference < embed::XEmbeddedObject > xObj = GetObjRef();
- OReportModel* pRptModel = static_cast<OReportModel*>(GetModel());
- pRptModel->GetUndoEnv().AddElement(lcl_getDataProvider(xObj));
-
- uno::Reference< embed::XComponentSupplier > xCompSupp( xObj, uno::UNO_QUERY );
- if( xCompSupp.is() )
- {
- uno::Reference< beans::XPropertySet > xChartProps( xCompSupp->getComponent(), uno::UNO_QUERY );
- if ( xChartProps.is() )
- xChartProps->setPropertyValue(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("NullDate")),uno::makeAny(util::DateTime(0,0,0,0,1,1,1900)));
- }
- }
-}
-// -----------------------------------------------------------------------------
-void OOle2Obj::initializeChart( const uno::Reference< frame::XModel>& _xModel)
-{
- uno::Reference < embed::XEmbeddedObject > xObj = GetObjRef();
- uno::Reference< chart2::data::XDataReceiver > xReceiver;
- uno::Reference< embed::XComponentSupplier > xCompSupp( xObj, uno::UNO_QUERY );
- if( xCompSupp.is())
- xReceiver.set( xCompSupp->getComponent(), uno::UNO_QUERY );
- OSL_ASSERT( xReceiver.is());
- if( xReceiver.is() )
- {
- // lock the model to suppress any internal updates
- uno::Reference< frame::XModel > xChartModel( xReceiver, uno::UNO_QUERY );
- if( xChartModel.is() )
- xChartModel->lockControllers();
-
- if ( !lcl_getDataProvider(xObj).is() )
- impl_createDataProvider_nothrow(_xModel);
-
- OReportModel* pRptModel = static_cast<OReportModel*>(GetModel());
- pRptModel->GetUndoEnv().AddElement(lcl_getDataProvider(xObj));
-
- ::comphelper::NamedValueCollection aArgs;
- aArgs.put( "CellRangeRepresentation", uno::makeAny( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "all" ) ) ) );
- aArgs.put( "HasCategories", uno::makeAny( sal_True ) );
- aArgs.put( "FirstCellAsLabel", uno::makeAny( sal_True ) );
- aArgs.put( "DataRowSource", uno::makeAny( chart::ChartDataRowSource_COLUMNS ) );
- xReceiver->setArguments( aArgs.getPropertyValues() );
-
- if( xChartModel.is() )
- xChartModel->unlockControllers();
- }
-}
-// -----------------------------------------------------------------------------
-uno::Reference< style::XStyle> getUsedStyle(const uno::Reference< report::XReportDefinition>& _xReport)
-{
- uno::Reference<container::XNameAccess> xStyles = _xReport->getStyleFamilies();
- uno::Reference<container::XNameAccess> xPageStyles(xStyles->getByName(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("PageStyles"))),uno::UNO_QUERY);
-
- uno::Reference< style::XStyle> xReturn;
- uno::Sequence< ::rtl::OUString> aSeq = xPageStyles->getElementNames();
- const ::rtl::OUString* pIter = aSeq.getConstArray();
- const ::rtl::OUString* pEnd = pIter + aSeq.getLength();
- for(;pIter != pEnd && !xReturn.is() ;++pIter)
- {
- uno::Reference< style::XStyle> xStyle(xPageStyles->getByName(*pIter),uno::UNO_QUERY);
- if ( xStyle->isInUse() )
- xReturn = xStyle;
- }
- return xReturn;
-}
-//----------------------------------------------------------------------------
-//============================================================================
-} // rptui
-//============================================================================
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/reportdesign/source/core/sdr/RptObjectListener.cxx b/reportdesign/source/core/sdr/RptObjectListener.cxx
deleted file mode 100644
index 679b30196..000000000
--- a/reportdesign/source/core/sdr/RptObjectListener.cxx
+++ /dev/null
@@ -1,91 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-#include "precompiled_reportdesign.hxx"
-#include "RptObjectListener.hxx"
-#include "RptObject.hxx"
-#include "RptDef.hxx"
-
-namespace rptui
-{
-//============================================================================
-// OObjectListener
-//============================================================================
-
-//----------------------------------------------------------------------------
-DBG_NAME(rpt_OObjectListener)
-OObjectListener::OObjectListener(OObjectBase* _pObject)
- :m_pObject(_pObject)
-{
- DBG_CTOR(rpt_OObjectListener,NULL);
-}
-
-//----------------------------------------------------------------------------
-
-OObjectListener::~OObjectListener()
-{
- DBG_DTOR(rpt_OObjectListener,NULL);
-}
-
-// XEventListener
-//----------------------------------------------------------------------------
-
-void SAL_CALL OObjectListener::disposing( const ::com::sun::star::lang::EventObject& ) throw( ::com::sun::star::uno::RuntimeException)
-{
-}
-
-// XPropertyChangeListener
-//----------------------------------------------------------------------------
-
-void SAL_CALL OObjectListener::propertyChange( const ::com::sun::star::beans::PropertyChangeEvent& evt ) throw( ::com::sun::star::uno::RuntimeException)
-{
- m_pObject->_propertyChange( evt );
-}
-
-//----------------------------------------------------------------------------
-
-//============================================================================
-// DlgEdHint
-//============================================================================
-
-TYPEINIT1( DlgEdHint, SfxHint );
-
-//----------------------------------------------------------------------------
-
-DlgEdHint::DlgEdHint( DlgEdHintKind eHint )
- :eHintKind( eHint )
-{
-}
-
-//----------------------------------------------------------------------------
-DlgEdHint::~DlgEdHint()
-{
-}
-//----------------------------------------------------------------------------
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/reportdesign/source/core/sdr/RptPage.cxx b/reportdesign/source/core/sdr/RptPage.cxx
deleted file mode 100644
index 60ed6d4e1..000000000
--- a/reportdesign/source/core/sdr/RptPage.cxx
+++ /dev/null
@@ -1,231 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-#include "precompiled_reportdesign.hxx"
-#include "RptPage.hxx"
-#include "RptModel.hxx"
-#include "Section.hxx"
-#include "RptObject.hxx"
-#include <svx/unoapi.hxx>
-#include <svx/unoshape.hxx>
-#include "ReportDrawPage.hxx"
-
-namespace rptui
-{
-using namespace ::com::sun::star;
-TYPEINIT1( OReportPage, SdrPage );
-
-//----------------------------------------------------------------------------
-DBG_NAME( rpt_OReportPage )
-OReportPage::OReportPage( OReportModel& _rModel
- ,const uno::Reference< report::XSection >& _xSection
- ,bool bMasterPage )
- :SdrPage( _rModel, bMasterPage )
- ,rModel(_rModel)
- ,m_xSection(_xSection)
- ,m_bSpecialInsertMode(false)
-{
- DBG_CTOR( rpt_OReportPage,NULL);
-}
-
-//----------------------------------------------------------------------------
-
-OReportPage::OReportPage( const OReportPage& rPage )
- :SdrPage( rPage )
- ,rModel(rPage.rModel)
- ,m_xSection(rPage.m_xSection)
- ,m_bSpecialInsertMode(rPage.m_bSpecialInsertMode)
- ,m_aTemporaryObjectList(rPage.m_aTemporaryObjectList)
-{
- DBG_CTOR( rpt_OReportPage,NULL);
-}
-
-//----------------------------------------------------------------------------
-
-OReportPage::~OReportPage()
-{
- DBG_DTOR( rpt_OReportPage,NULL);
-}
-
-//----------------------------------------------------------------------------
-
-SdrPage* OReportPage::Clone() const
-{
- DBG_CHKTHIS( rpt_OReportPage,NULL);
- return new OReportPage( *this );
-}
-
-//----------------------------------------------------------------------------
-sal_uLong OReportPage::getIndexOf(const uno::Reference< report::XReportComponent >& _xObject)
-{
- DBG_CHKTHIS( rpt_OReportPage,NULL);
- sal_uLong nCount = GetObjCount();
- sal_uLong i = 0;
- for (; i < nCount; ++i)
- {
- OObjectBase* pObj = dynamic_cast<OObjectBase*>(GetObj(i));
- OSL_ENSURE(pObj,"Invalid object found!");
- if ( pObj && pObj->getReportComponent() == _xObject )
- {
- break;
- }
- }
- return i;
-}
-//----------------------------------------------------------------------------
-void OReportPage::removeSdrObject(const uno::Reference< report::XReportComponent >& _xObject)
-{
- DBG_CHKTHIS( rpt_OReportPage,NULL);
- sal_uLong nPos = getIndexOf(_xObject);
- if ( nPos < GetObjCount() )
- {
- OObjectBase* pBase = dynamic_cast<OObjectBase*>(GetObj(nPos));
- OSL_ENSURE(pBase,"Why is this not a OObjectBase?");
- if ( pBase )
- pBase->EndListening();
- RemoveObject(nPos);
- }
-}
-// -----------------------------------------------------------------------------
-SdrObject* OReportPage::RemoveObject(sal_uLong nObjNum)
-{
- SdrObject* pObj = SdrPage::RemoveObject(nObjNum);
- if (getSpecialMode())
- {
- return pObj;
- }
-
- // this code is evil, but what else shall I do
- reportdesign::OSection* pSection = reportdesign::OSection::getImplementation(m_xSection);
- uno::Reference< drawing::XShape> xShape(pObj->getUnoShape(),uno::UNO_QUERY);
- pSection->notifyElementRemoved(xShape);
- if (pObj->ISA(OUnoObject))
- {
- OUnoObject* pUnoObj = dynamic_cast<OUnoObject*>(pObj);
- uno::Reference< container::XChild> xChild(pUnoObj->GetUnoControlModel(),uno::UNO_QUERY);
- if ( xChild.is() )
- xChild->setParent(NULL);
- }
- return pObj;
-}
-//----------------------------------------------------------------------------
-void OReportPage::insertObject(const uno::Reference< report::XReportComponent >& _xObject)
-{
- DBG_CHKTHIS( rpt_OReportPage,NULL);
- OSL_ENSURE(_xObject.is(),"Object is not valid to create a SdrObject!");
- if ( !_xObject.is() )
- return;
- sal_uLong nPos = getIndexOf(_xObject);
- if ( nPos < GetObjCount() )
- return; // Object already in list
-
- SvxShape* pShape = SvxShape::getImplementation( _xObject );
- OObjectBase* pObject = pShape ? dynamic_cast< OObjectBase* >( pShape->GetSdrObject() ) : NULL;
- OSL_ENSURE( pObject, "OReportPage::insertObject: no implementation object found for the given shape/component!" );
- if ( pObject )
- pObject->StartListening();
-}
-// -----------------------------------------------------------------------------
-uno::Reference< report::XSection > OReportPage::getSection() const
-{
- return m_xSection;
-}
-// -----------------------------------------------------------------------------
-uno::Reference< uno::XInterface > OReportPage::createUnoPage()
-{
- return static_cast<cppu::OWeakObject*>( new reportdesign::OReportDrawPage(this,m_xSection) );
-}
-// -----------------------------------------------------------------------------
-void OReportPage::removeTempObject(SdrObject *_pToRemoveObj)
-{
- if (_pToRemoveObj)
- {
- for (sal_uLong i=0;i<GetObjCount();i++)
- {
- SdrObject *aObj = GetObj(i);
- if (aObj && aObj == _pToRemoveObj)
- {
- SdrObject* pObject = RemoveObject(i);
- (void)pObject;
- break;
- }
- }
- }
-}
-
-void OReportPage::resetSpecialMode()
-{
- const sal_Bool bChanged = rModel.IsChanged();
- ::std::vector<SdrObject*>::iterator aIter = m_aTemporaryObjectList.begin();
- ::std::vector<SdrObject*>::iterator aEnd = m_aTemporaryObjectList.end();
-
- for (; aIter != aEnd; ++aIter)
- {
- removeTempObject(*aIter);
- }
- m_aTemporaryObjectList.clear();
- rModel.SetChanged(bChanged);
-
- m_bSpecialInsertMode = false;
-}
-// -----------------------------------------------------------------------------
-void OReportPage::NbcInsertObject(SdrObject* pObj, sal_uLong nPos, const SdrInsertReason* pReason)
-{
- SdrPage::NbcInsertObject(pObj, nPos, pReason);
-
- OUnoObject* pUnoObj = dynamic_cast< OUnoObject* >( pObj );
- if (getSpecialMode())
- {
- m_aTemporaryObjectList.push_back(pObj);
- return;
- }
-
- if ( pUnoObj )
- {
- pUnoObj->CreateMediator();
- uno::Reference< container::XChild> xChild(pUnoObj->GetUnoControlModel(),uno::UNO_QUERY);
- if ( xChild.is() && !xChild->getParent().is() )
- xChild->setParent(m_xSection);
- }
-
- // this code is evil, but what else shall I do
- reportdesign::OSection* pSection = reportdesign::OSection::getImplementation(m_xSection);
- uno::Reference< drawing::XShape> xShape(pObj->getUnoShape(),uno::UNO_QUERY);
- pSection->notifyElementAdded(xShape);
-
- // now that the shape is inserted into its structures, we can allow the OObjectBase
- // to release the reference to it
- OObjectBase* pObjectBase = dynamic_cast< OObjectBase* >( pObj );
- OSL_ENSURE( pObjectBase, "OReportPage::NbcInsertObject: what is being inserted here?" );
- if ( pObjectBase )
- pObjectBase->releaseUnoShape();
-}
-//============================================================================
-} // rptui
-//============================================================================
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/reportdesign/source/core/sdr/UndoActions.cxx b/reportdesign/source/core/sdr/UndoActions.cxx
deleted file mode 100644
index 98a8f8f18..000000000
--- a/reportdesign/source/core/sdr/UndoActions.cxx
+++ /dev/null
@@ -1,451 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-#include "precompiled_reportdesign.hxx"
-
-#include "UndoActions.hxx"
-#include "UndoEnv.hxx"
-#include "formatnormalizer.hxx"
-#include "conditionupdater.hxx"
-#include "corestrings.hrc"
-#include "rptui_slotid.hrc"
-#include "RptDef.hxx"
-#include "ModuleHelper.hxx"
-#include "RptObject.hxx"
-#include "RptPage.hxx"
-#include "RptResId.hrc"
-#include "RptModel.hxx"
-
-/** === begin UNO includes === **/
-#include <com/sun/star/script/XEventAttacherManager.hpp>
-#include <com/sun/star/container/XChild.hpp>
-#include <com/sun/star/container/XNameContainer.hpp>
-#include <com/sun/star/beans/PropertyAttribute.hpp>
-#include <com/sun/star/util/XModifyBroadcaster.hpp>
-/** === end UNO includes === **/
-
-#include <connectivity/dbtools.hxx>
-#include <svl/smplhint.hxx>
-#include <tools/diagnose_ex.h>
-#include <comphelper/stl_types.hxx>
-#include <vcl/svapp.hxx>
-#include <dbaccess/dbsubcomponentcontroller.hxx>
-#include <svx/unoshape.hxx>
-#include <osl/mutex.hxx>
-
-namespace rptui
-{
- using namespace ::com::sun::star;
- using namespace uno;
- using namespace lang;
- using namespace script;
- using namespace beans;
- using namespace awt;
- using namespace util;
- using namespace container;
- using namespace report;
-//----------------------------------------------------------------------------
-::std::mem_fun_t<uno::Reference<report::XSection> , OGroupHelper> OGroupHelper::getMemberFunction(const Reference< XSection >& _xSection)
-{
- ::std::mem_fun_t<uno::Reference<report::XSection> , OGroupHelper> pMemFunSection = ::std::mem_fun(&OGroupHelper::getFooter);
- uno::Reference< report::XGroup> xGroup = _xSection->getGroup();
- if ( xGroup->getHeaderOn() && xGroup->getHeader() == _xSection )
- pMemFunSection = ::std::mem_fun(&OGroupHelper::getHeader);
- return pMemFunSection;
-}
-// -----------------------------------------------------------------------------
-::std::mem_fun_t<uno::Reference<report::XSection> , OReportHelper> OReportHelper::getMemberFunction(const Reference< XSection >& _xSection)
-{
- uno::Reference< report::XReportDefinition> xReportDefinition(_xSection->getReportDefinition());
- ::std::mem_fun_t<uno::Reference<report::XSection> , OReportHelper> pMemFunSection = ::std::mem_fun(&OReportHelper::getReportFooter);
- if ( xReportDefinition->getReportHeaderOn() && xReportDefinition->getReportHeader() == _xSection )
- pMemFunSection = ::std::mem_fun(&OReportHelper::getReportHeader);
- else if ( xReportDefinition->getPageHeaderOn() && xReportDefinition->getPageHeader() == _xSection )
- pMemFunSection = ::std::mem_fun(&OReportHelper::getPageHeader);
- else if ( xReportDefinition->getPageFooterOn() && xReportDefinition->getPageFooter() == _xSection )
- pMemFunSection = ::std::mem_fun(&OReportHelper::getPageFooter);
- else if ( xReportDefinition->getDetail() == _xSection )
- pMemFunSection = ::std::mem_fun(&OReportHelper::getDetail);
- return pMemFunSection;
-}
-
-//------------------------------------------------------------------------------
-TYPEINIT1( OCommentUndoAction, SdrUndoAction );
-DBG_NAME(rpt_OCommentUndoAction)
-//----------------------------------------------------------------------------
-OCommentUndoAction::OCommentUndoAction(SdrModel& _rMod,sal_uInt16 nCommentID)
- :SdrUndoAction(_rMod)
-{
- DBG_CTOR(rpt_OCommentUndoAction,NULL);
- m_pController = static_cast< OReportModel& >( _rMod ).getController();
- if ( nCommentID )
- m_strComment = String(ModuleRes(nCommentID));
-}
-OCommentUndoAction::~OCommentUndoAction()
-{
- DBG_DTOR(rpt_OCommentUndoAction,NULL);
-}
-//----------------------------------------------------------------------------
-void OCommentUndoAction::Undo()
-{
-}
-//----------------------------------------------------------------------------
-void OCommentUndoAction::Redo()
-{
-}
-DBG_NAME( rpt_OUndoContainerAction );
-//------------------------------------------------------------------------------
-OUndoContainerAction::OUndoContainerAction(SdrModel& _rMod
- ,Action _eAction
- ,const uno::Reference< container::XIndexContainer > _xContainer
- ,const Reference< XInterface > & xElem
- ,sal_uInt16 _nCommentId)
- :OCommentUndoAction(_rMod,_nCommentId)
- ,m_xElement(xElem)
- ,m_xContainer(_xContainer)
- ,m_eAction( _eAction )
-{
- DBG_CTOR( rpt_OUndoContainerAction,NULL);
- // normalize
- if ( m_eAction == Removed )
- // we now own the element
- m_xOwnElement = m_xElement;
-}
-//------------------------------------------------------------------------------
-OUndoContainerAction::~OUndoContainerAction()
-{
- // if we own the object ....
- Reference< XComponent > xComp( m_xOwnElement, UNO_QUERY );
- if ( xComp.is() )
- {
- // and the object does not have a parent
- Reference< XChild > xChild( m_xOwnElement, UNO_QUERY );
- if ( xChild.is() && !xChild->getParent().is() )
- {
- OXUndoEnvironment& rEnv = static_cast< OReportModel& >( rMod ).GetUndoEnv();
- rEnv.RemoveElement( m_xOwnElement );
-
-#if OSL_DEBUG_LEVEL > 0
- SvxShape* pShape = SvxShape::getImplementation( xChild );
- SdrObject* pObject = pShape ? pShape->GetSdrObject() : NULL;
- OSL_ENSURE( pObject ? pShape->HasSdrObjectOwnership() && !pObject->IsInserted() : true ,
- "OUndoContainerAction::~OUndoContainerAction: inconsistency in the shape/object ownership!" );
-#endif
- // -> dispose it
- try
- {
- comphelper::disposeComponent( xComp );
- }
- catch ( const uno::Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- }
- }
- DBG_DTOR( rpt_OUndoContainerAction,NULL);
-}
-//------------------------------------------------------------------------------
-void OUndoContainerAction::implReInsert( ) SAL_THROW( ( Exception ) )
-{
- if ( m_xContainer.is() )
- {
- // insert the element
- m_xContainer->insertByIndex( m_xContainer->getCount(),uno::makeAny(m_xElement) );
- }
- // we don't own the object anymore
- m_xOwnElement = NULL;
-}
-
-//------------------------------------------------------------------------------
-void OUndoContainerAction::implReRemove( ) SAL_THROW( ( Exception ) )
-{
- OXUndoEnvironment& rEnv = static_cast< OReportModel& >( rMod ).GetUndoEnv();
- try
- {
- OXUndoEnvironment::OUndoEnvLock aLock(rEnv);
- if ( m_xContainer.is() )
- {
- const sal_Int32 nCount = m_xContainer->getCount();
- for (sal_Int32 i = 0; i < nCount; ++i)
- {
- uno::Reference< uno::XInterface> xObj(m_xContainer->getByIndex(i),uno::UNO_QUERY);
- if ( xObj == m_xElement )
- {
- m_xContainer->removeByIndex( i );
- break;
- }
- }
- }
- }
- catch(uno::Exception&){}
- // from now on, we own this object
- m_xOwnElement = m_xElement;
-}
-
-//------------------------------------------------------------------------------
-void OUndoContainerAction::Undo()
-{
- if ( m_xElement.is() )
- {
- // prevents that an undo action will be created for elementInserted
- try
- {
- switch ( m_eAction )
- {
- case Inserted:
- implReRemove();
- break;
-
- case Removed:
- implReInsert();
- break;
- default:
- OSL_FAIL("Illegal case value");
- break;
- }
- }
- catch( const Exception& )
- {
- OSL_FAIL( "OUndoContainerAction::Undo: caught an exception!" );
- }
- }
-}
-
-//------------------------------------------------------------------------------
-void OUndoContainerAction::Redo()
-{
- if ( m_xElement.is() )
- {
- try
- {
- switch ( m_eAction )
- {
- case Inserted:
- implReInsert();
- break;
-
- case Removed:
- implReRemove();
- break;
- default:
- OSL_FAIL("Illegal case value");
- break;
- }
- }
- catch( const Exception& )
- {
- OSL_FAIL( "OUndoContainerAction::Redo: caught an exception!" );
- }
- }
-}
-// -----------------------------------------------------------------------------
-OUndoGroupSectionAction::OUndoGroupSectionAction(SdrModel& _rMod
- ,Action _eAction
- ,::std::mem_fun_t< uno::Reference< report::XSection >
- ,OGroupHelper> _pMemberFunction
- ,const uno::Reference< report::XGroup >& _xGroup
- ,const Reference< XInterface > & xElem
- ,sal_uInt16 _nCommentId)
-:OUndoContainerAction(_rMod,_eAction,NULL,xElem,_nCommentId)
-,m_aGroupHelper(_xGroup)
-,m_pMemberFunction(_pMemberFunction)
-{
-}
-//------------------------------------------------------------------------------
-void OUndoGroupSectionAction::implReInsert( ) SAL_THROW( ( Exception ) )
-{
- OXUndoEnvironment& rEnv = static_cast< OReportModel& >( rMod ).GetUndoEnv();
- try
- {
- OXUndoEnvironment::OUndoEnvLock aLock(rEnv);
- uno::Reference< report::XSection> xSection = m_pMemberFunction(&m_aGroupHelper);
- if ( xSection.is() )
- xSection->add(uno::Reference< drawing::XShape>(m_xElement,uno::UNO_QUERY));
- }
- catch(uno::Exception&){}
-
- // we don't own the object anymore
- m_xOwnElement = NULL;
-}
-
-//------------------------------------------------------------------------------
-void OUndoGroupSectionAction::implReRemove( ) SAL_THROW( ( Exception ) )
-{
- OXUndoEnvironment& rEnv = static_cast< OReportModel& >( rMod ).GetUndoEnv();
- try
- {
- OXUndoEnvironment::OUndoEnvLock aLock(rEnv);
- uno::Reference< report::XSection> xSection = m_pMemberFunction(&m_aGroupHelper);
- if ( xSection.is() )
- xSection->remove(uno::Reference< drawing::XShape>(m_xElement,uno::UNO_QUERY));
- }
- catch(uno::Exception&){}
-
- // from now on, we own this object
- m_xOwnElement = m_xElement;
-}
-//----------------------------------------------------------------------------
-OUndoReportSectionAction::OUndoReportSectionAction(SdrModel& _rMod
- ,Action _eAction
- ,::std::mem_fun_t< uno::Reference< report::XSection >
- ,OReportHelper> _pMemberFunction
- ,const uno::Reference< report::XReportDefinition >& _xReport
- ,const Reference< XInterface > & xElem
- ,sal_uInt16 _nCommentId)
-:OUndoContainerAction(_rMod,_eAction,NULL,xElem,_nCommentId)
-,m_aReportHelper(_xReport)
-,m_pMemberFunction(_pMemberFunction)
-{
-}
-//------------------------------------------------------------------------------
-void OUndoReportSectionAction::implReInsert( ) SAL_THROW( ( Exception ) )
-{
- OXUndoEnvironment& rEnv = static_cast< OReportModel& >( rMod ).GetUndoEnv();
- try
- {
- OXUndoEnvironment::OUndoEnvLock aLock(rEnv);
- uno::Reference< report::XSection> xSection = m_pMemberFunction(&m_aReportHelper);
- if ( xSection.is() )
- {
- uno::Reference< drawing::XShape> xShape(m_xElement,uno::UNO_QUERY_THROW);
- awt::Point aPos = xShape->getPosition();
- awt::Size aSize = xShape->getSize();
- xSection->add(xShape);
- xShape->setPosition( aPos );
- xShape->setSize( aSize );
- }
- }
- catch(uno::Exception&){}
- // we don't own the object anymore
- m_xOwnElement = NULL;
-}
-
-//------------------------------------------------------------------------------
-void OUndoReportSectionAction::implReRemove( ) SAL_THROW( ( Exception ) )
-{
- OXUndoEnvironment& rEnv = static_cast< OReportModel& >( rMod ).GetUndoEnv();
- try
- {
- OXUndoEnvironment::OUndoEnvLock aLock(rEnv);
- uno::Reference< report::XSection> xSection = m_pMemberFunction(&m_aReportHelper);
- if ( xSection.is() )
- xSection->remove(uno::Reference< drawing::XShape>(m_xElement,uno::UNO_QUERY));
- }
- catch(uno::Exception&){}
- // from now on, we own this object
- m_xOwnElement = m_xElement;
-}
-//------------------------------------------------------------------------------
-ORptUndoPropertyAction::ORptUndoPropertyAction(SdrModel& rNewMod, const PropertyChangeEvent& evt)
- :OCommentUndoAction(rNewMod,0)
- ,m_xObj(evt.Source, UNO_QUERY)
- ,m_aPropertyName(evt.PropertyName)
- ,m_aNewValue(evt.NewValue)
- ,m_aOldValue(evt.OldValue)
-{
-}
-//------------------------------------------------------------------------------
-void ORptUndoPropertyAction::Undo()
-{
- setProperty(sal_True);
-}
-
-//------------------------------------------------------------------------------
-void ORptUndoPropertyAction::Redo()
-{
- setProperty(sal_False);
-}
-// -----------------------------------------------------------------------------
-Reference< XPropertySet> ORptUndoPropertyAction::getObject()
-{
- return m_xObj;
-}
-// -----------------------------------------------------------------------------
-void ORptUndoPropertyAction::setProperty(sal_Bool _bOld)
-{
- Reference< XPropertySet> xObj = getObject();
-
- if (xObj.is() )
- {
- try
- {
- xObj->setPropertyValue( m_aPropertyName, _bOld ? m_aOldValue : m_aNewValue );
- }
- catch( const Exception& )
- {
- OSL_FAIL( "ORptUndoPropertyAction::Redo: caught an exception!" );
- }
- }
-}
-
-//------------------------------------------------------------------------------
-String ORptUndoPropertyAction::GetComment() const
-{
- String aStr(ModuleRes(RID_STR_UNDO_PROPERTY));
-
- aStr.SearchAndReplace( '#', m_aPropertyName );
- return aStr;
-}
-// -----------------------------------------------------------------------------
-OUndoPropertyGroupSectionAction::OUndoPropertyGroupSectionAction(SdrModel& _rMod
- ,const PropertyChangeEvent& evt
- ,::std::mem_fun_t< uno::Reference< report::XSection >
- ,OGroupHelper> _pMemberFunction
- ,const uno::Reference< report::XGroup >& _xGroup
- )
-:ORptUndoPropertyAction(_rMod,evt)
-,m_aGroupHelper(_xGroup)
-,m_pMemberFunction(_pMemberFunction)
-{
-}
-// -----------------------------------------------------------------------------
-Reference< XPropertySet> OUndoPropertyGroupSectionAction::getObject()
-{
- return m_pMemberFunction(&m_aGroupHelper).get();
-}
-// -----------------------------------------------------------------------------
-OUndoPropertyReportSectionAction::OUndoPropertyReportSectionAction(SdrModel& _rMod
- ,const PropertyChangeEvent& evt
- ,::std::mem_fun_t< uno::Reference< report::XSection >
- ,OReportHelper> _pMemberFunction
- ,const uno::Reference< report::XReportDefinition >& _xReport
- )
-:ORptUndoPropertyAction(_rMod,evt)
-,m_aReportHelper(_xReport)
-,m_pMemberFunction(_pMemberFunction)
-{
-}
-// -----------------------------------------------------------------------------
-Reference< XPropertySet> OUndoPropertyReportSectionAction::getObject()
-{
- return m_pMemberFunction(&m_aReportHelper).get();
-}
-//============================================================================
-} // rptui
-//============================================================================
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/reportdesign/source/core/sdr/UndoEnv.cxx b/reportdesign/source/core/sdr/UndoEnv.cxx
deleted file mode 100644
index 19d0d1c50..000000000
--- a/reportdesign/source/core/sdr/UndoEnv.cxx
+++ /dev/null
@@ -1,697 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-#include "precompiled_reportdesign.hxx"
-#include "UndoActions.hxx"
-#include "UndoEnv.hxx"
-#include "formatnormalizer.hxx"
-#include "conditionupdater.hxx"
-#include "corestrings.hrc"
-#include "rptui_slotid.hrc"
-#include "RptDef.hxx"
-#include "ModuleHelper.hxx"
-#include "RptObject.hxx"
-#include "RptPage.hxx"
-#include "RptResId.hrc"
-#include "RptModel.hxx"
-
-/** === begin UNO includes === **/
-#include <com/sun/star/script/XEventAttacherManager.hpp>
-#include <com/sun/star/container/XChild.hpp>
-#include <com/sun/star/container/XNameContainer.hpp>
-#include <com/sun/star/beans/PropertyAttribute.hpp>
-#include <com/sun/star/util/XModifyBroadcaster.hpp>
-#include <com/sun/star/beans/XIntrospectionAccess.hpp>
-#include <com/sun/star/beans/XIntrospection.hpp>
-/** === end UNO includes === **/
-
-#include <connectivity/dbtools.hxx>
-#include <svl/smplhint.hxx>
-#include <tools/diagnose_ex.h>
-#include <comphelper/stl_types.hxx>
-#include <comphelper/componentcontext.hxx>
-#include <vcl/svapp.hxx>
-#include <dbaccess/dbsubcomponentcontroller.hxx>
-#include <svx/unoshape.hxx>
-#include <osl/mutex.hxx>
-
-namespace rptui
-{
- using namespace ::com::sun::star;
- using namespace uno;
- using namespace lang;
- using namespace script;
- using namespace beans;
- using namespace awt;
- using namespace util;
- using namespace container;
- using namespace report;
-//----------------------------------------------------------------------------
-
-
-struct PropertyInfo
-{
- bool bIsReadonlyOrTransient;
-
- PropertyInfo()
- :bIsReadonlyOrTransient( false )
- {
- }
-
- PropertyInfo( const bool i_bIsTransientOrReadOnly )
- :bIsReadonlyOrTransient( i_bIsTransientOrReadOnly )
- {
- }
-};
-
-typedef ::boost::unordered_map< ::rtl::OUString, PropertyInfo, ::rtl::OUStringHash > PropertiesInfo;
-
-struct ObjectInfo
-{
- PropertiesInfo aProperties;
- Reference< XPropertySet > xPropertyIntrospection;
-
- ObjectInfo()
- :aProperties()
- ,xPropertyIntrospection()
- {
- }
-};
-
-typedef ::std::map< Reference< XPropertySet >, ObjectInfo, ::comphelper::OInterfaceCompare< XPropertySet > > PropertySetInfoCache;
-
-// -----------------------------------------------------------------------------
-
-class OXUndoEnvironmentImpl
-{
- OXUndoEnvironmentImpl(OXUndoEnvironmentImpl&);
- void operator =(OXUndoEnvironmentImpl&);
-public:
- OReportModel& m_rModel;
- PropertySetInfoCache m_aPropertySetCache;
- FormatNormalizer m_aFormatNormalizer;
- ConditionUpdater m_aConditionUpdater;
- ::osl::Mutex m_aMutex;
- ::std::vector< uno::Reference< container::XChild> > m_aSections;
- Reference< XIntrospection > m_xIntrospection;
- oslInterlockedCount m_nLocks;
- sal_Bool m_bReadOnly;
- sal_Bool m_bIsUndo;
-
- OXUndoEnvironmentImpl(OReportModel& _rModel);
-};
-
-OXUndoEnvironmentImpl::OXUndoEnvironmentImpl(OReportModel& _rModel) : m_rModel(_rModel)
- ,m_aFormatNormalizer( _rModel )
- ,m_aConditionUpdater()
- ,m_nLocks(0)
- ,m_bReadOnly(sal_False)
- ,m_bIsUndo(sal_False)
-{
-}
-
-//------------------------------------------------------------------------------
-DBG_NAME( rpt_OXUndoEnvironment );
-//------------------------------------------------------------------------------
-OXUndoEnvironment::OXUndoEnvironment(OReportModel& _rModel)
- :m_pImpl(new OXUndoEnvironmentImpl(_rModel) )
-{
- DBG_CTOR( rpt_OXUndoEnvironment,NULL);
- StartListening(m_pImpl->m_rModel);
-}
-
-//------------------------------------------------------------------------------
-OXUndoEnvironment::~OXUndoEnvironment()
-{
- DBG_DTOR( rpt_OXUndoEnvironment,NULL);
-}
-// -----------------------------------------------------------------------------
-void OXUndoEnvironment::Lock()
-{
- OSL_ENSURE(m_refCount,"Illegal call to dead object!");
- osl_incrementInterlockedCount( &m_pImpl->m_nLocks );
-}
-void OXUndoEnvironment::UnLock()
-{
- OSL_ENSURE(m_refCount,"Illegal call to dead object!");
-
- osl_decrementInterlockedCount( &m_pImpl->m_nLocks );
-}
-sal_Bool OXUndoEnvironment::IsLocked() const { return m_pImpl->m_nLocks != 0; }
-// -----------------------------------------------------------------------------
-void OXUndoEnvironment::RemoveSection(OReportPage* _pPage)
-{
- if ( _pPage )
- {
- Reference< XInterface > xSection(_pPage->getSection());
- if ( xSection.is() )
- RemoveElement( xSection );
- }
-}
-//------------------------------------------------------------------------------
-void OXUndoEnvironment::Clear(const Accessor& /*_r*/)
-{
- OUndoEnvLock aLock(*this);
-
-#if OSL_DEBUG_LEVEL > 0
- // TODO: LLA->OJ please describe what you are doing in this code fragment.
- PropertySetInfoCache::iterator aIter = m_pImpl->m_aPropertySetCache.begin();
- PropertySetInfoCache::iterator aEnd = m_pImpl->m_aPropertySetCache.end();
- int ndbg_len = m_pImpl->m_aPropertySetCache.size();
- ndbg_len = ndbg_len;
- for (int idbg_ = 0; aIter != aEnd; ++aIter,++idbg_)
- {
- uno::Reference<beans::XPropertySet> xProp(aIter->first,uno::UNO_QUERY);
- xProp->getPropertySetInfo();
- int nlen = aIter->second.aProperties.size();
- nlen = nlen;
- }
-#endif
- m_pImpl->m_aPropertySetCache.clear();
-
- sal_uInt16 nCount = m_pImpl->m_rModel.GetPageCount();
- sal_uInt16 i;
- for (i = 0; i < nCount; i++)
- {
- OReportPage* pPage = PTR_CAST( OReportPage, m_pImpl->m_rModel.GetPage(i) );
- RemoveSection(pPage);
- }
-
- nCount = m_pImpl->m_rModel.GetMasterPageCount();
- for (i = 0; i < nCount; i++)
- {
- OReportPage* pPage = PTR_CAST( OReportPage, m_pImpl->m_rModel.GetMasterPage(i) );
- RemoveSection(pPage);
- }
-
- m_pImpl->m_aSections.clear();
-
- if (IsListening(m_pImpl->m_rModel))
- EndListening(m_pImpl->m_rModel);
-}
-
-//------------------------------------------------------------------------------
-void OXUndoEnvironment::ModeChanged()
-{
- m_pImpl->m_bReadOnly = !m_pImpl->m_bReadOnly;
-
- if (!m_pImpl->m_bReadOnly)
- StartListening(m_pImpl->m_rModel);
- else
- EndListening(m_pImpl->m_rModel);
-}
-
-//------------------------------------------------------------------------------
-void OXUndoEnvironment::Notify( SfxBroadcaster& /*rBC*/, const SfxHint& rHint )
-{
- if (rHint.ISA(SfxSimpleHint) && ((SfxSimpleHint&)rHint).GetId() == SFX_HINT_MODECHANGED )
- ModeChanged();
-}
-// -----------------------------------------------------------------------------
-// XEventListener
-//------------------------------------------------------------------------------
-void SAL_CALL OXUndoEnvironment::disposing(const EventObject& e) throw( RuntimeException )
-{
- // check if it's an object we have cached informations about
- Reference< XPropertySet > xSourceSet(e.Source, UNO_QUERY);
- if ( xSourceSet.is() )
- {
- uno::Reference< report::XSection> xSection(xSourceSet,uno::UNO_QUERY);
- if ( xSection.is() )
- RemoveSection(xSection);
- else
- RemoveElement(xSourceSet);
- }
-}
-
-// XPropertyChangeListener
-//------------------------------------------------------------------------------
-void SAL_CALL OXUndoEnvironment::propertyChange( const PropertyChangeEvent& _rEvent ) throw(uno::RuntimeException)
-{
-
- ::osl::ClearableMutexGuard aGuard( m_pImpl->m_aMutex );
-
- if ( IsLocked() )
- return;
-
- Reference< XPropertySet > xSet( _rEvent.Source, UNO_QUERY );
- if (!xSet.is())
- return;
-
- dbaui::DBSubComponentController* pController = m_pImpl->m_rModel.getController();
- if ( !pController )
- return;
-
- // no Undo for transient and readonly props.
- // let's see if we know something about the set
-#if OSL_DEBUG_LEVEL > 0
- int nlen = m_pImpl->m_aPropertySetCache.size();
- nlen = nlen;
-#endif
- PropertySetInfoCache::iterator objectPos = m_pImpl->m_aPropertySetCache.find(xSet);
- if (objectPos == m_pImpl->m_aPropertySetCache.end())
- {
- objectPos = m_pImpl->m_aPropertySetCache.insert( PropertySetInfoCache::value_type(
- xSet, ObjectInfo()
- ) ).first;
- DBG_ASSERT(objectPos != m_pImpl->m_aPropertySetCache.end(), "OXUndoEnvironment::propertyChange : just inserted it ... why it's not there ?");
- }
- if ( objectPos == m_pImpl->m_aPropertySetCache.end() )
- return;
-
- // now we have access to the cached info about the set
- // let's see what we know about the property
- ObjectInfo& rObjectInfo = objectPos->second;
- PropertiesInfo::iterator aPropertyPos = rObjectInfo.aProperties.find( _rEvent.PropertyName );
- if ( aPropertyPos == rObjectInfo.aProperties.end() )
- { // nothing 'til now ... have to change this ....
- // the attributes
- Reference< XPropertySetInfo > xPSI( xSet->getPropertySetInfo(), UNO_SET_THROW );
- sal_Int32 nPropertyAttributes = 0;
- try
- {
- if ( xPSI->hasPropertyByName( _rEvent.PropertyName ) )
- {
- nPropertyAttributes = xPSI->getPropertyByName( _rEvent.PropertyName ).Attributes;
- }
- else
- {
- // it's perfectly valid for a component to notify a change in a property which it doesn't have - as long
- // as it has an attribute with this name
- if ( !rObjectInfo.xPropertyIntrospection.is() )
- {
- if ( !m_pImpl->m_xIntrospection.is() )
- {
- ::comphelper::ComponentContext aContext( m_pImpl->m_rModel.getController()->getORB() );
- OSL_VERIFY( aContext.createComponent( "com.sun.star.beans.Introspection", m_pImpl->m_xIntrospection ) );
- }
- if ( m_pImpl->m_xIntrospection.is() )
- {
- Reference< XIntrospectionAccess > xIntrospection(
- m_pImpl->m_xIntrospection->inspect( makeAny( _rEvent.Source ) ),
- UNO_SET_THROW
- );
- rObjectInfo.xPropertyIntrospection.set( xIntrospection->queryAdapter( XPropertySet::static_type() ), UNO_QUERY_THROW );
- }
- }
- if ( rObjectInfo.xPropertyIntrospection.is() )
- {
- xPSI.set( rObjectInfo.xPropertyIntrospection->getPropertySetInfo(), UNO_SET_THROW );
- nPropertyAttributes = xPSI->getPropertyByName( _rEvent.PropertyName ).Attributes;
- }
- }
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- const bool bTransReadOnly =
- ( ( nPropertyAttributes & PropertyAttribute::READONLY ) != 0 )
- || ( ( nPropertyAttributes & PropertyAttribute::TRANSIENT ) != 0 );
-
- // insert the new entry
- aPropertyPos = rObjectInfo.aProperties.insert( PropertiesInfo::value_type(
- _rEvent.PropertyName,
- PropertyInfo( bTransReadOnly )
- ) ).first;
- DBG_ASSERT(aPropertyPos != rObjectInfo.aProperties.end(), "OXUndoEnvironment::propertyChange : just inserted it ... why it's not there ?");
- }
-
- implSetModified();
-
- // now we have access to the cached info about the property affected
- // and are able to decide wether or not we need an undo action
-
- // no UNDO for transient/readonly properties
- if ( aPropertyPos->second.bIsReadonlyOrTransient )
- return;
-
- // give components with sub responsibilities a chance
- m_pImpl->m_aFormatNormalizer.notifyPropertyChange( _rEvent );
- m_pImpl->m_aConditionUpdater.notifyPropertyChange( _rEvent );
-
- aGuard.clear();
- // TODO: this is a potential race condition: two threads here could in theory
- // add their undo actions out-of-order
-
- SolarMutexGuard aSolarGuard;
- ORptUndoPropertyAction* pUndo = NULL;
- try
- {
- uno::Reference< report::XSection> xSection( xSet, uno::UNO_QUERY );
- if ( xSection.is() )
- {
- uno::Reference< report::XGroup> xGroup = xSection->getGroup();
- if ( xGroup.is() )
- pUndo = new OUndoPropertyGroupSectionAction( m_pImpl->m_rModel, _rEvent, OGroupHelper::getMemberFunction( xSection ), xGroup );
- else
- pUndo = new OUndoPropertyReportSectionAction( m_pImpl->m_rModel, _rEvent, OReportHelper::getMemberFunction( xSection ), xSection->getReportDefinition() );
- }
- }
- catch(const Exception&)
- {
- DBG_UNHANDLED_EXCEPTION();
- }
-
- if ( pUndo == NULL )
- pUndo = new ORptUndoPropertyAction( m_pImpl->m_rModel, _rEvent );
-
- m_pImpl->m_rModel.GetSdrUndoManager()->AddUndoAction( pUndo );
- pController->InvalidateAll();
-}
-// -----------------------------------------------------------------------------
-::std::vector< uno::Reference< container::XChild> >::const_iterator OXUndoEnvironment::getSection(const Reference<container::XChild>& _xContainer) const
-{
- ::std::vector< uno::Reference< container::XChild> >::const_iterator aFind = m_pImpl->m_aSections.end();
- if ( _xContainer.is() )
- {
- aFind = ::std::find(m_pImpl->m_aSections.begin(),m_pImpl->m_aSections.end(),_xContainer);
-
- if ( aFind == m_pImpl->m_aSections.end() )
- {
- Reference<container::XChild> xParent(_xContainer->getParent(),uno::UNO_QUERY);
- aFind = getSection(xParent);
- }
- }
- return aFind;
-}
-// XContainerListener
-//------------------------------------------------------------------------------
-void SAL_CALL OXUndoEnvironment::elementInserted(const ContainerEvent& evt) throw(uno::RuntimeException)
-{
- SolarMutexGuard aSolarGuard;
- ::osl::MutexGuard aGuard( m_pImpl->m_aMutex );
-
- // neues Object zum lauschen
- Reference< uno::XInterface > xIface( evt.Element, UNO_QUERY );
- if ( !IsLocked() )
- {
- Reference< report::XReportComponent > xReportComponent( xIface, UNO_QUERY );
- if ( xReportComponent.is() )
- {
- Reference< report::XSection > xContainer(evt.Source,uno::UNO_QUERY);
-
- ::std::vector< uno::Reference< container::XChild> >::const_iterator aFind = getSection(xContainer.get());
-
- if ( aFind != m_pImpl->m_aSections.end() )
- {
- OUndoEnvLock aLock(*this);
- try
- {
- OReportPage* pPage = m_pImpl->m_rModel.getPage(uno::Reference< report::XSection>(*aFind,uno::UNO_QUERY));
- OSL_ENSURE(pPage,"No page could be found for section!");
- if ( pPage )
- pPage->insertObject(xReportComponent);
- }
- catch(uno::Exception&)
- {
- DBG_UNHANDLED_EXCEPTION();
- }
-
- }
- }
- else
- {
- uno::Reference< report::XFunctions> xContainer(evt.Source,uno::UNO_QUERY);
- if ( xContainer.is() )
- {
- m_pImpl->m_rModel.GetSdrUndoManager()->AddUndoAction(
- new OUndoContainerAction( m_pImpl->m_rModel, rptui::Inserted, xContainer.get(),
- xIface, RID_STR_UNDO_ADDFUNCTION ) );
- }
- }
- }
-
- AddElement(xIface);
-
- implSetModified();
-}
-
-//------------------------------------------------------------------------------
-void OXUndoEnvironment::implSetModified()
-{
- m_pImpl->m_rModel.SetModified( sal_True );
-}
-
-//------------------------------------------------------------------------------
-void SAL_CALL OXUndoEnvironment::elementReplaced(const ContainerEvent& evt) throw(uno::RuntimeException)
-{
- SolarMutexGuard aSolarGuard;
- ::osl::MutexGuard aGuard( m_pImpl->m_aMutex );
-
- Reference< XInterface > xIface(evt.ReplacedElement,uno::UNO_QUERY);
- OSL_ENSURE(xIface.is(), "OXUndoEnvironment::elementReplaced: invalid container notification!");
- RemoveElement(xIface);
-
- xIface.set(evt.Element,uno::UNO_QUERY);
- AddElement(xIface);
-
- implSetModified();
-}
-
-//------------------------------------------------------------------------------
-void SAL_CALL OXUndoEnvironment::elementRemoved(const ContainerEvent& evt) throw(uno::RuntimeException)
-{
- SolarMutexGuard aSolarGuard;
- ::osl::MutexGuard aGuard( m_pImpl->m_aMutex );
-
- Reference< uno::XInterface > xIface( evt.Element, UNO_QUERY );
- if ( !IsLocked() )
- {
- Reference< report::XSection > xContainer(evt.Source,uno::UNO_QUERY);
- ::std::vector< uno::Reference< container::XChild> >::const_iterator aFind = getSection(xContainer.get());
-
- Reference< report::XReportComponent > xReportComponent( xIface, UNO_QUERY );
- if ( aFind != m_pImpl->m_aSections.end() && xReportComponent.is() )
- {
- OXUndoEnvironment::OUndoEnvLock aLock(*this);
- try
- {
- OReportPage* pPage = m_pImpl->m_rModel.getPage(uno::Reference< report::XSection >( *aFind, uno::UNO_QUERY_THROW ) );
- OSL_ENSURE( pPage, "OXUndoEnvironment::elementRemoved: no page for the section!" );
- if ( pPage )
- pPage->removeSdrObject(xReportComponent);
- }
- catch(const uno::Exception&)
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- }
- else
- {
- uno::Reference< report::XFunctions> xFunctions(evt.Source,uno::UNO_QUERY);
- if ( xFunctions.is() )
- {
- m_pImpl->m_rModel.GetSdrUndoManager()->AddUndoAction( new OUndoContainerAction(
- m_pImpl->m_rModel, rptui::Removed, xFunctions.get(), xIface, RID_STR_UNDO_ADDFUNCTION ) );
- }
- }
- }
-
- if ( xIface.is() )
- RemoveElement(xIface);
-
- implSetModified();
-}
-
-//------------------------------------------------------------------------------
-void SAL_CALL OXUndoEnvironment::modified( const EventObject& /*aEvent*/ ) throw (RuntimeException)
-{
- implSetModified();
-}
-
-//------------------------------------------------------------------------------
-void OXUndoEnvironment::AddSection(const Reference< report::XSection > & _xSection)
-{
- OUndoEnvLock aLock(*this);
- try
- {
- uno::Reference<container::XChild> xChild = _xSection.get();
- uno::Reference<report::XGroup> xGroup(xChild->getParent(),uno::UNO_QUERY);
- m_pImpl->m_aSections.push_back(xChild);
- Reference< XInterface > xInt(_xSection);
- AddElement(xInt);
- }
- catch(const uno::Exception&)
- {
- DBG_UNHANDLED_EXCEPTION();
- }
-}
-
-//------------------------------------------------------------------------------
-void OXUndoEnvironment::RemoveSection(const Reference< report::XSection > & _xSection)
-{
- OUndoEnvLock aLock(*this);
- try
- {
- uno::Reference<container::XChild> xChild(_xSection.get());
- m_pImpl->m_aSections.erase(::std::remove(m_pImpl->m_aSections.begin(),m_pImpl->m_aSections.end(),
- xChild), m_pImpl->m_aSections.end());
- Reference< XInterface > xInt(_xSection);
- RemoveElement(xInt);
- }
- catch(uno::Exception&){}
-}
-
-//------------------------------------------------------------------------------
-void OXUndoEnvironment::TogglePropertyListening(const Reference< XInterface > & Element)
-{
- // am Container horchen
- Reference< XIndexAccess > xContainer(Element, UNO_QUERY);
- if (xContainer.is())
- {
- Reference< XInterface > xInterface;
- sal_Int32 nCount = xContainer->getCount();
- for(sal_Int32 i = 0;i != nCount;++i)
- {
- xInterface.set(xContainer->getByIndex( i ),uno::UNO_QUERY);
- TogglePropertyListening(xInterface);
- }
- }
-
- Reference< XPropertySet > xSet(Element, UNO_QUERY);
- if (xSet.is())
- {
- if (!m_pImpl->m_bReadOnly)
- xSet->addPropertyChangeListener( ::rtl::OUString(), this );
- else
- xSet->removePropertyChangeListener( ::rtl::OUString(), this );
- }
-}
-
-
-//------------------------------------------------------------------------------
-void OXUndoEnvironment::switchListening( const Reference< XIndexAccess >& _rxContainer, bool _bStartListening ) SAL_THROW(())
-{
- OSL_PRECOND( _rxContainer.is(), "OXUndoEnvironment::switchListening: invalid container!" );
- if ( !_rxContainer.is() )
- return;
-
- try
- {
- // also handle all children of this element
- Reference< XInterface > xInterface;
- sal_Int32 nCount = _rxContainer->getCount();
- for(sal_Int32 i = 0;i != nCount;++i)
- {
- xInterface.set(_rxContainer->getByIndex( i ),uno::UNO_QUERY);
- if ( _bStartListening )
- AddElement( xInterface );
- else
- RemoveElement( xInterface );
- }
-
- // be notified of any changes in the container elements
- Reference< XContainer > xSimpleContainer( _rxContainer, UNO_QUERY );
- if ( xSimpleContainer.is() )
- {
- if ( _bStartListening )
- xSimpleContainer->addContainerListener( this );
- else
- xSimpleContainer->removeContainerListener( this );
- }
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
-}
-
-//------------------------------------------------------------------------------
-void OXUndoEnvironment::switchListening( const Reference< XInterface >& _rxObject, bool _bStartListening ) SAL_THROW(())
-{
- OSL_PRECOND( _rxObject.is(), "OXUndoEnvironment::switchListening: how should I listen at a NULL object?" );
-
- try
- {
- if ( !m_pImpl->m_bReadOnly )
- {
- Reference< XPropertySet > xProps( _rxObject, UNO_QUERY );
- if ( xProps.is() )
- {
- if ( _bStartListening )
- xProps->addPropertyChangeListener( ::rtl::OUString(), this );
- else
- xProps->removePropertyChangeListener( ::rtl::OUString(), this );
- }
- }
-
- Reference< XModifyBroadcaster > xBroadcaster( _rxObject, UNO_QUERY );
- if ( xBroadcaster.is() )
- {
- if ( _bStartListening )
- xBroadcaster->addModifyListener( this );
- else
- xBroadcaster->removeModifyListener( this );
- }
- }
- catch( const Exception& )
- {
- }
-}
-
-//------------------------------------------------------------------------------
-void OXUndoEnvironment::AddElement(const Reference< XInterface >& _rxElement )
-{
- if ( !IsLocked() )
- m_pImpl->m_aFormatNormalizer.notifyElementInserted( _rxElement );
-
- // if it's a container, start listening at all elements
- Reference< XIndexAccess > xContainer( _rxElement, UNO_QUERY );
- if ( xContainer.is() )
- switchListening( xContainer, true );
-
- switchListening( _rxElement, true );
-}
-
-//------------------------------------------------------------------------------
-void OXUndoEnvironment::RemoveElement(const Reference< XInterface >& _rxElement)
-{
- uno::Reference<beans::XPropertySet> xProp(_rxElement,uno::UNO_QUERY);
- if (!m_pImpl->m_aPropertySetCache.empty())
- m_pImpl->m_aPropertySetCache.erase(xProp);
- switchListening( _rxElement, false );
-
- Reference< XIndexAccess > xContainer( _rxElement, UNO_QUERY );
- if ( xContainer.is() )
- switchListening( xContainer, false );
-}
-
-void OXUndoEnvironment::SetUndoMode(sal_Bool _bUndo)
-{
- m_pImpl->m_bIsUndo = _bUndo;
-}
-
-sal_Bool OXUndoEnvironment::IsUndoMode() const
-{
- return m_pImpl->m_bIsUndo;
-}
-//============================================================================
-} // rptui
-//============================================================================
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/reportdesign/source/core/sdr/formatnormalizer.cxx b/reportdesign/source/core/sdr/formatnormalizer.cxx
deleted file mode 100644
index 6839b11b9..000000000
--- a/reportdesign/source/core/sdr/formatnormalizer.cxx
+++ /dev/null
@@ -1,282 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-#include "precompiled_reportdesign.hxx"
-
-#include "formatnormalizer.hxx"
-#include "RptModel.hxx"
-
-/** === begin UNO includes === **/
-#include <com/sun/star/sdbcx/XColumnsSupplier.hpp>
-#include <com/sun/star/sdb/XParametersSupplier.hpp>
-#include <com/sun/star/util/XNumberFormatTypes.hpp>
-/** === end UNO includes === **/
-
-#include <dbaccess/dbsubcomponentcontroller.hxx>
-#include <unotools/syslocale.hxx>
-#include <connectivity/statementcomposer.hxx>
-#include <connectivity/dbtools.hxx>
-#include <tools/diagnose_ex.h>
-
-//........................................................................
-namespace rptui
-{
-//........................................................................
-
- /** === begin UNO using === **/
- using ::com::sun::star::uno::Reference;
- using ::com::sun::star::report::XReportDefinition;
- using ::com::sun::star::report::XFormattedField;
- using ::com::sun::star::uno::UNO_QUERY;
- using ::com::sun::star::sdb::XSingleSelectQueryComposer;
- using ::com::sun::star::sdbcx::XColumnsSupplier;
- using ::com::sun::star::container::XIndexAccess;
- using ::com::sun::star::beans::XPropertySet;
- using ::com::sun::star::uno::UNO_QUERY_THROW;
- using ::com::sun::star::uno::Exception;
- using ::com::sun::star::sdb::XParametersSupplier;
- using ::com::sun::star::sdbc::SQLException;
- using ::com::sun::star::util::XNumberFormatsSupplier;
- using ::com::sun::star::util::XNumberFormatTypes;
- using ::com::sun::star::uno::makeAny;
- /** === end UNO using === **/
-
- //====================================================================
- //= FormatNormalizer
- //====================================================================
- DBG_NAME(rpt_FormatNormalizer)
- //--------------------------------------------------------------------
- FormatNormalizer::FormatNormalizer( const OReportModel& _rModel )
- :m_rModel( _rModel )
- ,m_xReportDefinition( )
- ,m_bFieldListDirty( true )
- {
- DBG_CTOR(rpt_FormatNormalizer,NULL);
- }
-
- //--------------------------------------------------------------------
- FormatNormalizer::~FormatNormalizer()
- {
- DBG_DTOR(rpt_FormatNormalizer,NULL);
- }
-
- //--------------------------------------------------------------------
- void FormatNormalizer::notifyPropertyChange( const ::com::sun::star::beans::PropertyChangeEvent& _rEvent )
- {
- if ( !impl_lateInit() )
- return;
-
- if ( ( _rEvent.Source == m_xReportDefinition ) && m_xReportDefinition.is() )
- {
- impl_onDefinitionPropertyChange( _rEvent.PropertyName );
- return;
- }
-
- Reference< XFormattedField > xFormatted( _rEvent.Source, UNO_QUERY );
- if ( xFormatted.is() )
- impl_onFormattedProperttyChange( xFormatted, _rEvent.PropertyName );
- }
-
- //--------------------------------------------------------------------
- void FormatNormalizer::notifyElementInserted( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _rxElement )
- {
- if ( !impl_lateInit() )
- return;
-
- Reference< XFormattedField > xFormatted( _rxElement, UNO_QUERY );
- if ( !xFormatted.is() )
- return;
-
- impl_adjustFormatToDataFieldType_nothrow( xFormatted );
- }
-
- //--------------------------------------------------------------------
- bool FormatNormalizer::impl_lateInit()
- {
- if ( m_xReportDefinition.is() )
- return true;
-
- m_xReportDefinition = m_rModel.getReportDefinition();
- return m_xReportDefinition.is();
- }
-
- //--------------------------------------------------------------------
- void FormatNormalizer::impl_onDefinitionPropertyChange( const ::rtl::OUString& _rChangedPropName )
- {
- if ( !_rChangedPropName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "Command" ) )
- && !_rChangedPropName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "CommandType" ) )
- && !_rChangedPropName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "EscapeProcessing" ) )
- )
- // nothing we're interested in
- return;
- m_bFieldListDirty = true;
- }
-
- //--------------------------------------------------------------------
- void FormatNormalizer::impl_onFormattedProperttyChange( const Reference< XFormattedField >& _rxFormatted, const ::rtl::OUString& _rChangedPropName )
- {
- if ( !_rChangedPropName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "DataField" ) ) )
- // nothing we're interested in
- return;
-
- impl_adjustFormatToDataFieldType_nothrow( _rxFormatted );
- }
-
- //--------------------------------------------------------------------
- namespace
- {
- void lcl_collectFields_throw( const Reference< XIndexAccess >& _rxColumns, FormatNormalizer::FieldList& _inout_rFields )
- {
- try
- {
- sal_Int32 nCount( _rxColumns->getCount() );
- _inout_rFields.reserve( _inout_rFields.size() + (size_t)nCount );
-
- Reference< XPropertySet > xColumn;
- FormatNormalizer::Field aField;
-
- for ( sal_Int32 i=0; i<nCount; ++i )
- {
- xColumn.set( _rxColumns->getByIndex( i ), UNO_QUERY_THROW );
- OSL_VERIFY( xColumn->getPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Name" ) ) ) >>= aField.sName );
- OSL_VERIFY( xColumn->getPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Type" ) ) ) >>= aField.nDataType );
- OSL_VERIFY( xColumn->getPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Scale" ) ) ) >>= aField.nScale );
- OSL_VERIFY( xColumn->getPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "IsCurrency" ) ) ) >>= aField.bIsCurrency );
- _inout_rFields.push_back( aField );
- }
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- }
- }
-
- //--------------------------------------------------------------------
- bool FormatNormalizer::impl_ensureUpToDateFieldList_nothrow()
- {
- if ( !m_bFieldListDirty )
- return true;
- m_aFields.resize( 0 );
-
- OSL_PRECOND( m_xReportDefinition.is(), "FormatNormalizer::impl_ensureUpToDateFieldList_nothrow: no report definition!" );
- if ( !m_xReportDefinition.is() )
- return false;
-
- ::dbaui::DBSubComponentController* pController( m_rModel.getController() );
- OSL_ENSURE( pController, "FormatNormalizer::impl_ensureUpToDateFieldList_nothrow: no controller? how can *this* happen?!" );
- if ( !pController )
- return false;
-
- try
- {
- ::dbtools::StatementComposer aComposer( pController->getConnection(), m_xReportDefinition->getCommand(),
- m_xReportDefinition->getCommandType(), m_xReportDefinition->getEscapeProcessing() );
-
- Reference< XSingleSelectQueryComposer > xComposer( aComposer.getComposer() );
- if ( !xComposer.is() )
- return false;
-
-
- Reference< XColumnsSupplier > xSuppCols( xComposer, UNO_QUERY_THROW );
- Reference< XIndexAccess > xColumns( xSuppCols->getColumns(), UNO_QUERY_THROW );
- lcl_collectFields_throw( xColumns, m_aFields );
-
- Reference< XParametersSupplier > xSuppParams( xComposer, UNO_QUERY_THROW );
- Reference< XIndexAccess > xParams( xSuppParams->getParameters(), UNO_QUERY_THROW );
- lcl_collectFields_throw( xParams, m_aFields );
- }
- catch( const SQLException& )
- {
- // silence it. This might happen for instance when the user sets an non-existent table,
- // or things like this
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
-
- m_bFieldListDirty = false;
- return true;
- }
-
- //--------------------------------------------------------------------
- void FormatNormalizer::impl_adjustFormatToDataFieldType_nothrow( const Reference< XFormattedField >& _rxFormatted )
- {
- if ( !impl_ensureUpToDateFieldList_nothrow() )
- // unable to obtain a recent field list
- return;
-
- try
- {
- sal_Int32 nFormatKey = _rxFormatted->getFormatKey();
- if ( nFormatKey != 0 )
- // it's not the "standard numeric" format -> not interested in
- return;
-
- ::rtl::OUString sDataField( _rxFormatted->getDataField() );
- const ::rtl::OUString sFieldPrefix( RTL_CONSTASCII_USTRINGPARAM( "field:[" ) );
- if ( sDataField.indexOf( sFieldPrefix ) != 0 )
- // not bound to a table field
- // TODO: we might also do this kind of thing for functions and expressions ...
- return;
- if ( sDataField.getStr()[ sDataField.getLength() - 1 ] != ']' )
- {
- // last character is not the closing brace
- OSL_FAIL( "FormatNormalizer::impl_adjustFormatToDataFieldType_nothrow: suspicious data field value!" );
- return;
- }
- sDataField = sDataField.copy( sFieldPrefix.getLength(), sDataField.getLength() - sFieldPrefix.getLength() - 1 );
-
- FieldList::const_iterator field = m_aFields.begin();
- for ( ; field != m_aFields.end(); ++field )
- {
- if ( field->sName == sDataField )
- break;
- }
- if ( field == m_aFields.end() )
- // unknown field
- return;
-
- Reference< XNumberFormatsSupplier > xSuppNumFmts( _rxFormatted->getFormatsSupplier(), UNO_QUERY_THROW );
- Reference< XNumberFormatTypes > xNumFmtTypes( xSuppNumFmts->getNumberFormats(), UNO_QUERY_THROW );
-
- nFormatKey = ::dbtools::getDefaultNumberFormat( field->nDataType, field->nScale, field->bIsCurrency, xNumFmtTypes,
- SvtSysLocale().GetLocaleData().getLocale() );
- _rxFormatted->setFormatKey( nFormatKey );
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- }
-
-//........................................................................
-} // namespace rptui
-//........................................................................
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/reportdesign/source/core/sdr/formatnormalizer.hxx b/reportdesign/source/core/sdr/formatnormalizer.hxx
deleted file mode 100644
index f1b6979cc..000000000
--- a/reportdesign/source/core/sdr/formatnormalizer.hxx
+++ /dev/null
@@ -1,97 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef REPORTDESIGN_FORMATNORMALIZER_HXX
-#define REPORTDESIGN_FORMATNORMALIZER_HXX
-
-/** === begin UNO includes === **/
-#include <com/sun/star/report/XReportDefinition.hpp>
-#include <com/sun/star/beans/PropertyChangeEvent.hpp>
-#include <com/sun/star/report/XFormattedField.hpp>
-/** === end UNO includes === **/
-
-#include <boost/noncopyable.hpp>
-
-#include <vector>
-
-//........................................................................
-namespace rptui
-{
-//........................................................................
-
- class OReportModel;
- //====================================================================
- //= FormatNormalizer
- //====================================================================
- class FormatNormalizer : public ::boost::noncopyable
- {
- public:
- struct Field
- {
- ::rtl::OUString sName;
- sal_Int32 nDataType;
- sal_Int32 nScale;
- sal_Bool bIsCurrency;
-
- Field() : sName(), nDataType( 0 ), nScale( 0 ), bIsCurrency( 0 ) { }
- };
- typedef ::std::vector< Field > FieldList;
-
- private:
- const OReportModel& m_rModel;
- ::com::sun::star::uno::Reference< ::com::sun::star::report::XReportDefinition > m_xReportDefinition;
-
- /// is our field list dirty?
- FieldList m_aFields;
- bool m_bFieldListDirty;
-
- public:
- FormatNormalizer( const OReportModel& _rModel );
- ~FormatNormalizer();
-
- void notifyPropertyChange( const ::com::sun::star::beans::PropertyChangeEvent& _rEvent );
- void notifyElementInserted( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _rxElement );
-
- private:
- bool impl_lateInit();
-
- void impl_onDefinitionPropertyChange( const ::rtl::OUString& _rChangedPropName );
- void impl_onFormattedProperttyChange( const ::com::sun::star::uno::Reference< ::com::sun::star::report::XFormattedField >& _rxFormatted, const ::rtl::OUString& _rChangedPropName );
-
- bool impl_ensureUpToDateFieldList_nothrow();
-
- void impl_adjustFormatToDataFieldType_nothrow( const ::com::sun::star::uno::Reference< ::com::sun::star::report::XFormattedField >& _rxFormatted );
- };
-
-//........................................................................
-} // namespace rptui
-//........................................................................
-
-#endif // REPORTDESIGN_FORMATNORMALIZER_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */