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