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