1*2ee96f1cSAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3*2ee96f1cSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*2ee96f1cSAndrew Rist * or more contributor license agreements. See the NOTICE file 5*2ee96f1cSAndrew Rist * distributed with this work for additional information 6*2ee96f1cSAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*2ee96f1cSAndrew Rist * to you under the Apache License, Version 2.0 (the 8*2ee96f1cSAndrew Rist * "License"); you may not use this file except in compliance 9*2ee96f1cSAndrew Rist * with the License. You may obtain a copy of the License at 10cdf0e10cSrcweir * 11*2ee96f1cSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12cdf0e10cSrcweir * 13*2ee96f1cSAndrew Rist * Unless required by applicable law or agreed to in writing, 14*2ee96f1cSAndrew Rist * software distributed under the License is distributed on an 15*2ee96f1cSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*2ee96f1cSAndrew Rist * KIND, either express or implied. See the License for the 17*2ee96f1cSAndrew Rist * specific language governing permissions and limitations 18*2ee96f1cSAndrew Rist * under the License. 19cdf0e10cSrcweir * 20*2ee96f1cSAndrew Rist *************************************************************/ 21*2ee96f1cSAndrew Rist 22*2ee96f1cSAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove 25cdf0e10cSrcweir #include "precompiled_cui.hxx" 26cdf0e10cSrcweir 27cdf0e10cSrcweir // include --------------------------------------------------------------- 28cdf0e10cSrcweir 29cdf0e10cSrcweir #include "optjava.hxx" 30cdf0e10cSrcweir #include <dialmgr.hxx> 31cdf0e10cSrcweir 32cdf0e10cSrcweir #include "optjava.hrc" 33cdf0e10cSrcweir #include <cuires.hrc> 34cdf0e10cSrcweir #include "helpid.hrc" 35cdf0e10cSrcweir #include <vcl/svapp.hxx> 36cdf0e10cSrcweir #include <vcl/help.hxx> 37cdf0e10cSrcweir #include <tools/urlobj.hxx> 38cdf0e10cSrcweir #include <vcl/msgbox.hxx> 39cdf0e10cSrcweir #include <vcl/waitobj.hxx> 40cdf0e10cSrcweir #include <unotools/pathoptions.hxx> 41cdf0e10cSrcweir #include <svtools/imagemgr.hxx> 42cdf0e10cSrcweir #include <sfx2/filedlghelper.hxx> 43cdf0e10cSrcweir #include <comphelper/processfactory.hxx> 44cdf0e10cSrcweir #include <ucbhelper/contentbroker.hxx> 45cdf0e10cSrcweir #include <com/sun/star/lang/XMultiServiceFactory.hpp> 46cdf0e10cSrcweir #include <com/sun/star/ui/dialogs/ExecutableDialogResults.hpp> 47cdf0e10cSrcweir #include <com/sun/star/ui/dialogs/XAsynchronousExecutableDialog.hpp> 48cdf0e10cSrcweir #include <com/sun/star/ui/dialogs/TemplateDescription.hpp> 49cdf0e10cSrcweir #include <com/sun/star/ucb/XContentProvider.hpp> 50cdf0e10cSrcweir #include <jvmfwk/framework.h> 51cdf0e10cSrcweir 52cdf0e10cSrcweir // define ---------------------------------------------------------------- 53cdf0e10cSrcweir 54cdf0e10cSrcweir #define CLASSPATH_DELIMITER SAL_PATHSEPARATOR 55cdf0e10cSrcweir #define STRIM( s ) s.EraseLeadingChars().EraseTrailingChars() 56cdf0e10cSrcweir #define BUTTON_BORDER 2 57cdf0e10cSrcweir #define RESET_TIMEOUT 300 58cdf0e10cSrcweir 59cdf0e10cSrcweir using namespace ::com::sun::star::lang; 60cdf0e10cSrcweir using namespace ::com::sun::star::ucb; 61cdf0e10cSrcweir using namespace ::com::sun::star::ui::dialogs; 62cdf0e10cSrcweir using namespace ::com::sun::star::uno; 63cdf0e10cSrcweir 64cdf0e10cSrcweir // ----------------------------------------------------------------------- 65cdf0e10cSrcweir 66cdf0e10cSrcweir bool areListsEqual( const Sequence< ::rtl::OUString >& rListA, const Sequence< ::rtl::OUString >& rListB ) 67cdf0e10cSrcweir { 68cdf0e10cSrcweir bool bRet = true; 69cdf0e10cSrcweir const sal_Int32 nLen = rListA.getLength(); 70cdf0e10cSrcweir 71cdf0e10cSrcweir if ( rListB.getLength() != nLen ) 72cdf0e10cSrcweir bRet = false; 73cdf0e10cSrcweir else 74cdf0e10cSrcweir { 75cdf0e10cSrcweir const ::rtl::OUString* pStringA = rListA.getConstArray(); 76cdf0e10cSrcweir const ::rtl::OUString* pStringB = rListB.getConstArray(); 77cdf0e10cSrcweir 78cdf0e10cSrcweir for ( sal_Int32 i = 0; i < nLen; ++i ) 79cdf0e10cSrcweir { 80cdf0e10cSrcweir if ( *pStringA++ != *pStringB++ ) 81cdf0e10cSrcweir { 82cdf0e10cSrcweir bRet = false; 83cdf0e10cSrcweir break; 84cdf0e10cSrcweir } 85cdf0e10cSrcweir } 86cdf0e10cSrcweir } 87cdf0e10cSrcweir 88cdf0e10cSrcweir return bRet; 89cdf0e10cSrcweir } 90cdf0e10cSrcweir 91cdf0e10cSrcweir // class SvxJavaOptionsPage ---------------------------------------------- 92cdf0e10cSrcweir 93cdf0e10cSrcweir SvxJavaOptionsPage::SvxJavaOptionsPage( Window* pParent, const SfxItemSet& rSet ) : 94cdf0e10cSrcweir 95cdf0e10cSrcweir SfxTabPage( pParent, CUI_RES( RID_SVXPAGE_OPTIONS_JAVA ), rSet ), 96cdf0e10cSrcweir 97cdf0e10cSrcweir m_aJavaLine ( this, CUI_RES( FL_JAVA ) ), 98cdf0e10cSrcweir m_aJavaEnableCB ( this, CUI_RES( CB_JAVA_ENABLE ) ), 99cdf0e10cSrcweir m_aJavaFoundLabel ( this, CUI_RES( FT_JAVA_FOUND ) ), 100cdf0e10cSrcweir m_aJavaList ( this, CUI_RES( LB_JAVA ) ), 101cdf0e10cSrcweir m_aJavaPathText ( this, CUI_RES( FT_JAVA_PATH ) ), 102cdf0e10cSrcweir m_aAddBtn ( this, CUI_RES( PB_ADD ) ), 103cdf0e10cSrcweir m_aParameterBtn ( this, CUI_RES( PB_PARAMETER ) ), 104cdf0e10cSrcweir m_aClassPathBtn ( this, CUI_RES( PB_CLASSPATH ) ), 105cdf0e10cSrcweir 106cdf0e10cSrcweir m_pParamDlg ( NULL ), 107cdf0e10cSrcweir m_pPathDlg ( NULL ), 108cdf0e10cSrcweir m_parJavaInfo ( NULL ), 109cdf0e10cSrcweir m_parParameters ( NULL ), 110cdf0e10cSrcweir m_pClassPath ( NULL ), 111cdf0e10cSrcweir m_nInfoSize ( 0 ), 112cdf0e10cSrcweir m_nParamSize ( 0 ), 113cdf0e10cSrcweir m_sInstallText ( CUI_RES( STR_INSTALLED_IN ) ), 114cdf0e10cSrcweir m_sAccessibilityText( CUI_RES( STR_ACCESSIBILITY ) ), 115cdf0e10cSrcweir m_sAddDialogText ( CUI_RES( STR_ADDDLGTEXT ) ), 116cdf0e10cSrcweir 117cdf0e10cSrcweir xDialogListener ( new ::svt::DialogClosedListener() ) 118cdf0e10cSrcweir 119cdf0e10cSrcweir { 120cdf0e10cSrcweir m_aJavaEnableCB.SetClickHdl( LINK( this, SvxJavaOptionsPage, EnableHdl_Impl ) ); 121cdf0e10cSrcweir m_aJavaList.SetCheckButtonHdl( LINK( this, SvxJavaOptionsPage, CheckHdl_Impl ) ); 122cdf0e10cSrcweir m_aJavaList.SetSelectHdl( LINK( this, SvxJavaOptionsPage, SelectHdl_Impl ) ); 123cdf0e10cSrcweir m_aAddBtn.SetClickHdl( LINK( this, SvxJavaOptionsPage, AddHdl_Impl ) ); 124cdf0e10cSrcweir m_aParameterBtn.SetClickHdl( LINK( this, SvxJavaOptionsPage, ParameterHdl_Impl ) ); 125cdf0e10cSrcweir m_aClassPathBtn.SetClickHdl( LINK( this, SvxJavaOptionsPage, ClassPathHdl_Impl ) ); 126cdf0e10cSrcweir m_aResetTimer.SetTimeoutHdl( LINK( this, SvxJavaOptionsPage, ResetHdl_Impl ) ); 127cdf0e10cSrcweir m_aResetTimer.SetTimeout( RESET_TIMEOUT ); 128cdf0e10cSrcweir 129cdf0e10cSrcweir //! m_aJavaList.EnableCheckButton( new SvLBoxButtonData( &m_aJavaList, true ) ); 130cdf0e10cSrcweir 131cdf0e10cSrcweir static long aStaticTabs[]= 132cdf0e10cSrcweir { 133cdf0e10cSrcweir 5, 0, 15, 90, 130, 300 134cdf0e10cSrcweir }; 135cdf0e10cSrcweir 136cdf0e10cSrcweir m_aJavaList.SvxSimpleTable::SetTabs( aStaticTabs ); 137cdf0e10cSrcweir String sHeader( '\t' ); 138cdf0e10cSrcweir sHeader += String( CUI_RES( STR_HEADER_VENDOR ) ); 139cdf0e10cSrcweir sHeader += '\t'; 140cdf0e10cSrcweir sHeader += String( CUI_RES( STR_HEADER_VERSION ) ); 141cdf0e10cSrcweir sHeader += '\t'; 142cdf0e10cSrcweir sHeader += String( CUI_RES( STR_HEADER_FEATURES ) ); 143cdf0e10cSrcweir sHeader += '\t'; 144cdf0e10cSrcweir m_aJavaList.InsertHeaderEntry( sHeader, HEADERBAR_APPEND, HIB_LEFT ); 145cdf0e10cSrcweir 146cdf0e10cSrcweir m_aJavaList.SetHelpId( HID_OPTIONS_JAVA_LIST ); 147cdf0e10cSrcweir 148cdf0e10cSrcweir FreeResource(); 149cdf0e10cSrcweir 150cdf0e10cSrcweir xDialogListener->SetDialogClosedLink( LINK( this, SvxJavaOptionsPage, DialogClosedHdl ) ); 151cdf0e10cSrcweir 152cdf0e10cSrcweir EnableHdl_Impl( &m_aJavaEnableCB ); 153cdf0e10cSrcweir jfw_lock(); 154cdf0e10cSrcweir 155cdf0e10cSrcweir //check if the text fits into the class path button 156cdf0e10cSrcweir Size aButtonSize = m_aClassPathBtn.GetOutputSizePixel(); 157cdf0e10cSrcweir sal_Int32 nTextWidth = m_aClassPathBtn.GetTextWidth(m_aClassPathBtn.GetText()); 158cdf0e10cSrcweir //add some additional space 159cdf0e10cSrcweir sal_Int32 nDiff = nTextWidth + 4 - aButtonSize.Width(); 160cdf0e10cSrcweir if( nDiff > 0) 161cdf0e10cSrcweir { 162cdf0e10cSrcweir Point aPos(m_aClassPathBtn.GetPosPixel()); 163cdf0e10cSrcweir aPos.X() -= nDiff; 164cdf0e10cSrcweir aButtonSize.Width() += nDiff; 165cdf0e10cSrcweir m_aClassPathBtn.SetPosSizePixel(aPos, aButtonSize); 166cdf0e10cSrcweir aPos = m_aAddBtn.GetPosPixel(); 167cdf0e10cSrcweir aPos.X() -= nDiff; 168cdf0e10cSrcweir m_aAddBtn.SetPosSizePixel(aPos, aButtonSize); 169cdf0e10cSrcweir aPos = m_aParameterBtn.GetPosPixel(); 170cdf0e10cSrcweir aPos.X() -= nDiff; 171cdf0e10cSrcweir m_aParameterBtn.SetPosSizePixel(aPos, aButtonSize); 172cdf0e10cSrcweir Size aSize = m_aJavaList.GetSizePixel(); 173cdf0e10cSrcweir aSize.Width() -= nDiff; 174cdf0e10cSrcweir m_aJavaList.SetSizePixel(aSize); 175cdf0e10cSrcweir } 176cdf0e10cSrcweir } 177cdf0e10cSrcweir 178cdf0e10cSrcweir // ----------------------------------------------------------------------- 179cdf0e10cSrcweir 180cdf0e10cSrcweir SvxJavaOptionsPage::~SvxJavaOptionsPage() 181cdf0e10cSrcweir { 182cdf0e10cSrcweir delete m_pParamDlg; 183cdf0e10cSrcweir delete m_pPathDlg; 184cdf0e10cSrcweir ClearJavaInfo(); 185cdf0e10cSrcweir std::vector< JavaInfo* >::iterator pIter; 186cdf0e10cSrcweir for ( pIter = m_aAddedInfos.begin(); pIter != m_aAddedInfos.end(); ++pIter ) 187cdf0e10cSrcweir { 188cdf0e10cSrcweir JavaInfo* pInfo = *pIter; 189cdf0e10cSrcweir jfw_freeJavaInfo( pInfo ); 190cdf0e10cSrcweir } 191cdf0e10cSrcweir /* 192cdf0e10cSrcweir rtl_uString** pParamArr = m_parParameters; 193cdf0e10cSrcweir for ( sal_Int32 i = 0; i < m_nParamSize; ++i ) 194cdf0e10cSrcweir rtl_uString_release( *pParamArr++ ); 195cdf0e10cSrcweir rtl_freeMemory( m_parParameters ); 196cdf0e10cSrcweir rtl_uString_release( m_pClassPath ); 197cdf0e10cSrcweir */ 198cdf0e10cSrcweir jfw_unlock(); 199cdf0e10cSrcweir } 200cdf0e10cSrcweir 201cdf0e10cSrcweir // ----------------------------------------------------------------------- 202cdf0e10cSrcweir 203cdf0e10cSrcweir IMPL_LINK( SvxJavaOptionsPage, EnableHdl_Impl, CheckBox *, EMPTYARG ) 204cdf0e10cSrcweir { 205cdf0e10cSrcweir sal_Bool bEnable = m_aJavaEnableCB.IsChecked(); 206cdf0e10cSrcweir m_aJavaFoundLabel.Enable( bEnable ); 207cdf0e10cSrcweir m_aJavaPathText.Enable( bEnable ); 208cdf0e10cSrcweir m_aAddBtn.Enable( bEnable ); 209cdf0e10cSrcweir m_aParameterBtn.Enable( bEnable ); 210cdf0e10cSrcweir m_aClassPathBtn.Enable( bEnable ); 211cdf0e10cSrcweir 212cdf0e10cSrcweir bEnable ? m_aJavaList.EnableTable() : m_aJavaList.DisableTable(); 213cdf0e10cSrcweir 214cdf0e10cSrcweir return 0; 215cdf0e10cSrcweir } 216cdf0e10cSrcweir 217cdf0e10cSrcweir // ----------------------------------------------------------------------- 218cdf0e10cSrcweir 219cdf0e10cSrcweir IMPL_LINK( SvxJavaOptionsPage, CheckHdl_Impl, SvxSimpleTable *, pList ) 220cdf0e10cSrcweir { 221cdf0e10cSrcweir SvLBoxEntry* pEntry = pList ? m_aJavaList.GetEntry( m_aJavaList.GetCurMousePoint() ) 222cdf0e10cSrcweir : m_aJavaList.FirstSelected(); 223cdf0e10cSrcweir if ( pEntry ) 224cdf0e10cSrcweir m_aJavaList.HandleEntryChecked( pEntry ); 225cdf0e10cSrcweir return 0; 226cdf0e10cSrcweir } 227cdf0e10cSrcweir 228cdf0e10cSrcweir // ----------------------------------------------------------------------- 229cdf0e10cSrcweir 230cdf0e10cSrcweir IMPL_LINK( SvxJavaOptionsPage, SelectHdl_Impl, SvxSimpleTable *, EMPTYARG ) 231cdf0e10cSrcweir { 232cdf0e10cSrcweir // set installation directory info 233cdf0e10cSrcweir SvLBoxEntry* pEntry = m_aJavaList.FirstSelected(); 234cdf0e10cSrcweir DBG_ASSERT( pEntry, "SvxJavaOptionsPage::SelectHdl_Impl(): no entry" ); 235cdf0e10cSrcweir String* pLocation = static_cast< String* >( pEntry->GetUserData() ); 236cdf0e10cSrcweir DBG_ASSERT( pLocation, "invalid location string" ); 237cdf0e10cSrcweir String sInfo = m_sInstallText; 238cdf0e10cSrcweir if ( pLocation ) 239cdf0e10cSrcweir sInfo += *pLocation; 240cdf0e10cSrcweir m_aJavaPathText.SetText( sInfo ); 241cdf0e10cSrcweir return 0; 242cdf0e10cSrcweir } 243cdf0e10cSrcweir 244cdf0e10cSrcweir // ----------------------------------------------------------------------- 245cdf0e10cSrcweir 246cdf0e10cSrcweir IMPL_LINK( SvxJavaOptionsPage, AddHdl_Impl, PushButton *, EMPTYARG ) 247cdf0e10cSrcweir { 248cdf0e10cSrcweir try 249cdf0e10cSrcweir { 250cdf0e10cSrcweir Reference < XMultiServiceFactory > xMgr( ::comphelper::getProcessServiceFactory() ); 251cdf0e10cSrcweir xFolderPicker = Reference< XFolderPicker >( 252cdf0e10cSrcweir xMgr->createInstance( ::rtl::OUString::createFromAscii( "com.sun.star.ui.dialogs.FolderPicker" ) ), UNO_QUERY ); 253cdf0e10cSrcweir 254cdf0e10cSrcweir String sWorkFolder = SvtPathOptions().GetWorkPath(); 255cdf0e10cSrcweir xFolderPicker->setDisplayDirectory( sWorkFolder ); 256cdf0e10cSrcweir xFolderPicker->setDescription( m_sAddDialogText ); 257cdf0e10cSrcweir 258cdf0e10cSrcweir Reference< XAsynchronousExecutableDialog > xAsyncDlg( xFolderPicker, UNO_QUERY ); 259cdf0e10cSrcweir if ( xAsyncDlg.is() ) 260cdf0e10cSrcweir xAsyncDlg->startExecuteModal( xDialogListener.get() ); 261cdf0e10cSrcweir else if ( xFolderPicker.is() && xFolderPicker->execute() == ExecutableDialogResults::OK ) 262cdf0e10cSrcweir AddFolder( xFolderPicker->getDirectory() ); 263cdf0e10cSrcweir } 264cdf0e10cSrcweir catch ( Exception& ) 265cdf0e10cSrcweir { 266cdf0e10cSrcweir #ifdef DBG_UTIL 267cdf0e10cSrcweir DBG_ERRORFILE( "SvxJavaOptionsPage::AddHdl_Impl(): caught exception" ); 268cdf0e10cSrcweir #endif 269cdf0e10cSrcweir } 270cdf0e10cSrcweir 271cdf0e10cSrcweir return 0; 272cdf0e10cSrcweir } 273cdf0e10cSrcweir 274cdf0e10cSrcweir // ----------------------------------------------------------------------- 275cdf0e10cSrcweir 276cdf0e10cSrcweir IMPL_LINK( SvxJavaOptionsPage, ParameterHdl_Impl, PushButton *, EMPTYARG ) 277cdf0e10cSrcweir { 278cdf0e10cSrcweir Sequence< ::rtl::OUString > aParameterList; 279cdf0e10cSrcweir if ( !m_pParamDlg ) 280cdf0e10cSrcweir { 281cdf0e10cSrcweir m_pParamDlg = new SvxJavaParameterDlg( this ); 282cdf0e10cSrcweir javaFrameworkError eErr = jfw_getVMParameters( &m_parParameters, &m_nParamSize ); 283cdf0e10cSrcweir if ( JFW_E_NONE == eErr && m_parParameters && m_nParamSize > 0 ) 284cdf0e10cSrcweir { 285cdf0e10cSrcweir rtl_uString** pParamArr = m_parParameters; 286cdf0e10cSrcweir aParameterList.realloc( m_nParamSize ); 287cdf0e10cSrcweir ::rtl::OUString* pParams = aParameterList.getArray(); 288cdf0e10cSrcweir for ( sal_Int32 i = 0; i < m_nParamSize; ++i ) 289cdf0e10cSrcweir { 290cdf0e10cSrcweir rtl_uString* pParam = *pParamArr++; 291cdf0e10cSrcweir pParams[i] = ::rtl::OUString( pParam ); 292cdf0e10cSrcweir } 293cdf0e10cSrcweir m_pParamDlg->SetParameters( aParameterList ); 294cdf0e10cSrcweir } 295cdf0e10cSrcweir } 296cdf0e10cSrcweir else 297cdf0e10cSrcweir aParameterList = m_pParamDlg->GetParameters(); 298cdf0e10cSrcweir 299cdf0e10cSrcweir if ( m_pParamDlg->Execute() == RET_OK ) 300cdf0e10cSrcweir { 301cdf0e10cSrcweir if ( !areListsEqual( aParameterList, m_pParamDlg->GetParameters() ) ) 302cdf0e10cSrcweir { 303cdf0e10cSrcweir aParameterList = m_pParamDlg->GetParameters(); 304cdf0e10cSrcweir sal_Bool bRunning = sal_False; 305cdf0e10cSrcweir javaFrameworkError eErr = jfw_isVMRunning( &bRunning ); 306cdf0e10cSrcweir DBG_ASSERT( JFW_E_NONE == eErr, 307cdf0e10cSrcweir "SvxJavaOptionsPage::ParameterHdl_Impl(): error in jfw_isVMRunning" ); 308cdf0e10cSrcweir (void)eErr; 309cdf0e10cSrcweir if ( bRunning ) 310cdf0e10cSrcweir { 311cdf0e10cSrcweir WarningBox aWarnBox( this, CUI_RES( RID_SVX_MSGBOX_JAVA_RESTART2 ) ); 312cdf0e10cSrcweir aWarnBox.Execute(); 313cdf0e10cSrcweir } 314cdf0e10cSrcweir } 315cdf0e10cSrcweir } 316cdf0e10cSrcweir else 317cdf0e10cSrcweir m_pParamDlg->SetParameters( aParameterList ); 318cdf0e10cSrcweir 319cdf0e10cSrcweir return 0; 320cdf0e10cSrcweir } 321cdf0e10cSrcweir 322cdf0e10cSrcweir // ----------------------------------------------------------------------- 323cdf0e10cSrcweir 324cdf0e10cSrcweir IMPL_LINK( SvxJavaOptionsPage, ClassPathHdl_Impl, PushButton *, EMPTYARG ) 325cdf0e10cSrcweir { 326cdf0e10cSrcweir String sClassPath; 327cdf0e10cSrcweir 328cdf0e10cSrcweir if ( !m_pPathDlg ) 329cdf0e10cSrcweir { 330cdf0e10cSrcweir m_pPathDlg = new SvxJavaClassPathDlg( this ); 331cdf0e10cSrcweir javaFrameworkError eErr = jfw_getUserClassPath( &m_pClassPath ); 332cdf0e10cSrcweir if ( JFW_E_NONE == eErr && m_pClassPath ) 333cdf0e10cSrcweir { 334cdf0e10cSrcweir sClassPath = String( ::rtl::OUString( m_pClassPath ) ); 335cdf0e10cSrcweir m_pPathDlg->SetClassPath( sClassPath ); 336cdf0e10cSrcweir } 337cdf0e10cSrcweir } 338cdf0e10cSrcweir else 339cdf0e10cSrcweir sClassPath = m_pPathDlg->GetClassPath(); 340cdf0e10cSrcweir 341cdf0e10cSrcweir m_pPathDlg->SetFocus(); 342cdf0e10cSrcweir if ( m_pPathDlg->Execute() == RET_OK ) 343cdf0e10cSrcweir { 344cdf0e10cSrcweir 345cdf0e10cSrcweir if ( m_pPathDlg->GetClassPath() != sClassPath ) 346cdf0e10cSrcweir { 347cdf0e10cSrcweir sClassPath = m_pPathDlg->GetClassPath(); 348cdf0e10cSrcweir sal_Bool bRunning = sal_False; 349cdf0e10cSrcweir javaFrameworkError eErr = jfw_isVMRunning( &bRunning ); 350cdf0e10cSrcweir DBG_ASSERT( JFW_E_NONE == eErr, 351cdf0e10cSrcweir "SvxJavaOptionsPage::ParameterHdl_Impl(): error in jfw_isVMRunning" ); 352cdf0e10cSrcweir (void)eErr; 353cdf0e10cSrcweir if ( bRunning ) 354cdf0e10cSrcweir { 355cdf0e10cSrcweir WarningBox aWarnBox( this, CUI_RES( RID_SVX_MSGBOX_JAVA_RESTART2 ) ); 356cdf0e10cSrcweir aWarnBox.Execute(); 357cdf0e10cSrcweir } 358cdf0e10cSrcweir } 359cdf0e10cSrcweir } 360cdf0e10cSrcweir else 361cdf0e10cSrcweir m_pPathDlg->SetClassPath( sClassPath ); 362cdf0e10cSrcweir 363cdf0e10cSrcweir return 0; 364cdf0e10cSrcweir } 365cdf0e10cSrcweir 366cdf0e10cSrcweir // ----------------------------------------------------------------------- 367cdf0e10cSrcweir 368cdf0e10cSrcweir IMPL_LINK( SvxJavaOptionsPage, ResetHdl_Impl, Timer *, EMPTYARG ) 369cdf0e10cSrcweir { 370cdf0e10cSrcweir LoadJREs(); 371cdf0e10cSrcweir return 0; 372cdf0e10cSrcweir } 373cdf0e10cSrcweir 374cdf0e10cSrcweir // ----------------------------------------------------------------------- 375cdf0e10cSrcweir 376cdf0e10cSrcweir IMPL_LINK( SvxJavaOptionsPage, StartFolderPickerHdl, void*, EMPTYARG ) 377cdf0e10cSrcweir { 378cdf0e10cSrcweir try 379cdf0e10cSrcweir { 380cdf0e10cSrcweir Reference< XAsynchronousExecutableDialog > xAsyncDlg( xFolderPicker, UNO_QUERY ); 381cdf0e10cSrcweir if ( xAsyncDlg.is() ) 382cdf0e10cSrcweir xAsyncDlg->startExecuteModal( xDialogListener.get() ); 383cdf0e10cSrcweir else if ( xFolderPicker.is() && xFolderPicker->execute() == ExecutableDialogResults::OK ) 384cdf0e10cSrcweir AddFolder( xFolderPicker->getDirectory() ); 385cdf0e10cSrcweir } 386cdf0e10cSrcweir catch ( Exception& ) 387cdf0e10cSrcweir { 388cdf0e10cSrcweir #ifdef DBG_UTIL 389cdf0e10cSrcweir DBG_ERRORFILE( "SvxJavaOptionsPage::StartFolderPickerHdl(): caught exception" ); 390cdf0e10cSrcweir #endif 391cdf0e10cSrcweir } 392cdf0e10cSrcweir 393cdf0e10cSrcweir return 0L; 394cdf0e10cSrcweir } 395cdf0e10cSrcweir 396cdf0e10cSrcweir // ----------------------------------------------------------------------- 397cdf0e10cSrcweir 398cdf0e10cSrcweir IMPL_LINK( SvxJavaOptionsPage, DialogClosedHdl, DialogClosedEvent*, pEvt ) 399cdf0e10cSrcweir { 400cdf0e10cSrcweir if ( RET_OK == pEvt->DialogResult ) 401cdf0e10cSrcweir { 402cdf0e10cSrcweir DBG_ASSERT( xFolderPicker.is() == sal_True, "SvxJavaOptionsPage::DialogClosedHdl(): no folder picker" ); 403cdf0e10cSrcweir 404cdf0e10cSrcweir AddFolder( xFolderPicker->getDirectory() ); 405cdf0e10cSrcweir } 406cdf0e10cSrcweir return 0L; 407cdf0e10cSrcweir } 408cdf0e10cSrcweir 409cdf0e10cSrcweir // ----------------------------------------------------------------------- 410cdf0e10cSrcweir 411cdf0e10cSrcweir void SvxJavaOptionsPage::ClearJavaInfo() 412cdf0e10cSrcweir { 413cdf0e10cSrcweir if ( m_parJavaInfo ) 414cdf0e10cSrcweir { 415cdf0e10cSrcweir JavaInfo** parInfo = m_parJavaInfo; 416cdf0e10cSrcweir for ( sal_Int32 i = 0; i < m_nInfoSize; ++i ) 417cdf0e10cSrcweir { 418cdf0e10cSrcweir JavaInfo* pInfo = *parInfo++; 419cdf0e10cSrcweir jfw_freeJavaInfo( pInfo ); 420cdf0e10cSrcweir } 421cdf0e10cSrcweir 422cdf0e10cSrcweir rtl_freeMemory( m_parJavaInfo ); 423cdf0e10cSrcweir m_parJavaInfo = NULL; 424cdf0e10cSrcweir m_nInfoSize = 0; 425cdf0e10cSrcweir } 426cdf0e10cSrcweir } 427cdf0e10cSrcweir 428cdf0e10cSrcweir // ----------------------------------------------------------------------- 429cdf0e10cSrcweir 430cdf0e10cSrcweir void SvxJavaOptionsPage::ClearJavaList() 431cdf0e10cSrcweir { 432cdf0e10cSrcweir SvLBoxEntry* pEntry = m_aJavaList.First(); 433cdf0e10cSrcweir while ( pEntry ) 434cdf0e10cSrcweir { 435cdf0e10cSrcweir String* pLocation = static_cast< String* >( pEntry->GetUserData() ); 436cdf0e10cSrcweir delete pLocation; 437cdf0e10cSrcweir pEntry = m_aJavaList.Next( pEntry ); 438cdf0e10cSrcweir } 439cdf0e10cSrcweir m_aJavaList.Clear(); 440cdf0e10cSrcweir } 441cdf0e10cSrcweir 442cdf0e10cSrcweir // ----------------------------------------------------------------------- 443cdf0e10cSrcweir 444cdf0e10cSrcweir void SvxJavaOptionsPage::LoadJREs() 445cdf0e10cSrcweir { 446cdf0e10cSrcweir WaitObject aWaitObj( &m_aJavaList ); 447cdf0e10cSrcweir javaFrameworkError eErr = jfw_findAllJREs( &m_parJavaInfo, &m_nInfoSize ); 448cdf0e10cSrcweir if ( JFW_E_NONE == eErr && m_parJavaInfo ) 449cdf0e10cSrcweir { 450cdf0e10cSrcweir JavaInfo** parInfo = m_parJavaInfo; 451cdf0e10cSrcweir for ( sal_Int32 i = 0; i < m_nInfoSize; ++i ) 452cdf0e10cSrcweir { 453cdf0e10cSrcweir JavaInfo* pInfo = *parInfo++; 454cdf0e10cSrcweir AddJRE( pInfo ); 455cdf0e10cSrcweir } 456cdf0e10cSrcweir } 457cdf0e10cSrcweir 458cdf0e10cSrcweir std::vector< JavaInfo* >::iterator pIter; 459cdf0e10cSrcweir for ( pIter = m_aAddedInfos.begin(); pIter != m_aAddedInfos.end(); ++pIter ) 460cdf0e10cSrcweir { 461cdf0e10cSrcweir JavaInfo* pInfo = *pIter; 462cdf0e10cSrcweir AddJRE( pInfo ); 463cdf0e10cSrcweir } 464cdf0e10cSrcweir 465cdf0e10cSrcweir JavaInfo* pSelectedJava = NULL; 466cdf0e10cSrcweir eErr = jfw_getSelectedJRE( &pSelectedJava ); 467cdf0e10cSrcweir if ( JFW_E_NONE == eErr && pSelectedJava ) 468cdf0e10cSrcweir { 469cdf0e10cSrcweir JavaInfo** parInfo = m_parJavaInfo; 470cdf0e10cSrcweir for ( sal_Int32 i = 0; i < m_nInfoSize; ++i ) 471cdf0e10cSrcweir { 472cdf0e10cSrcweir JavaInfo* pCmpInfo = *parInfo++; 473cdf0e10cSrcweir if ( jfw_areEqualJavaInfo( pCmpInfo, pSelectedJava ) ) 474cdf0e10cSrcweir { 475cdf0e10cSrcweir SvLBoxEntry* pEntry = m_aJavaList.GetEntry(i); 476cdf0e10cSrcweir if ( pEntry ) 477cdf0e10cSrcweir m_aJavaList.HandleEntryChecked( pEntry ); 478cdf0e10cSrcweir break; 479cdf0e10cSrcweir } 480cdf0e10cSrcweir } 481cdf0e10cSrcweir } 482cdf0e10cSrcweir 483cdf0e10cSrcweir jfw_freeJavaInfo( pSelectedJava ); 484cdf0e10cSrcweir } 485cdf0e10cSrcweir 486cdf0e10cSrcweir // ----------------------------------------------------------------------- 487cdf0e10cSrcweir 488cdf0e10cSrcweir void SvxJavaOptionsPage::AddJRE( JavaInfo* _pInfo ) 489cdf0e10cSrcweir { 490cdf0e10cSrcweir String sEntry( '\t' ); 491cdf0e10cSrcweir sEntry += String( ::rtl::OUString( _pInfo->sVendor ) ); 492cdf0e10cSrcweir sEntry += '\t'; 493cdf0e10cSrcweir sEntry += String( ::rtl::OUString( _pInfo->sVersion ) ); 494cdf0e10cSrcweir sEntry += '\t'; 495cdf0e10cSrcweir if ( ( _pInfo->nFeatures & JFW_FEATURE_ACCESSBRIDGE ) == JFW_FEATURE_ACCESSBRIDGE ) 496cdf0e10cSrcweir sEntry += m_sAccessibilityText; 497cdf0e10cSrcweir SvLBoxEntry* pEntry = m_aJavaList.InsertEntry( sEntry ); 498cdf0e10cSrcweir INetURLObject aLocObj( ::rtl::OUString( _pInfo->sLocation ) ); 499cdf0e10cSrcweir String* pLocation = new String( aLocObj.getFSysPath( INetURLObject::FSYS_DETECT ) ); 500cdf0e10cSrcweir pEntry->SetUserData( pLocation ); 501cdf0e10cSrcweir } 502cdf0e10cSrcweir 503cdf0e10cSrcweir // ----------------------------------------------------------------------- 504cdf0e10cSrcweir 505cdf0e10cSrcweir void SvxJavaOptionsPage::HandleCheckEntry( SvLBoxEntry* _pEntry ) 506cdf0e10cSrcweir { 507cdf0e10cSrcweir m_aJavaList.Select( _pEntry, sal_True ); 508cdf0e10cSrcweir SvButtonState eState = m_aJavaList.GetCheckButtonState( _pEntry ); 509cdf0e10cSrcweir 510cdf0e10cSrcweir if ( SV_BUTTON_CHECKED == eState ) 511cdf0e10cSrcweir { 512cdf0e10cSrcweir // we have radio button behavior -> so uncheck the other entries 513cdf0e10cSrcweir SvLBoxEntry* pEntry = m_aJavaList.First(); 514cdf0e10cSrcweir while ( pEntry ) 515cdf0e10cSrcweir { 516cdf0e10cSrcweir if ( pEntry != _pEntry ) 517cdf0e10cSrcweir m_aJavaList.SetCheckButtonState( pEntry, SV_BUTTON_UNCHECKED ); 518cdf0e10cSrcweir pEntry = m_aJavaList.Next( pEntry ); 519cdf0e10cSrcweir } 520cdf0e10cSrcweir } 521cdf0e10cSrcweir else 522cdf0e10cSrcweir m_aJavaList.SetCheckButtonState( _pEntry, SV_BUTTON_CHECKED ); 523cdf0e10cSrcweir } 524cdf0e10cSrcweir 525cdf0e10cSrcweir // ----------------------------------------------------------------------- 526cdf0e10cSrcweir 527cdf0e10cSrcweir void SvxJavaOptionsPage::AddFolder( const ::rtl::OUString& _rFolder ) 528cdf0e10cSrcweir { 529cdf0e10cSrcweir bool bStartAgain = true; 530cdf0e10cSrcweir sal_Int32 nPos = 0; 531cdf0e10cSrcweir JavaInfo* pInfo = NULL; 532cdf0e10cSrcweir javaFrameworkError eErr = jfw_getJavaInfoByPath( _rFolder.pData, &pInfo ); 533cdf0e10cSrcweir if ( JFW_E_NONE == eErr && pInfo ) 534cdf0e10cSrcweir { 535cdf0e10cSrcweir bool bFound = false; 536cdf0e10cSrcweir JavaInfo** parInfo = m_parJavaInfo; 537cdf0e10cSrcweir for ( sal_Int32 i = 0; i < m_nInfoSize; ++i ) 538cdf0e10cSrcweir { 539cdf0e10cSrcweir JavaInfo* pCmpInfo = *parInfo++; 540cdf0e10cSrcweir if ( jfw_areEqualJavaInfo( pCmpInfo, pInfo ) ) 541cdf0e10cSrcweir { 542cdf0e10cSrcweir bFound = true; 543cdf0e10cSrcweir nPos = i; 544cdf0e10cSrcweir break; 545cdf0e10cSrcweir } 546cdf0e10cSrcweir } 547cdf0e10cSrcweir 548cdf0e10cSrcweir if ( !bFound ) 549cdf0e10cSrcweir { 550cdf0e10cSrcweir std::vector< JavaInfo* >::iterator pIter; 551cdf0e10cSrcweir for ( pIter = m_aAddedInfos.begin(); pIter != m_aAddedInfos.end(); ++pIter ) 552cdf0e10cSrcweir { 553cdf0e10cSrcweir JavaInfo* pCmpInfo = *pIter; 554cdf0e10cSrcweir if ( jfw_areEqualJavaInfo( pCmpInfo, pInfo ) ) 555cdf0e10cSrcweir { 556cdf0e10cSrcweir bFound = true; 557cdf0e10cSrcweir break; 558cdf0e10cSrcweir } 559cdf0e10cSrcweir } 560cdf0e10cSrcweir } 561cdf0e10cSrcweir 562cdf0e10cSrcweir if ( !bFound ) 563cdf0e10cSrcweir { 564cdf0e10cSrcweir jfw_addJRELocation( pInfo->sLocation ); 565cdf0e10cSrcweir AddJRE( pInfo ); 566cdf0e10cSrcweir m_aAddedInfos.push_back( pInfo ); 567cdf0e10cSrcweir nPos = m_aJavaList.GetEntryCount() - 1; 568cdf0e10cSrcweir } 569cdf0e10cSrcweir else 570cdf0e10cSrcweir jfw_freeJavaInfo( pInfo ); 571cdf0e10cSrcweir 572cdf0e10cSrcweir SvLBoxEntry* pEntry = m_aJavaList.GetEntry( nPos ); 573cdf0e10cSrcweir m_aJavaList.Select( pEntry ); 574cdf0e10cSrcweir m_aJavaList.SetCheckButtonState( pEntry, SV_BUTTON_CHECKED ); 575cdf0e10cSrcweir HandleCheckEntry( pEntry ); 576cdf0e10cSrcweir bStartAgain = false; 577cdf0e10cSrcweir } 578cdf0e10cSrcweir else if ( JFW_E_NOT_RECOGNIZED == eErr ) 579cdf0e10cSrcweir { 580cdf0e10cSrcweir ErrorBox aErrBox( this, CUI_RES( RID_SVXERR_JRE_NOT_RECOGNIZED ) ); 581cdf0e10cSrcweir aErrBox.Execute(); 582cdf0e10cSrcweir } 583cdf0e10cSrcweir else if ( JFW_E_FAILED_VERSION == eErr ) 584cdf0e10cSrcweir { 585cdf0e10cSrcweir ErrorBox aErrBox( this, CUI_RES( RID_SVXERR_JRE_FAILED_VERSION ) ); 586cdf0e10cSrcweir aErrBox.Execute(); 587cdf0e10cSrcweir } 588cdf0e10cSrcweir 589cdf0e10cSrcweir if ( bStartAgain ) 590cdf0e10cSrcweir { 591cdf0e10cSrcweir xFolderPicker->setDisplayDirectory( _rFolder ); 592cdf0e10cSrcweir Application::PostUserEvent( LINK( this, SvxJavaOptionsPage, StartFolderPickerHdl ) ); 593cdf0e10cSrcweir } 594cdf0e10cSrcweir } 595cdf0e10cSrcweir 596cdf0e10cSrcweir // ----------------------------------------------------------------------- 597cdf0e10cSrcweir 598cdf0e10cSrcweir SfxTabPage* SvxJavaOptionsPage::Create( Window* pParent, const SfxItemSet& rAttrSet ) 599cdf0e10cSrcweir { 600cdf0e10cSrcweir return ( new SvxJavaOptionsPage( pParent, rAttrSet ) ); 601cdf0e10cSrcweir } 602cdf0e10cSrcweir 603cdf0e10cSrcweir // ----------------------------------------------------------------------- 604cdf0e10cSrcweir 605cdf0e10cSrcweir sal_Bool SvxJavaOptionsPage::FillItemSet( SfxItemSet& /*rCoreSet*/ ) 606cdf0e10cSrcweir { 607cdf0e10cSrcweir sal_Bool bModified = sal_False; 608cdf0e10cSrcweir javaFrameworkError eErr = JFW_E_NONE; 609cdf0e10cSrcweir if ( m_pParamDlg ) 610cdf0e10cSrcweir { 611cdf0e10cSrcweir Sequence< ::rtl::OUString > aParamList = m_pParamDlg->GetParameters(); 612cdf0e10cSrcweir sal_Int32 i, nSize = aParamList.getLength(); 613cdf0e10cSrcweir rtl_uString** pParamArr = (rtl_uString**)rtl_allocateMemory( sizeof(rtl_uString*) * nSize ); 614cdf0e10cSrcweir rtl_uString** pParamArrIter = pParamArr; 615cdf0e10cSrcweir const ::rtl::OUString* pList = aParamList.getConstArray(); 616cdf0e10cSrcweir for ( i = 0; i < nSize; ++i ) 617cdf0e10cSrcweir pParamArr[i] = pList[i].pData; 618cdf0e10cSrcweir eErr = jfw_setVMParameters( pParamArrIter, nSize ); 619cdf0e10cSrcweir DBG_ASSERT( JFW_E_NONE == eErr, 620cdf0e10cSrcweir "SvxJavaOptionsPage::FillItemSet(): error in jfw_setVMParameters" ); 621cdf0e10cSrcweir pParamArrIter = pParamArr; 622cdf0e10cSrcweir rtl_freeMemory( pParamArr ); 623cdf0e10cSrcweir bModified = sal_True; 624cdf0e10cSrcweir } 625cdf0e10cSrcweir 626cdf0e10cSrcweir if ( m_pPathDlg ) 627cdf0e10cSrcweir { 628cdf0e10cSrcweir ::rtl::OUString sPath( m_pPathDlg->GetClassPath() ); 629cdf0e10cSrcweir if ( m_pPathDlg->GetOldPath() != String( sPath ) ) 630cdf0e10cSrcweir { 631cdf0e10cSrcweir eErr = jfw_setUserClassPath( sPath.pData ); 632cdf0e10cSrcweir DBG_ASSERT( JFW_E_NONE == eErr, 633cdf0e10cSrcweir "SvxJavaOptionsPage::FillItemSet(): error in jfw_setUserClassPath" ); 634cdf0e10cSrcweir bModified = sal_True; 635cdf0e10cSrcweir } 636cdf0e10cSrcweir } 637cdf0e10cSrcweir 638cdf0e10cSrcweir sal_uLong nCount = m_aJavaList.GetEntryCount(); 639cdf0e10cSrcweir for ( sal_uLong i = 0; i < nCount; ++i ) 640cdf0e10cSrcweir { 641cdf0e10cSrcweir if ( m_aJavaList.GetCheckButtonState( m_aJavaList.GetEntry(i) ) == SV_BUTTON_CHECKED ) 642cdf0e10cSrcweir { 643cdf0e10cSrcweir JavaInfo* pInfo = NULL; 644cdf0e10cSrcweir if ( i < static_cast< sal_uLong >( m_nInfoSize ) ) 645cdf0e10cSrcweir pInfo = m_parJavaInfo[i]; 646cdf0e10cSrcweir else 647cdf0e10cSrcweir pInfo = m_aAddedInfos[ i - m_nInfoSize ]; 648cdf0e10cSrcweir 649cdf0e10cSrcweir JavaInfo* pSelectedJava = NULL; 650cdf0e10cSrcweir eErr = jfw_getSelectedJRE( &pSelectedJava ); 651cdf0e10cSrcweir if ( JFW_E_NONE == eErr || JFW_E_INVALID_SETTINGS == eErr ) 652cdf0e10cSrcweir { 653cdf0e10cSrcweir if (pSelectedJava == NULL || !jfw_areEqualJavaInfo( pInfo, pSelectedJava ) ) 654cdf0e10cSrcweir { 655cdf0e10cSrcweir sal_Bool bRunning = sal_False; 656cdf0e10cSrcweir eErr = jfw_isVMRunning( &bRunning ); 657cdf0e10cSrcweir DBG_ASSERT( JFW_E_NONE == eErr, 658cdf0e10cSrcweir "SvxJavaOptionsPage::FillItemSet(): error in jfw_isVMRunning" ); 659cdf0e10cSrcweir if ( bRunning || 660cdf0e10cSrcweir ( ( pInfo->nRequirements & JFW_REQUIRE_NEEDRESTART ) == JFW_REQUIRE_NEEDRESTART ) ) 661cdf0e10cSrcweir { 662cdf0e10cSrcweir WarningBox aWarnBox( this, CUI_RES( RID_SVX_MSGBOX_JAVA_RESTART ) ); 663cdf0e10cSrcweir aWarnBox.Execute(); 664cdf0e10cSrcweir } 665cdf0e10cSrcweir 666cdf0e10cSrcweir eErr = jfw_setSelectedJRE( pInfo ); 667cdf0e10cSrcweir DBG_ASSERT( JFW_E_NONE == eErr, 668cdf0e10cSrcweir "SvxJavaOptionsPage::FillItemSet(): error in jfw_setSelectedJRE" ); 669cdf0e10cSrcweir bModified = sal_True; 670cdf0e10cSrcweir } 671cdf0e10cSrcweir } 672cdf0e10cSrcweir jfw_freeJavaInfo( pSelectedJava ); 673cdf0e10cSrcweir break; 674cdf0e10cSrcweir } 675cdf0e10cSrcweir } 676cdf0e10cSrcweir 677cdf0e10cSrcweir sal_Bool bEnabled = sal_False; 678cdf0e10cSrcweir eErr = jfw_getEnabled( &bEnabled ); 679cdf0e10cSrcweir DBG_ASSERT( JFW_E_NONE == eErr, 680cdf0e10cSrcweir "SvxJavaOptionsPage::FillItemSet(): error in jfw_getEnabled" ); 681cdf0e10cSrcweir if ( bEnabled != m_aJavaEnableCB.IsChecked() ) 682cdf0e10cSrcweir { 683cdf0e10cSrcweir eErr = jfw_setEnabled( m_aJavaEnableCB.IsChecked() ); 684cdf0e10cSrcweir DBG_ASSERT( JFW_E_NONE == eErr, 685cdf0e10cSrcweir "SvxJavaOptionsPage::FillItemSet(): error in jfw_setEnabled" ); 686cdf0e10cSrcweir bModified = sal_True; 687cdf0e10cSrcweir } 688cdf0e10cSrcweir 689cdf0e10cSrcweir return bModified; 690cdf0e10cSrcweir } 691cdf0e10cSrcweir 692cdf0e10cSrcweir // ----------------------------------------------------------------------- 693cdf0e10cSrcweir 694cdf0e10cSrcweir void SvxJavaOptionsPage::Reset( const SfxItemSet& /*rSet*/ ) 695cdf0e10cSrcweir { 696cdf0e10cSrcweir ClearJavaInfo(); 697cdf0e10cSrcweir ClearJavaList(); 698cdf0e10cSrcweir 699cdf0e10cSrcweir sal_Bool bEnabled = sal_False; 700cdf0e10cSrcweir javaFrameworkError eErr = jfw_getEnabled( &bEnabled ); 701cdf0e10cSrcweir if ( eErr != JFW_E_NONE ) 702cdf0e10cSrcweir bEnabled = sal_False; 703cdf0e10cSrcweir m_aJavaEnableCB.Check( bEnabled ); 704cdf0e10cSrcweir EnableHdl_Impl( &m_aJavaEnableCB ); 705cdf0e10cSrcweir 706cdf0e10cSrcweir m_aResetTimer.Start(); 707cdf0e10cSrcweir } 708cdf0e10cSrcweir 709cdf0e10cSrcweir // ----------------------------------------------------------------------- 710cdf0e10cSrcweir 711cdf0e10cSrcweir void SvxJavaOptionsPage::FillUserData() 712cdf0e10cSrcweir { 713cdf0e10cSrcweir String aUserData; 714cdf0e10cSrcweir SetUserData( aUserData ); 715cdf0e10cSrcweir } 716cdf0e10cSrcweir 717cdf0e10cSrcweir // class SvxJavaParameterDlg --------------------------------------------- 718cdf0e10cSrcweir 719cdf0e10cSrcweir SvxJavaParameterDlg::SvxJavaParameterDlg( Window* pParent ) : 720cdf0e10cSrcweir 721cdf0e10cSrcweir ModalDialog( pParent, CUI_RES( RID_SVXDLG_JAVA_PARAMETER ) ), 722cdf0e10cSrcweir 723cdf0e10cSrcweir m_aParameterLabel ( this, CUI_RES( FT_PARAMETER ) ), 724cdf0e10cSrcweir m_aParameterEdit ( this, CUI_RES( ED_PARAMETER ) ), 725cdf0e10cSrcweir m_aAssignBtn ( this, CUI_RES( PB_ASSIGN ) ), 726cdf0e10cSrcweir m_aAssignedLabel ( this, CUI_RES( FT_ASSIGNED ) ), 727cdf0e10cSrcweir m_aAssignedList ( this, CUI_RES( LB_ASSIGNED ) ), 728cdf0e10cSrcweir m_aExampleText ( this, CUI_RES( FT_EXAMPLE ) ), 729cdf0e10cSrcweir m_aRemoveBtn ( this, CUI_RES( PB_REMOVE ) ), 730cdf0e10cSrcweir m_aButtonsLine ( this, CUI_RES( FL_BUTTONS ) ), 731cdf0e10cSrcweir m_aOKBtn ( this, CUI_RES( PB_PARAMETER_OK ) ), 732cdf0e10cSrcweir m_aCancelBtn ( this, CUI_RES( PB_PARAMETER_ESC ) ), 733cdf0e10cSrcweir m_aHelpBtn ( this, CUI_RES( PB_PARAMETER_HLP ) ) 734cdf0e10cSrcweir 735cdf0e10cSrcweir { 736cdf0e10cSrcweir FreeResource(); 737cdf0e10cSrcweir 738cdf0e10cSrcweir m_aParameterEdit.SetModifyHdl( LINK( this, SvxJavaParameterDlg, ModifyHdl_Impl ) ); 739cdf0e10cSrcweir m_aAssignBtn.SetClickHdl( LINK( this, SvxJavaParameterDlg, AssignHdl_Impl ) ); 740cdf0e10cSrcweir m_aRemoveBtn.SetClickHdl( LINK( this, SvxJavaParameterDlg, RemoveHdl_Impl ) ); 741cdf0e10cSrcweir m_aAssignedList.SetSelectHdl( LINK( this, SvxJavaParameterDlg, SelectHdl_Impl ) ); 742cdf0e10cSrcweir m_aAssignedList.SetDoubleClickHdl( LINK( this, SvxJavaParameterDlg, DblClickHdl_Impl ) ); 743cdf0e10cSrcweir 744cdf0e10cSrcweir ModifyHdl_Impl( &m_aParameterEdit ); 745cdf0e10cSrcweir EnableRemoveButton(); 746cdf0e10cSrcweir } 747cdf0e10cSrcweir 748cdf0e10cSrcweir // ----------------------------------------------------------------------- 749cdf0e10cSrcweir 750cdf0e10cSrcweir SvxJavaParameterDlg::~SvxJavaParameterDlg() 751cdf0e10cSrcweir { 752cdf0e10cSrcweir } 753cdf0e10cSrcweir 754cdf0e10cSrcweir // ----------------------------------------------------------------------- 755cdf0e10cSrcweir 756cdf0e10cSrcweir IMPL_LINK( SvxJavaParameterDlg, ModifyHdl_Impl, Edit *, EMPTYARG ) 757cdf0e10cSrcweir { 758cdf0e10cSrcweir String sParam = STRIM( m_aParameterEdit.GetText() ); 759cdf0e10cSrcweir m_aAssignBtn.Enable( sParam.Len() > 0 ); 760cdf0e10cSrcweir 761cdf0e10cSrcweir return 0; 762cdf0e10cSrcweir } 763cdf0e10cSrcweir 764cdf0e10cSrcweir // ----------------------------------------------------------------------- 765cdf0e10cSrcweir 766cdf0e10cSrcweir IMPL_LINK( SvxJavaParameterDlg, AssignHdl_Impl, PushButton *, EMPTYARG ) 767cdf0e10cSrcweir { 768cdf0e10cSrcweir String sParam = STRIM( m_aParameterEdit.GetText() ); 769cdf0e10cSrcweir if ( sParam.Len() > 0 ) 770cdf0e10cSrcweir { 771cdf0e10cSrcweir sal_uInt16 nPos = m_aAssignedList.GetEntryPos( sParam ); 772cdf0e10cSrcweir if ( LISTBOX_ENTRY_NOTFOUND == nPos ) 773cdf0e10cSrcweir nPos = m_aAssignedList.InsertEntry( sParam ); 774cdf0e10cSrcweir m_aAssignedList.SelectEntryPos( nPos ); 775cdf0e10cSrcweir m_aParameterEdit.SetText( String() ); 776cdf0e10cSrcweir ModifyHdl_Impl( &m_aParameterEdit ); 777cdf0e10cSrcweir EnableRemoveButton(); 778cdf0e10cSrcweir } 779cdf0e10cSrcweir 780cdf0e10cSrcweir return 0; 781cdf0e10cSrcweir } 782cdf0e10cSrcweir 783cdf0e10cSrcweir // ----------------------------------------------------------------------- 784cdf0e10cSrcweir 785cdf0e10cSrcweir IMPL_LINK( SvxJavaParameterDlg, SelectHdl_Impl, ListBox *, EMPTYARG ) 786cdf0e10cSrcweir { 787cdf0e10cSrcweir EnableRemoveButton(); 788cdf0e10cSrcweir return 0; 789cdf0e10cSrcweir } 790cdf0e10cSrcweir 791cdf0e10cSrcweir // ----------------------------------------------------------------------- 792cdf0e10cSrcweir 793cdf0e10cSrcweir IMPL_LINK( SvxJavaParameterDlg, DblClickHdl_Impl, ListBox *, EMPTYARG ) 794cdf0e10cSrcweir { 795cdf0e10cSrcweir sal_uInt16 nPos = m_aAssignedList.GetSelectEntryPos(); 796cdf0e10cSrcweir if ( nPos != LISTBOX_ENTRY_NOTFOUND ) 797cdf0e10cSrcweir m_aParameterEdit.SetText( m_aAssignedList.GetEntry( nPos ) ); 798cdf0e10cSrcweir return 0; 799cdf0e10cSrcweir } 800cdf0e10cSrcweir 801cdf0e10cSrcweir // ----------------------------------------------------------------------- 802cdf0e10cSrcweir 803cdf0e10cSrcweir IMPL_LINK( SvxJavaParameterDlg, RemoveHdl_Impl, PushButton *, EMPTYARG ) 804cdf0e10cSrcweir { 805cdf0e10cSrcweir sal_uInt16 nPos = m_aAssignedList.GetSelectEntryPos(); 806cdf0e10cSrcweir if ( nPos != LISTBOX_ENTRY_NOTFOUND ) 807cdf0e10cSrcweir { 808cdf0e10cSrcweir m_aAssignedList.RemoveEntry( nPos ); 809cdf0e10cSrcweir sal_uInt16 nCount = m_aAssignedList.GetEntryCount(); 810cdf0e10cSrcweir if ( nCount ) 811cdf0e10cSrcweir { 812cdf0e10cSrcweir if ( nPos >= nCount ) 813cdf0e10cSrcweir nPos = ( nCount - 1 ); 814cdf0e10cSrcweir m_aAssignedList.SelectEntryPos( nPos ); 815cdf0e10cSrcweir } 816cdf0e10cSrcweir } 817cdf0e10cSrcweir EnableRemoveButton(); 818cdf0e10cSrcweir 819cdf0e10cSrcweir return 0; 820cdf0e10cSrcweir } 821cdf0e10cSrcweir 822cdf0e10cSrcweir // ----------------------------------------------------------------------- 823cdf0e10cSrcweir 824cdf0e10cSrcweir short SvxJavaParameterDlg::Execute() 825cdf0e10cSrcweir { 826cdf0e10cSrcweir m_aParameterEdit.GrabFocus(); 827cdf0e10cSrcweir m_aAssignedList.SetNoSelection(); 828cdf0e10cSrcweir return ModalDialog::Execute(); 829cdf0e10cSrcweir } 830cdf0e10cSrcweir 831cdf0e10cSrcweir // ----------------------------------------------------------------------- 832cdf0e10cSrcweir 833cdf0e10cSrcweir Sequence< ::rtl::OUString > SvxJavaParameterDlg::GetParameters() const 834cdf0e10cSrcweir { 835cdf0e10cSrcweir sal_uInt16 nCount = m_aAssignedList.GetEntryCount(); 836cdf0e10cSrcweir Sequence< ::rtl::OUString > aParamList( nCount ); 837cdf0e10cSrcweir ::rtl::OUString* pArray = aParamList.getArray(); 838cdf0e10cSrcweir for ( sal_uInt16 i = 0; i < nCount; ++i ) 839cdf0e10cSrcweir pArray[i] = ::rtl::OUString( m_aAssignedList.GetEntry(i) ); 840cdf0e10cSrcweir return aParamList; 841cdf0e10cSrcweir } 842cdf0e10cSrcweir 843cdf0e10cSrcweir // ----------------------------------------------------------------------- 844cdf0e10cSrcweir 845cdf0e10cSrcweir void SvxJavaParameterDlg::SetParameters( Sequence< ::rtl::OUString >& rParams ) 846cdf0e10cSrcweir { 847cdf0e10cSrcweir m_aAssignedList.Clear(); 848cdf0e10cSrcweir sal_uLong i, nCount = rParams.getLength(); 849cdf0e10cSrcweir const ::rtl::OUString* pArray = rParams.getConstArray(); 850cdf0e10cSrcweir for ( i = 0; i < nCount; ++i ) 851cdf0e10cSrcweir { 852cdf0e10cSrcweir String sParam = String( *pArray++ ); 853cdf0e10cSrcweir m_aAssignedList.InsertEntry( sParam ); 854cdf0e10cSrcweir } 855cdf0e10cSrcweir } 856cdf0e10cSrcweir 857cdf0e10cSrcweir // class SvxJavaClassPathDlg --------------------------------------------- 858cdf0e10cSrcweir 859cdf0e10cSrcweir SvxJavaClassPathDlg::SvxJavaClassPathDlg( Window* pParent ) : 860cdf0e10cSrcweir 861cdf0e10cSrcweir ModalDialog( pParent, CUI_RES( RID_SVXDLG_JAVA_CLASSPATH ) ), 862cdf0e10cSrcweir 863cdf0e10cSrcweir m_aPathLabel ( this, CUI_RES( FT_PATH ) ), 864cdf0e10cSrcweir m_aPathList ( this, CUI_RES( LB_PATH ) ), 865cdf0e10cSrcweir m_aAddArchiveBtn ( this, CUI_RES( PB_ADDARCHIVE ) ), 866cdf0e10cSrcweir m_aAddPathBtn ( this, CUI_RES( PB_ADDPATH ) ), 867cdf0e10cSrcweir m_aRemoveBtn ( this, CUI_RES( PB_REMOVE_PATH ) ), 868cdf0e10cSrcweir m_aButtonsLine ( this, CUI_RES( FL_PATH_BUTTONS ) ), 869cdf0e10cSrcweir m_aOKBtn ( this, CUI_RES( PB_PATH_OK ) ), 870cdf0e10cSrcweir m_aCancelBtn ( this, CUI_RES( PB_PATH_ESC ) ), 871cdf0e10cSrcweir m_aHelpBtn ( this, CUI_RES( PB_PATH_HLP ) ) 872cdf0e10cSrcweir 873cdf0e10cSrcweir { 874cdf0e10cSrcweir FreeResource(); 875cdf0e10cSrcweir 876cdf0e10cSrcweir m_aAddArchiveBtn.SetClickHdl( LINK( this, SvxJavaClassPathDlg, AddArchiveHdl_Impl ) ); 877cdf0e10cSrcweir m_aAddPathBtn.SetClickHdl( LINK( this, SvxJavaClassPathDlg, AddPathHdl_Impl ) ); 878cdf0e10cSrcweir m_aRemoveBtn.SetClickHdl( LINK( this, SvxJavaClassPathDlg, RemoveHdl_Impl ) ); 879cdf0e10cSrcweir m_aPathList.SetSelectHdl( LINK( this, SvxJavaClassPathDlg, SelectHdl_Impl ) ); 880cdf0e10cSrcweir 881cdf0e10cSrcweir // check if the buttons text are not too wide otherwise we have to stretch the buttons 882cdf0e10cSrcweir // and shrink the listbox 883cdf0e10cSrcweir long nTxtWidth1 = m_aAddArchiveBtn.GetTextWidth( m_aAddArchiveBtn.GetText() ); 884cdf0e10cSrcweir long nTxtWidth2 = m_aAddPathBtn.GetTextWidth( m_aAddPathBtn.GetText() ); 885cdf0e10cSrcweir Size aBtnSz = m_aAddArchiveBtn.GetSizePixel(); 886cdf0e10cSrcweir if ( nTxtWidth1 > aBtnSz.Width() || nTxtWidth2 > aBtnSz.Width() ) 887cdf0e10cSrcweir { 888cdf0e10cSrcweir long nW = ( nTxtWidth1 > aBtnSz.Width() ) ? nTxtWidth1 : nTxtWidth2; 889cdf0e10cSrcweir long nDelta = nW - aBtnSz.Width() + 2 * BUTTON_BORDER; 890cdf0e10cSrcweir aBtnSz.Width() += nDelta; 891cdf0e10cSrcweir Point aBtnPnt = m_aAddArchiveBtn.GetPosPixel(); 892cdf0e10cSrcweir aBtnPnt.X() -= nDelta; 893cdf0e10cSrcweir m_aAddArchiveBtn.SetPosSizePixel( aBtnPnt, aBtnSz ); 894cdf0e10cSrcweir aBtnPnt = m_aAddPathBtn.GetPosPixel(); 895cdf0e10cSrcweir aBtnPnt.X() -= nDelta; 896cdf0e10cSrcweir m_aAddPathBtn.SetPosSizePixel( aBtnPnt, aBtnSz ); 897cdf0e10cSrcweir aBtnPnt = m_aRemoveBtn.GetPosPixel(); 898cdf0e10cSrcweir aBtnPnt.X() -= nDelta; 899cdf0e10cSrcweir m_aRemoveBtn.SetPosSizePixel( aBtnPnt, aBtnSz ); 900cdf0e10cSrcweir Size aBoxSz = m_aPathList.GetSizePixel(); 901cdf0e10cSrcweir aBoxSz.Width() -= nDelta; 902cdf0e10cSrcweir m_aPathList.SetSizePixel( aBoxSz ); 903cdf0e10cSrcweir } 904cdf0e10cSrcweir 905cdf0e10cSrcweir // set initial focus to path list 906cdf0e10cSrcweir m_aPathList.GrabFocus(); 907cdf0e10cSrcweir } 908cdf0e10cSrcweir 909cdf0e10cSrcweir // ----------------------------------------------------------------------- 910cdf0e10cSrcweir 911cdf0e10cSrcweir SvxJavaClassPathDlg::~SvxJavaClassPathDlg() 912cdf0e10cSrcweir { 913cdf0e10cSrcweir sal_uInt16 i, nCount = m_aPathList.GetEntryCount(); 914cdf0e10cSrcweir for ( i = 0; i < nCount; ++i ) 915cdf0e10cSrcweir delete static_cast< String* >( m_aPathList.GetEntryData(i) ); 916cdf0e10cSrcweir } 917cdf0e10cSrcweir 918cdf0e10cSrcweir // ----------------------------------------------------------------------- 919cdf0e10cSrcweir 920cdf0e10cSrcweir IMPL_LINK( SvxJavaClassPathDlg, AddArchiveHdl_Impl, PushButton *, EMPTYARG ) 921cdf0e10cSrcweir { 922cdf0e10cSrcweir sfx2::FileDialogHelper aDlg( TemplateDescription::FILEOPEN_SIMPLE, 0 ); 923cdf0e10cSrcweir aDlg.SetTitle( CUI_RES( RID_SVXSTR_ARCHIVE_TITLE ) ); 924cdf0e10cSrcweir aDlg.AddFilter( CUI_RES( RID_SVXSTR_ARCHIVE_HEADLINE ), String::CreateFromAscii("*.jar;*.zip") ); 925cdf0e10cSrcweir String sFolder; 926cdf0e10cSrcweir if ( m_aPathList.GetSelectEntryCount() > 0 ) 927cdf0e10cSrcweir { 928cdf0e10cSrcweir INetURLObject aObj( m_aPathList.GetSelectEntry(), INetURLObject::FSYS_DETECT ); 929cdf0e10cSrcweir sFolder = aObj.GetMainURL( INetURLObject::NO_DECODE ); 930cdf0e10cSrcweir } 931cdf0e10cSrcweir else 932cdf0e10cSrcweir sFolder = SvtPathOptions().GetWorkPath(); 933cdf0e10cSrcweir aDlg.SetDisplayDirectory( sFolder ); 934cdf0e10cSrcweir if ( aDlg.Execute() == ERRCODE_NONE ) 935cdf0e10cSrcweir { 936cdf0e10cSrcweir String sURL = aDlg.GetPath(); 937cdf0e10cSrcweir INetURLObject aURL( sURL ); 938cdf0e10cSrcweir String sFile = aURL.getFSysPath( INetURLObject::FSYS_DETECT ); 939cdf0e10cSrcweir if ( !IsPathDuplicate( sURL ) ) 940cdf0e10cSrcweir { 941cdf0e10cSrcweir sal_uInt16 nPos = m_aPathList.InsertEntry( sFile, SvFileInformationManager::GetImage( aURL ) ); 942cdf0e10cSrcweir m_aPathList.SelectEntryPos( nPos ); 943cdf0e10cSrcweir } 944cdf0e10cSrcweir else 945cdf0e10cSrcweir { 946cdf0e10cSrcweir String sMsg( CUI_RES( RID_SVXSTR_MULTIFILE_DBL_ERR ) ); 947cdf0e10cSrcweir sMsg.SearchAndReplaceAscii( "%1", sFile ); 948cdf0e10cSrcweir ErrorBox( this, WB_OK, sMsg ).Execute(); 949cdf0e10cSrcweir } 950cdf0e10cSrcweir } 951cdf0e10cSrcweir EnableRemoveButton(); 952cdf0e10cSrcweir return 0; 953cdf0e10cSrcweir } 954cdf0e10cSrcweir 955cdf0e10cSrcweir // ----------------------------------------------------------------------- 956cdf0e10cSrcweir 957cdf0e10cSrcweir IMPL_LINK( SvxJavaClassPathDlg, AddPathHdl_Impl, PushButton *, EMPTYARG ) 958cdf0e10cSrcweir { 959cdf0e10cSrcweir rtl::OUString sService( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.ui.dialogs.FolderPicker" ) ); 960cdf0e10cSrcweir Reference < XMultiServiceFactory > xFactory( ::comphelper::getProcessServiceFactory() ); 961cdf0e10cSrcweir Reference < XFolderPicker > xFolderPicker( xFactory->createInstance( sService ), UNO_QUERY ); 962cdf0e10cSrcweir 963cdf0e10cSrcweir String sOldFolder; 964cdf0e10cSrcweir if ( m_aPathList.GetSelectEntryCount() > 0 ) 965cdf0e10cSrcweir { 966cdf0e10cSrcweir INetURLObject aObj( m_aPathList.GetSelectEntry(), INetURLObject::FSYS_DETECT ); 967cdf0e10cSrcweir sOldFolder = aObj.GetMainURL( INetURLObject::NO_DECODE ); 968cdf0e10cSrcweir } 969cdf0e10cSrcweir else 970cdf0e10cSrcweir sOldFolder = SvtPathOptions().GetWorkPath(); 971cdf0e10cSrcweir xFolderPicker->setDisplayDirectory( sOldFolder ); 972cdf0e10cSrcweir if ( xFolderPicker->execute() == ExecutableDialogResults::OK ) 973cdf0e10cSrcweir { 974cdf0e10cSrcweir String sFolderURL( xFolderPicker->getDirectory() ); 975cdf0e10cSrcweir INetURLObject aURL( sFolderURL ); 976cdf0e10cSrcweir String sNewFolder = aURL.getFSysPath( INetURLObject::FSYS_DETECT ); 977cdf0e10cSrcweir if ( !IsPathDuplicate( sFolderURL ) ) 978cdf0e10cSrcweir { 979cdf0e10cSrcweir sal_uInt16 nPos = m_aPathList.InsertEntry( sNewFolder, SvFileInformationManager::GetImage( aURL ) ); 980cdf0e10cSrcweir m_aPathList.SelectEntryPos( nPos ); 981cdf0e10cSrcweir } 982cdf0e10cSrcweir else 983cdf0e10cSrcweir { 984cdf0e10cSrcweir String sMsg( CUI_RES( RID_SVXSTR_MULTIFILE_DBL_ERR ) ); 985cdf0e10cSrcweir sMsg.SearchAndReplaceAscii( "%1", sNewFolder ); 986cdf0e10cSrcweir ErrorBox( this, WB_OK, sMsg ).Execute(); 987cdf0e10cSrcweir } 988cdf0e10cSrcweir } 989cdf0e10cSrcweir EnableRemoveButton(); 990cdf0e10cSrcweir return 0; 991cdf0e10cSrcweir } 992cdf0e10cSrcweir 993cdf0e10cSrcweir // ----------------------------------------------------------------------- 994cdf0e10cSrcweir 995cdf0e10cSrcweir IMPL_LINK( SvxJavaClassPathDlg, RemoveHdl_Impl, PushButton *, EMPTYARG ) 996cdf0e10cSrcweir { 997cdf0e10cSrcweir sal_uInt16 nPos = m_aPathList.GetSelectEntryPos(); 998cdf0e10cSrcweir if ( nPos != LISTBOX_ENTRY_NOTFOUND ) 999cdf0e10cSrcweir { 1000cdf0e10cSrcweir m_aPathList.RemoveEntry( nPos ); 1001cdf0e10cSrcweir sal_uInt16 nCount = m_aPathList.GetEntryCount(); 1002cdf0e10cSrcweir if ( nCount ) 1003cdf0e10cSrcweir { 1004cdf0e10cSrcweir if ( nPos >= nCount ) 1005cdf0e10cSrcweir nPos = ( nCount - 1 ); 1006cdf0e10cSrcweir m_aPathList.SelectEntryPos( nPos ); 1007cdf0e10cSrcweir } 1008cdf0e10cSrcweir } 1009cdf0e10cSrcweir 1010cdf0e10cSrcweir EnableRemoveButton(); 1011cdf0e10cSrcweir return 0; 1012cdf0e10cSrcweir } 1013cdf0e10cSrcweir 1014cdf0e10cSrcweir // ----------------------------------------------------------------------- 1015cdf0e10cSrcweir 1016cdf0e10cSrcweir IMPL_LINK( SvxJavaClassPathDlg, SelectHdl_Impl, ListBox *, EMPTYARG ) 1017cdf0e10cSrcweir { 1018cdf0e10cSrcweir EnableRemoveButton(); 1019cdf0e10cSrcweir return 0; 1020cdf0e10cSrcweir } 1021cdf0e10cSrcweir 1022cdf0e10cSrcweir // ----------------------------------------------------------------------- 1023cdf0e10cSrcweir 1024cdf0e10cSrcweir bool SvxJavaClassPathDlg::IsPathDuplicate( const String& _rPath ) 1025cdf0e10cSrcweir { 1026cdf0e10cSrcweir bool bRet = false; 1027cdf0e10cSrcweir INetURLObject aFileObj( _rPath ); 1028cdf0e10cSrcweir sal_uInt16 nCount = m_aPathList.GetEntryCount(); 1029cdf0e10cSrcweir for ( sal_uInt16 i = 0; i < nCount; ++i ) 1030cdf0e10cSrcweir { 1031cdf0e10cSrcweir INetURLObject aOtherObj( m_aPathList.GetEntry(i), INetURLObject::FSYS_DETECT ); 1032cdf0e10cSrcweir if ( aOtherObj == aFileObj ) 1033cdf0e10cSrcweir { 1034cdf0e10cSrcweir bRet = true; 1035cdf0e10cSrcweir break; 1036cdf0e10cSrcweir } 1037cdf0e10cSrcweir } 1038cdf0e10cSrcweir 1039cdf0e10cSrcweir return bRet; 1040cdf0e10cSrcweir } 1041cdf0e10cSrcweir 1042cdf0e10cSrcweir // ----------------------------------------------------------------------- 1043cdf0e10cSrcweir 1044cdf0e10cSrcweir String SvxJavaClassPathDlg::GetClassPath() const 1045cdf0e10cSrcweir { 1046cdf0e10cSrcweir String sPath; 1047cdf0e10cSrcweir sal_uInt16 nCount = m_aPathList.GetEntryCount(); 1048cdf0e10cSrcweir for ( sal_uInt16 i = 0; i < nCount; ++i ) 1049cdf0e10cSrcweir { 1050cdf0e10cSrcweir if ( sPath.Len() > 0 ) 1051cdf0e10cSrcweir sPath += CLASSPATH_DELIMITER; 1052cdf0e10cSrcweir String* pFullPath = static_cast< String* >( m_aPathList.GetEntryData(i) ); 1053cdf0e10cSrcweir if ( pFullPath ) 1054cdf0e10cSrcweir sPath += *pFullPath; 1055cdf0e10cSrcweir else 1056cdf0e10cSrcweir sPath += m_aPathList.GetEntry(i); 1057cdf0e10cSrcweir } 1058cdf0e10cSrcweir return sPath; 1059cdf0e10cSrcweir } 1060cdf0e10cSrcweir 1061cdf0e10cSrcweir // ----------------------------------------------------------------------- 1062cdf0e10cSrcweir 1063cdf0e10cSrcweir void SvxJavaClassPathDlg::SetClassPath( const String& _rPath ) 1064cdf0e10cSrcweir { 1065cdf0e10cSrcweir if ( m_sOldPath.Len() == 0 ) 1066cdf0e10cSrcweir m_sOldPath = _rPath; 1067cdf0e10cSrcweir m_aPathList.Clear(); 1068cdf0e10cSrcweir xub_StrLen i, nIdx = 0; 1069cdf0e10cSrcweir xub_StrLen nCount = _rPath.GetTokenCount( CLASSPATH_DELIMITER ); 1070cdf0e10cSrcweir for ( i = 0; i < nCount; ++i ) 1071cdf0e10cSrcweir { 1072cdf0e10cSrcweir String sToken = _rPath.GetToken( 0, CLASSPATH_DELIMITER, nIdx ); 1073cdf0e10cSrcweir INetURLObject aURL( sToken, INetURLObject::FSYS_DETECT ); 1074cdf0e10cSrcweir String sPath = aURL.getFSysPath( INetURLObject::FSYS_DETECT ); 1075cdf0e10cSrcweir m_aPathList.InsertEntry( sPath, SvFileInformationManager::GetImage( aURL ) ); 1076cdf0e10cSrcweir } 1077cdf0e10cSrcweir // select first entry 1078cdf0e10cSrcweir m_aPathList.SelectEntryPos(0); 1079cdf0e10cSrcweir SelectHdl_Impl( NULL ); 1080cdf0e10cSrcweir } 1081cdf0e10cSrcweir 1082