summaryrefslogtreecommitdiff
path: root/sd/source/ui/unoidl/DrawController.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'sd/source/ui/unoidl/DrawController.cxx')
-rw-r--r--sd/source/ui/unoidl/DrawController.cxx929
1 files changed, 0 insertions, 929 deletions
diff --git a/sd/source/ui/unoidl/DrawController.cxx b/sd/source/ui/unoidl/DrawController.cxx
deleted file mode 100644
index 02d0225de..000000000
--- a/sd/source/ui/unoidl/DrawController.cxx
+++ /dev/null
@@ -1,929 +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.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_sd.hxx"
-
-#include "DrawController.hxx"
-#include "DrawDocShell.hxx"
-
-#include "DrawSubController.hxx"
-#include "sdpage.hxx"
-#include "ViewShellBase.hxx"
-#include "ViewShellManager.hxx"
-#include "FormShellManager.hxx"
-#include "Window.hxx"
-
-#include <comphelper/anytostring.hxx>
-#include <comphelper/processfactory.hxx>
-#include <comphelper/sequence.hxx>
-#include <comphelper/stl_types.hxx>
-#include <comphelper/servicehelper.hxx>
-#include <cppuhelper/exc_hlp.hxx>
-#include <cppuhelper/bootstrap.hxx>
-
-#include <com/sun/star/beans/PropertyAttribute.hpp>
-#include <com/sun/star/drawing/framework/ConfigurationController.hpp>
-#include <com/sun/star/drawing/framework/ModuleController.hpp>
-#include <com/sun/star/lang/XInitialization.hpp>
-
-#include "slideshow.hxx"
-
-#include <svx/fmshell.hxx>
-#include <osl/mutex.hxx>
-#include <vcl/svapp.hxx>
-#include <boost/shared_ptr.hpp>
-
-using namespace ::std;
-using ::rtl::OUString;
-using namespace ::cppu;
-using namespace ::com::sun::star;
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::drawing::framework;
-
-namespace sd {
-
-DrawController::DrawController (ViewShellBase& rBase) throw()
- : DrawControllerInterfaceBase(&rBase),
- BroadcastHelperOwner(SfxBaseController::m_aMutex),
- OPropertySetHelper( static_cast<OBroadcastHelperVar<
- OMultiTypeInterfaceContainerHelper,
- OMultiTypeInterfaceContainerHelper::keyType>& >(
- BroadcastHelperOwner::maBroadcastHelper)),
- m_aSelectionTypeIdentifier(
- ::getCppuType( (Reference<view::XSelectionChangeListener > *)0 )),
- mpBase(&rBase),
- maLastVisArea(),
- mpCurrentPage(NULL),
- mbMasterPageMode(false),
- mbLayerMode(false),
- mbDisposing(false),
- mpPropertyArrayHelper(NULL),
- mxSubController(),
- mxConfigurationController(),
- mxModuleController()
-{
- ProvideFrameworkControllers();
-}
-
-
-
-
-DrawController::~DrawController (void) throw()
-{
-}
-
-
-
-
-void DrawController::SetSubController (
- const Reference<drawing::XDrawSubController>& rxSubController)
-{
- // Update the internal state.
- mxSubController = rxSubController;
- mpPropertyArrayHelper.reset();
- maLastVisArea = Rectangle();
-
- // Inform listeners about the changed state.
- FireSelectionChangeListener();
-}
-
-
-
-
-// XInterface
-
-IMPLEMENT_FORWARD_XINTERFACE2(
- DrawController,
- DrawControllerInterfaceBase,
- OPropertySetHelper);
-
-
-// XTypeProvider
-
-Sequence<Type> SAL_CALL DrawController::getTypes (void)
- throw (::com::sun::star::uno::RuntimeException)
-{
- ThrowIfDisposed();
- // OPropertySetHelper does not provide getTypes, so we have to
- // implement this method manually and list its three interfaces.
- OTypeCollection aTypeCollection (
- ::getCppuType (( const Reference<beans::XMultiPropertySet>*)NULL),
- ::getCppuType (( const Reference<beans::XFastPropertySet>*)NULL),
- ::getCppuType (( const Reference<beans::XPropertySet>*)NULL));
-
- return ::comphelper::concatSequences(
- SfxBaseController::getTypes(),
- aTypeCollection.getTypes(),
- DrawControllerInterfaceBase::getTypes());
-}
-
-IMPLEMENT_GET_IMPLEMENTATION_ID(DrawController);
-
-
-
-// XComponent
-
-
-void SAL_CALL DrawController::dispose (void)
- throw( RuntimeException )
-{
- if( !mbDisposing )
- {
- SolarMutexGuard aGuard;
-
- if( !mbDisposing )
- {
- mbDisposing = true;
-
- boost::shared_ptr<ViewShell> pViewShell;
- if (mpBase)
- pViewShell = mpBase->GetMainViewShell();
- if ( pViewShell )
- {
- pViewShell->DeactivateCurrentFunction();
- DrawDocShell* pDocShell = pViewShell->GetDocSh();
- if ( pDocShell != NULL )
- pDocShell->SetDocShellFunction(0);
- }
- pViewShell.reset();
-
- // When the controller has not been detached from its view
- // shell, i.e. mpViewShell is not NULL, then tell PaneManager
- // and ViewShellManager to clear the shell stack.
- if (mxSubController.is() && mpBase!=NULL)
- {
- mpBase->DisconnectAllClients();
- mpBase->GetViewShellManager()->Shutdown();
- }
-
- OPropertySetHelper::disposing();
-
- DisposeFrameworkControllers();
-
- SfxBaseController::dispose();
- }
- }
-}
-
-
-
-
-void SAL_CALL DrawController::addEventListener(
- const Reference<lang::XEventListener >& xListener)
- throw (RuntimeException)
-{
- ThrowIfDisposed();
- SfxBaseController::addEventListener( xListener );
-}
-
-
-
-
-void SAL_CALL DrawController::removeEventListener (
- const Reference<lang::XEventListener >& aListener)
- throw (RuntimeException)
-{
- if(!rBHelper.bDisposed && !rBHelper.bInDispose && !mbDisposing)
- SfxBaseController::removeEventListener( aListener );
-}
-
-// XController
-::sal_Bool SAL_CALL DrawController::suspend( ::sal_Bool Suspend ) throw (::com::sun::star::uno::RuntimeException)
-{
- if( Suspend )
- {
- ViewShellBase* pViewShellBase = GetViewShellBase();
- if( pViewShellBase )
- {
- // do not allow suspend if a slideshow needs this controller!
- rtl::Reference< SlideShow > xSlideShow( SlideShow::GetSlideShow( *pViewShellBase ) );
- if( xSlideShow.is() && xSlideShow->dependsOn(pViewShellBase) )
- return sal_False;
- }
- }
-
- return SfxBaseController::suspend( Suspend );
-}
-
-
-// XServiceInfo
-
-OUString SAL_CALL DrawController::getImplementationName( ) throw(RuntimeException)
-{
- // Do not throw an excepetion at the moment. This leads to a crash
- // under Solaris on relead. See issue i70929 for details.
- // ThrowIfDisposed();
- return OUString( RTL_CONSTASCII_USTRINGPARAM( "DrawController" ) );
-}
-
-
-
-static OUString ssServiceName (RTL_CONSTASCII_USTRINGPARAM(
- "com.sun.star.drawing.DrawingDocumentDrawView"));
-
-sal_Bool SAL_CALL DrawController::supportsService (
- const OUString& rsServiceName)
- throw(RuntimeException)
-{
- // Do not throw an excepetion at the moment. This leads to a crash
- // under Solaris on relead. See issue i70929 for details.
- // ThrowIfDisposed();
- return rsServiceName.equals(ssServiceName);
-}
-
-
-
-
-Sequence<OUString> SAL_CALL DrawController::getSupportedServiceNames (void)
- throw(RuntimeException)
-{
- ThrowIfDisposed();
- Sequence<OUString> aSupportedServices (1);
- OUString* pServices = aSupportedServices.getArray();
- pServices[0] = ssServiceName;
- return aSupportedServices;
-}
-
-
-
-
-//------ XSelectionSupplier --------------------------------------------
-
-sal_Bool SAL_CALL DrawController::select (const Any& aSelection)
- throw(lang::IllegalArgumentException, RuntimeException)
-{
- ThrowIfDisposed();
- SolarMutexGuard aGuard;
-
- if (mxSubController.is())
- return mxSubController->select(aSelection);
- else
- return false;
-}
-
-
-
-
-Any SAL_CALL DrawController::getSelection()
- throw(RuntimeException)
-{
- ThrowIfDisposed();
- SolarMutexGuard aGuard;
-
- if (mxSubController.is())
- return mxSubController->getSelection();
- else
- return Any();
-}
-
-
-
-
-void SAL_CALL DrawController::addSelectionChangeListener(
- const Reference< view::XSelectionChangeListener >& xListener)
- throw(RuntimeException)
-{
- if( mbDisposing )
- throw lang::DisposedException();
-
- BroadcastHelperOwner::maBroadcastHelper.addListener (m_aSelectionTypeIdentifier, xListener);
-}
-
-
-
-
-void SAL_CALL DrawController::removeSelectionChangeListener(
- const Reference< view::XSelectionChangeListener >& xListener )
- throw(RuntimeException)
-{
- if (rBHelper.bDisposed)
- throw lang::DisposedException();
-
- BroadcastHelperOwner::maBroadcastHelper.removeListener (m_aSelectionTypeIdentifier, xListener);
-}
-
-
-
-
-
-//===== lang::XEventListener ================================================
-
-void SAL_CALL
- DrawController::disposing (const lang::EventObject& )
- throw (uno::RuntimeException)
-{
-}
-
-
-
-
-//===== view::XSelectionChangeListener ======================================
-
-void SAL_CALL
- DrawController::selectionChanged (const lang::EventObject& rEvent)
- throw (uno::RuntimeException)
-{
- ThrowIfDisposed();
- // Have to forward the event to our selection change listeners.
- OInterfaceContainerHelper* pListeners = BroadcastHelperOwner::maBroadcastHelper.getContainer(
- ::getCppuType((Reference<view::XSelectionChangeListener>*)0));
- if (pListeners)
- {
- // Re-send the event to all of our listeners.
- OInterfaceIteratorHelper aIterator (*pListeners);
- while (aIterator.hasMoreElements())
- {
- try
- {
- view::XSelectionChangeListener* pListener =
- static_cast<view::XSelectionChangeListener*>(
- aIterator.next());
- if (pListener != NULL)
- pListener->selectionChanged (rEvent);
- }
- catch (const RuntimeException&)
- {
- }
- }
- }
-}
-
-
-
-
-// XDrawView
-
-void SAL_CALL DrawController::setCurrentPage( const Reference< drawing::XDrawPage >& xPage )
- throw(RuntimeException)
-{
- ThrowIfDisposed();
- SolarMutexGuard aGuard;
-
- if (mxSubController.is())
- mxSubController->setCurrentPage(xPage);
-}
-
-
-
-
-Reference< drawing::XDrawPage > SAL_CALL DrawController::getCurrentPage (void)
- throw(RuntimeException)
-{
- ThrowIfDisposed();
- SolarMutexGuard aGuard;
- Reference<drawing::XDrawPage> xPage;
-
- // Get current page from sub controller.
- if (mxSubController.is())
- xPage = mxSubController->getCurrentPage();
-
- // When there is not yet a sub controller (during initialization) then fall back
- // to the current page in mpCurrentPage.
- if ( ! xPage.is() && mpCurrentPage.is())
- xPage = Reference<drawing::XDrawPage>(mpCurrentPage->getUnoPage(), UNO_QUERY);
-
- return xPage;
-}
-
-
-
-
-void DrawController::FireVisAreaChanged (const Rectangle& rVisArea) throw()
-{
- if( maLastVisArea != rVisArea )
- {
- Any aNewValue;
- aNewValue <<= awt::Rectangle(
- rVisArea.Left(),
- rVisArea.Top(),
- rVisArea.GetWidth(),
- rVisArea.GetHeight() );
-
- Any aOldValue;
- aOldValue <<= awt::Rectangle(
- maLastVisArea.Left(),
- maLastVisArea.Top(),
- maLastVisArea.GetWidth(),
- maLastVisArea.GetHeight() );
-
- FirePropertyChange (PROPERTY_WORKAREA, aNewValue, aOldValue);
-
- maLastVisArea = rVisArea;
- }
-}
-
-
-
-
-void DrawController::FireSelectionChangeListener() throw()
-{
- OInterfaceContainerHelper * pLC = BroadcastHelperOwner::maBroadcastHelper.getContainer(
- m_aSelectionTypeIdentifier);
- if( pLC )
- {
- Reference< XInterface > xSource( (XWeak*)this );
- const lang::EventObject aEvent( xSource );
-
- // Ueber alle Listener iterieren und Events senden
- OInterfaceIteratorHelper aIt( *pLC);
- while( aIt.hasMoreElements() )
- {
- try
- {
- view::XSelectionChangeListener * pL =
- static_cast<view::XSelectionChangeListener*>(aIt.next());
- if (pL != NULL)
- pL->selectionChanged( aEvent );
- }
- catch (const RuntimeException&)
- {
- }
- }
- }
-}
-
-
-
-
-void DrawController::FireChangeEditMode (bool bMasterPageMode) throw()
-{
- if (bMasterPageMode != mbMasterPageMode )
- {
- FirePropertyChange(
- PROPERTY_MASTERPAGEMODE,
- makeAny(bMasterPageMode),
- makeAny(mbMasterPageMode));
-
- mbMasterPageMode = bMasterPageMode;
- }
-}
-
-
-
-
-void DrawController::FireChangeLayerMode (bool bLayerMode) throw()
-{
- if (bLayerMode != mbLayerMode)
- {
- FirePropertyChange(
- PROPERTY_LAYERMODE,
- makeAny(bLayerMode),
- makeAny(mbLayerMode));
-
- mbLayerMode = bLayerMode;
- }
-}
-
-
-
-
-void DrawController::FireSwitchCurrentPage (SdPage* pNewCurrentPage) throw()
-{
- SdrPage* pCurrentPage = mpCurrentPage.get();
- if (pNewCurrentPage != pCurrentPage)
- {
- try
- {
- Any aNewValue (
- makeAny(Reference<drawing::XDrawPage>(pNewCurrentPage->getUnoPage(), UNO_QUERY)));
-
- Any aOldValue;
- if (pCurrentPage != NULL)
- {
- Reference<drawing::XDrawPage> xOldPage (pCurrentPage->getUnoPage(), UNO_QUERY);
- aOldValue <<= xOldPage;
- }
-
- FirePropertyChange(PROPERTY_CURRENTPAGE, aNewValue, aOldValue);
-
- mpCurrentPage.reset(pNewCurrentPage);
- }
- catch (const uno::Exception&)
- {
- OSL_FAIL(
- (::rtl::OString("sd::SdUnoDrawView::FireSwitchCurrentPage(), "
- "exception caught: ") +
- ::rtl::OUStringToOString(
- comphelper::anyToString( cppu::getCaughtException() ),
- RTL_TEXTENCODING_UTF8 )).getStr() );
- }
- }
-}
-
-
-
-
-void DrawController::FirePropertyChange (
- sal_Int32 nHandle,
- const Any& rNewValue,
- const Any& rOldValue)
-{
- try
- {
- fire (&nHandle, &rNewValue, &rOldValue, 1, sal_False);
- }
- catch (const RuntimeException&)
- {
- // Ignore this exception. Exceptions should be handled in the
- // fire() function so that all listeners are called. This is
- // not the case at the moment, so we simply ignore the
- // exception.
- }
-
-}
-
-
-
-
-ViewShellBase* DrawController::GetViewShellBase (void)
-{
- return mpBase;
-}
-
-
-
-
-void DrawController::ReleaseViewShellBase (void)
-{
- DisposeFrameworkControllers();
- mpBase = NULL;
-}
-
-
-
-
-//===== XControllerManager ==============================================================
-
-Reference<XConfigurationController> SAL_CALL
- DrawController::getConfigurationController (void)
- throw (RuntimeException)
-{
- ThrowIfDisposed();
-
- return mxConfigurationController;
-}
-
-
-
-
-Reference<XModuleController> SAL_CALL
- DrawController::getModuleController (void)
- throw (RuntimeException)
-{
- ThrowIfDisposed();
-
- return mxModuleController;
-}
-
-
-
-
-//===== XUnoTunnel ============================================================
-
-namespace
-{
- class theDrawControllerUnoTunnelId : public rtl::Static< UnoTunnelIdInit, theDrawControllerUnoTunnelId> {};
-}
-
-const Sequence<sal_Int8>& DrawController::getUnoTunnelId (void)
-{
- return theDrawControllerUnoTunnelId::get().getSeq();
-}
-
-
-
-
-sal_Int64 SAL_CALL DrawController::getSomething (const Sequence<sal_Int8>& rId)
- throw (RuntimeException)
-{
- sal_Int64 nResult = 0;
-
- if (rId.getLength() == 16
- && rtl_compareMemory(getUnoTunnelId().getConstArray(), rId.getConstArray(), 16) == 0)
- {
- nResult = sal::static_int_cast<sal_Int64>(reinterpret_cast<sal_IntPtr>(this));
- }
-
- return nResult;
-}
-
-
-
-
-//===== Properties ============================================================
-
-void DrawController::FillPropertyTable (
- ::std::vector<beans::Property>& rProperties)
-{
- rProperties.push_back(
- beans::Property(
- OUString( RTL_CONSTASCII_USTRINGPARAM("VisibleArea") ),
- PROPERTY_WORKAREA,
- ::getCppuType((const ::com::sun::star::awt::Rectangle*)0),
- beans::PropertyAttribute::BOUND | beans::PropertyAttribute::READONLY));
- rProperties.push_back(
- beans::Property(
- OUString( RTL_CONSTASCII_USTRINGPARAM("SubController") ),
- PROPERTY_SUB_CONTROLLER,
- ::getCppuType((const Reference<drawing::XDrawSubController>*)0),
- beans::PropertyAttribute::BOUND));
- rProperties.push_back(
- beans::Property(
- OUString( RTL_CONSTASCII_USTRINGPARAM("CurrentPage") ),
- PROPERTY_CURRENTPAGE,
- ::getCppuType((const Reference< drawing::XDrawPage > *)0),
- beans::PropertyAttribute::BOUND ));
- rProperties.push_back(
- beans::Property( OUString( RTL_CONSTASCII_USTRINGPARAM("IsLayerMode") ),
- PROPERTY_LAYERMODE,
- ::getCppuBooleanType(),
- beans::PropertyAttribute::BOUND ));
- rProperties.push_back(
- beans::Property( OUString( RTL_CONSTASCII_USTRINGPARAM("IsMasterPageMode") ),
- PROPERTY_MASTERPAGEMODE,
- ::getCppuBooleanType(),
- beans::PropertyAttribute::BOUND ));
- rProperties.push_back(
- beans::Property( OUString( RTL_CONSTASCII_USTRINGPARAM("ActiveLayer") ),
- PROPERTY_ACTIVE_LAYER,
- ::getCppuBooleanType(),
- beans::PropertyAttribute::BOUND ));
- rProperties.push_back(
- beans::Property( OUString( RTL_CONSTASCII_USTRINGPARAM("ZoomValue") ),
- PROPERTY_ZOOMVALUE,
- ::getCppuType((const sal_Int16*)0),
- beans::PropertyAttribute::BOUND ));
- rProperties.push_back(
- beans::Property( OUString( RTL_CONSTASCII_USTRINGPARAM("ZoomType") ),
- PROPERTY_ZOOMTYPE,
- ::getCppuType((const sal_Int16*)0),
- beans::PropertyAttribute::BOUND ));
- rProperties.push_back(
- beans::Property( OUString( RTL_CONSTASCII_USTRINGPARAM("ViewOffset") ),
- PROPERTY_VIEWOFFSET,
- ::getCppuType((const ::com::sun::star::awt::Point*)0),
- beans::PropertyAttribute::BOUND ));
- rProperties.push_back(
- beans::Property( OUString( RTL_CONSTASCII_USTRINGPARAM("DrawViewMode") ),
- PROPERTY_DRAWVIEWMODE,
- ::getCppuType((const ::com::sun::star::awt::Point*)0),
- beans::PropertyAttribute::BOUND|beans::PropertyAttribute::READONLY|beans::PropertyAttribute::MAYBEVOID ));
-}
-
-
-
-
-IPropertyArrayHelper & DrawController::getInfoHelper()
-{
- SolarMutexGuard aGuard;
-
- if (mpPropertyArrayHelper.get() == NULL)
- {
- ::std::vector<beans::Property> aProperties;
- FillPropertyTable (aProperties);
- Sequence<beans::Property> aPropertySequence (aProperties.size());
- for (unsigned int i=0; i<aProperties.size(); i++)
- aPropertySequence[i] = aProperties[i];
- mpPropertyArrayHelper.reset(new OPropertyArrayHelper(aPropertySequence, sal_False));
- }
-
- return *mpPropertyArrayHelper.get();
-}
-
-
-
-
-Reference < beans::XPropertySetInfo > DrawController::getPropertySetInfo()
- throw ( ::com::sun::star::uno::RuntimeException)
-{
- SolarMutexGuard aGuard;
-
- static Reference < beans::XPropertySetInfo > xInfo( createPropertySetInfo( getInfoHelper() ) );
- return xInfo;
-}
-
-
-uno::Reference< form::runtime::XFormController > SAL_CALL DrawController::getFormController( const uno::Reference< form::XForm >& Form ) throw (uno::RuntimeException)
-{
- SolarMutexGuard aGuard;
-
- FmFormShell* pFormShell = mpBase->GetFormShellManager()->GetFormShell();
- SdrView* pSdrView = mpBase->GetDrawView();
- ::boost::shared_ptr<ViewShell> pViewShell = mpBase->GetMainViewShell();
- ::sd::Window* pWindow = pViewShell ? pViewShell->GetActiveWindow() : NULL;
-
- uno::Reference< form::runtime::XFormController > xController( NULL );
- if ( pFormShell && pSdrView && pWindow )
- xController = pFormShell->GetFormController( Form, *pSdrView, *pWindow );
- return xController;
-}
-
-::sal_Bool SAL_CALL DrawController::isFormDesignMode( ) throw (uno::RuntimeException)
-{
- SolarMutexGuard aGuard;
-
- sal_Bool bIsDesignMode = sal_True;
-
- FmFormShell* pFormShell = mpBase->GetFormShellManager()->GetFormShell();
- if ( pFormShell )
- bIsDesignMode = pFormShell->IsDesignMode();
-
- return bIsDesignMode;
-}
-
-void SAL_CALL DrawController::setFormDesignMode( ::sal_Bool _DesignMode ) throw (uno::RuntimeException)
-{
- SolarMutexGuard aGuard;
-
- FmFormShell* pFormShell = mpBase->GetFormShellManager()->GetFormShell();
- if ( pFormShell )
- pFormShell->SetDesignMode( _DesignMode );
-}
-
-uno::Reference< awt::XControl > SAL_CALL DrawController::getControl( const uno::Reference< awt::XControlModel >& xModel ) throw (container::NoSuchElementException, uno::RuntimeException)
-{
- SolarMutexGuard aGuard;
-
- FmFormShell* pFormShell = mpBase->GetFormShellManager()->GetFormShell();
- SdrView* pSdrView = mpBase->GetDrawView();
- ::boost::shared_ptr<ViewShell> pViewShell = mpBase->GetMainViewShell();
- ::sd::Window* pWindow = pViewShell ? pViewShell->GetActiveWindow() : NULL;
-
- uno::Reference< awt::XControl > xControl( NULL );
- if ( pFormShell && pSdrView && pWindow )
- pFormShell->GetFormControl( xModel, *pSdrView, *pWindow, xControl );
- return xControl;
-}
-
-
-
-
-sal_Bool DrawController::convertFastPropertyValue (
- Any & rConvertedValue,
- Any & rOldValue,
- sal_Int32 nHandle,
- const Any& rValue)
- throw ( com::sun::star::lang::IllegalArgumentException)
-{
- sal_Bool bResult = sal_False;
-
- if (nHandle == PROPERTY_SUB_CONTROLLER)
- {
- rOldValue <<= mxSubController;
- rConvertedValue <<= Reference<drawing::XDrawSubController>(rValue, UNO_QUERY);
- bResult = (rOldValue != rConvertedValue);
- }
- else if (mxSubController.is())
- {
- rConvertedValue = rValue;
- try
- {
- rOldValue = mxSubController->getFastPropertyValue(nHandle);
- bResult = (rOldValue != rConvertedValue);
- }
- catch (const beans::UnknownPropertyException&)
- {
- // The prperty is unknown and thus an illegal argument to this method.
- throw com::sun::star::lang::IllegalArgumentException();
- }
- }
-
- return bResult;
-}
-
-
-
-
-void DrawController::setFastPropertyValue_NoBroadcast (
- sal_Int32 nHandle,
- const Any& rValue)
- throw ( com::sun::star::uno::Exception)
-{
- SolarMutexGuard aGuard;
- if (nHandle == PROPERTY_SUB_CONTROLLER)
- SetSubController(Reference<drawing::XDrawSubController>(rValue, UNO_QUERY));
- else if (mxSubController.is())
- mxSubController->setFastPropertyValue(nHandle, rValue);
-}
-
-
-
-
-void DrawController::getFastPropertyValue (
- Any & rRet,
- sal_Int32 nHandle ) const
-{
- SolarMutexGuard aGuard;
-
- switch( nHandle )
- {
- case PROPERTY_WORKAREA:
- rRet <<= awt::Rectangle(
- maLastVisArea.Left(),
- maLastVisArea.Top(),
- maLastVisArea.GetWidth(),
- maLastVisArea.GetHeight());
- break;
-
- case PROPERTY_SUB_CONTROLLER:
- rRet <<= mxSubController;
- break;
-
- default:
- if (mxSubController.is())
- rRet = mxSubController->getFastPropertyValue(nHandle);
- break;
- }
-}
-
-
-
-
-//-----------------------------------------------------------------------------
-
-void DrawController::ProvideFrameworkControllers (void)
-{
- SolarMutexGuard aGuard;
- try
- {
- Reference<XController> xController (this);
- const Reference<XComponentContext> xContext (
- ::comphelper::getProcessComponentContext() );
- mxConfigurationController = ConfigurationController::create(
- xContext,
- xController);
- mxModuleController = ModuleController::create(
- xContext,
- xController);
- }
- catch (const RuntimeException&)
- {
- mxConfigurationController = NULL;
- mxModuleController = NULL;
- }
-}
-
-
-
-
-void DrawController::DisposeFrameworkControllers (void)
-{
- Reference<XComponent> xComponent (mxModuleController, UNO_QUERY);
- if (xComponent.is())
- xComponent->dispose();
-
- xComponent = Reference<XComponent>(mxConfigurationController, UNO_QUERY);
- if (xComponent.is())
- xComponent->dispose();
-}
-
-
-
-
-void DrawController::ThrowIfDisposed (void) const
- throw (::com::sun::star::lang::DisposedException)
-{
- if (rBHelper.bDisposed || rBHelper.bInDispose || mbDisposing)
- {
- OSL_TRACE ("Calling disposed DrawController object. Throwing exception:");
- throw lang::DisposedException (
- OUString(RTL_CONSTASCII_USTRINGPARAM(
- "DrawController object has already been disposed")),
- const_cast<uno::XWeak*>(static_cast<const uno::XWeak*>(this)));
- }
-}
-
-
-
-
-
-} // end of namespace sd
-
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */