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