xref: /aoo42x/main/cui/source/dialogs/insdlg.cxx (revision 2ee96f1c)
1*2ee96f1cSAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*2ee96f1cSAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*2ee96f1cSAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*2ee96f1cSAndrew Rist  * distributed with this work for additional information
6*2ee96f1cSAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*2ee96f1cSAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*2ee96f1cSAndrew Rist  * "License"); you may not use this file except in compliance
9*2ee96f1cSAndrew Rist  * with the License.  You may obtain a copy of the License at
10*2ee96f1cSAndrew Rist  *
11*2ee96f1cSAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12*2ee96f1cSAndrew Rist  *
13*2ee96f1cSAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*2ee96f1cSAndrew Rist  * software distributed under the License is distributed on an
15*2ee96f1cSAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*2ee96f1cSAndrew Rist  * KIND, either express or implied.  See the License for the
17*2ee96f1cSAndrew Rist  * specific language governing permissions and limitations
18*2ee96f1cSAndrew Rist  * under the License.
19*2ee96f1cSAndrew Rist  *
20*2ee96f1cSAndrew Rist  *************************************************************/
21*2ee96f1cSAndrew Rist 
22*2ee96f1cSAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
25cdf0e10cSrcweir #include "precompiled_cui.hxx"
26cdf0e10cSrcweir 
27cdf0e10cSrcweir #include <com/sun/star/ui/dialogs/TemplateDescription.hpp>
28cdf0e10cSrcweir #include <com/sun/star/ui/dialogs/ExecutableDialogResults.hpp>
29cdf0e10cSrcweir #include <com/sun/star/ui/dialogs/XFilePicker.hpp>
30cdf0e10cSrcweir #include <com/sun/star/ui/dialogs/XFilterManager.hpp>
31cdf0e10cSrcweir #include <com/sun/star/lang/XMultiServiceFactory.hpp>
32cdf0e10cSrcweir #include <com/sun/star/lang/XInitialization.hpp>
33cdf0e10cSrcweir #include <comphelper/processfactory.hxx>
34cdf0e10cSrcweir #include <com/sun/star/embed/EmbedStates.hpp>
35cdf0e10cSrcweir #include <com/sun/star/beans/XPropertySet.hpp>
36cdf0e10cSrcweir #include <com/sun/star/beans/PropertyValue.hpp>
37cdf0e10cSrcweir #include <com/sun/star/embed/XInsertObjectDialog.hpp>
38cdf0e10cSrcweir #include <com/sun/star/ucb/CommandAbortedException.hpp>
39cdf0e10cSrcweir #include <com/sun/star/task/XInteractionHandler.hpp>
40cdf0e10cSrcweir 
41cdf0e10cSrcweir #include "insdlg.hxx"
42cdf0e10cSrcweir #include <dialmgr.hxx>
43cdf0e10cSrcweir #include <svtools/sores.hxx>
44cdf0e10cSrcweir 
45cdf0e10cSrcweir #include <stdio.h>
46cdf0e10cSrcweir #include <tools/urlobj.hxx>
47cdf0e10cSrcweir #include <tools/debug.hxx>
48cdf0e10cSrcweir #include <svl/urihelper.hxx>
49cdf0e10cSrcweir #include <svtools/svmedit.hxx>
50cdf0e10cSrcweir #include <vcl/button.hxx>
51cdf0e10cSrcweir #include <vcl/fixed.hxx>
52cdf0e10cSrcweir #include <vcl/group.hxx>
53cdf0e10cSrcweir #include <vcl/lstbox.hxx>
54cdf0e10cSrcweir #include <vcl/msgbox.hxx>
55cdf0e10cSrcweir #include <vcl/svapp.hxx>
56cdf0e10cSrcweir #include <sot/clsids.hxx>
57cdf0e10cSrcweir #include <sfx2/frmdescr.hxx>
58cdf0e10cSrcweir #include <sfx2/viewsh.hxx>
59cdf0e10cSrcweir #include <sfx2/filedlghelper.hxx>
60cdf0e10cSrcweir #include <svl/ownlist.hxx>
61cdf0e10cSrcweir #include <comphelper/seqstream.hxx>
62cdf0e10cSrcweir 
63cdf0e10cSrcweir #include "svuidlg.hrc"
64cdf0e10cSrcweir 
65cdf0e10cSrcweir #include <osl/file.hxx>
66cdf0e10cSrcweir 
67cdf0e10cSrcweir #include <com/sun/star/container/XHierarchicalNameAccess.hpp>
68cdf0e10cSrcweir #include <com/sun/star/container/XNameAccess.hpp>
69cdf0e10cSrcweir #include <unotools/processfactory.hxx>
70cdf0e10cSrcweir 
71cdf0e10cSrcweir using namespace ::com::sun::star;
72cdf0e10cSrcweir using namespace ::com::sun::star::lang;
73cdf0e10cSrcweir using namespace ::com::sun::star::uno;
74cdf0e10cSrcweir using namespace ::com::sun::star::container;
75cdf0e10cSrcweir using namespace ::com::sun::star::ui::dialogs;
76cdf0e10cSrcweir using ::rtl::OUString;
77cdf0e10cSrcweir 
78cdf0e10cSrcweir #define _SVSTDARR_STRINGSDTOR
79cdf0e10cSrcweir #include <svl/svstdarr.hxx>
80cdf0e10cSrcweir 
81cdf0e10cSrcweir 
82cdf0e10cSrcweir static String impl_getSvtResString( sal_uInt32 nId )
83cdf0e10cSrcweir {
84cdf0e10cSrcweir     String aRet;
85cdf0e10cSrcweir     com::sun::star::lang::Locale aLocale = Application::GetSettings().GetUILocale();
86cdf0e10cSrcweir     ResMgr* pMgr = ResMgr::CreateResMgr( "svt", aLocale );
87cdf0e10cSrcweir     if( pMgr )
88cdf0e10cSrcweir     {
89cdf0e10cSrcweir         aRet = String( ResId( nId, *pMgr ) );
90cdf0e10cSrcweir         delete pMgr;
91cdf0e10cSrcweir     }
92cdf0e10cSrcweir     return aRet;
93cdf0e10cSrcweir }
94cdf0e10cSrcweir 
95cdf0e10cSrcweir sal_Bool InsertObjectDialog_Impl::IsCreateNew() const
96cdf0e10cSrcweir {
97cdf0e10cSrcweir     return sal_False;
98cdf0e10cSrcweir }
99cdf0e10cSrcweir 
100cdf0e10cSrcweir uno::Reference< io::XInputStream > InsertObjectDialog_Impl::GetIconIfIconified( ::rtl::OUString* /*pGraphicMediaType*/ )
101cdf0e10cSrcweir {
102cdf0e10cSrcweir 	return uno::Reference< io::XInputStream >();
103cdf0e10cSrcweir }
104cdf0e10cSrcweir 
105cdf0e10cSrcweir InsertObjectDialog_Impl::InsertObjectDialog_Impl( Window * pParent, const ResId & rResId, const com::sun::star::uno::Reference < com::sun::star::embed::XStorage >& xStorage )
106cdf0e10cSrcweir  : ModalDialog( pParent, rResId )
107cdf0e10cSrcweir  , m_xStorage( xStorage )
108cdf0e10cSrcweir  , aCnt( m_xStorage )
109cdf0e10cSrcweir {
110cdf0e10cSrcweir }
111cdf0e10cSrcweir 
112cdf0e10cSrcweir // -----------------------------------------------------------------------
113cdf0e10cSrcweir 
114cdf0e10cSrcweir IMPL_LINK_INLINE_START( SvInsertOleDlg, DoubleClickHdl, ListBox *, EMPTYARG )
115cdf0e10cSrcweir {
116cdf0e10cSrcweir 	EndDialog( RET_OK );
117cdf0e10cSrcweir 	return 0;
118cdf0e10cSrcweir }
119cdf0e10cSrcweir IMPL_LINK_INLINE_END( SvInsertOleDlg, DoubleClickHdl, ListBox *, pListBox )
120cdf0e10cSrcweir 
121cdf0e10cSrcweir // -----------------------------------------------------------------------
122cdf0e10cSrcweir 
123cdf0e10cSrcweir IMPL_LINK( SvInsertOleDlg, BrowseHdl, PushButton *, EMPTYARG )
124cdf0e10cSrcweir {
125cdf0e10cSrcweir     Reference< XMultiServiceFactory > xFactory( ::comphelper::getProcessServiceFactory() );
126cdf0e10cSrcweir     if( xFactory.is() )
127cdf0e10cSrcweir     {
128cdf0e10cSrcweir         Reference< XFilePicker > xFilePicker( xFactory->createInstance( OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.ui.dialogs.FilePicker" ) ) ), UNO_QUERY );
129cdf0e10cSrcweir         DBG_ASSERT( xFilePicker.is(), "could not get FilePicker service" );
130cdf0e10cSrcweir 
131cdf0e10cSrcweir         Reference< XInitialization > xInit( xFilePicker, UNO_QUERY );
132cdf0e10cSrcweir         Reference< XFilterManager > xFilterMgr( xFilePicker, UNO_QUERY );
133cdf0e10cSrcweir         if( xInit.is() && xFilePicker.is() && xFilterMgr.is() )
134cdf0e10cSrcweir         {
135cdf0e10cSrcweir             Sequence< Any > aServiceType( 1 );
136cdf0e10cSrcweir             aServiceType[0] <<= TemplateDescription::FILEOPEN_SIMPLE;
137cdf0e10cSrcweir             xInit->initialize( aServiceType );
138cdf0e10cSrcweir 
139cdf0e10cSrcweir             // add filter
140cdf0e10cSrcweir             try
141cdf0e10cSrcweir             {
142cdf0e10cSrcweir                 xFilterMgr->appendFilter(
143cdf0e10cSrcweir                      OUString(),
144cdf0e10cSrcweir                      OUString( RTL_CONSTASCII_USTRINGPARAM( "*.*" ) )
145cdf0e10cSrcweir                      );
146cdf0e10cSrcweir             }
147cdf0e10cSrcweir             catch( IllegalArgumentException& )
148cdf0e10cSrcweir             {
149cdf0e10cSrcweir                 DBG_ASSERT( 0, "caught IllegalArgumentException when registering filter\n" );
150cdf0e10cSrcweir             }
151cdf0e10cSrcweir 
152cdf0e10cSrcweir             if( xFilePicker->execute() == ExecutableDialogResults::OK )
153cdf0e10cSrcweir             {
154cdf0e10cSrcweir                 Sequence< OUString > aPathSeq( xFilePicker->getFiles() );
155cdf0e10cSrcweir 				INetURLObject aObj( aPathSeq[0] );
156cdf0e10cSrcweir 				aEdFilepath.SetText( aObj.PathToFileName() );
157cdf0e10cSrcweir             }
158cdf0e10cSrcweir         }
159cdf0e10cSrcweir     }
160cdf0e10cSrcweir 
161cdf0e10cSrcweir 	return 0;
162cdf0e10cSrcweir }
163cdf0e10cSrcweir 
164cdf0e10cSrcweir // -----------------------------------------------------------------------
165cdf0e10cSrcweir 
166cdf0e10cSrcweir IMPL_LINK( SvInsertOleDlg, RadioHdl, RadioButton *, EMPTYARG )
167cdf0e10cSrcweir {
168cdf0e10cSrcweir 	if ( aRbNewObject.IsChecked() )
169cdf0e10cSrcweir 	{
170cdf0e10cSrcweir 		aLbObjecttype.Show();
171cdf0e10cSrcweir 		aEdFilepath.Hide();
172cdf0e10cSrcweir 		aBtnFilepath.Hide();
173cdf0e10cSrcweir 		aCbFilelink.Hide();
174cdf0e10cSrcweir 		aGbObject.SetText( _aOldStr );
175cdf0e10cSrcweir 	}
176cdf0e10cSrcweir 	else
177cdf0e10cSrcweir 	{
178cdf0e10cSrcweir         aCbFilelink.Show();
179cdf0e10cSrcweir 		aLbObjecttype.Hide();
180cdf0e10cSrcweir 		aEdFilepath.Show();
181cdf0e10cSrcweir 		aBtnFilepath.Show();
182cdf0e10cSrcweir 		aCbFilelink.Show();
183cdf0e10cSrcweir 		aGbObject.SetText( aStrFile );
184cdf0e10cSrcweir 	}
185cdf0e10cSrcweir 	return 0;
186cdf0e10cSrcweir }
187cdf0e10cSrcweir 
188cdf0e10cSrcweir // -----------------------------------------------------------------------
189cdf0e10cSrcweir 
190cdf0e10cSrcweir void SvInsertOleDlg::SelectDefault()
191cdf0e10cSrcweir {
192cdf0e10cSrcweir 	aLbObjecttype.SelectEntryPos( 0 );
193cdf0e10cSrcweir }
194cdf0e10cSrcweir 
195cdf0e10cSrcweir // -----------------------------------------------------------------------
196cdf0e10cSrcweir SvInsertOleDlg::SvInsertOleDlg
197cdf0e10cSrcweir (
198cdf0e10cSrcweir     Window* pParent,
199cdf0e10cSrcweir     const Reference < embed::XStorage >& xStorage,
200cdf0e10cSrcweir     const SvObjectServerList* pServers
201cdf0e10cSrcweir )
202cdf0e10cSrcweir     : InsertObjectDialog_Impl( pParent, CUI_RES( MD_INSERT_OLEOBJECT ), xStorage ),
203cdf0e10cSrcweir     aRbNewObject( this, CUI_RES( RB_NEW_OBJECT ) ),
204cdf0e10cSrcweir     aRbObjectFromfile( this, CUI_RES( RB_OBJECT_FROMFILE ) ),
205cdf0e10cSrcweir     aGbObject( this, CUI_RES( GB_OBJECT ) ),
206cdf0e10cSrcweir     aLbObjecttype( this, CUI_RES( LB_OBJECTTYPE ) ),
207cdf0e10cSrcweir     aEdFilepath( this, CUI_RES( ED_FILEPATH ) ),
208cdf0e10cSrcweir     aBtnFilepath( this, CUI_RES( BTN_FILEPATH ) ),
209cdf0e10cSrcweir     aCbFilelink( this, CUI_RES( CB_FILELINK ) ),
210cdf0e10cSrcweir     aOKButton1( this, CUI_RES( 1 ) ),
211cdf0e10cSrcweir     aCancelButton1( this, CUI_RES( 1 ) ),
212cdf0e10cSrcweir     aHelpButton1( this, CUI_RES( 1 ) ),
213cdf0e10cSrcweir     aStrFile( CUI_RES( STR_FILE ) ),
214cdf0e10cSrcweir     m_pServers( pServers )
215cdf0e10cSrcweir {
216cdf0e10cSrcweir     FreeResource();
217cdf0e10cSrcweir 	_aOldStr = aGbObject.GetText();
218cdf0e10cSrcweir     aLbObjecttype.SetDoubleClickHdl( LINK( this, SvInsertOleDlg, DoubleClickHdl ) );
219cdf0e10cSrcweir 	aBtnFilepath.SetClickHdl( LINK( this, SvInsertOleDlg, BrowseHdl ) );
220cdf0e10cSrcweir 	Link aLink( LINK( this, SvInsertOleDlg, RadioHdl ) );
221cdf0e10cSrcweir 	aRbNewObject.SetClickHdl( aLink );
222cdf0e10cSrcweir 	aRbObjectFromfile.SetClickHdl( aLink );
223cdf0e10cSrcweir 	aRbNewObject.Check( sal_True );
224cdf0e10cSrcweir 	RadioHdl( NULL );
225cdf0e10cSrcweir 	aBtnFilepath.SetAccessibleRelationMemberOf(&aGbObject);
226cdf0e10cSrcweir }
227cdf0e10cSrcweir 
228cdf0e10cSrcweir short SvInsertOleDlg::Execute()
229cdf0e10cSrcweir {
230cdf0e10cSrcweir     short nRet = RET_OK;
231cdf0e10cSrcweir 	SvObjectServerList  aObjS;
232cdf0e10cSrcweir     if ( !m_pServers )
233cdf0e10cSrcweir 	{
234cdf0e10cSrcweir         // if no list was provided, take the complete one
235cdf0e10cSrcweir 		aObjS.FillInsertObjects();
236cdf0e10cSrcweir         m_pServers = &aObjS;
237cdf0e10cSrcweir 	}
238cdf0e10cSrcweir 
239cdf0e10cSrcweir     // fill listbox and select default
240cdf0e10cSrcweir     ListBox& rBox = GetObjectTypes();
241cdf0e10cSrcweir 	rBox.SetUpdateMode( sal_False );
242cdf0e10cSrcweir     for ( sal_uLong i = 0; i < m_pServers->Count(); i++ )
243cdf0e10cSrcweir         rBox.InsertEntry( (*m_pServers)[i].GetHumanName() );
244cdf0e10cSrcweir 	rBox.SetUpdateMode( sal_True );
245cdf0e10cSrcweir     SelectDefault();
246cdf0e10cSrcweir     ::rtl::OUString aName;
247cdf0e10cSrcweir 
248cdf0e10cSrcweir     DBG_ASSERT( m_xStorage.is(), "No storage!");
249cdf0e10cSrcweir     if ( m_xStorage.is() && ( nRet = Dialog::Execute() ) == RET_OK )
250cdf0e10cSrcweir 	{
251cdf0e10cSrcweir         String aFileName;
252cdf0e10cSrcweir         sal_Bool bLink = sal_False;
253cdf0e10cSrcweir         sal_Bool bCreateNew = IsCreateNew();
254cdf0e10cSrcweir         if ( bCreateNew )
255cdf0e10cSrcweir 		{
256cdf0e10cSrcweir             // create and insert new embedded object
257cdf0e10cSrcweir             String aServerName = rBox.GetSelectEntry();
258cdf0e10cSrcweir             const SvObjectServer* pS = m_pServers->Get( aServerName );
259cdf0e10cSrcweir 			if ( pS )
260cdf0e10cSrcweir 			{
261cdf0e10cSrcweir                 if( pS->GetClassName() == SvGlobalName( SO3_OUT_CLASSID ) )
262cdf0e10cSrcweir 				{
263cdf0e10cSrcweir 					try
264cdf0e10cSrcweir 					{
265cdf0e10cSrcweir                     	uno::Reference < embed::XInsertObjectDialog > xDialogCreator(
266cdf0e10cSrcweir 							::comphelper::getProcessServiceFactory()->createInstance(
267cdf0e10cSrcweir                             	::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.embed.MSOLEObjectSystemCreator")) ),
268cdf0e10cSrcweir 							uno::UNO_QUERY );
269cdf0e10cSrcweir 
270cdf0e10cSrcweir 						if ( xDialogCreator.is() )
271cdf0e10cSrcweir 						{
272cdf0e10cSrcweir 							aName = aCnt.CreateUniqueObjectName();
273cdf0e10cSrcweir                         	embed::InsertedObjectInfo aNewInf = xDialogCreator->createInstanceByDialog(
274cdf0e10cSrcweir 																	m_xStorage,
275cdf0e10cSrcweir 																	aName,
276cdf0e10cSrcweir                                     								uno::Sequence < beans::PropertyValue >() );
277cdf0e10cSrcweir 
278cdf0e10cSrcweir 							OSL_ENSURE( aNewInf.Object.is(), "The object must be created or an exception must be thrown!" );
279cdf0e10cSrcweir 							m_xObj = aNewInf.Object;
280cdf0e10cSrcweir 							for ( sal_Int32 nInd = 0; nInd < aNewInf.Options.getLength(); nInd++ )
281cdf0e10cSrcweir 								if ( aNewInf.Options[nInd].Name.equals( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Icon" ) ) ) )
282cdf0e10cSrcweir 								{
283cdf0e10cSrcweir 									aNewInf.Options[nInd].Value >>= m_aIconMetaFile;
284cdf0e10cSrcweir 								}
285cdf0e10cSrcweir 								else if ( aNewInf.Options[nInd].Name.equals( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "IconFormat" ) ) ) )
286cdf0e10cSrcweir 								{
287cdf0e10cSrcweir 									datatransfer::DataFlavor aFlavor;
288cdf0e10cSrcweir 									if ( aNewInf.Options[nInd].Value >>= aFlavor )
289cdf0e10cSrcweir 										m_aIconMediaType = aFlavor.MimeType;
290cdf0e10cSrcweir 								}
291cdf0e10cSrcweir 
292cdf0e10cSrcweir 						}
293cdf0e10cSrcweir 					}
294cdf0e10cSrcweir 					catch( ucb::CommandAbortedException& )
295cdf0e10cSrcweir 					{
296cdf0e10cSrcweir 						// the user has pressed cancel
297cdf0e10cSrcweir 					}
298cdf0e10cSrcweir 					catch( uno::Exception& )
299cdf0e10cSrcweir 					{
300cdf0e10cSrcweir 						// TODO: Error handling
301cdf0e10cSrcweir 					}
302cdf0e10cSrcweir 				}
303cdf0e10cSrcweir                 else
304cdf0e10cSrcweir                 {
305cdf0e10cSrcweir                     // create object with desired ClassId
306cdf0e10cSrcweir                     m_xObj = aCnt.CreateEmbeddedObject( pS->GetClassName().GetByteSequence(), aName );
307cdf0e10cSrcweir                 }
308cdf0e10cSrcweir 
309cdf0e10cSrcweir                 if ( !m_xObj.is() )
310cdf0e10cSrcweir 				{
311cdf0e10cSrcweir                     if( aFileName.Len() )  // from OLE Dialog
312cdf0e10cSrcweir 					{
313cdf0e10cSrcweir 						// Objekt konnte nicht aus Datei erzeugt werden
314cdf0e10cSrcweir                         // global Resource from svtools (former so3 resource)
315cdf0e10cSrcweir                         String aErr( impl_getSvtResString( STR_ERROR_OBJNOCREATE_FROM_FILE ) );
316cdf0e10cSrcweir                         aErr.SearchAndReplace( String( '%' ), aFileName );
317cdf0e10cSrcweir                         ErrorBox( this, WB_3DLOOK | WB_OK, aErr ).Execute();
318cdf0e10cSrcweir 					}
319cdf0e10cSrcweir 					else
320cdf0e10cSrcweir 					{
321cdf0e10cSrcweir 						// Objekt konnte nicht erzeugt werden
322cdf0e10cSrcweir                         // global Resource from svtools (former so3 resource)
323cdf0e10cSrcweir                         String aErr( impl_getSvtResString( STR_ERROR_OBJNOCREATE ) );
324cdf0e10cSrcweir                         aErr.SearchAndReplace( String( '%' ), aServerName );
325cdf0e10cSrcweir                         ErrorBox( this, WB_3DLOOK | WB_OK, aErr ).Execute();
326cdf0e10cSrcweir 					}
327cdf0e10cSrcweir 				}
328cdf0e10cSrcweir 			}
329cdf0e10cSrcweir 		}
330cdf0e10cSrcweir 		else
331cdf0e10cSrcweir 		{
332cdf0e10cSrcweir             aFileName = GetFilePath();
333cdf0e10cSrcweir             INetURLObject aURL;
334cdf0e10cSrcweir             aURL.SetSmartProtocol( INET_PROT_FILE );
335cdf0e10cSrcweir             aURL.SetSmartURL( aFileName );
336cdf0e10cSrcweir             aFileName = aURL.GetMainURL( INetURLObject::NO_DECODE );
337cdf0e10cSrcweir             bLink = IsLinked();
338cdf0e10cSrcweir 
339cdf0e10cSrcweir             if ( aFileName.Len() )
340cdf0e10cSrcweir             {
341cdf0e10cSrcweir                 // create MediaDescriptor for file to create object from
342cdf0e10cSrcweir                 uno::Sequence < beans::PropertyValue > aMedium( 2 );
343cdf0e10cSrcweir                 aMedium[0].Name = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "URL" ) );
344cdf0e10cSrcweir                 aMedium[0].Value <<= ::rtl::OUString( aFileName );
345cdf0e10cSrcweir 
346cdf0e10cSrcweir         		uno::Reference< task::XInteractionHandler > xInteraction;
347cdf0e10cSrcweir     			uno::Reference< lang::XMultiServiceFactory > xFactory = ::comphelper::getProcessServiceFactory();
348cdf0e10cSrcweir     			if ( xFactory.is() )
349cdf0e10cSrcweir         			xInteraction = uno::Reference< task::XInteractionHandler >(
350cdf0e10cSrcweir 						xFactory->createInstance(
351cdf0e10cSrcweir 							DEFINE_CONST_UNICODE("com.sun.star.task.InteractionHandler") ),
352cdf0e10cSrcweir 						uno::UNO_QUERY_THROW );
353cdf0e10cSrcweir 
354cdf0e10cSrcweir 				if ( xInteraction.is() )
355cdf0e10cSrcweir 				{
356cdf0e10cSrcweir                		aMedium[1].Name = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "InteractionHandler" ) );
357cdf0e10cSrcweir                		aMedium[1].Value <<= xInteraction;
358cdf0e10cSrcweir 				}
359cdf0e10cSrcweir 				else
360cdf0e10cSrcweir 				{
361cdf0e10cSrcweir 					OSL_ASSERT( "Can not get InteractionHandler!\n" );
362cdf0e10cSrcweir 					aMedium.realloc( 1 );
363cdf0e10cSrcweir 				}
364cdf0e10cSrcweir 
365cdf0e10cSrcweir                 // create object from media descriptor
366cdf0e10cSrcweir 				if ( bLink )
367cdf0e10cSrcweir 					m_xObj = aCnt.InsertEmbeddedLink( aMedium, aName );
368cdf0e10cSrcweir 				else
369cdf0e10cSrcweir                 	m_xObj = aCnt.InsertEmbeddedObject( aMedium, aName );
370cdf0e10cSrcweir             }
371cdf0e10cSrcweir 
372cdf0e10cSrcweir             if ( !m_xObj.is() )
373cdf0e10cSrcweir 			{
374cdf0e10cSrcweir 				// Objekt konnte nicht aus Datei erzeugt werden
375cdf0e10cSrcweir                 // global Resource from svtools (former so3 resource)
376cdf0e10cSrcweir                 String aErr( impl_getSvtResString( STR_ERROR_OBJNOCREATE_FROM_FILE ) );
377cdf0e10cSrcweir                 aErr.SearchAndReplace( String( '%' ), aFileName );
378cdf0e10cSrcweir                 ErrorBox( this, WB_3DLOOK | WB_OK, aErr ).Execute();
379cdf0e10cSrcweir 			}
380cdf0e10cSrcweir 		}
381cdf0e10cSrcweir 	}
382cdf0e10cSrcweir 
383cdf0e10cSrcweir     m_pServers = 0;
384cdf0e10cSrcweir     return nRet;
385cdf0e10cSrcweir }
386cdf0e10cSrcweir 
387cdf0e10cSrcweir uno::Reference< io::XInputStream > SvInsertOleDlg::GetIconIfIconified( ::rtl::OUString* pGraphicMediaType )
388cdf0e10cSrcweir {
389cdf0e10cSrcweir 	if ( m_aIconMetaFile.getLength() )
390cdf0e10cSrcweir 	{
391cdf0e10cSrcweir 		if ( pGraphicMediaType )
392cdf0e10cSrcweir 			*pGraphicMediaType = m_aIconMediaType;
393cdf0e10cSrcweir 
394cdf0e10cSrcweir 		return uno::Reference< io::XInputStream >( new ::comphelper::SequenceInputStream( m_aIconMetaFile ) );
395cdf0e10cSrcweir 	}
396cdf0e10cSrcweir 
397cdf0e10cSrcweir 	return uno::Reference< io::XInputStream >();
398cdf0e10cSrcweir }
399cdf0e10cSrcweir 
400cdf0e10cSrcweir IMPL_LINK( SvInsertPlugInDialog, BrowseHdl, PushButton *, EMPTYARG )
401cdf0e10cSrcweir {
402cdf0e10cSrcweir     Sequence< OUString > aFilterNames, aFilterTypes;
403cdf0e10cSrcweir     void fillNetscapePluginFilters( Sequence< OUString >& rNames, Sequence< OUString >& rTypes );
404cdf0e10cSrcweir     fillNetscapePluginFilters( aFilterNames, aFilterTypes );
405cdf0e10cSrcweir 
406cdf0e10cSrcweir     Reference< XMultiServiceFactory > xFactory( ::comphelper::getProcessServiceFactory() );
407cdf0e10cSrcweir     if( xFactory.is() )
408cdf0e10cSrcweir     {
409cdf0e10cSrcweir         Reference< XFilePicker > xFilePicker( xFactory->createInstance( OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.ui.dialogs.FilePicker" ) ) ), UNO_QUERY );
410cdf0e10cSrcweir         DBG_ASSERT( xFilePicker.is(), "could not get FilePicker service" );
411cdf0e10cSrcweir 
412cdf0e10cSrcweir         Reference< XInitialization > xInit( xFilePicker, UNO_QUERY );
413cdf0e10cSrcweir         Reference< XFilterManager > xFilterMgr( xFilePicker, UNO_QUERY );
414cdf0e10cSrcweir         if( xInit.is() && xFilePicker.is() && xFilterMgr.is() )
415cdf0e10cSrcweir         {
416cdf0e10cSrcweir             Sequence< Any > aServiceType( 1 );
417cdf0e10cSrcweir             aServiceType[0] <<= TemplateDescription::FILEOPEN_SIMPLE;
418cdf0e10cSrcweir             xInit->initialize( aServiceType );
419cdf0e10cSrcweir 
420cdf0e10cSrcweir             // add the filters
421cdf0e10cSrcweir             try
422cdf0e10cSrcweir             {
423cdf0e10cSrcweir                 const OUString* pNames = aFilterNames.getConstArray();
424cdf0e10cSrcweir                 const OUString* pTypes = aFilterTypes.getConstArray();
425cdf0e10cSrcweir                 for( int i = 0; i < aFilterNames.getLength(); i++ )
426cdf0e10cSrcweir                     xFilterMgr->appendFilter( pNames[i], pTypes[i] );
427cdf0e10cSrcweir             }
428cdf0e10cSrcweir             catch( IllegalArgumentException& )
429cdf0e10cSrcweir             {
430cdf0e10cSrcweir                 DBG_ASSERT( 0, "caught IllegalArgumentException when registering filter\n" );
431cdf0e10cSrcweir             }
432cdf0e10cSrcweir 
433cdf0e10cSrcweir             if( xFilePicker->execute() == ExecutableDialogResults::OK )
434cdf0e10cSrcweir             {
435cdf0e10cSrcweir                 Sequence< OUString > aPathSeq( xFilePicker->getFiles() );
436cdf0e10cSrcweir 				INetURLObject aObj( aPathSeq[0] );
437cdf0e10cSrcweir 				aEdFileurl.SetText( aObj.PathToFileName() );
438cdf0e10cSrcweir             }
439cdf0e10cSrcweir         }
440cdf0e10cSrcweir     }
441cdf0e10cSrcweir 
442cdf0e10cSrcweir 	return 0;
443cdf0e10cSrcweir }
444cdf0e10cSrcweir 
445cdf0e10cSrcweir // -----------------------------------------------------------------------
446cdf0e10cSrcweir 
447cdf0e10cSrcweir SvInsertPlugInDialog::SvInsertPlugInDialog( Window* pParent, const uno::Reference < embed::XStorage >& xStorage )
448cdf0e10cSrcweir     : InsertObjectDialog_Impl( pParent, CUI_RES( MD_INSERT_OBJECT_PLUGIN ), xStorage ),
449cdf0e10cSrcweir     aGbFileurl( this, CUI_RES( GB_FILEURL ) ),
450cdf0e10cSrcweir     aEdFileurl( this, CUI_RES( ED_FILEURL ) ),
451cdf0e10cSrcweir     aBtnFileurl( this, CUI_RES( BTN_FILEURL ) ),
452cdf0e10cSrcweir     aGbPluginsOptions( this, CUI_RES( GB_PLUGINS_OPTIONS ) ),
453cdf0e10cSrcweir     aEdPluginsOptions( this, CUI_RES( ED_PLUGINS_OPTIONS ) ),
454cdf0e10cSrcweir     aOKButton1( this, CUI_RES( 1 ) ),
455cdf0e10cSrcweir     aCancelButton1( this, CUI_RES( 1 ) ),
456cdf0e10cSrcweir     aHelpButton1( this, CUI_RES( 1 ) ),
457cdf0e10cSrcweir     m_pURL(0)
458cdf0e10cSrcweir {
459cdf0e10cSrcweir     FreeResource();
460cdf0e10cSrcweir     aBtnFileurl.SetClickHdl( LINK( this, SvInsertPlugInDialog, BrowseHdl ) );
461cdf0e10cSrcweir }
462cdf0e10cSrcweir 
463cdf0e10cSrcweir SvInsertPlugInDialog::~SvInsertPlugInDialog()
464cdf0e10cSrcweir {
465cdf0e10cSrcweir     delete m_pURL;
466cdf0e10cSrcweir }
467cdf0e10cSrcweir 
468cdf0e10cSrcweir // -----------------------------------------------------------------------
469cdf0e10cSrcweir 
470cdf0e10cSrcweir static void Plugin_ImplFillCommandSequence( const String& aCommands, uno::Sequence< beans::PropertyValue >& aCommandSequence )
471cdf0e10cSrcweir {
472cdf0e10cSrcweir     sal_uInt16 nEaten;
473cdf0e10cSrcweir     SvCommandList aLst;
474cdf0e10cSrcweir     aLst.AppendCommands( aCommands, &nEaten );
475cdf0e10cSrcweir 
476cdf0e10cSrcweir     const sal_Int32 nCount = aLst.Count();
477cdf0e10cSrcweir 	aCommandSequence.realloc( nCount );
478cdf0e10cSrcweir 	for( sal_Int32 nIndex = 0; nIndex < nCount; nIndex++ )
479cdf0e10cSrcweir 	{
480cdf0e10cSrcweir         const SvCommand& rCommand = aLst[ nIndex ];
481cdf0e10cSrcweir 
482cdf0e10cSrcweir 		aCommandSequence[nIndex].Name = rCommand.GetCommand();
483cdf0e10cSrcweir 		aCommandSequence[nIndex].Handle = -1;
484cdf0e10cSrcweir 		aCommandSequence[nIndex].Value = makeAny( OUString( rCommand.GetArgument() ) );
485cdf0e10cSrcweir         aCommandSequence[nIndex].State = beans::PropertyState_DIRECT_VALUE;
486cdf0e10cSrcweir 	}
487cdf0e10cSrcweir }
488cdf0e10cSrcweir 
489cdf0e10cSrcweir short SvInsertPlugInDialog::Execute()
490cdf0e10cSrcweir {
491cdf0e10cSrcweir     short nRet = RET_OK;
492cdf0e10cSrcweir     m_aCommands.Erase();
493cdf0e10cSrcweir     DBG_ASSERT( m_xStorage.is(), "No storage!");
494cdf0e10cSrcweir     if ( m_xStorage.is() && ( nRet = Dialog::Execute() ) == RET_OK )
495cdf0e10cSrcweir 	{
496cdf0e10cSrcweir         if ( !m_pURL )
497cdf0e10cSrcweir             m_pURL = new INetURLObject();
498cdf0e10cSrcweir 		else
499cdf0e10cSrcweir             *m_pURL = INetURLObject();
500cdf0e10cSrcweir 
501cdf0e10cSrcweir         m_aCommands = GetPlugInOptions();
502cdf0e10cSrcweir         String aURL = GetPlugInFile();
503cdf0e10cSrcweir 
504cdf0e10cSrcweir         // URL can be a valid and absolute URL or a system file name
505cdf0e10cSrcweir         m_pURL->SetSmartProtocol( INET_PROT_FILE );
506cdf0e10cSrcweir         if ( !aURL.Len() || m_pURL->SetSmartURL( aURL ) )
507cdf0e10cSrcweir 		{
508cdf0e10cSrcweir             // create a plugin object
509cdf0e10cSrcweir             ::rtl::OUString aName;
510cdf0e10cSrcweir             SvGlobalName aClassId( SO3_PLUGIN_CLASSID );
511cdf0e10cSrcweir             m_xObj = aCnt.CreateEmbeddedObject( aClassId.GetByteSequence(), aName );
512cdf0e10cSrcweir         }
513cdf0e10cSrcweir 
514cdf0e10cSrcweir         if ( m_xObj.is() )
515cdf0e10cSrcweir         {
516cdf0e10cSrcweir             // set properties from dialog
517cdf0e10cSrcweir             if ( m_xObj->getCurrentState() == embed::EmbedStates::LOADED )
518cdf0e10cSrcweir                 m_xObj->changeState( embed::EmbedStates::RUNNING );
519cdf0e10cSrcweir 
520cdf0e10cSrcweir             uno::Reference < beans::XPropertySet > xSet( m_xObj->getComponent(), uno::UNO_QUERY );
521cdf0e10cSrcweir             if ( xSet.is() )
522cdf0e10cSrcweir             {
523cdf0e10cSrcweir                 xSet->setPropertyValue( ::rtl::OUString::createFromAscii("PluginURL"),
524cdf0e10cSrcweir                         makeAny( ::rtl::OUString( m_pURL->GetMainURL( INetURLObject::NO_DECODE ) ) ) );
525cdf0e10cSrcweir                 uno::Sequence< beans::PropertyValue > aCommandSequence;
526cdf0e10cSrcweir                 Plugin_ImplFillCommandSequence( m_aCommands, aCommandSequence );
527cdf0e10cSrcweir                 xSet->setPropertyValue( ::rtl::OUString::createFromAscii("PluginCommands"), makeAny( aCommandSequence ) );
528cdf0e10cSrcweir             }
529cdf0e10cSrcweir 		}
530cdf0e10cSrcweir 		else
531cdf0e10cSrcweir 		{
532cdf0e10cSrcweir 			// PlugIn konnte nicht erzeugt werden
533cdf0e10cSrcweir             // global Resource from svtools (former so3 resource)
534cdf0e10cSrcweir             String aErr( impl_getSvtResString( STR_ERROR_OBJNOCREATE_PLUGIN ) );
535cdf0e10cSrcweir 			aErr.SearchAndReplace( String( '%' ), aURL );
536cdf0e10cSrcweir             ErrorBox( this, WB_3DLOOK | WB_OK, aErr ).Execute();
537cdf0e10cSrcweir 		}
538cdf0e10cSrcweir 	}
539cdf0e10cSrcweir 
540cdf0e10cSrcweir     return nRet;
541cdf0e10cSrcweir }
542cdf0e10cSrcweir 
543cdf0e10cSrcweir // class SvInsertAppletDlg -----------------------------------------------
544cdf0e10cSrcweir 
545cdf0e10cSrcweir IMPL_LINK( SvInsertAppletDialog, BrowseHdl, PushButton *, EMPTYARG )
546cdf0e10cSrcweir {
547cdf0e10cSrcweir     Reference< XMultiServiceFactory > xFactory( ::comphelper::getProcessServiceFactory() );
548cdf0e10cSrcweir     if( xFactory.is() )
549cdf0e10cSrcweir     {
550cdf0e10cSrcweir         Reference< XFilePicker > xFilePicker( xFactory->createInstance( OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.ui.dialogs.FilePicker" ) ) ), UNO_QUERY );
551cdf0e10cSrcweir         DBG_ASSERT( xFilePicker.is(), "could not get FilePicker service" );
552cdf0e10cSrcweir 
553cdf0e10cSrcweir         Reference< XInitialization > xInit( xFilePicker, UNO_QUERY );
554cdf0e10cSrcweir         Reference< XFilterManager > xFilterMgr( xFilePicker, UNO_QUERY );
555cdf0e10cSrcweir         if( xInit.is() && xFilePicker.is() && xFilterMgr.is() )
556cdf0e10cSrcweir         {
557cdf0e10cSrcweir             Sequence< Any > aServiceType( 1 );
558cdf0e10cSrcweir             aServiceType[0] <<= TemplateDescription::FILEOPEN_SIMPLE;
559cdf0e10cSrcweir             xInit->initialize( aServiceType );
560cdf0e10cSrcweir 
561cdf0e10cSrcweir             // add filter
562cdf0e10cSrcweir             try
563cdf0e10cSrcweir             {
564cdf0e10cSrcweir                 xFilterMgr->appendFilter(
565cdf0e10cSrcweir                      OUString( RTL_CONSTASCII_USTRINGPARAM( "Applet" ) ),
566cdf0e10cSrcweir                      OUString( RTL_CONSTASCII_USTRINGPARAM( "*.class" ) )
567cdf0e10cSrcweir                      );
568cdf0e10cSrcweir             }
569cdf0e10cSrcweir             catch( IllegalArgumentException& )
570cdf0e10cSrcweir             {
571cdf0e10cSrcweir                 DBG_ASSERT( 0, "caught IllegalArgumentException when registering filter\n" );
572cdf0e10cSrcweir             }
573cdf0e10cSrcweir 
574cdf0e10cSrcweir             if( xFilePicker->execute() == ExecutableDialogResults::OK )
575cdf0e10cSrcweir             {
576cdf0e10cSrcweir                 Sequence< OUString > aPathSeq( xFilePicker->getFiles() );
577cdf0e10cSrcweir 
578cdf0e10cSrcweir 				INetURLObject aObj( aPathSeq[0] );
579cdf0e10cSrcweir                 aEdClassfile.SetText( aObj.getName() );
580cdf0e10cSrcweir                 aObj.removeSegment();
581cdf0e10cSrcweir 				aEdClasslocation.SetText( aObj.PathToFileName() );
582cdf0e10cSrcweir             }
583cdf0e10cSrcweir         }
584cdf0e10cSrcweir     }
585cdf0e10cSrcweir 
586cdf0e10cSrcweir 	return 0;
587cdf0e10cSrcweir }
588cdf0e10cSrcweir 
589cdf0e10cSrcweir // -----------------------------------------------------------------------
590cdf0e10cSrcweir 
591cdf0e10cSrcweir SvInsertAppletDialog::SvInsertAppletDialog( Window* pParent, const uno::Reference < embed::XStorage >& xStorage )
592cdf0e10cSrcweir     : InsertObjectDialog_Impl( pParent, CUI_RES( MD_INSERT_OBJECT_APPLET ), xStorage ),
593cdf0e10cSrcweir     aFtClassfile( this, CUI_RES( FT_CLASSFILE ) ),
594cdf0e10cSrcweir     aEdClassfile( this, CUI_RES( ED_CLASSFILE ) ),
595cdf0e10cSrcweir     aFtClasslocation( this, CUI_RES( FT_CLASSLOCATION ) ),
596cdf0e10cSrcweir     aEdClasslocation( this, CUI_RES( ED_CLASSLOCATION ) ),
597cdf0e10cSrcweir     aBtnClass( this, CUI_RES( BTN_CLASS ) ),
598cdf0e10cSrcweir     aGbClass( this, CUI_RES( GB_CLASS ) ),
599cdf0e10cSrcweir     aEdAppletOptions( this, CUI_RES( ED_APPLET_OPTIONS ) ),
600cdf0e10cSrcweir     aGbAppletOptions( this, CUI_RES( GB_APPLET_OPTIONS ) ),
601cdf0e10cSrcweir     aOKButton1( this, CUI_RES( 1 ) ),
602cdf0e10cSrcweir     aCancelButton1( this, CUI_RES( 1 ) ),
603cdf0e10cSrcweir     aHelpButton1( this, CUI_RES( 1 ) ),
604cdf0e10cSrcweir     m_pURL(0)
605cdf0e10cSrcweir {
606cdf0e10cSrcweir     FreeResource();
607cdf0e10cSrcweir     aBtnClass.SetClickHdl( LINK( this, SvInsertAppletDialog, BrowseHdl ) );
608cdf0e10cSrcweir }
609cdf0e10cSrcweir 
610cdf0e10cSrcweir SvInsertAppletDialog::SvInsertAppletDialog( Window* pParent, const uno::Reference < embed::XEmbeddedObject >& xObj )
611cdf0e10cSrcweir     : InsertObjectDialog_Impl( pParent, CUI_RES( MD_INSERT_OBJECT_APPLET ), uno::Reference < embed::XStorage >() ),
612cdf0e10cSrcweir     aFtClassfile( this, CUI_RES( FT_CLASSFILE ) ),
613cdf0e10cSrcweir     aEdClassfile( this, CUI_RES( ED_CLASSFILE ) ),
614cdf0e10cSrcweir     aFtClasslocation( this, CUI_RES( FT_CLASSLOCATION ) ),
615cdf0e10cSrcweir     aEdClasslocation( this, CUI_RES( ED_CLASSLOCATION ) ),
616cdf0e10cSrcweir     aBtnClass( this, CUI_RES( BTN_CLASS ) ),
617cdf0e10cSrcweir     aGbClass( this, CUI_RES( GB_CLASS ) ),
618cdf0e10cSrcweir     aEdAppletOptions( this, CUI_RES( ED_APPLET_OPTIONS ) ),
619cdf0e10cSrcweir     aGbAppletOptions( this, CUI_RES( GB_APPLET_OPTIONS ) ),
620cdf0e10cSrcweir     aOKButton1( this, CUI_RES( 1 ) ),
621cdf0e10cSrcweir     aCancelButton1( this, CUI_RES( 1 ) ),
622cdf0e10cSrcweir     aHelpButton1( this, CUI_RES( 1 ) ),
623cdf0e10cSrcweir     m_pURL(0)
624cdf0e10cSrcweir {
625cdf0e10cSrcweir     m_xObj = xObj;
626cdf0e10cSrcweir     FreeResource();
627cdf0e10cSrcweir     aBtnClass.SetClickHdl( LINK( this, SvInsertAppletDialog, BrowseHdl ) );
628cdf0e10cSrcweir }
629cdf0e10cSrcweir 
630cdf0e10cSrcweir 
631cdf0e10cSrcweir SvInsertAppletDialog::~SvInsertAppletDialog()
632cdf0e10cSrcweir {
633cdf0e10cSrcweir     delete m_pURL;
634cdf0e10cSrcweir }
635cdf0e10cSrcweir 
636cdf0e10cSrcweir short SvInsertAppletDialog::Execute()
637cdf0e10cSrcweir {
638cdf0e10cSrcweir     short nRet = RET_OK;
639cdf0e10cSrcweir     m_aClass.Erase();
640cdf0e10cSrcweir     m_aCommands.Erase();
641cdf0e10cSrcweir 
642cdf0e10cSrcweir     sal_Bool bOK = sal_False;
643cdf0e10cSrcweir     uno::Reference < beans::XPropertySet > xSet;
644cdf0e10cSrcweir     if ( m_xObj.is() )
645cdf0e10cSrcweir 	{
646cdf0e10cSrcweir         try
647cdf0e10cSrcweir         {
648cdf0e10cSrcweir             if ( m_xObj->getCurrentState() == embed::EmbedStates::LOADED )
649cdf0e10cSrcweir                 m_xObj->changeState( embed::EmbedStates::RUNNING );
650cdf0e10cSrcweir             xSet = uno::Reference < beans::XPropertySet >( m_xObj->getComponent(), uno::UNO_QUERY );
651cdf0e10cSrcweir             ::rtl::OUString aStr;
652cdf0e10cSrcweir             uno::Any aAny = xSet->getPropertyValue( ::rtl::OUString::createFromAscii("AppletCode") );
653cdf0e10cSrcweir             if ( aAny >>= aStr )
654cdf0e10cSrcweir                 SetClass( aStr );
655cdf0e10cSrcweir             aAny = xSet->getPropertyValue( ::rtl::OUString::createFromAscii("AppletCodeBase") );
656cdf0e10cSrcweir             if ( aAny >>= aStr )
657cdf0e10cSrcweir                 SetClassLocation( aStr );
658cdf0e10cSrcweir             uno::Sequence< beans::PropertyValue > aCommands;
659cdf0e10cSrcweir             aAny = xSet->getPropertyValue( ::rtl::OUString::createFromAscii("AppletCommands") );
660cdf0e10cSrcweir             if ( aAny >>= aCommands )
661cdf0e10cSrcweir             {
662cdf0e10cSrcweir                 SvCommandList aList;
663cdf0e10cSrcweir                 aList.FillFromSequence( aCommands );
664cdf0e10cSrcweir                 SetAppletOptions( aList.GetCommands() );
665cdf0e10cSrcweir             }
666cdf0e10cSrcweir 
667cdf0e10cSrcweir             String aText( CUI_RES( STR_EDIT_APPLET ) );
668cdf0e10cSrcweir             SetText( aText );
669cdf0e10cSrcweir             bOK = sal_True;
670cdf0e10cSrcweir         }
671cdf0e10cSrcweir         catch ( uno::Exception& )
672cdf0e10cSrcweir         {
673cdf0e10cSrcweir             DBG_ERROR( "No Applet!" );
674cdf0e10cSrcweir         }
675cdf0e10cSrcweir 	}
676cdf0e10cSrcweir     else
677cdf0e10cSrcweir     {
678cdf0e10cSrcweir         DBG_ASSERT( m_xStorage.is(), "No storage!");
679cdf0e10cSrcweir         bOK = m_xStorage.is();
680cdf0e10cSrcweir     }
681cdf0e10cSrcweir 
682cdf0e10cSrcweir     if ( bOK && ( nRet = Dialog::Execute() ) == RET_OK )
683cdf0e10cSrcweir 	{
684cdf0e10cSrcweir         if ( !m_xObj.is() )
685cdf0e10cSrcweir         {
686cdf0e10cSrcweir             ::rtl::OUString aName;
687cdf0e10cSrcweir             SvGlobalName aClassId( SO3_APPLET_CLASSID );
688cdf0e10cSrcweir             m_xObj = aCnt.CreateEmbeddedObject( aClassId.GetByteSequence(), aName );
689cdf0e10cSrcweir             if ( m_xObj->getCurrentState() == embed::EmbedStates::LOADED )
690cdf0e10cSrcweir                 m_xObj->changeState( embed::EmbedStates::RUNNING );
691cdf0e10cSrcweir             xSet = uno::Reference < beans::XPropertySet >( m_xObj->getComponent(), uno::UNO_QUERY );
692cdf0e10cSrcweir         }
693cdf0e10cSrcweir 
694cdf0e10cSrcweir         if ( m_xObj.is() )
695cdf0e10cSrcweir         {
696cdf0e10cSrcweir             try
697cdf0e10cSrcweir             {
698cdf0e10cSrcweir                 sal_Bool bIPActive = m_xObj->getCurrentState() == embed::EmbedStates::INPLACE_ACTIVE;
699cdf0e10cSrcweir                 if ( bIPActive )
700cdf0e10cSrcweir                     m_xObj->changeState( embed::EmbedStates::RUNNING );
701cdf0e10cSrcweir 
702cdf0e10cSrcweir                 String aClassLocation = GetClassLocation();
703cdf0e10cSrcweir 
704cdf0e10cSrcweir                 // Hack, aFileName wird auch fuer Class benutzt
705cdf0e10cSrcweir                 m_aClass = GetClass();
706cdf0e10cSrcweir                 xSet->setPropertyValue( ::rtl::OUString::createFromAscii("AppletCode"), makeAny( ::rtl::OUString( m_aClass ) ) );
707cdf0e10cSrcweir 
708cdf0e10cSrcweir                 ::rtl::OUString tmp = aClassLocation;
709cdf0e10cSrcweir                 ::osl::File::getFileURLFromSystemPath(tmp, tmp);
710cdf0e10cSrcweir                 aClassLocation = tmp;
711cdf0e10cSrcweir                 xSet->setPropertyValue( ::rtl::OUString::createFromAscii("AppletCodeBase"), makeAny( tmp ) );
712cdf0e10cSrcweir                 m_aCommands = GetAppletOptions();
713cdf0e10cSrcweir 
714cdf0e10cSrcweir                 uno::Sequence< beans::PropertyValue > aCommandSequence;
715cdf0e10cSrcweir                 Plugin_ImplFillCommandSequence( m_aCommands, aCommandSequence );
716cdf0e10cSrcweir                 xSet->setPropertyValue( ::rtl::OUString::createFromAscii("AppletCommands"), makeAny( aCommandSequence ) );
717cdf0e10cSrcweir 
718cdf0e10cSrcweir                 if ( bIPActive )
719cdf0e10cSrcweir                     m_xObj->changeState( embed::EmbedStates::INPLACE_ACTIVE );
720cdf0e10cSrcweir             }
721cdf0e10cSrcweir             catch ( uno::Exception& )
722cdf0e10cSrcweir             {
723cdf0e10cSrcweir                 DBG_ERROR( "No Applet!" );
724cdf0e10cSrcweir             }
725cdf0e10cSrcweir         }
726cdf0e10cSrcweir     }
727cdf0e10cSrcweir 
728cdf0e10cSrcweir     return nRet;
729cdf0e10cSrcweir }
730cdf0e10cSrcweir 
731cdf0e10cSrcweir SfxInsertFloatingFrameDialog::SfxInsertFloatingFrameDialog( Window *pParent,
732cdf0e10cSrcweir                             const com::sun::star::uno::Reference < com::sun::star::embed::XStorage >& xStorage )
733cdf0e10cSrcweir     : InsertObjectDialog_Impl( pParent, CUI_RES( MD_INSERT_OBJECT_IFRAME ), xStorage )
734cdf0e10cSrcweir 	, aFTName ( this, CUI_RES( FT_FRAMENAME ) )
735cdf0e10cSrcweir 	, aEDName ( this, CUI_RES( ED_FRAMENAME ) )
736cdf0e10cSrcweir 	, aFTURL ( this, CUI_RES( FT_URL ) )
737cdf0e10cSrcweir 	, aEDURL ( this, CUI_RES( ED_URL ) )
738cdf0e10cSrcweir 	, aBTOpen ( this, CUI_RES(BT_FILEOPEN ) )
739cdf0e10cSrcweir 
740cdf0e10cSrcweir     , aFLScrolling ( this, CUI_RES( GB_SCROLLING ) )
741cdf0e10cSrcweir 	, aRBScrollingOn ( this, CUI_RES( RB_SCROLLINGON ) )
742cdf0e10cSrcweir 	, aRBScrollingOff ( this, CUI_RES( RB_SCROLLINGOFF ) )
743cdf0e10cSrcweir 	, aRBScrollingAuto ( this, CUI_RES( RB_SCROLLINGAUTO ) )
744cdf0e10cSrcweir     , aFLSepLeft( this, CUI_RES( FL_SEP_LEFT ) )
745cdf0e10cSrcweir     , aFLFrameBorder( this, CUI_RES( GB_BORDER ) )
746cdf0e10cSrcweir 	, aRBFrameBorderOn ( this, CUI_RES( RB_FRMBORDER_ON ) )
747cdf0e10cSrcweir 	, aRBFrameBorderOff ( this, CUI_RES( RB_FRMBORDER_OFF ) )
748cdf0e10cSrcweir     , aFLSepRight( this, CUI_RES( FL_SEP_RIGHT ) )
749cdf0e10cSrcweir     , aFLMargin( this, CUI_RES( GB_MARGIN ) )
750cdf0e10cSrcweir 	, aFTMarginWidth ( this, CUI_RES( FT_MARGINWIDTH ) )
751cdf0e10cSrcweir 	, aNMMarginWidth ( this, CUI_RES( NM_MARGINWIDTH ) )
752cdf0e10cSrcweir 	, aCBMarginWidthDefault( this, CUI_RES( CB_MARGINHEIGHTDEFAULT ) )
753cdf0e10cSrcweir 	, aFTMarginHeight ( this, CUI_RES( FT_MARGINHEIGHT ) )
754cdf0e10cSrcweir 	, aNMMarginHeight ( this, CUI_RES( NM_MARGINHEIGHT ) )
755cdf0e10cSrcweir 	, aCBMarginHeightDefault( this, CUI_RES( CB_MARGINHEIGHTDEFAULT ) )
756cdf0e10cSrcweir     , aOKButton1( this, CUI_RES( 1 ) )
757cdf0e10cSrcweir     , aCancelButton1( this, CUI_RES( 1 ) )
758cdf0e10cSrcweir     , aHelpButton1( this, CUI_RES( 1 ) )
759cdf0e10cSrcweir {
760cdf0e10cSrcweir 	FreeResource();
761cdf0e10cSrcweir 
762cdf0e10cSrcweir 	aFLSepLeft.SetStyle(aFLSepLeft.GetStyle()|WB_VERT);
763cdf0e10cSrcweir     aFLSepRight.SetStyle(aFLSepRight.GetStyle()|WB_VERT);
764cdf0e10cSrcweir 
765cdf0e10cSrcweir     Link aLink( STATIC_LINK( this, SfxInsertFloatingFrameDialog, CheckHdl ) );
766cdf0e10cSrcweir 	aCBMarginWidthDefault.SetClickHdl( aLink );
767cdf0e10cSrcweir 	aCBMarginHeightDefault.SetClickHdl( aLink );
768cdf0e10cSrcweir 
769cdf0e10cSrcweir     aCBMarginWidthDefault.Check();
770cdf0e10cSrcweir     aCBMarginHeightDefault.Check();
771cdf0e10cSrcweir     aRBScrollingAuto.Check();
772cdf0e10cSrcweir     aRBFrameBorderOn.Check();
773cdf0e10cSrcweir 
774cdf0e10cSrcweir     aBTOpen.SetClickHdl( STATIC_LINK( this, SfxInsertFloatingFrameDialog, OpenHdl ) );
775cdf0e10cSrcweir }
776cdf0e10cSrcweir 
777cdf0e10cSrcweir SfxInsertFloatingFrameDialog::SfxInsertFloatingFrameDialog( Window *pParent, const uno::Reference < embed::XEmbeddedObject >& xObj )
778cdf0e10cSrcweir     : InsertObjectDialog_Impl( pParent, CUI_RES( MD_INSERT_OBJECT_IFRAME ), uno::Reference < embed::XStorage >() )
779cdf0e10cSrcweir 	, aFTName ( this, CUI_RES( FT_FRAMENAME ) )
780cdf0e10cSrcweir 	, aEDName ( this, CUI_RES( ED_FRAMENAME ) )
781cdf0e10cSrcweir 	, aFTURL ( this, CUI_RES( FT_URL ) )
782cdf0e10cSrcweir 	, aEDURL ( this, CUI_RES( ED_URL ) )
783cdf0e10cSrcweir 	, aBTOpen ( this, CUI_RES(BT_FILEOPEN ) )
784cdf0e10cSrcweir 
785cdf0e10cSrcweir     , aFLScrolling ( this, CUI_RES( GB_SCROLLING ) )
786cdf0e10cSrcweir 	, aRBScrollingOn ( this, CUI_RES( RB_SCROLLINGON ) )
787cdf0e10cSrcweir 	, aRBScrollingOff ( this, CUI_RES( RB_SCROLLINGOFF ) )
788cdf0e10cSrcweir 	, aRBScrollingAuto ( this, CUI_RES( RB_SCROLLINGAUTO ) )
789cdf0e10cSrcweir 
790cdf0e10cSrcweir     , aFLSepLeft( this, CUI_RES( FL_SEP_LEFT ) )
791cdf0e10cSrcweir     , aFLFrameBorder( this, CUI_RES( GB_BORDER ) )
792cdf0e10cSrcweir 	, aRBFrameBorderOn ( this, CUI_RES( RB_FRMBORDER_ON ) )
793cdf0e10cSrcweir 	, aRBFrameBorderOff ( this, CUI_RES( RB_FRMBORDER_OFF ) )
794cdf0e10cSrcweir 
795cdf0e10cSrcweir     , aFLSepRight( this, CUI_RES( FL_SEP_RIGHT ) )
796cdf0e10cSrcweir     , aFLMargin( this, CUI_RES( GB_MARGIN ) )
797cdf0e10cSrcweir 	, aFTMarginWidth ( this, CUI_RES( FT_MARGINWIDTH ) )
798cdf0e10cSrcweir 	, aNMMarginWidth ( this, CUI_RES( NM_MARGINWIDTH ) )
799cdf0e10cSrcweir 	, aCBMarginWidthDefault( this, CUI_RES( CB_MARGINHEIGHTDEFAULT ) )
800cdf0e10cSrcweir 	, aFTMarginHeight ( this, CUI_RES( FT_MARGINHEIGHT ) )
801cdf0e10cSrcweir 	, aNMMarginHeight ( this, CUI_RES( NM_MARGINHEIGHT ) )
802cdf0e10cSrcweir 	, aCBMarginHeightDefault( this, CUI_RES( CB_MARGINHEIGHTDEFAULT ) )
803cdf0e10cSrcweir     , aOKButton1( this, CUI_RES( 1 ) )
804cdf0e10cSrcweir     , aCancelButton1( this, CUI_RES( 1 ) )
805cdf0e10cSrcweir     , aHelpButton1( this, CUI_RES( 1 ) )
806cdf0e10cSrcweir {
807cdf0e10cSrcweir 	FreeResource();
808cdf0e10cSrcweir 
809cdf0e10cSrcweir     m_xObj = xObj;
810cdf0e10cSrcweir 
811cdf0e10cSrcweir 	aFLSepLeft.SetStyle(aFLSepLeft.GetStyle()|WB_VERT);
812cdf0e10cSrcweir     aFLSepRight.SetStyle(aFLSepRight.GetStyle()|WB_VERT);
813cdf0e10cSrcweir 
814cdf0e10cSrcweir     Link aLink( STATIC_LINK( this, SfxInsertFloatingFrameDialog, CheckHdl ) );
815cdf0e10cSrcweir 	aCBMarginWidthDefault.SetClickHdl( aLink );
816cdf0e10cSrcweir 	aCBMarginHeightDefault.SetClickHdl( aLink );
817cdf0e10cSrcweir 
818cdf0e10cSrcweir     aCBMarginWidthDefault.Check();
819cdf0e10cSrcweir     aCBMarginHeightDefault.Check();
820cdf0e10cSrcweir     aRBScrollingAuto.Check();
821cdf0e10cSrcweir     aRBFrameBorderOn.Check();
822cdf0e10cSrcweir 
823cdf0e10cSrcweir     aBTOpen.SetClickHdl( STATIC_LINK( this, SfxInsertFloatingFrameDialog, OpenHdl ) );
824cdf0e10cSrcweir }
825cdf0e10cSrcweir 
826cdf0e10cSrcweir short SfxInsertFloatingFrameDialog::Execute()
827cdf0e10cSrcweir {
828cdf0e10cSrcweir     short nRet = RET_OK;
829cdf0e10cSrcweir     sal_Bool bOK = sal_False;
830cdf0e10cSrcweir     uno::Reference < beans::XPropertySet > xSet;
831cdf0e10cSrcweir     if ( m_xObj.is() )
832cdf0e10cSrcweir 	{
833cdf0e10cSrcweir         try
834cdf0e10cSrcweir         {
835cdf0e10cSrcweir             if ( m_xObj->getCurrentState() == embed::EmbedStates::LOADED )
836cdf0e10cSrcweir                 m_xObj->changeState( embed::EmbedStates::RUNNING );
837cdf0e10cSrcweir             xSet = uno::Reference < beans::XPropertySet >( m_xObj->getComponent(), uno::UNO_QUERY );
838cdf0e10cSrcweir             ::rtl::OUString aStr;
839cdf0e10cSrcweir             uno::Any aAny = xSet->getPropertyValue( ::rtl::OUString::createFromAscii("FrameURL") );
840cdf0e10cSrcweir             if ( aAny >>= aStr )
841cdf0e10cSrcweir                 aEDURL.SetText( aStr );
842cdf0e10cSrcweir             aAny = xSet->getPropertyValue( ::rtl::OUString::createFromAscii("FrameName") );
843cdf0e10cSrcweir             if ( aAny >>= aStr )
844cdf0e10cSrcweir                 aEDName.SetText( aStr );
845cdf0e10cSrcweir 
846cdf0e10cSrcweir             sal_Int32 nSize = SIZE_NOT_SET;
847cdf0e10cSrcweir             aAny = xSet->getPropertyValue( ::rtl::OUString::createFromAscii("FrameMarginWidth") );
848cdf0e10cSrcweir             aAny >>= nSize;
849cdf0e10cSrcweir 
850cdf0e10cSrcweir             if ( nSize == SIZE_NOT_SET )
851cdf0e10cSrcweir             {
852cdf0e10cSrcweir                 aCBMarginWidthDefault.Check( sal_True );
853cdf0e10cSrcweir                 aNMMarginWidth.SetText( String::CreateFromInt32( DEFAULT_MARGIN_WIDTH )  );
854cdf0e10cSrcweir                 aFTMarginWidth.Enable( sal_False );
855cdf0e10cSrcweir                 aNMMarginWidth.Enable( sal_False );
856cdf0e10cSrcweir             }
857cdf0e10cSrcweir             else
858cdf0e10cSrcweir                 aNMMarginWidth.SetText( String::CreateFromInt32( nSize ) );
859cdf0e10cSrcweir 
860cdf0e10cSrcweir             aAny = xSet->getPropertyValue( ::rtl::OUString::createFromAscii("FrameMarginHeight") );
861cdf0e10cSrcweir             aAny >>= nSize;
862cdf0e10cSrcweir 
863cdf0e10cSrcweir             if ( nSize == SIZE_NOT_SET )
864cdf0e10cSrcweir             {
865cdf0e10cSrcweir                 aCBMarginHeightDefault.Check( sal_True );
866cdf0e10cSrcweir                 aNMMarginHeight.SetText( String::CreateFromInt32( DEFAULT_MARGIN_HEIGHT )  );
867cdf0e10cSrcweir                 aFTMarginHeight.Enable( sal_False );
868cdf0e10cSrcweir                 aNMMarginHeight.Enable( sal_False );
869cdf0e10cSrcweir             }
870cdf0e10cSrcweir             else
871cdf0e10cSrcweir                 aNMMarginHeight.SetText( String::CreateFromInt32( nSize ) );
872cdf0e10cSrcweir 
873cdf0e10cSrcweir             sal_Bool bScrollOn = sal_False;
874cdf0e10cSrcweir             sal_Bool bScrollOff = sal_False;
875cdf0e10cSrcweir             sal_Bool bScrollAuto = sal_False;
876cdf0e10cSrcweir 
877cdf0e10cSrcweir             sal_Bool bSet = sal_False;
878cdf0e10cSrcweir             aAny = xSet->getPropertyValue( ::rtl::OUString::createFromAscii("FrameIsAutoScroll") );
879cdf0e10cSrcweir             aAny >>= bSet;
880cdf0e10cSrcweir             if ( !bSet )
881cdf0e10cSrcweir             {
882cdf0e10cSrcweir                 aAny = xSet->getPropertyValue( ::rtl::OUString::createFromAscii("FrameIsScrollingMode") );
883cdf0e10cSrcweir                 aAny >>= bSet;
884cdf0e10cSrcweir                 bScrollOn = bSet;
885cdf0e10cSrcweir                 bScrollOff = !bSet;
886cdf0e10cSrcweir             }
887cdf0e10cSrcweir             else
888cdf0e10cSrcweir                 bScrollAuto = sal_True;
889cdf0e10cSrcweir 
890cdf0e10cSrcweir             aRBScrollingOn.Check( bScrollOn );
891cdf0e10cSrcweir             aRBScrollingOff.Check( bScrollOff );
892cdf0e10cSrcweir             aRBScrollingAuto.Check( bScrollAuto );
893cdf0e10cSrcweir 
894cdf0e10cSrcweir             bSet = sal_False;
895cdf0e10cSrcweir             aAny = xSet->getPropertyValue( ::rtl::OUString::createFromAscii("FrameIsAutoBorder") );
896cdf0e10cSrcweir             aAny >>= bSet;
897cdf0e10cSrcweir             if ( !bSet )
898cdf0e10cSrcweir             {
899cdf0e10cSrcweir                 aAny = xSet->getPropertyValue( ::rtl::OUString::createFromAscii("FrameIsBorder") );
900cdf0e10cSrcweir                 aAny >>= bSet;
901cdf0e10cSrcweir                 aRBFrameBorderOn.Check( bSet );
902cdf0e10cSrcweir                 aRBFrameBorderOff.Check( !bSet );
903cdf0e10cSrcweir             }
904cdf0e10cSrcweir 
905cdf0e10cSrcweir             SetUpdateMode( sal_True );
906cdf0e10cSrcweir             bOK = sal_True;
907cdf0e10cSrcweir         }
908cdf0e10cSrcweir         catch ( uno::Exception& )
909cdf0e10cSrcweir         {
910cdf0e10cSrcweir             DBG_ERROR( "No IFrame!" );
911cdf0e10cSrcweir         }
912cdf0e10cSrcweir 	}
913cdf0e10cSrcweir     else
914cdf0e10cSrcweir     {
915cdf0e10cSrcweir         DBG_ASSERT( m_xStorage.is(), "No storage!");
916cdf0e10cSrcweir         bOK = m_xStorage.is();
917cdf0e10cSrcweir     }
918cdf0e10cSrcweir 
919cdf0e10cSrcweir     if ( bOK && ( nRet = Dialog::Execute() ) == RET_OK )
920cdf0e10cSrcweir 	{
921cdf0e10cSrcweir         ::rtl::OUString aURL;
922cdf0e10cSrcweir         if ( aEDURL.GetText().Len() )
923cdf0e10cSrcweir         {
924cdf0e10cSrcweir             // URL can be a valid and absolute URL or a system file name
925cdf0e10cSrcweir             INetURLObject aObj;
926cdf0e10cSrcweir             aObj.SetSmartProtocol( INET_PROT_FILE );
927cdf0e10cSrcweir             if ( aObj.SetSmartURL( aEDURL.GetText() ) )
928cdf0e10cSrcweir                 aURL = aObj.GetMainURL( INetURLObject::NO_DECODE );
929cdf0e10cSrcweir         }
930cdf0e10cSrcweir 
931cdf0e10cSrcweir         if ( !m_xObj.is() && aURL.getLength() )
932cdf0e10cSrcweir 		{
933cdf0e10cSrcweir             // create the object
934cdf0e10cSrcweir             ::rtl::OUString aName;
935cdf0e10cSrcweir             SvGlobalName aClassId( SO3_IFRAME_CLASSID );
936cdf0e10cSrcweir             m_xObj = aCnt.CreateEmbeddedObject( aClassId.GetByteSequence(), aName );
937cdf0e10cSrcweir             if ( m_xObj->getCurrentState() == embed::EmbedStates::LOADED )
938cdf0e10cSrcweir                 m_xObj->changeState( embed::EmbedStates::RUNNING );
939cdf0e10cSrcweir             xSet = uno::Reference < beans::XPropertySet >( m_xObj->getComponent(), uno::UNO_QUERY );
940cdf0e10cSrcweir         }
941cdf0e10cSrcweir 
942cdf0e10cSrcweir         if ( m_xObj.is() )
943cdf0e10cSrcweir         {
944cdf0e10cSrcweir             try
945cdf0e10cSrcweir             {
946cdf0e10cSrcweir                 sal_Bool bIPActive = m_xObj->getCurrentState() == embed::EmbedStates::INPLACE_ACTIVE;
947cdf0e10cSrcweir                 if ( bIPActive )
948cdf0e10cSrcweir                     m_xObj->changeState( embed::EmbedStates::RUNNING );
949cdf0e10cSrcweir 
950cdf0e10cSrcweir                 ::rtl::OUString aName = aEDName.GetText();
951cdf0e10cSrcweir                 ScrollingMode eScroll = ScrollingNo;
952cdf0e10cSrcweir                 if ( aRBScrollingOn.IsChecked() )
953cdf0e10cSrcweir                     eScroll = ScrollingYes;
954cdf0e10cSrcweir                 if ( aRBScrollingOff.IsChecked() )
955cdf0e10cSrcweir                     eScroll = ScrollingNo;
956cdf0e10cSrcweir                 if ( aRBScrollingAuto.IsChecked() )
957cdf0e10cSrcweir                     eScroll = ScrollingAuto;
958cdf0e10cSrcweir 
959cdf0e10cSrcweir                 sal_Bool bHasBorder = aRBFrameBorderOn.IsChecked();
960cdf0e10cSrcweir 
961cdf0e10cSrcweir                 long lMarginWidth;
962cdf0e10cSrcweir                 if ( !aCBMarginWidthDefault.IsChecked() )
963cdf0e10cSrcweir                     lMarginWidth = (long) aNMMarginWidth.GetText().ToInt32();
964cdf0e10cSrcweir                 else
965cdf0e10cSrcweir                     lMarginWidth = SIZE_NOT_SET;
966cdf0e10cSrcweir 
967cdf0e10cSrcweir                 long lMarginHeight;
968cdf0e10cSrcweir                 if ( !aCBMarginHeightDefault.IsChecked() )
969cdf0e10cSrcweir                     lMarginHeight = (long) aNMMarginHeight.GetText().ToInt32();
970cdf0e10cSrcweir                 else
971cdf0e10cSrcweir                     lMarginHeight = SIZE_NOT_SET;
972cdf0e10cSrcweir 
973cdf0e10cSrcweir                 xSet->setPropertyValue( ::rtl::OUString::createFromAscii("FrameURL"), makeAny( aURL ) );
974cdf0e10cSrcweir                 xSet->setPropertyValue( ::rtl::OUString::createFromAscii("FrameName"), makeAny( aName ) );
975cdf0e10cSrcweir 
976cdf0e10cSrcweir                 if ( eScroll == ScrollingAuto )
977cdf0e10cSrcweir                     xSet->setPropertyValue( ::rtl::OUString::createFromAscii("FrameIsAutoScroll"),
978cdf0e10cSrcweir                         makeAny( sal_True ) );
979cdf0e10cSrcweir                 else
980cdf0e10cSrcweir                     xSet->setPropertyValue( ::rtl::OUString::createFromAscii("FrameIsScrollingMode"),
981cdf0e10cSrcweir                         makeAny( (sal_Bool) ( eScroll == ScrollingYes) ) );
982cdf0e10cSrcweir 
983cdf0e10cSrcweir                 //if ( aFrmDescr.IsFrameBorderSet() )
984cdf0e10cSrcweir                     xSet->setPropertyValue( ::rtl::OUString::createFromAscii("FrameIsBorder"),
985cdf0e10cSrcweir                         makeAny( bHasBorder ) );
986cdf0e10cSrcweir                 /*else
987cdf0e10cSrcweir                     xSet->setPropertyValue( ::rtl::OUString::createFromAscii("FrameIsAutoBorder"),
988cdf0e10cSrcweir                         makeAny( sal_True ) );*/
989cdf0e10cSrcweir 
990cdf0e10cSrcweir                 xSet->setPropertyValue( ::rtl::OUString::createFromAscii("FrameMarginWidth"),
991cdf0e10cSrcweir                     makeAny( sal_Int32( lMarginWidth ) ) );
992cdf0e10cSrcweir 
993cdf0e10cSrcweir                 xSet->setPropertyValue( ::rtl::OUString::createFromAscii("FrameMarginHeight"),
994cdf0e10cSrcweir                     makeAny( sal_Int32( lMarginHeight ) ) );
995cdf0e10cSrcweir 
996cdf0e10cSrcweir                 if ( bIPActive )
997cdf0e10cSrcweir                     m_xObj->changeState( embed::EmbedStates::INPLACE_ACTIVE );
998cdf0e10cSrcweir             }
999cdf0e10cSrcweir             catch ( uno::Exception& )
1000cdf0e10cSrcweir             {
1001cdf0e10cSrcweir                 DBG_ERROR( "No IFrame!" );
1002cdf0e10cSrcweir             }
1003cdf0e10cSrcweir         }
1004cdf0e10cSrcweir     }
1005cdf0e10cSrcweir 
1006cdf0e10cSrcweir     return nRet;
1007cdf0e10cSrcweir }
1008cdf0e10cSrcweir 
1009cdf0e10cSrcweir //------------------------------------------------------------------------------
1010cdf0e10cSrcweir 
1011cdf0e10cSrcweir IMPL_STATIC_LINK( SfxInsertFloatingFrameDialog, CheckHdl, CheckBox*, pCB )
1012cdf0e10cSrcweir {
1013cdf0e10cSrcweir 	if ( pCB == &pThis->aCBMarginWidthDefault )
1014cdf0e10cSrcweir 	{
1015cdf0e10cSrcweir 		if ( pCB->IsChecked() )
1016cdf0e10cSrcweir 			pThis->aNMMarginWidth.SetText( String::CreateFromInt32( DEFAULT_MARGIN_WIDTH ) );
1017cdf0e10cSrcweir 		pThis->aFTMarginWidth.Enable( !pCB->IsChecked() );
1018cdf0e10cSrcweir 		pThis->aNMMarginWidth.Enable( !pCB->IsChecked() );
1019cdf0e10cSrcweir 	}
1020cdf0e10cSrcweir 
1021cdf0e10cSrcweir 	if ( pCB == &pThis->aCBMarginHeightDefault )
1022cdf0e10cSrcweir 	{
1023cdf0e10cSrcweir 		if ( pCB->IsChecked() )
1024cdf0e10cSrcweir 			pThis->aNMMarginHeight.SetText( String::CreateFromInt32( DEFAULT_MARGIN_HEIGHT ) );
1025cdf0e10cSrcweir 		pThis->aFTMarginHeight.Enable( !pCB->IsChecked() );
1026cdf0e10cSrcweir 		pThis->aNMMarginHeight.Enable( !pCB->IsChecked() );
1027cdf0e10cSrcweir 	}
1028cdf0e10cSrcweir 
1029cdf0e10cSrcweir 	return 0L;
1030cdf0e10cSrcweir }
1031cdf0e10cSrcweir 
1032cdf0e10cSrcweir //------------------------------------------------------------------------------
1033cdf0e10cSrcweir 
1034cdf0e10cSrcweir IMPL_STATIC_LINK( SfxInsertFloatingFrameDialog, OpenHdl, PushButton*, EMPTYARG )
1035cdf0e10cSrcweir {
1036cdf0e10cSrcweir     Window* pOldParent = Application::GetDefDialogParent();
1037cdf0e10cSrcweir 	Application::SetDefDialogParent( pThis );
1038cdf0e10cSrcweir 
1039cdf0e10cSrcweir     // create the file dialog
1040cdf0e10cSrcweir 	sfx2::FileDialogHelper aFileDlg( WB_OPEN | SFXWB_PASSWORD, String() );
1041cdf0e10cSrcweir 
1042cdf0e10cSrcweir 	// set the title
1043cdf0e10cSrcweir     aFileDlg.SetTitle( OUString( String( CUI_RES( MD_INSERT_OBJECT_IFRAME ) ) ) );
1044cdf0e10cSrcweir 
1045cdf0e10cSrcweir 	// show the dialog
1046cdf0e10cSrcweir     if ( aFileDlg.Execute() == ERRCODE_NONE )
1047cdf0e10cSrcweir 		pThis->aEDURL.SetText(
1048cdf0e10cSrcweir 			INetURLObject( aFileDlg.GetPath() ).GetMainURL( INetURLObject::DECODE_WITH_CHARSET ) );
1049cdf0e10cSrcweir 
1050cdf0e10cSrcweir     Application::SetDefDialogParent( pOldParent );
1051cdf0e10cSrcweir 	return 0L;
1052cdf0e10cSrcweir }
1053cdf0e10cSrcweir 
1054