1*ff0525f2SOliver-Rainer Wittmann /************************************************************** 2*ff0525f2SOliver-Rainer Wittmann * 3*ff0525f2SOliver-Rainer Wittmann * Licensed to the Apache Software Foundation (ASF) under one 4*ff0525f2SOliver-Rainer Wittmann * or more contributor license agreements. See the NOTICE file 5*ff0525f2SOliver-Rainer Wittmann * distributed with this work for additional information 6*ff0525f2SOliver-Rainer Wittmann * regarding copyright ownership. The ASF licenses this file 7*ff0525f2SOliver-Rainer Wittmann * to you under the Apache License, Version 2.0 (the 8*ff0525f2SOliver-Rainer Wittmann * "License"); you may not use this file except in compliance 9*ff0525f2SOliver-Rainer Wittmann * with the License. You may obtain a copy of the License at 10*ff0525f2SOliver-Rainer Wittmann * 11*ff0525f2SOliver-Rainer Wittmann * http://www.apache.org/licenses/LICENSE-2.0 12*ff0525f2SOliver-Rainer Wittmann * 13*ff0525f2SOliver-Rainer Wittmann * Unless required by applicable law or agreed to in writing, 14*ff0525f2SOliver-Rainer Wittmann * software distributed under the License is distributed on an 15*ff0525f2SOliver-Rainer Wittmann * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*ff0525f2SOliver-Rainer Wittmann * KIND, either express or implied. See the License for the 17*ff0525f2SOliver-Rainer Wittmann * specific language governing permissions and limitations 18*ff0525f2SOliver-Rainer Wittmann * under the License. 19*ff0525f2SOliver-Rainer Wittmann * 20*ff0525f2SOliver-Rainer Wittmann *************************************************************/ 21*ff0525f2SOliver-Rainer Wittmann 22*ff0525f2SOliver-Rainer Wittmann #include "precompiled_sw.hxx" 23*ff0525f2SOliver-Rainer Wittmann 24*ff0525f2SOliver-Rainer Wittmann #include "SwPanelFactory.hxx" 25*ff0525f2SOliver-Rainer Wittmann 26*ff0525f2SOliver-Rainer Wittmann #include <PagePropertyPanel.hxx> 27*ff0525f2SOliver-Rainer Wittmann 28*ff0525f2SOliver-Rainer Wittmann #include <sfx2/sidebar/SidebarPanelBase.hxx> 29*ff0525f2SOliver-Rainer Wittmann #include <sfx2/sfxbasecontroller.hxx> 30*ff0525f2SOliver-Rainer Wittmann #include <toolkit/helper/vclunohelper.hxx> 31*ff0525f2SOliver-Rainer Wittmann #include <vcl/window.hxx> 32*ff0525f2SOliver-Rainer Wittmann #include <rtl/ref.hxx> 33*ff0525f2SOliver-Rainer Wittmann #include <comphelper/namedvaluecollection.hxx> 34*ff0525f2SOliver-Rainer Wittmann 35*ff0525f2SOliver-Rainer Wittmann #include <boost/bind.hpp> 36*ff0525f2SOliver-Rainer Wittmann 37*ff0525f2SOliver-Rainer Wittmann 38*ff0525f2SOliver-Rainer Wittmann using namespace css; 39*ff0525f2SOliver-Rainer Wittmann using namespace cssu; 40*ff0525f2SOliver-Rainer Wittmann using ::rtl::OUString; 41*ff0525f2SOliver-Rainer Wittmann 42*ff0525f2SOliver-Rainer Wittmann 43*ff0525f2SOliver-Rainer Wittmann namespace sw { namespace sidebar { 44*ff0525f2SOliver-Rainer Wittmann 45*ff0525f2SOliver-Rainer Wittmann #define A2S(s) ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(s)) 46*ff0525f2SOliver-Rainer Wittmann #define IMPLEMENTATION_NAME "org.apache.openoffice.comp.sw.sidebar.SwPanelFactory" 47*ff0525f2SOliver-Rainer Wittmann #define SERVICE_NAME "com.sun.star.ui.UIElementFactory" 48*ff0525f2SOliver-Rainer Wittmann 49*ff0525f2SOliver-Rainer Wittmann 50*ff0525f2SOliver-Rainer Wittmann ::rtl::OUString SAL_CALL SwPanelFactory::getImplementationName (void) 51*ff0525f2SOliver-Rainer Wittmann { 52*ff0525f2SOliver-Rainer Wittmann return A2S(IMPLEMENTATION_NAME); 53*ff0525f2SOliver-Rainer Wittmann } 54*ff0525f2SOliver-Rainer Wittmann 55*ff0525f2SOliver-Rainer Wittmann 56*ff0525f2SOliver-Rainer Wittmann cssu::Reference<cssu::XInterface> SAL_CALL SwPanelFactory::createInstance( 57*ff0525f2SOliver-Rainer Wittmann const uno::Reference<lang::XMultiServiceFactory>& ) 58*ff0525f2SOliver-Rainer Wittmann { 59*ff0525f2SOliver-Rainer Wittmann ::rtl::Reference<SwPanelFactory> pPanelFactory (new SwPanelFactory()); 60*ff0525f2SOliver-Rainer Wittmann cssu::Reference<cssu::XInterface> xService (static_cast<XWeak*>(pPanelFactory.get()), cssu::UNO_QUERY); 61*ff0525f2SOliver-Rainer Wittmann return xService; 62*ff0525f2SOliver-Rainer Wittmann } 63*ff0525f2SOliver-Rainer Wittmann 64*ff0525f2SOliver-Rainer Wittmann 65*ff0525f2SOliver-Rainer Wittmann cssu::Sequence<OUString> SAL_CALL SwPanelFactory::getSupportedServiceNames (void) 66*ff0525f2SOliver-Rainer Wittmann { 67*ff0525f2SOliver-Rainer Wittmann cssu::Sequence<OUString> aServiceNames (1); 68*ff0525f2SOliver-Rainer Wittmann aServiceNames[0] = A2S(SERVICE_NAME); 69*ff0525f2SOliver-Rainer Wittmann return aServiceNames; 70*ff0525f2SOliver-Rainer Wittmann 71*ff0525f2SOliver-Rainer Wittmann } 72*ff0525f2SOliver-Rainer Wittmann 73*ff0525f2SOliver-Rainer Wittmann 74*ff0525f2SOliver-Rainer Wittmann SwPanelFactory::SwPanelFactory (void) 75*ff0525f2SOliver-Rainer Wittmann : PanelFactoryInterfaceBase(m_aMutex) 76*ff0525f2SOliver-Rainer Wittmann { 77*ff0525f2SOliver-Rainer Wittmann } 78*ff0525f2SOliver-Rainer Wittmann 79*ff0525f2SOliver-Rainer Wittmann 80*ff0525f2SOliver-Rainer Wittmann SwPanelFactory::~SwPanelFactory (void) 81*ff0525f2SOliver-Rainer Wittmann { 82*ff0525f2SOliver-Rainer Wittmann } 83*ff0525f2SOliver-Rainer Wittmann 84*ff0525f2SOliver-Rainer Wittmann 85*ff0525f2SOliver-Rainer Wittmann Reference<ui::XUIElement> SAL_CALL SwPanelFactory::createUIElement ( 86*ff0525f2SOliver-Rainer Wittmann const ::rtl::OUString& rsResourceURL, 87*ff0525f2SOliver-Rainer Wittmann const ::cssu::Sequence<css::beans::PropertyValue>& rArguments) 88*ff0525f2SOliver-Rainer Wittmann throw( 89*ff0525f2SOliver-Rainer Wittmann container::NoSuchElementException, 90*ff0525f2SOliver-Rainer Wittmann lang::IllegalArgumentException, 91*ff0525f2SOliver-Rainer Wittmann RuntimeException) 92*ff0525f2SOliver-Rainer Wittmann { 93*ff0525f2SOliver-Rainer Wittmann Reference<ui::XUIElement> xElement; 94*ff0525f2SOliver-Rainer Wittmann 95*ff0525f2SOliver-Rainer Wittmann const ::comphelper::NamedValueCollection aArguments (rArguments); 96*ff0525f2SOliver-Rainer Wittmann Reference<frame::XFrame> xFrame (aArguments.getOrDefault("Frame", Reference<frame::XFrame>())); 97*ff0525f2SOliver-Rainer Wittmann Reference<awt::XWindow> xParentWindow (aArguments.getOrDefault("ParentWindow", Reference<awt::XWindow>())); 98*ff0525f2SOliver-Rainer Wittmann const sal_uInt64 nBindingsValue (aArguments.getOrDefault("SfxBindings", sal_uInt64(0))); 99*ff0525f2SOliver-Rainer Wittmann SfxBindings* pBindings = reinterpret_cast<SfxBindings*>(nBindingsValue); 100*ff0525f2SOliver-Rainer Wittmann 101*ff0525f2SOliver-Rainer Wittmann ::Window* pParentWindow = VCLUnoHelper::GetWindow(xParentWindow); 102*ff0525f2SOliver-Rainer Wittmann if ( ! xParentWindow.is() || pParentWindow==NULL) 103*ff0525f2SOliver-Rainer Wittmann throw RuntimeException( 104*ff0525f2SOliver-Rainer Wittmann A2S("PanelFactory::createUIElement called without ParentWindow"), 105*ff0525f2SOliver-Rainer Wittmann NULL); 106*ff0525f2SOliver-Rainer Wittmann if ( ! xFrame.is()) 107*ff0525f2SOliver-Rainer Wittmann throw RuntimeException( 108*ff0525f2SOliver-Rainer Wittmann A2S("PanelFactory::createUIElement called without Frame"), 109*ff0525f2SOliver-Rainer Wittmann NULL); 110*ff0525f2SOliver-Rainer Wittmann if (pBindings == NULL) 111*ff0525f2SOliver-Rainer Wittmann throw RuntimeException( 112*ff0525f2SOliver-Rainer Wittmann A2S("PanelFactory::createUIElement called without SfxBindings"), 113*ff0525f2SOliver-Rainer Wittmann NULL); 114*ff0525f2SOliver-Rainer Wittmann 115*ff0525f2SOliver-Rainer Wittmann #define DoesResourceEndWith(s) rsResourceURL.endsWithAsciiL(s,strlen(s)) 116*ff0525f2SOliver-Rainer Wittmann if (DoesResourceEndWith("/PagePropertyPanel")) 117*ff0525f2SOliver-Rainer Wittmann { 118*ff0525f2SOliver-Rainer Wittmann PagePropertyPanel* pPanel = PagePropertyPanel::Create( pParentWindow, xFrame, pBindings ); 119*ff0525f2SOliver-Rainer Wittmann xElement = sfx2::sidebar::SidebarPanelBase::Create( 120*ff0525f2SOliver-Rainer Wittmann rsResourceURL, 121*ff0525f2SOliver-Rainer Wittmann xFrame, 122*ff0525f2SOliver-Rainer Wittmann pPanel, 123*ff0525f2SOliver-Rainer Wittmann ::boost::bind(&PagePropertyPanel::ShowPageStyleFormatDialog, pPanel), 124*ff0525f2SOliver-Rainer Wittmann ui::LayoutSize(-1,-1,-1)); 125*ff0525f2SOliver-Rainer Wittmann } 126*ff0525f2SOliver-Rainer Wittmann #undef DoesResourceEndWith 127*ff0525f2SOliver-Rainer Wittmann 128*ff0525f2SOliver-Rainer Wittmann return xElement; 129*ff0525f2SOliver-Rainer Wittmann } 130*ff0525f2SOliver-Rainer Wittmann 131*ff0525f2SOliver-Rainer Wittmann } } // end of namespace sw::sidebar 132*ff0525f2SOliver-Rainer Wittmann 133*ff0525f2SOliver-Rainer Wittmann // eof 134