1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 // MARKER(update_precomp.py): autogen include statement, do not remove
24 #include "precompiled_scripting.hxx"
25 
26 #include "DialogModelProvider.hxx"
27 #include "dlgprov.hxx"
28 #include <com/sun/star/resource/XStringResourceManager.hpp>
29 #include <com/sun/star/ucb/XSimpleFileAccess.hpp>
30 
31 
32 // component helper namespace
33 namespace comp_DialogModelProvider {
34 
35 namespace css = ::com::sun::star;
36 using namespace ::com::sun::star;
37 using namespace awt;
38 using namespace lang;
39 using namespace uno;
40 using namespace script;
41 using namespace beans;
42 
43 
44 // component and service helper functions:
45 ::rtl::OUString SAL_CALL _getImplementationName();
46 css::uno::Sequence< ::rtl::OUString > SAL_CALL _getSupportedServiceNames();
47 css::uno::Reference< css::uno::XInterface > SAL_CALL _create( css::uno::Reference< css::uno::XComponentContext > const & context );
48 
49 } // closing component helper namespace
50 
51 
52 
53 /// anonymous implementation namespace
54 namespace dlgprov {
55 
56 namespace css = ::com::sun::star;
57 using namespace ::com::sun::star;
58 using namespace awt;
59 using namespace lang;
60 using namespace uno;
61 using namespace script;
62 using namespace beans;
63 
64 
DialogModelProvider(Reference<XComponentContext> const & context)65 DialogModelProvider::DialogModelProvider(Reference< XComponentContext > const & context) :
66     m_xContext(context)
67 {}
68 
69 // lang::XInitialization:
initialize(const css::uno::Sequence<uno::Any> & aArguments)70 void SAL_CALL DialogModelProvider::initialize(const css::uno::Sequence< uno::Any > & aArguments) throw (css::uno::RuntimeException, css::uno::Exception)
71 {
72 	if ( aArguments.getLength() == 1 )
73     {
74         ::rtl::OUString sURL;
75         if ( !( aArguments[ 0 ] >>= sURL ))
76             throw css::lang::IllegalArgumentException();
77          // Try any other URL with SimpleFileAccess
78         Reference< XMultiComponentFactory > xSMgr( m_xContext->getServiceManager(), UNO_QUERY_THROW );
79 		Reference< ucb::XSimpleFileAccess > xSFI =
80 			Reference< ucb::XSimpleFileAccess >( xSMgr->createInstanceWithContext
81 			( ::rtl::OUString::createFromAscii( "com.sun.star.ucb.SimpleFileAccess" ), m_xContext ), UNO_QUERY );
82 
83 		try
84 		{
85 			Reference< io::XInputStream > xInput = xSFI->openFileRead( sURL );
86             Reference< resource::XStringResourceManager > xStringResourceManager;
87 			if ( xInput.is() )
88 			{
89                 xStringResourceManager = dlgprov::lcl_getStringResourceManager(m_xContext,sURL);
90                 Any aDialogSourceURLAny;
91 			    aDialogSourceURLAny <<= sURL;
92 
93 			    m_xDialogModel.set( dlgprov::lcl_createDialogModel( m_xContext,xInput , xStringResourceManager, aDialogSourceURLAny  ), UNO_QUERY_THROW);
94                 m_xDialogModelProp.set(m_xDialogModel, UNO_QUERY_THROW);
95 			}
96 		}
97 		catch( Exception& )
98 		{}
99         //m_sURL = sURL;
100     }
101 }
102 
103 // container::XElementAccess:
getElementType()104 uno::Type SAL_CALL DialogModelProvider::getElementType() throw (css::uno::RuntimeException)
105 {
106     return m_xDialogModel->getElementType();
107 }
108 
hasElements()109 ::sal_Bool SAL_CALL DialogModelProvider::hasElements() throw (css::uno::RuntimeException)
110 {
111     return m_xDialogModel->hasElements();
112 }
113 
114 // container::XNameAccess:
getByName(const::rtl::OUString & aName)115 uno::Any SAL_CALL DialogModelProvider::getByName(const ::rtl::OUString & aName) throw (css::uno::RuntimeException, css::container::NoSuchElementException, css::lang::WrappedTargetException)
116 {
117     return m_xDialogModel->getByName(aName);
118 }
119 
getElementNames()120 css::uno::Sequence< ::rtl::OUString > SAL_CALL DialogModelProvider::getElementNames() throw (css::uno::RuntimeException)
121 {
122     return m_xDialogModel->getElementNames();
123 }
124 
hasByName(const::rtl::OUString & aName)125 ::sal_Bool SAL_CALL DialogModelProvider::hasByName(const ::rtl::OUString & aName) throw (css::uno::RuntimeException)
126 {
127     return m_xDialogModel->hasByName(aName);
128 }
129 
130 // container::XNameReplace:
replaceByName(const::rtl::OUString & aName,const uno::Any & aElement)131 void SAL_CALL DialogModelProvider::replaceByName(const ::rtl::OUString & aName, const uno::Any & aElement) throw (css::uno::RuntimeException, css::lang::IllegalArgumentException, css::container::NoSuchElementException, css::lang::WrappedTargetException)
132 {
133     m_xDialogModel->replaceByName(aName,aElement);
134 }
135 
136 // container::XNameContainer:
insertByName(const::rtl::OUString & aName,const uno::Any & aElement)137 void SAL_CALL DialogModelProvider::insertByName(const ::rtl::OUString & aName, const uno::Any & aElement) throw (css::uno::RuntimeException, css::lang::IllegalArgumentException, css::container::ElementExistException, css::lang::WrappedTargetException)
138 {
139     m_xDialogModel->insertByName(aName,aElement);
140 }
141 
removeByName(const::rtl::OUString & aName)142 void SAL_CALL DialogModelProvider::removeByName(const ::rtl::OUString & aName) throw (css::uno::RuntimeException, css::container::NoSuchElementException, css::lang::WrappedTargetException)
143 {
144     m_xDialogModel->removeByName(aName);
145 }
getPropertySetInfo()146 uno::Reference< beans::XPropertySetInfo > SAL_CALL DialogModelProvider::getPropertySetInfo(  ) throw (uno::RuntimeException)
147 {
148     return m_xDialogModelProp->getPropertySetInfo();
149 }
setPropertyValue(const::rtl::OUString &,const uno::Any &)150 void SAL_CALL DialogModelProvider::setPropertyValue( const ::rtl::OUString&, const uno::Any& ) throw (beans::UnknownPropertyException, beans::PropertyVetoException, lang::IllegalArgumentException, lang::WrappedTargetException, uno::RuntimeException)
151 {
152 }
getPropertyValue(const::rtl::OUString & PropertyName)153 uno::Any SAL_CALL DialogModelProvider::getPropertyValue( const ::rtl::OUString& PropertyName ) throw (beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException)
154 {
155     return m_xDialogModelProp->getPropertyValue(PropertyName);
156 }
addPropertyChangeListener(const::rtl::OUString &,const uno::Reference<beans::XPropertyChangeListener> &)157 void SAL_CALL DialogModelProvider::addPropertyChangeListener( const ::rtl::OUString& , const uno::Reference< beans::XPropertyChangeListener >& ) throw (beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException)
158 {
159 }
removePropertyChangeListener(const::rtl::OUString &,const uno::Reference<beans::XPropertyChangeListener> &)160 void SAL_CALL DialogModelProvider::removePropertyChangeListener( const ::rtl::OUString& , const uno::Reference< beans::XPropertyChangeListener >& ) throw (beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException)
161 {
162 }
addVetoableChangeListener(const::rtl::OUString &,const uno::Reference<beans::XVetoableChangeListener> &)163 void SAL_CALL DialogModelProvider::addVetoableChangeListener( const ::rtl::OUString& , const uno::Reference< beans::XVetoableChangeListener >& ) throw (beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException)
164 {
165 }
removeVetoableChangeListener(const::rtl::OUString &,const uno::Reference<beans::XVetoableChangeListener> &)166 void SAL_CALL DialogModelProvider::removeVetoableChangeListener( const ::rtl::OUString& ,const uno::Reference< beans::XVetoableChangeListener >& ) throw (beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException)
167 {
168 }
169 
170 // com.sun.star.uno.XServiceInfo:
getImplementationName()171 ::rtl::OUString SAL_CALL DialogModelProvider::getImplementationName() throw (css::uno::RuntimeException)
172 {
173     return comp_DialogModelProvider::_getImplementationName();
174 }
175 
supportsService(::rtl::OUString const & serviceName)176 ::sal_Bool SAL_CALL DialogModelProvider::supportsService(::rtl::OUString const & serviceName) throw (css::uno::RuntimeException)
177 {
178     css::uno::Sequence< ::rtl::OUString > serviceNames = comp_DialogModelProvider::_getSupportedServiceNames();
179     for (::sal_Int32 i = 0; i < serviceNames.getLength(); ++i) {
180         if (serviceNames[i] == serviceName)
181             return sal_True;
182     }
183     return sal_False;
184 }
185 
getSupportedServiceNames()186 css::uno::Sequence< ::rtl::OUString > SAL_CALL DialogModelProvider::getSupportedServiceNames() throw (css::uno::RuntimeException)
187 {
188     return comp_DialogModelProvider::_getSupportedServiceNames();
189 }
190 
191 } // closing anonymous implementation namespace
192 
193