Author: af Date: Mon Dec 10 09:35:08 2012 New Revision: 1419288 URL: http://svn.apache.org/viewvc?rev=1419288&view=rev Log: i121420: Added UNO interface and service descriptions. Added configuration schems. Added initial implementation of EventMultiplexer.
Added: openoffice/branches/sidebar/main/framework/inc/services/EventMultiplexer.hxx openoffice/branches/sidebar/main/framework/source/services/EventMultiplexer.cxx openoffice/branches/sidebar/main/offapi/com/sun/star/ui/ContextChangeEventMultiplexer.idl openoffice/branches/sidebar/main/offapi/com/sun/star/ui/ContextChangeEventObject.idl openoffice/branches/sidebar/main/offapi/com/sun/star/ui/XVerticalStackLayoutElement.idl openoffice/branches/sidebar/main/offapi/com/sun/star/util/EventMultiplexer.idl openoffice/branches/sidebar/main/offapi/com/sun/star/util/XEventListener.idl openoffice/branches/sidebar/main/offapi/com/sun/star/util/XEventMultiplexer.idl openoffice/branches/sidebar/main/officecfg/registry/schema/org/openoffice/Office/UI/Sidebar.xcs Modified: openoffice/branches/sidebar/main/framework/Library_fwk.mk openoffice/branches/sidebar/main/framework/inc/macros/registration.hxx openoffice/branches/sidebar/main/framework/source/register/registerservices.cxx openoffice/branches/sidebar/main/framework/util/fwk.component openoffice/branches/sidebar/main/offapi/com/sun/star/ui/makefile.mk openoffice/branches/sidebar/main/offapi/com/sun/star/util/makefile.mk openoffice/branches/sidebar/main/officecfg/registry/schema/org/openoffice/Office/UI/makefile.mk openoffice/branches/sidebar/main/sd/source/ui/func/futext.cxx Modified: openoffice/branches/sidebar/main/framework/Library_fwk.mk URL: http://svn.apache.org/viewvc/openoffice/branches/sidebar/main/framework/Library_fwk.mk?rev=1419288&r1=1419287&r2=1419288&view=diff ============================================================================== --- openoffice/branches/sidebar/main/framework/Library_fwk.mk (original) +++ openoffice/branches/sidebar/main/framework/Library_fwk.mk Mon Dec 10 09:35:08 2012 @@ -116,6 +116,7 @@ $(eval $(call gb_Library_add_exception_o framework/source/services/backingcomp \ framework/source/services/backingwindow \ framework/source/services/desktop \ + framework/source/services/EventMultiplexer \ framework/source/services/frame \ framework/source/services/modelwinservice \ framework/source/services/modulemanager \ Modified: openoffice/branches/sidebar/main/framework/inc/macros/registration.hxx URL: http://svn.apache.org/viewvc/openoffice/branches/sidebar/main/framework/inc/macros/registration.hxx?rev=1419288&r1=1419287&r2=1419288&view=diff ============================================================================== --- openoffice/branches/sidebar/main/framework/inc/macros/registration.hxx (original) +++ openoffice/branches/sidebar/main/framework/inc/macros/registration.hxx Mon Dec 10 09:35:08 2012 @@ -102,7 +102,7 @@ ________________________________________ { \ LOG_REGISTRATION_GETFACTORY( "\t\tpImplementationName and pServiceManager are valid ...\n" ) \ /* Define variables which are used in following macros. */ \ - ::com::sun::star::uno::Reference< ::com::sun::star::lang::XSingleServiceFactory > xFactory ; \ + ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > xFactory ; \ ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > xServiceManager ; \ xServiceManager = reinterpret_cast< ::com::sun::star::lang::XMultiServiceFactory* >( pServiceManager ) ; \ /* These parameter will expand to */ \ Added: openoffice/branches/sidebar/main/framework/inc/services/EventMultiplexer.hxx URL: http://svn.apache.org/viewvc/openoffice/branches/sidebar/main/framework/inc/services/EventMultiplexer.hxx?rev=1419288&view=auto ============================================================================== --- openoffice/branches/sidebar/main/framework/inc/services/EventMultiplexer.hxx (added) +++ openoffice/branches/sidebar/main/framework/inc/services/EventMultiplexer.hxx Mon Dec 10 09:35:08 2012 @@ -0,0 +1,122 @@ +/************************************************************** + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + *************************************************************/ + + + +#ifndef __FRAMEWORK_SERVICES_EVENT_MULTIPLEXER_HXX_ +#define __FRAMEWORK_SERVICES_EVENT_MULTIPLEXER_HXX_ + +#include <com/sun/star/util/XEventMultiplexer.hpp> + +#include <cppuhelper/compbase3.hxx> +#include <cppuhelper/basemutex.hxx> + +#include "macros/xserviceinfo.hxx" + +namespace +{ + typedef ::cppu::WeakComponentImplHelper3 < + css::util::XEventMultiplexer, + css::lang::XSingleComponentFactory, + css::lang::XServiceInfo + > EventMultiplexerInterfaceBase; +} + + +namespace css = ::com::sun::star; +namespace cssu = ::com::sun::star::uno; +namespace cssl = ::com::sun::star::lang; + +namespace framework { + +class EventMultiplexer + : private ::boost::noncopyable, + private ::cppu::BaseMutex, + public EventMultiplexerInterfaceBase +{ +public: + EventMultiplexer(const cssu::Reference<css::uno::XComponentContext>& rxContext); + virtual ~EventMultiplexer (void); + + // XEventMultiplexer + virtual void SAL_CALL addEventListener ( + const cssu::Reference<css::util::XEventListener>& rxListener, + const cssu::Reference<cssu::XInterface>& rxEventFocus) + throw(cssu::RuntimeException, cssl::IllegalArgumentException); + virtual void SAL_CALL removeEventListener ( + const cssu::Reference<css::util::XEventListener>& rxListener, + const cssu::Reference<cssu::XInterface>& rxEventFocus) + throw(cssu::RuntimeException, cssl::IllegalArgumentException); + virtual void SAL_CALL removeAllEventListeners ( + const cssu::Reference<css::util::XEventListener>& rxListener) + throw(cssu::RuntimeException, cssl::IllegalArgumentException); + virtual void SAL_CALL broadcastEvent ( + const cssl::EventObject& rEventObject, + const cssu::Reference<cssu::XInterface>& rxEventFocus) + throw(cssu::RuntimeException); + + // XSingleComponentFactory + virtual cssu::Reference<cssu::XInterface> SAL_CALL createInstanceWithContext ( + const cssu::Reference<cssu::XComponentContext>& rxContext) + throw (cssu::Exception, cssu::RuntimeException); + virtual cssu::Reference<cssu::XInterface > SAL_CALL createInstanceWithArgumentsAndContext ( + const cssu::Sequence<cssu::Any>& rArguments, + const cssu::Reference<cssu::XComponentContext>& rxContext) + throw (cssu::Exception, cssu::RuntimeException); + + // XServiceInfo + virtual ::rtl::OUString SAL_CALL getImplementationName (void) + throw (cssu::RuntimeException); + virtual sal_Bool SAL_CALL supportsService ( + const ::rtl::OUString& rsServiceName) + throw (cssu::RuntimeException); + virtual cssu::Sequence< ::rtl::OUString> SAL_CALL getSupportedServiceNames (void) + throw (cssu::RuntimeException); + + static ::rtl::OUString SAL_CALL impl_getStaticImplementationName (void); + static cssu::Reference<cssu::XInterface> SAL_CALL impl_createFactory ( + const cssu::Reference<cssl::XMultiServiceFactory>& xServiceManager); + +private: + typedef ::std::vector<cssu::Reference<css::util::XEventListener> > ListenerContainer; + typedef ::std::map<cssu::Reference<cssu::XInterface>, ListenerContainer> ListenerMap; + ListenerMap maListeners; + + /** Notify all listeners in the container that is associated with + the given event focus. + + Typically called twice from broadcastEvent(), once for the + given event focus and onece for NULL. + */ + void BroadcastEventToSingleContainer ( + const cssl::EventObject& rEventObject, + const cssu::Reference<cssu::XInterface>& rxEventFocus); + + static cssu::Sequence< ::rtl::OUString > SAL_CALL static_GetSupportedServiceNames (void); + static cssu::Reference<cssu::XInterface> SAL_CALL static_CreateInstance ( + const cssu::Reference<cssu::XComponentContext>& rxComponentContext) + throw (cssu::Exception); +}; + +} // end of namespace framework + +#endif + Modified: openoffice/branches/sidebar/main/framework/source/register/registerservices.cxx URL: http://svn.apache.org/viewvc/openoffice/branches/sidebar/main/framework/source/register/registerservices.cxx?rev=1419288&r1=1419287&r2=1419288&view=diff ============================================================================== --- openoffice/branches/sidebar/main/framework/source/register/registerservices.cxx (original) +++ openoffice/branches/sidebar/main/framework/source/register/registerservices.cxx Mon Dec 10 09:35:08 2012 @@ -53,26 +53,14 @@ #include <services/tabwindowservice.hxx> #include <services/frame.hxx> #include <services/modulemanager.hxx> -//#include <dispatch/oxt_handler.hxx> #include <jobs/jobexecutor.hxx> -//#include <recording/dispatchrecordersupplier.hxx> -//#include <recording/dispatchrecorder.hxx> -//#include <dispatch/mailtodispatcher.hxx> -//#include <dispatch/servicehandler.hxx> #include <jobs/jobdispatch.hxx> #include <services/backingcomp.hxx> -//#include <services/dispatchhelper.hxx> #include <services/layoutmanager.hxx> -//#include <services/license.hxx> #include <uifactory/uielementfactorymanager.hxx> #include <uifactory/popupmenucontrollerfactory.hxx> -//#include <uielement/fontmenucontroller.hxx> -//#include <uielement/fontsizemenucontroller.hxx> #include <uielement/objectmenucontroller.hxx> -//#include <uielement/headermenucontroller.hxx> -//#include <uielement/footermenucontroller.hxx> #include <uielement/controlmenucontroller.hxx> -//#include <uielement/macrosmenucontroller.hxx> #include <uielement/uicommanddescription.hxx> #include <uiconfiguration/uiconfigurationmanager.hxx> #include <uiconfiguration/moduleuicfgsupplier.hxx> @@ -84,7 +72,6 @@ #include <uifactory/toolboxfactory.hxx> #include <uifactory/addonstoolboxfactory.hxx> #include "uiconfiguration/windowstateconfiguration.hxx" -//#include <uielement/toolbarsmenucontroller.hxx> #include "uifactory/toolbarcontrollerfactory.hxx" #include "uifactory/statusbarcontrollerfactory.hxx" #include <services/autorecovery.hxx> @@ -93,45 +80,27 @@ #include <uifactory/statusbarfactory.hxx> #include <uiconfiguration/uicategorydescription.hxx> #include <services/sessionlistener.hxx> -//#include <uielement/logoimagestatusbarcontroller.hxx> -//#include <uielement/logotextstatusbarcontroller.hxx> -//#include <uielement/newmenucontroller.hxx> #include <services/taskcreatorsrv.hxx> -//#include <uielement/simpletextstatusbarcontroller.hxx> -//#include <services/uriabbreviation.hxx> - #include <uielement/langselectionstatusbarcontroller.hxx> -//#include <uielement/langselectionmenucontroller.hxx> #include <uiconfiguration/imagemanager.hxx> #include <uifactory/windowcontentfactorymanager.hxx> #include <services/substitutepathvars.hxx> #include <services/pathsettings.hxx> +#include <services/EventMultiplexer.hxx> COMPONENTGETIMPLEMENTATIONENVIRONMENT COMPONENTGETFACTORY ( IFFACTORY( ::framework::URLTransformer ) else IFFACTORY( ::framework::Desktop ) else IFFACTORY( ::framework::Frame ) else - //IFFACTORY( ::framework::Oxt_Handler ) else IFFACTORY( ::framework::JobExecutor ) else - //IFFACTORY( ::framework::DispatchRecorderSupplier ) else - //IFFACTORY( ::framework::DispatchRecorder ) else - //IFFACTORY( ::framework::MailToDispatcher ) else - //IFFACTORY( ::framework::ServiceHandler ) else IFFACTORY( ::framework::JobDispatch ) else IFFACTORY( ::framework::BackingComp ) else - //IFFACTORY( ::framework::DispatchHelper ) else IFFACTORY( ::framework::LayoutManager ) else - //IFFACTORY( ::framework::License ) else IFFACTORY( ::framework::UIElementFactoryManager ) else IFFACTORY( ::framework::PopupMenuControllerFactory ) else - //IFFACTORY( ::framework::FontMenuController ) else - //IFFACTORY( ::framework::FontSizeMenuController ) else IFFACTORY( ::framework::ObjectMenuController ) else - //IFFACTORY( ::framework::HeaderMenuController ) else - //IFFACTORY( ::framework::FooterMenuController ) else IFFACTORY( ::framework::ControlMenuController ) else - //IFFACTORY( ::framework::MacrosMenuController ) else IFFACTORY( ::framework::UICommandDescription ) else IFFACTORY( ::framework::ModuleManager ) else IFFACTORY( ::framework::UIConfigurationManager ) else @@ -145,7 +114,6 @@ COMPONENTGETFACTORY ( IFFACTORY( ::frame IFFACTORY( ::framework::AddonsToolBoxFactory ) else IFFACTORY( ::framework::WindowStateConfiguration ) else IFFACTORY( ::framework::ToolbarControllerFactory ) else - //IFFACTORY( ::framework::ToolbarsMenuController ) else IFFACTORY( ::framework::AutoRecovery ) else IFFACTORY( ::framework::StatusIndicatorFactory ) else IFFACTORY( ::framework::RecentFilesMenuController ) else @@ -154,19 +122,13 @@ COMPONENTGETFACTORY ( IFFACTORY( ::frame IFFACTORY( ::framework::SessionListener ) else IFFACTORY( ::framework::StatusbarControllerFactory ) else IFFACTORY( ::framework::SessionListener ) else - //IFFACTORY( ::framework::LogoImageStatusbarController ) else - //IFFACTORY( ::framework::LogoTextStatusbarController ) else IFFACTORY( ::framework::TaskCreatorService ) else - //IFFACTORY( ::framework::NewMenuController ) else - //IFFACTORY( ::framework::SimpleTextStatusbarController ) else - //IFFACTORY( ::framework::UriAbbreviation ) else - //IFFACTORY( ::framework::PopupMenuDispatcher ) else IFFACTORY( ::framework::ImageManager ) else IFFACTORY( ::framework::LangSelectionStatusbarController ) else - //IFFACTORY( ::framework::LanguageSelectionMenuController ) else IFFACTORY( ::framework::WindowContentFactoryManager ) else IFFACTORY( ::framework::TabWindowService ) else IFFACTORY( ::framework::SubstitutePathVariables ) else - IFFACTORY( ::framework::PathSettings ) + IFFACTORY( ::framework::PathSettings ) else + IFFACTORY( ::framework::EventMultiplexer ) ) Added: openoffice/branches/sidebar/main/framework/source/services/EventMultiplexer.cxx URL: http://svn.apache.org/viewvc/openoffice/branches/sidebar/main/framework/source/services/EventMultiplexer.cxx?rev=1419288&view=auto ============================================================================== --- openoffice/branches/sidebar/main/framework/source/services/EventMultiplexer.cxx (added) +++ openoffice/branches/sidebar/main/framework/source/services/EventMultiplexer.cxx Mon Dec 10 09:35:08 2012 @@ -0,0 +1,270 @@ +/************************************************************** + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + *************************************************************/ + +#include "precompiled_framework.hxx" + +#include "services/EventMultiplexer.hxx" +#include "services.h" + +using ::rtl::OUString; + +#define A2S(s) ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(s)) + +namespace framework { + +#define IMPLEMENTATION_NAME "org.apache.openoffice.comp.framework.EventMultiplexer" +#define SERVICE_NAME "com.sun.star.ui.ContextChangeEventMultiplexer" +#define SINGLETON_NAME "org.apache.openoffice.comp.framework.EventMultiplexer" + + +EventMultiplexer::EventMultiplexer (const cssu::Reference<css::uno::XComponentContext>& rxContext) + : EventMultiplexerInterfaceBase(m_aMutex), + maListeners() +{ + (void)rxContext; +} + + + + +EventMultiplexer::~EventMultiplexer (void) +{ + maListeners.clear(); +} + + + + +// XEventMultiplexer + +void SAL_CALL EventMultiplexer::addEventListener ( + const cssu::Reference<css::util::XEventListener>& rxListener, + const cssu::Reference<cssu::XInterface>& rxEventFocus) + throw(cssu::RuntimeException,cssl::IllegalArgumentException) +{ + if ( ! rxListener.is()) + throw css::lang::IllegalArgumentException(A2S("can not add an empty reference"), static_cast<XWeak*>(this), 0); + + ListenerMap::iterator iListenerContainer (maListeners.find(rxEventFocus)); + if (iListenerContainer == maListeners.end()) + { + // Create a new listener container for the event focus. + iListenerContainer = maListeners.insert( + ListenerMap::value_type( + rxEventFocus, + ListenerContainer())).first; + } + if (iListenerContainer != maListeners.end()) + { + ListenerContainer& rContainer (iListenerContainer->second); + if (::std::find(rContainer.begin(), rContainer.end(), rxListener) == rContainer.end()) + rContainer.push_back(rxListener); + else + { + // The listener was added for the same event focus + // previously. That is an error. + throw cssl::IllegalArgumentException(A2S("listener added twice"), static_cast<XWeak*>(this), 0); + } + } +} + + + + +void SAL_CALL EventMultiplexer::removeEventListener ( + const cssu::Reference<css::util::XEventListener>& rxListener, + const cssu::Reference<cssu::XInterface>& rxEventFocus) + throw(cssu::RuntimeException,cssl::IllegalArgumentException) +{ + if ( ! rxListener.is()) + throw cssl::IllegalArgumentException(A2S("can not remove an empty reference"), static_cast<XWeak*>(this), 0); + + ListenerMap::iterator iListenerContainer (maListeners.find(rxEventFocus)); + if (iListenerContainer != maListeners.end()) + { + ListenerContainer& rContainer (iListenerContainer->second); + const ListenerContainer::iterator iListener (::std::find(rContainer.begin(), rContainer.end(), rxListener)); + if (iListener != rContainer.end()) + rContainer.erase(iListener); + } + +} + + + + +void SAL_CALL EventMultiplexer::removeAllEventListeners ( + const cssu::Reference<css::util::XEventListener>& rxListener) + throw(cssu::RuntimeException,cssl::IllegalArgumentException) +{ + if ( ! rxListener.is()) + throw cssl::IllegalArgumentException(A2S("can not remove an empty reference"), static_cast<XWeak*>(this), 0); + + for (ListenerMap::iterator + iContainer(maListeners.begin()), + iEnd(maListeners.end()); + iContainer!=iEnd; + ++iContainer) + { + const ListenerContainer::iterator iListener (::std::find(iContainer->second.begin(), iContainer->second.end(), rxListener)); + if (iListener != iContainer->second.end()) + iContainer->second.erase(iListener); + } +} + + + + + +void SAL_CALL EventMultiplexer::broadcastEvent ( + const cssl::EventObject& rEventObject, + const cssu::Reference<cssu::XInterface>& rxEventFocus) + throw(cssu::RuntimeException) +{ + BroadcastEventToSingleContainer(rEventObject, rxEventFocus); + if (rxEventFocus.is()) + BroadcastEventToSingleContainer(rEventObject, NULL); +} + + + + +void EventMultiplexer::BroadcastEventToSingleContainer ( + const cssl::EventObject& rEventObject, + const cssu::Reference<cssu::XInterface>& rxEventFocus) +{ + ListenerMap::iterator iListenerContainer (maListeners.find(rxEventFocus)); + if (iListenerContainer != maListeners.end()) + { + // Create a copy of the listener container to avoid problems + // when one of the called listeners calls add... or remove... + ListenerContainer aContainer (iListenerContainer->second); + for (ListenerContainer::const_iterator + iListener(aContainer.begin()), + iEnd(aContainer.end()); + iListener!=iEnd; + ++iListener) + { + (*iListener)->notifyEvent(rEventObject); + } + } +} + + + + +// XSingleComponentFactory +cssu::Reference<cssu::XInterface> SAL_CALL EventMultiplexer::createInstanceWithContext ( + const cssu::Reference<cssu::XComponentContext>& rxContext) + throw (cssu::Exception, cssu::RuntimeException) +{ + return cssu::Reference<cssu::XInterface>(); +} + + + + +cssu::Reference<cssu::XInterface > SAL_CALL EventMultiplexer::createInstanceWithArgumentsAndContext ( + const cssu::Sequence<cssu::Any>& rArguments, + const cssu::Reference<cssu::XComponentContext>& rxContext) + throw (cssu::Exception, cssu::RuntimeException) +{ + return cssu::Reference<cssu::XInterface>(); +} + + + + +// XServiceInfo + +::rtl::OUString SAL_CALL EventMultiplexer::getImplementationName (void) + throw(cssu::RuntimeException) +{ + return impl_getStaticImplementationName(); +} + + + + + +sal_Bool SAL_CALL EventMultiplexer::supportsService ( + const ::rtl::OUString& rsServiceName) + throw (cssu::RuntimeException) +{ + return ::comphelper::findValue(static_GetSupportedServiceNames(), rsServiceName, sal_True).getLength() != 0; +} + + + + +cssu::Sequence<OUString> SAL_CALL EventMultiplexer::getSupportedServiceNames (void) + throw (cssu::RuntimeException) +{ + return static_GetSupportedServiceNames(); +} + + + + +// Local and static methods. + +OUString SAL_CALL EventMultiplexer::impl_getStaticImplementationName (void) +{ + return A2S(IMPLEMENTATION_NAME); +} + + + + +cssu::Sequence<OUString> SAL_CALL EventMultiplexer::static_GetSupportedServiceNames (void) +{ + cssu::Sequence<OUString> aServiceNames (2); + aServiceNames[0] = A2S(SERVICE_NAME); + aServiceNames[1] = A2S(SINGLETON_NAME); + return aServiceNames; +} + + + + +cssu::Reference<cssu::XInterface> EventMultiplexer::impl_createFactory ( + const cssu::Reference<cssl::XMultiServiceFactory>& rxServiceManager) +{ + return cppu::createSingleComponentFactory( + EventMultiplexer::static_CreateInstance, + EventMultiplexer::impl_getStaticImplementationName(), + EventMultiplexer::static_GetSupportedServiceNames() + ); +} + + + + +cssu::Reference<cssu::XInterface> SAL_CALL EventMultiplexer::static_CreateInstance ( + const cssu::Reference<cssu::XComponentContext>& rxComponentContext) + throw (cssu::Exception) +{ + EventMultiplexer* pObject = new EventMultiplexer(rxComponentContext); + cssu::Reference<cssu::XInterface> xService (static_cast<XWeak*>(pObject), cssu::UNO_QUERY); + return xService; +} + +} // end of namespace framework Modified: openoffice/branches/sidebar/main/framework/util/fwk.component URL: http://svn.apache.org/viewvc/openoffice/branches/sidebar/main/framework/util/fwk.component?rev=1419288&r1=1419287&r2=1419288&view=diff ============================================================================== --- openoffice/branches/sidebar/main/framework/util/fwk.component (original) +++ openoffice/branches/sidebar/main/framework/util/fwk.component Mon Dec 10 09:35:08 2012 @@ -45,6 +45,10 @@ <implementation name="com.sun.star.comp.framework.DocumentAcceleratorConfiguration"> <service name="com.sun.star.ui.DocumentAcceleratorConfiguration"/> </implementation> + <implementation name="org.apache.openoffice.comp.framework.EventMultiplexer"> + <service name="com.sun.star.util.EventMultiplexer"/> + <singleton name="com.sun.star.ui.ContextChangeEventMultiplexer"/> + </implementation> <implementation name="com.sun.star.comp.framework.Frame"> <service name="com.sun.star.frame.Frame"/> </implementation> Added: openoffice/branches/sidebar/main/offapi/com/sun/star/ui/ContextChangeEventMultiplexer.idl URL: http://svn.apache.org/viewvc/openoffice/branches/sidebar/main/offapi/com/sun/star/ui/ContextChangeEventMultiplexer.idl?rev=1419288&view=auto ============================================================================== --- openoffice/branches/sidebar/main/offapi/com/sun/star/ui/ContextChangeEventMultiplexer.idl (added) +++ openoffice/branches/sidebar/main/offapi/com/sun/star/ui/ContextChangeEventMultiplexer.idl Mon Dec 10 09:35:08 2012 @@ -0,0 +1,40 @@ +/************************************************************** + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + *************************************************************/ + + +#ifndef __com_sun_star_ui_ContextChangeEventMultiplexer_idl__ +#define __com_sun_star_ui_ContextChangeEventMultiplexer_idl__ + +#ifndef __com_sun_star_util_XEventMultiplexer_idl__ +#include <com/sun/star/util/XEventMultiplexer.idl> +#endif + +module com { module sun { module star { module ui { + +/** Multiplex events for context changes. + + A typical listener for context changes is the sidebar. +*/ +singleton ContextChangeEventMultiplexer : com::sun::star::util::XEventMultiplexer; + +}; }; }; }; // com.sun.star.ui + +#endif Added: openoffice/branches/sidebar/main/offapi/com/sun/star/ui/ContextChangeEventObject.idl URL: http://svn.apache.org/viewvc/openoffice/branches/sidebar/main/offapi/com/sun/star/ui/ContextChangeEventObject.idl?rev=1419288&view=auto ============================================================================== --- openoffice/branches/sidebar/main/offapi/com/sun/star/ui/ContextChangeEventObject.idl (added) +++ openoffice/branches/sidebar/main/offapi/com/sun/star/ui/ContextChangeEventObject.idl Mon Dec 10 09:35:08 2012 @@ -0,0 +1,54 @@ +/************************************************************** + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + *************************************************************/ + + + +#ifndef __com_sun_star_ui_ContextChangeEventObject_idl__ +#define __com_sun_star_ui_ContextChangeEventObject_idl__ + +#ifndef __com_sun_star_uno_XInterface_idl__ +#include <com/sun/star/uno/XInterface.idl> +#endif + +#ifndef __com_sun_star_lang_EventObject_idl__ +#include <com/sun/star/lang/EventObject.idl> +#endif + + +module com { module sun { module star { module ui { + +struct ContextChangeEventObject : com::sun::star::lang::EventObject +{ + /** Return the name of the application. + Known names are: writer, calc, impress, draw, base. + */ + string ApplicationName; + + /** Return the application specific context name. + */ + string ContextName; +}; + +}; }; }; }; + +//============================================================================= + +#endif Added: openoffice/branches/sidebar/main/offapi/com/sun/star/ui/XVerticalStackLayoutElement.idl URL: http://svn.apache.org/viewvc/openoffice/branches/sidebar/main/offapi/com/sun/star/ui/XVerticalStackLayoutElement.idl?rev=1419288&view=auto ============================================================================== --- openoffice/branches/sidebar/main/offapi/com/sun/star/ui/XVerticalStackLayoutElement.idl (added) +++ openoffice/branches/sidebar/main/offapi/com/sun/star/ui/XVerticalStackLayoutElement.idl Mon Dec 10 09:35:08 2012 @@ -0,0 +1,52 @@ +/************************************************************** + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + *************************************************************/ + + +#ifndef __com_sun_star_ui_XVerticalStackLayoutElement_idl__ +#define __com_sun_star_ui_XVerticalStackLayoutElement_idl__ + +#ifndef __com_sun_star_uno_XInterface_idl__ +#include <com/sun/star/uno/XInterface.idl> +#endif + + +module com { module sun { module star { module ui { + +/** Used by a layouter that stacks ui elements one above the other.</p> + +*/ + +interface XVerticalStackLayoutElement : com::sun::star::uno::XInterface +{ + /** For a given width of the container the layouter asks every ui element for its + optimal height. + + The height to which a ui element is set may differ from the returned value. + + The height is set via the XWindow interface. + */ + long getHeightForWidth ( [in] long nWidth); +}; + +}; }; }; }; + + +#endif Modified: openoffice/branches/sidebar/main/offapi/com/sun/star/ui/makefile.mk URL: http://svn.apache.org/viewvc/openoffice/branches/sidebar/main/offapi/com/sun/star/ui/makefile.mk?rev=1419288&r1=1419287&r2=1419288&view=diff ============================================================================== --- openoffice/branches/sidebar/main/offapi/com/sun/star/ui/makefile.mk (original) +++ openoffice/branches/sidebar/main/offapi/com/sun/star/ui/makefile.mk Mon Dec 10 09:35:08 2012 @@ -40,6 +40,8 @@ IDLFILES=\ ActionTriggerSeparatorType.idl \ ConfigurableUIElement.idl \ ConfigurationEvent.idl \ + ContextChangeEventMultiplexer.idl \ + ContextChangeEventObject.idl \ ContextMenuExecuteEvent.idl \ ContextMenuInterceptorAction.idl \ DockingArea.idl \ @@ -81,6 +83,7 @@ IDLFILES=\ XUIElementFactoryRegistration.idl \ XUIElementSettings.idl \ XUIFunctionListener.idl \ + XVerticalStackLayoutElement.idl \ XToolPanel.idl # ------------------------------------------------------------------ Added: openoffice/branches/sidebar/main/offapi/com/sun/star/util/EventMultiplexer.idl URL: http://svn.apache.org/viewvc/openoffice/branches/sidebar/main/offapi/com/sun/star/util/EventMultiplexer.idl?rev=1419288&view=auto ============================================================================== --- openoffice/branches/sidebar/main/offapi/com/sun/star/util/EventMultiplexer.idl (added) +++ openoffice/branches/sidebar/main/offapi/com/sun/star/util/EventMultiplexer.idl Mon Dec 10 09:35:08 2012 @@ -0,0 +1,40 @@ +/************************************************************** + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + *************************************************************/ + + +#ifndef __com_sun_star_util_EventMultiplexer_idl__ +#define __com_sun_star_util_EventMultiplexer_idl__ + +#ifndef __com_sun_star_util_XEventMultiplexer_idl__ +#include <com/sun/star/util/XEventMultiplexer.idl> +#endif + +module com { module sun { module star { module util { + +/** Multiplex generic events. +*/ +service EventMultiplexer : com::sun::star::util::XEventMultiplexer +{ +}; + +}; }; }; }; // com.sun.star.util + +#endif Added: openoffice/branches/sidebar/main/offapi/com/sun/star/util/XEventListener.idl URL: http://svn.apache.org/viewvc/openoffice/branches/sidebar/main/offapi/com/sun/star/util/XEventListener.idl?rev=1419288&view=auto ============================================================================== --- openoffice/branches/sidebar/main/offapi/com/sun/star/util/XEventListener.idl (added) +++ openoffice/branches/sidebar/main/offapi/com/sun/star/util/XEventListener.idl Mon Dec 10 09:35:08 2012 @@ -0,0 +1,51 @@ +/************************************************************** + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + *************************************************************/ + + + +#ifndef __com_sun_star_util_XEventListener_idl__ +#define __com_sun_star_util_XEventListener_idl__ + +#ifndef __com_sun_star_uno_XInterface_idl__ +#include <com/sun/star/uno/XInterface.idl> +#endif + +#ifndef __com_sun_star_lang_XEventListener_idl__ +#include <com/sun/star/lang/XEventListener.idl> +#endif + +#ifndef __com_sun_star_lang_EventObject_idl__ +#include <com/sun/star/lang/EventObject.idl> +#endif + +module com { module sun { module star { module util { + +/** Generic event listener. +*/ +interface XEventListener : ::com::sun::star::lang::XEventListener +{ + [oneway] void notifyEvent ( + [in] com::sun::star::lang::EventObject event); +} ; + +} ; } ; } ; } ; + +#endif Added: openoffice/branches/sidebar/main/offapi/com/sun/star/util/XEventMultiplexer.idl URL: http://svn.apache.org/viewvc/openoffice/branches/sidebar/main/offapi/com/sun/star/util/XEventMultiplexer.idl?rev=1419288&view=auto ============================================================================== --- openoffice/branches/sidebar/main/offapi/com/sun/star/util/XEventMultiplexer.idl (added) +++ openoffice/branches/sidebar/main/offapi/com/sun/star/util/XEventMultiplexer.idl Mon Dec 10 09:35:08 2012 @@ -0,0 +1,131 @@ +/************************************************************** + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + *************************************************************/ + + + +#ifndef __com_sun_star_util_XEventMultiplexer_idl__ +#define __com_sun_star_util_XEventMultiplexer_idl__ + +#ifndef __com_sun_star_uno_XInterface_idl__ +#include <com/sun/star/uno/XInterface.idl> +#endif + +#ifndef __com_sun_star_util_XEventListener_idl__ +#include <com/sun/star/util/XEventListener.idl> +#endif + +#ifndef __com_sun_star_lang_EventObject_idl__ +#include <com/sun/star/lang/EventObject.idl> +#endif + +#ifndef __com_sun_star_lang_IllegalArgumentException_idl__ +#include <com/sun/star/lang/IllegalArgumentException.idl> +#endif + + +module com { module sun { module star { module util { + +/** Provide a central access point for a group of events. + + Listeners can be added with a simple restriction on the event source. + They are only called for events that originate at the specified source. + + Event providers can broadcast an event to all interested listeners. + + The XEventMultiplexer interface is typically implemented as a singleton +*/ +interface XEventMultiplexer : ::com::sun::star::uno::XInterface +{ + /** Add an event listener that is called only when events are broadcast for the specified + event focus. + + @param xListener + An empty reference results in an InvalidArgumentException. + + One listener may be added more than once for different + event foci. Adding a listener a second time for the same + event focus results in an InvalidArgumentException. + + @param xEventFocus + An empty reference is a valid value. In this case the + registered listener will be called for every event + broadcast, regardless of its event focus. + + The event focus may or may not be the source of the event. + + A typical example for an event focus is the XController of + a view. Using an XController restricts events passed to + a listener to events that belong to one view. + + @throws com::sun::star::lang::IllegalArgumentException + + */ + void addEventListener ( + [in] com::sun::star::util::XEventListener xListener, + [in] com::sun::star::uno::XInterface xEventFocus) + raises (com::sun::star::lang::IllegalArgumentException); + + /** Remove an event listener for the specified event focus. + + When the same listener was added for other event foci then + these associations remain unmodified. + + @param xListener + An empty reference results in an InvalidArgumentException. + + When the listener is not registered for the given event + focus then an InvalidArgumentException is thrown. + + @param xEventFocus + The listener is only removed for this event focus. + An empty reference is a valid value. + + @throws com::sun::star::lang::IllegalArgumentException + */ + void removeEventListener ( + [in] com::sun::star::util::XEventListener xListener, + [in] com::sun::star::uno::XInterface xEventFocus) + raises (com::sun::star::lang::IllegalArgumentException); + + /** Remove an event listener for all event foci. + + @param xListener + An empty reference results in an InvalidArgumentException. + + It is not an error when the listener is not registered for any event focus. + + @throws com::sun::star::lang::IllegalArgumentException + */ + void removeAllEventListeners ( + [in] com::sun::star::util::XEventListener xListener) + raises (com::sun::star::lang::IllegalArgumentException); + + + /** Call all event listeners that where added for the specified event focus. + */ + [oneway] void broadcastEvent ( + [in] com::sun::star::lang::EventObject aEvent, + [in] com::sun::star::uno::XInterface xEventFocus); +} ; + +} ; } ; } ; } ; + +#endif Modified: openoffice/branches/sidebar/main/offapi/com/sun/star/util/makefile.mk URL: http://svn.apache.org/viewvc/openoffice/branches/sidebar/main/offapi/com/sun/star/util/makefile.mk?rev=1419288&r1=1419287&r2=1419288&view=diff ============================================================================== --- openoffice/branches/sidebar/main/offapi/com/sun/star/util/makefile.mk (original) +++ openoffice/branches/sidebar/main/offapi/com/sun/star/util/makefile.mk Mon Dec 10 09:35:08 2012 @@ -48,6 +48,7 @@ IDLFILES=\ Duration.idl\ ElementChange.idl \ Endianness.idl \ + EventMultiplexer.idl \ FileIOException.idl\ InvalidStateException.idl\ Language.idl\ @@ -82,6 +83,8 @@ IDLFILES=\ XCloseable.idl\ XCloseBroadcaster.idl\ XCloseListener.idl\ + XEventListener.idl\ + XEventMultiplexer.idl\ XFlushable.idl\ XFlushListener.idl\ XImportable.idl\ Added: openoffice/branches/sidebar/main/officecfg/registry/schema/org/openoffice/Office/UI/Sidebar.xcs URL: http://svn.apache.org/viewvc/openoffice/branches/sidebar/main/officecfg/registry/schema/org/openoffice/Office/UI/Sidebar.xcs?rev=1419288&view=auto ============================================================================== --- openoffice/branches/sidebar/main/officecfg/registry/schema/org/openoffice/Office/UI/Sidebar.xcs (added) +++ openoffice/branches/sidebar/main/officecfg/registry/schema/org/openoffice/Office/UI/Sidebar.xcs Mon Dec 10 09:35:08 2012 @@ -0,0 +1,159 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!--*********************************************************** + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + ***********************************************************--> + + +<!DOCTYPE oor:component-schema SYSTEM "../../../../../component-schema.dtd"> +<oor:component-schema + xmlns:oor="http://openoffice.org/2001/registry" + xmlns:xs="http://www.w3.org/2001/XMLSchema" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + oor:name="Sidebar" + oor:package="org.openoffice.Office.UI" + xml:lang="en-US"> + <info> + <author>Andre Fischer</author> + <desc>Specification of decks and content panels of the sidebar.</desc> + </info> + <templates> + <group oor:name="Context"> + <info> + <desc>A context specifies the combination of application and application + context (curor in table, selection active, text editing active).</desc> + </info> + <prop oor:name="Application" oor:type="xs:string" oor:localized="false"> + <info> + <desc>Name of the application. Known values are: + writer, calc, impress, draw, base</desc> + </info> + <value></value> + </prop> + <prop oor:name="ApplicationContext" oor:type="xs:string" oor:localized="false"> + <info> + <desc>Name of an application specific context.</desc> + </info> + <value></value> + </prop> + </group> + <group oor:name="Deck"> + <info> + <desc>Specification of a sidebar deck which is a container of content panels.</desc> + </info> + <prop oor:name="Title" oor:type="xs:string" oor:localized="true"> + <info> + <desc>The deck title is displayed above the content panels.</desc> + </info> + <value></value> + </prop> + <prop oor:name="Id" oor:type="xs:string" oor:localized="false"> + <info> + <desc>Internally used to identify the deck. Not displayed in the UI.</desc> + </info> + <value></value> + </prop> + <prop oor:name="IconURL" oor:type="xs:string"> + <info> + <desc>This icon is displayed in the sidebar tab bar. + Any URL scheme supported by the com.sun.star.graphic.GraphicProvider service is suitable here.</desc> + </info> + <value></value> + </prop> + <prop oor:name="HelpURL" oor:type="xs:string"> + <info> + <desc>Help about the sidebar deck.</desc> + </info> + <value></value> + </prop> + <set oor:name="ContextList" oor:node-type="Context"> + <info> + <desc>List of contexts for which to show the deck.</desc> + </info> + </set> + </group> + <group oor:name="Panel"> + <info> + <desc>Specification of a sidebar content panel.</desc> + </info> + <prop oor:name="Title" oor:type="xs:string" oor:localized="true"> + <info> + <desc>The panel title is displayed above the content panel.</desc> + </info> + <value></value> + </prop> + <prop oor:name="Id" oor:type="xs:string" oor:localized="false"> + <info> + <desc>Internally used to identify the panel.</desc> + </info> + <value></value> + </prop> + <prop oor:name="DeckId" oor:type="xs:string" oor:localized="false"> + <info> + <desc>Id of the deck to which the panel belongs.</desc> + </info> + <value></value> + </prop> + <prop oor:name="HelpURL" oor:type="xs:string"> + <info> + <desc>Help about the sidebar content panel.</desc> + </info> + <value></value> + </prop> + <set oor:name="ContextList" oor:node-type="Context"> + <info> + <desc>List of contexts for which to show the panel.</desc> + </info> + </set> + <prop oor:name="Layout" oor:type="xs:string"> + <info> + <desc>Name of the layout to use to calculate the height of the panel. + Known values are: + full Use as much of the visible area as possible. + When more than one panel use "full" then the available space is + distributed equally. + This is the fallback when the panel does not support the layout + interface required by other layout names. + vertical-stack Panel has to implement com::sun::star::ui::XVerticalStackLayoutElement. + Use this layout if possible. + </desc> + </info> + <value></value> + </prop> + <prop oor:name="ImplementationURL" oor:type="xs:string"> + <info> + <desc>URL by which the implementation of the panel is known by its factory.</desc> + </info> + <value></value> + </prop> + </group> + </templates> + <component> + <set oor:name="DeckList" oor:node-type="Deck"> + <info> + <desc>Contains all registered sidebar decks.</desc> + </info> + </set> + <set oor:name="PanelList" oor:node-type="Panel"> + <info> + <desc>Contains all registered sidebar content panels.</desc> + </info> + </set> + </component> +</oor:component-schema> Modified: openoffice/branches/sidebar/main/officecfg/registry/schema/org/openoffice/Office/UI/makefile.mk URL: http://svn.apache.org/viewvc/openoffice/branches/sidebar/main/officecfg/registry/schema/org/openoffice/Office/UI/makefile.mk?rev=1419288&r1=1419287&r2=1419288&view=diff ============================================================================== --- openoffice/branches/sidebar/main/officecfg/registry/schema/org/openoffice/Office/UI/makefile.mk (original) +++ openoffice/branches/sidebar/main/officecfg/registry/schema/org/openoffice/Office/UI/makefile.mk Mon Dec 10 09:35:08 2012 @@ -70,7 +70,8 @@ XCSFILES= \ Category.xcs \ GenericCategories.xcs \ GlobalSettings.xcs \ - WindowContentFactories.xcs + WindowContentFactories.xcs \ + Sidebar.xcs .INCLUDE : target.mk Modified: openoffice/branches/sidebar/main/sd/source/ui/func/futext.cxx URL: http://svn.apache.org/viewvc/openoffice/branches/sidebar/main/sd/source/ui/func/futext.cxx?rev=1419288&r1=1419287&r2=1419288&view=diff ============================================================================== --- openoffice/branches/sidebar/main/sd/source/ui/func/futext.cxx (original) +++ openoffice/branches/sidebar/main/sd/source/ui/func/futext.cxx Mon Dec 10 09:35:08 2012 @@ -37,6 +37,7 @@ #include <svl/intitem.hxx> #include <svx/svdotext.hxx> #include <svx/svdogrp.hxx> +#include <svx/sidebar/ContextChangeEventMultiplexer.hxx> #include <editeng/flditem.hxx> #include <svl/style.hxx> #include <svx/svdpagv.hxx> @@ -187,6 +188,10 @@ void FuText::DoExecute( SfxRequest& ) mpViewShell->GetViewShellBase().GetToolBarManager()->SetToolBarShell( ToolBarManager::TBG_FUNCTION, RID_DRAW_TEXT_TOOLBOX); + ContextChangeEventMultiplexer::NotifyContextChange( + mpViewShell->GetViewShellBase().GetController(), + ContextChangeEventMultiplexer::Application_Impress, + ContextChangeEventMultiplexer::Context_TextEdit); mpView->SetCurrentObj(OBJ_TEXT); mpView->SetEditMode(SDREDITMODE_EDIT);