/************************************************************** * * 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_svx.hxx" #include "svx/sidebar/ContextChangeEventMultiplexer.hxx" #include #include #include #include #include #include #include #include using namespace css; using namespace cssu; void ContextChangeEventMultiplexer::NotifyContextChange ( const cssu::Reference& rxController, const ::sfx2::sidebar::EnumContext::Context eContext) { if (rxController.is() && rxController->getFrame().is()) { const css::ui::ContextChangeEventObject aEvent( rxController, GetModuleName(rxController->getFrame()), ::sfx2::sidebar::EnumContext::GetContextName(eContext)); cssu::Reference xMultiplexer ( css::ui::ContextChangeEventMultiplexer::get( ::comphelper::getProcessComponentContext())); if (xMultiplexer.is()) xMultiplexer->broadcastContextChangeEvent(aEvent, rxController); } } void ContextChangeEventMultiplexer::NotifyContextChange ( SfxViewShell* pViewShell, const ::sfx2::sidebar::EnumContext::Context eContext) { if (pViewShell != NULL) NotifyContextChange(pViewShell->GetController(), eContext); } ::rtl::OUString ContextChangeEventMultiplexer::GetModuleName ( const cssu::Reference& rxFrame) { try { const ::comphelper::ComponentContext aContext (::comphelper::getProcessServiceFactory()); const Reference xModuleManager ( aContext.createComponent("com.sun.star.frame.ModuleManager" ), UNO_QUERY_THROW ); return xModuleManager->identify(rxFrame); } catch (const Exception&) { // An exception typically means that a context change is notified // during initialization or destruction of a view. // Ignore it. } return ::sfx2::sidebar::EnumContext::GetApplicationName( ::sfx2::sidebar::EnumContext::Application_None); }