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> 27ff0525f2SOliver-Rainer Wittmann 28ff0525f2SOliver-Rainer Wittmann #include <sfx2/sidebar/SidebarPanelBase.hxx> 29ff0525f2SOliver-Rainer Wittmann #include <sfx2/sfxbasecontroller.hxx> 30ff0525f2SOliver-Rainer Wittmann #include <toolkit/helper/vclunohelper.hxx> 31ff0525f2SOliver-Rainer Wittmann #include <vcl/window.hxx> 32ff0525f2SOliver-Rainer Wittmann #include <rtl/ref.hxx> 33ff0525f2SOliver-Rainer Wittmann #include <comphelper/namedvaluecollection.hxx> 34ff0525f2SOliver-Rainer Wittmann 35ff0525f2SOliver-Rainer Wittmann #include <boost/bind.hpp> 36ff0525f2SOliver-Rainer Wittmann 37ff0525f2SOliver-Rainer Wittmann 38ff0525f2SOliver-Rainer Wittmann using namespace css; 39ff0525f2SOliver-Rainer Wittmann using namespace cssu; 40ff0525f2SOliver-Rainer Wittmann using ::rtl::OUString; 41ff0525f2SOliver-Rainer Wittmann 42ff0525f2SOliver-Rainer Wittmann 43ff0525f2SOliver-Rainer Wittmann namespace sw { namespace sidebar { 44ff0525f2SOliver-Rainer Wittmann 45ff0525f2SOliver-Rainer Wittmann #define A2S(s) ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(s)) 46ff0525f2SOliver-Rainer Wittmann #define IMPLEMENTATION_NAME "org.apache.openoffice.comp.sw.sidebar.SwPanelFactory" 47ff0525f2SOliver-Rainer Wittmann #define SERVICE_NAME "com.sun.star.ui.UIElementFactory" 48ff0525f2SOliver-Rainer Wittmann 49ff0525f2SOliver-Rainer Wittmann 50ff0525f2SOliver-Rainer Wittmann ::rtl::OUString SAL_CALL SwPanelFactory::getImplementationName (void) 51ff0525f2SOliver-Rainer Wittmann { 52ff0525f2SOliver-Rainer Wittmann return A2S(IMPLEMENTATION_NAME); 53ff0525f2SOliver-Rainer Wittmann } 54ff0525f2SOliver-Rainer Wittmann 55ff0525f2SOliver-Rainer Wittmann 56ff0525f2SOliver-Rainer Wittmann cssu::Reference<cssu::XInterface> SAL_CALL SwPanelFactory::createInstance( 57ff0525f2SOliver-Rainer Wittmann const uno::Reference<lang::XMultiServiceFactory>& ) 58ff0525f2SOliver-Rainer Wittmann { 59ff0525f2SOliver-Rainer Wittmann ::rtl::Reference<SwPanelFactory> pPanelFactory (new SwPanelFactory()); 60ff0525f2SOliver-Rainer Wittmann cssu::Reference<cssu::XInterface> xService (static_cast<XWeak*>(pPanelFactory.get()), cssu::UNO_QUERY); 61ff0525f2SOliver-Rainer Wittmann return xService; 62ff0525f2SOliver-Rainer Wittmann } 63ff0525f2SOliver-Rainer Wittmann 64ff0525f2SOliver-Rainer Wittmann 65ff0525f2SOliver-Rainer Wittmann cssu::Sequence<OUString> SAL_CALL SwPanelFactory::getSupportedServiceNames (void) 66ff0525f2SOliver-Rainer Wittmann { 67ff0525f2SOliver-Rainer Wittmann cssu::Sequence<OUString> aServiceNames (1); 68ff0525f2SOliver-Rainer Wittmann aServiceNames[0] = A2S(SERVICE_NAME); 69ff0525f2SOliver-Rainer Wittmann return aServiceNames; 70ff0525f2SOliver-Rainer Wittmann 71ff0525f2SOliver-Rainer Wittmann } 72ff0525f2SOliver-Rainer Wittmann 73ff0525f2SOliver-Rainer Wittmann 74ff0525f2SOliver-Rainer Wittmann SwPanelFactory::SwPanelFactory (void) 75ff0525f2SOliver-Rainer Wittmann : PanelFactoryInterfaceBase(m_aMutex) 76ff0525f2SOliver-Rainer Wittmann { 77ff0525f2SOliver-Rainer Wittmann } 78ff0525f2SOliver-Rainer Wittmann 79ff0525f2SOliver-Rainer Wittmann 80ff0525f2SOliver-Rainer Wittmann SwPanelFactory::~SwPanelFactory (void) 81ff0525f2SOliver-Rainer Wittmann { 82ff0525f2SOliver-Rainer Wittmann } 83ff0525f2SOliver-Rainer Wittmann 84ff0525f2SOliver-Rainer Wittmann 85ff0525f2SOliver-Rainer Wittmann Reference<ui::XUIElement> SAL_CALL SwPanelFactory::createUIElement ( 86ff0525f2SOliver-Rainer Wittmann const ::rtl::OUString& rsResourceURL, 87ff0525f2SOliver-Rainer Wittmann const ::cssu::Sequence<css::beans::PropertyValue>& rArguments) 88ff0525f2SOliver-Rainer Wittmann throw( 89ff0525f2SOliver-Rainer Wittmann container::NoSuchElementException, 90ff0525f2SOliver-Rainer Wittmann lang::IllegalArgumentException, 91ff0525f2SOliver-Rainer Wittmann RuntimeException) 92ff0525f2SOliver-Rainer Wittmann { 93ff0525f2SOliver-Rainer Wittmann Reference<ui::XUIElement> xElement; 94ff0525f2SOliver-Rainer Wittmann 95ff0525f2SOliver-Rainer Wittmann const ::comphelper::NamedValueCollection aArguments (rArguments); 96ff0525f2SOliver-Rainer Wittmann Reference<frame::XFrame> xFrame (aArguments.getOrDefault("Frame", Reference<frame::XFrame>())); 97ff0525f2SOliver-Rainer Wittmann Reference<awt::XWindow> xParentWindow (aArguments.getOrDefault("ParentWindow", Reference<awt::XWindow>())); 98ff0525f2SOliver-Rainer Wittmann const sal_uInt64 nBindingsValue (aArguments.getOrDefault("SfxBindings", sal_uInt64(0))); 99ff0525f2SOliver-Rainer Wittmann SfxBindings* pBindings = reinterpret_cast<SfxBindings*>(nBindingsValue); 100ff0525f2SOliver-Rainer Wittmann 101ff0525f2SOliver-Rainer Wittmann ::Window* pParentWindow = VCLUnoHelper::GetWindow(xParentWindow); 102ff0525f2SOliver-Rainer Wittmann if ( ! xParentWindow.is() || pParentWindow==NULL) 103ff0525f2SOliver-Rainer Wittmann throw RuntimeException( 104ff0525f2SOliver-Rainer Wittmann A2S("PanelFactory::createUIElement called without ParentWindow"), 105ff0525f2SOliver-Rainer Wittmann NULL); 106ff0525f2SOliver-Rainer Wittmann if ( ! xFrame.is()) 107ff0525f2SOliver-Rainer Wittmann throw RuntimeException( 108ff0525f2SOliver-Rainer Wittmann A2S("PanelFactory::createUIElement called without Frame"), 109ff0525f2SOliver-Rainer Wittmann NULL); 110ff0525f2SOliver-Rainer Wittmann if (pBindings == NULL) 111ff0525f2SOliver-Rainer Wittmann throw RuntimeException( 112ff0525f2SOliver-Rainer Wittmann A2S("PanelFactory::createUIElement called without SfxBindings"), 113ff0525f2SOliver-Rainer Wittmann NULL); 114ff0525f2SOliver-Rainer Wittmann 115ff0525f2SOliver-Rainer Wittmann #define DoesResourceEndWith(s) rsResourceURL.endsWithAsciiL(s,strlen(s)) 116ff0525f2SOliver-Rainer Wittmann if (DoesResourceEndWith("/PagePropertyPanel")) 117ff0525f2SOliver-Rainer Wittmann { 118*5cd5f659SOliver-Rainer Wittmann PagePropertyPanel* pPanel = PagePropertyPanel::Create( pParentWindow, pBindings ); 119ff0525f2SOliver-Rainer Wittmann xElement = sfx2::sidebar::SidebarPanelBase::Create( 120ff0525f2SOliver-Rainer Wittmann rsResourceURL, 121ff0525f2SOliver-Rainer Wittmann xFrame, 122ff0525f2SOliver-Rainer Wittmann pPanel, 123ff0525f2SOliver-Rainer Wittmann ::boost::bind(&PagePropertyPanel::ShowPageStyleFormatDialog, pPanel), 124ff0525f2SOliver-Rainer Wittmann ui::LayoutSize(-1,-1,-1)); 125ff0525f2SOliver-Rainer Wittmann } 126ff0525f2SOliver-Rainer Wittmann #undef DoesResourceEndWith 127ff0525f2SOliver-Rainer Wittmann 128ff0525f2SOliver-Rainer Wittmann return xElement; 129ff0525f2SOliver-Rainer Wittmann } 130ff0525f2SOliver-Rainer Wittmann 131ff0525f2SOliver-Rainer Wittmann } } // end of namespace sw::sidebar 132ff0525f2SOliver-Rainer Wittmann 133ff0525f2SOliver-Rainer Wittmann // eof 134