summaryrefslogtreecommitdiff
path: root/cui/source/options/optjava.cxx
diff options
context:
space:
mode:
authorMichael Stahl <mstahl@redhat.com>2012-01-28 20:52:45 +0100
committerMichael Stahl <mstahl@redhat.com>2012-01-28 20:52:45 +0100
commit2e626373db2412ac22e8c5c27a60d11cd29e875b (patch)
tree9e9f67205cd5b72f1031721273e1534a3a1e5b0f /cui/source/options/optjava.cxx
parentf7ee7bbd5174b084f018c2ec94d8c70c98ee04da (diff)
replace obsolete "master" branch with README that points at new repoHEADmaster-deletedmaster
Diffstat (limited to 'cui/source/options/optjava.cxx')
-rw-r--r--cui/source/options/optjava.cxx1077
1 files changed, 0 insertions, 1077 deletions
diff --git a/cui/source/options/optjava.cxx b/cui/source/options/optjava.cxx
deleted file mode 100644
index f3b31216e..000000000
--- a/cui/source/options/optjava.cxx
+++ /dev/null
@@ -1,1077 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// include ---------------------------------------------------------------
-
-#include "optjava.hxx"
-#include <dialmgr.hxx>
-
-#include "optjava.hrc"
-#include <cuires.hrc>
-#include "helpid.hrc"
-#include <vcl/svapp.hxx>
-#include <vcl/help.hxx>
-#include <tools/urlobj.hxx>
-#include <vcl/msgbox.hxx>
-#include <vcl/waitobj.hxx>
-#include <unotools/pathoptions.hxx>
-#include <svtools/imagemgr.hxx>
-#include <sfx2/filedlghelper.hxx>
-#include <comphelper/processfactory.hxx>
-#include <ucbhelper/contentbroker.hxx>
-#include <com/sun/star/lang/XMultiServiceFactory.hpp>
-#include <com/sun/star/ui/dialogs/ExecutableDialogResults.hpp>
-#include <com/sun/star/ui/dialogs/XAsynchronousExecutableDialog.hpp>
-#include <com/sun/star/ui/dialogs/TemplateDescription.hpp>
-#include <com/sun/star/ucb/XContentProvider.hpp>
-#include <jvmfwk/framework.h>
-
-// define ----------------------------------------------------------------
-
-#define CLASSPATH_DELIMITER SAL_PATHSEPARATOR
-#define STRIM( s ) s.EraseLeadingChars().EraseTrailingChars()
-#define BUTTON_BORDER 2
-#define RESET_TIMEOUT 300
-
-using namespace ::com::sun::star::lang;
-using namespace ::com::sun::star::ucb;
-using namespace ::com::sun::star::ui::dialogs;
-using namespace ::com::sun::star::uno;
-
-// -----------------------------------------------------------------------
-
-bool areListsEqual( const Sequence< ::rtl::OUString >& rListA, const Sequence< ::rtl::OUString >& rListB )
-{
- bool bRet = true;
- const sal_Int32 nLen = rListA.getLength();
-
- if ( rListB.getLength() != nLen )
- bRet = false;
- else
- {
- const ::rtl::OUString* pStringA = rListA.getConstArray();
- const ::rtl::OUString* pStringB = rListB.getConstArray();
-
- for ( sal_Int32 i = 0; i < nLen; ++i )
- {
- if ( *pStringA++ != *pStringB++ )
- {
- bRet = false;
- break;
- }
- }
- }
-
- return bRet;
-}
-
-// class SvxJavaOptionsPage ----------------------------------------------
-
-SvxJavaOptionsPage::SvxJavaOptionsPage( Window* pParent, const SfxItemSet& rSet ) :
-
- SfxTabPage( pParent, CUI_RES( RID_SVXPAGE_OPTIONS_JAVA ), rSet ),
-
- m_aJavaLine ( this, CUI_RES( FL_JAVA ) ),
- m_aJavaEnableCB ( this, CUI_RES( CB_JAVA_ENABLE ) ),
- m_aJavaFoundLabel ( this, CUI_RES( FT_JAVA_FOUND ) ),
- m_aJavaListContainer(this, CUI_RES(LB_JAVA)),
- m_aJavaList(m_aJavaListContainer),
- m_aJavaPathText ( this, CUI_RES( FT_JAVA_PATH ) ),
- m_aAddBtn ( this, CUI_RES( PB_ADD ) ),
- m_aParameterBtn ( this, CUI_RES( PB_PARAMETER ) ),
- m_aClassPathBtn ( this, CUI_RES( PB_CLASSPATH ) ),
-
- m_pParamDlg ( NULL ),
- m_pPathDlg ( NULL ),
- m_parJavaInfo ( NULL ),
- m_parParameters ( NULL ),
- m_pClassPath ( NULL ),
- m_nInfoSize ( 0 ),
- m_nParamSize ( 0 ),
- m_sInstallText ( CUI_RES( STR_INSTALLED_IN ) ),
- m_sAccessibilityText( CUI_RES( STR_ACCESSIBILITY ) ),
- m_sAddDialogText ( CUI_RES( STR_ADDDLGTEXT ) ),
-
- xDialogListener ( new ::svt::DialogClosedListener() )
-
-{
- m_aJavaEnableCB.SetClickHdl( LINK( this, SvxJavaOptionsPage, EnableHdl_Impl ) );
- m_aJavaList.SetCheckButtonHdl( LINK( this, SvxJavaOptionsPage, CheckHdl_Impl ) );
- m_aJavaList.SetSelectHdl( LINK( this, SvxJavaOptionsPage, SelectHdl_Impl ) );
- m_aAddBtn.SetClickHdl( LINK( this, SvxJavaOptionsPage, AddHdl_Impl ) );
- m_aParameterBtn.SetClickHdl( LINK( this, SvxJavaOptionsPage, ParameterHdl_Impl ) );
- m_aClassPathBtn.SetClickHdl( LINK( this, SvxJavaOptionsPage, ClassPathHdl_Impl ) );
- m_aResetTimer.SetTimeoutHdl( LINK( this, SvxJavaOptionsPage, ResetHdl_Impl ) );
- m_aResetTimer.SetTimeout( RESET_TIMEOUT );
-
- static long aStaticTabs[]=
- {
- 5, 0, 15, 90, 130, 300
- };
-
- m_aJavaList.SvxSimpleTable::SetTabs( aStaticTabs );
- String sHeader( '\t' );
- sHeader += String( CUI_RES( STR_HEADER_VENDOR ) );
- sHeader += '\t';
- sHeader += String( CUI_RES( STR_HEADER_VERSION ) );
- sHeader += '\t';
- sHeader += String( CUI_RES( STR_HEADER_FEATURES ) );
- sHeader += '\t';
- m_aJavaList.InsertHeaderEntry( sHeader, HEADERBAR_APPEND, HIB_LEFT );
-
- m_aJavaList.SetHelpId( HID_OPTIONS_JAVA_LIST );
-
- FreeResource();
-
- xDialogListener->SetDialogClosedLink( LINK( this, SvxJavaOptionsPage, DialogClosedHdl ) );
-
- EnableHdl_Impl( &m_aJavaEnableCB );
- jfw_lock();
-
- //check if the text fits into the class path button
- Size aButtonSize = m_aClassPathBtn.GetOutputSizePixel();
- sal_Int32 nTextWidth = m_aClassPathBtn.GetTextWidth(m_aClassPathBtn.GetText());
- //add some additional space
- sal_Int32 nDiff = nTextWidth + 4 - aButtonSize.Width();
- if( nDiff > 0)
- {
- Point aPos(m_aClassPathBtn.GetPosPixel());
- aPos.X() -= nDiff;
- aButtonSize.Width() += nDiff;
- m_aClassPathBtn.SetPosSizePixel(aPos, aButtonSize);
- aPos = m_aAddBtn.GetPosPixel();
- aPos.X() -= nDiff;
- m_aAddBtn.SetPosSizePixel(aPos, aButtonSize);
- aPos = m_aParameterBtn.GetPosPixel();
- aPos.X() -= nDiff;
- m_aParameterBtn.SetPosSizePixel(aPos, aButtonSize);
- Size aSize = m_aJavaListContainer.GetSizePixel();
- aSize.Width() -= nDiff;
- m_aJavaListContainer.SetSizePixel(aSize);
- }
-}
-
-// -----------------------------------------------------------------------
-
-SvxJavaOptionsPage::~SvxJavaOptionsPage()
-{
- delete m_pParamDlg;
- delete m_pPathDlg;
- ClearJavaInfo();
- std::vector< JavaInfo* >::iterator pIter;
- for ( pIter = m_aAddedInfos.begin(); pIter != m_aAddedInfos.end(); ++pIter )
- {
- JavaInfo* pInfo = *pIter;
- jfw_freeJavaInfo( pInfo );
- }
-
- jfw_unlock();
-}
-
-// -----------------------------------------------------------------------
-
-IMPL_LINK( SvxJavaOptionsPage, EnableHdl_Impl, CheckBox *, EMPTYARG )
-{
- sal_Bool bEnable = m_aJavaEnableCB.IsChecked();
- m_aJavaFoundLabel.Enable( bEnable );
- m_aJavaPathText.Enable( bEnable );
- m_aAddBtn.Enable( bEnable );
- m_aParameterBtn.Enable( bEnable );
- m_aClassPathBtn.Enable( bEnable );
-
- bEnable ? m_aJavaList.EnableTable() : m_aJavaList.DisableTable();
-
- return 0;
-}
-
-// -----------------------------------------------------------------------
-
-IMPL_LINK( SvxJavaOptionsPage, CheckHdl_Impl, SvxSimpleTable *, pList )
-{
- SvLBoxEntry* pEntry = pList ? m_aJavaList.GetEntry( m_aJavaList.GetCurMousePoint() )
- : m_aJavaList.FirstSelected();
- if ( pEntry )
- m_aJavaList.HandleEntryChecked( pEntry );
- return 0;
-}
-
-// -----------------------------------------------------------------------
-
-IMPL_LINK( SvxJavaOptionsPage, SelectHdl_Impl, SvxSimpleTable *, EMPTYARG )
-{
- // set installation directory info
- SvLBoxEntry* pEntry = m_aJavaList.FirstSelected();
- DBG_ASSERT( pEntry, "SvxJavaOptionsPage::SelectHdl_Impl(): no entry" );
- String* pLocation = static_cast< String* >( pEntry->GetUserData() );
- DBG_ASSERT( pLocation, "invalid location string" );
- String sInfo = m_sInstallText;
- if ( pLocation )
- sInfo += *pLocation;
- m_aJavaPathText.SetText( sInfo );
- return 0;
-}
-
-// -----------------------------------------------------------------------
-
-IMPL_LINK( SvxJavaOptionsPage, AddHdl_Impl, PushButton *, EMPTYARG )
-{
- try
- {
- Reference < XMultiServiceFactory > xMgr( ::comphelper::getProcessServiceFactory() );
- xFolderPicker = Reference< XFolderPicker >(
- xMgr->createInstance( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.ui.dialogs.FolderPicker") ) ), UNO_QUERY );
-
- String sWorkFolder = SvtPathOptions().GetWorkPath();
- xFolderPicker->setDisplayDirectory( sWorkFolder );
- xFolderPicker->setDescription( m_sAddDialogText );
-
- Reference< XAsynchronousExecutableDialog > xAsyncDlg( xFolderPicker, UNO_QUERY );
- if ( xAsyncDlg.is() )
- xAsyncDlg->startExecuteModal( xDialogListener.get() );
- else if ( xFolderPicker.is() && xFolderPicker->execute() == ExecutableDialogResults::OK )
- AddFolder( xFolderPicker->getDirectory() );
- }
- catch ( Exception& )
- {
-#ifdef DBG_UTIL
- DBG_ERRORFILE( "SvxJavaOptionsPage::AddHdl_Impl(): caught exception" );
-#endif
- }
-
- return 0;
-}
-
-// -----------------------------------------------------------------------
-
-IMPL_LINK( SvxJavaOptionsPage, ParameterHdl_Impl, PushButton *, EMPTYARG )
-{
- Sequence< ::rtl::OUString > aParameterList;
- if ( !m_pParamDlg )
- {
- m_pParamDlg = new SvxJavaParameterDlg( this );
- javaFrameworkError eErr = jfw_getVMParameters( &m_parParameters, &m_nParamSize );
- if ( JFW_E_NONE == eErr && m_parParameters && m_nParamSize > 0 )
- {
- rtl_uString** pParamArr = m_parParameters;
- aParameterList.realloc( m_nParamSize );
- ::rtl::OUString* pParams = aParameterList.getArray();
- for ( sal_Int32 i = 0; i < m_nParamSize; ++i )
- {
- rtl_uString* pParam = *pParamArr++;
- pParams[i] = ::rtl::OUString( pParam );
- }
- m_pParamDlg->SetParameters( aParameterList );
- }
- }
- else
- aParameterList = m_pParamDlg->GetParameters();
-
- if ( m_pParamDlg->Execute() == RET_OK )
- {
- if ( !areListsEqual( aParameterList, m_pParamDlg->GetParameters() ) )
- {
- aParameterList = m_pParamDlg->GetParameters();
- sal_Bool bRunning = sal_False;
- javaFrameworkError eErr = jfw_isVMRunning( &bRunning );
- DBG_ASSERT( JFW_E_NONE == eErr,
- "SvxJavaOptionsPage::ParameterHdl_Impl(): error in jfw_isVMRunning" );
- (void)eErr;
- if ( bRunning )
- {
- WarningBox aWarnBox( this, CUI_RES( RID_SVX_MSGBOX_JAVA_RESTART2 ) );
- aWarnBox.Execute();
- }
- }
- }
- else
- m_pParamDlg->SetParameters( aParameterList );
-
- return 0;
-}
-
-// -----------------------------------------------------------------------
-
-IMPL_LINK( SvxJavaOptionsPage, ClassPathHdl_Impl, PushButton *, EMPTYARG )
-{
- String sClassPath;
-
- if ( !m_pPathDlg )
- {
- m_pPathDlg = new SvxJavaClassPathDlg( this );
- javaFrameworkError eErr = jfw_getUserClassPath( &m_pClassPath );
- if ( JFW_E_NONE == eErr && m_pClassPath )
- {
- sClassPath = String( ::rtl::OUString( m_pClassPath ) );
- m_pPathDlg->SetClassPath( sClassPath );
- }
- }
- else
- sClassPath = m_pPathDlg->GetClassPath();
-
- m_pPathDlg->SetFocus();
- if ( m_pPathDlg->Execute() == RET_OK )
- {
-
- if ( m_pPathDlg->GetClassPath() != sClassPath )
- {
- sClassPath = m_pPathDlg->GetClassPath();
- sal_Bool bRunning = sal_False;
- javaFrameworkError eErr = jfw_isVMRunning( &bRunning );
- DBG_ASSERT( JFW_E_NONE == eErr,
- "SvxJavaOptionsPage::ParameterHdl_Impl(): error in jfw_isVMRunning" );
- (void)eErr;
- if ( bRunning )
- {
- WarningBox aWarnBox( this, CUI_RES( RID_SVX_MSGBOX_JAVA_RESTART2 ) );
- aWarnBox.Execute();
- }
- }
- }
- else
- m_pPathDlg->SetClassPath( sClassPath );
-
- return 0;
-}
-
-// -----------------------------------------------------------------------
-
-IMPL_LINK( SvxJavaOptionsPage, ResetHdl_Impl, Timer *, EMPTYARG )
-{
- LoadJREs();
- return 0;
-}
-
-// -----------------------------------------------------------------------
-
-IMPL_LINK( SvxJavaOptionsPage, StartFolderPickerHdl, void*, EMPTYARG )
-{
- try
- {
- Reference< XAsynchronousExecutableDialog > xAsyncDlg( xFolderPicker, UNO_QUERY );
- if ( xAsyncDlg.is() )
- xAsyncDlg->startExecuteModal( xDialogListener.get() );
- else if ( xFolderPicker.is() && xFolderPicker->execute() == ExecutableDialogResults::OK )
- AddFolder( xFolderPicker->getDirectory() );
- }
- catch ( Exception& )
- {
-#ifdef DBG_UTIL
- DBG_ERRORFILE( "SvxJavaOptionsPage::StartFolderPickerHdl(): caught exception" );
-#endif
- }
-
- return 0L;
-}
-
-// -----------------------------------------------------------------------
-
-IMPL_LINK( SvxJavaOptionsPage, DialogClosedHdl, DialogClosedEvent*, pEvt )
-{
- if ( RET_OK == pEvt->DialogResult )
- {
- DBG_ASSERT( xFolderPicker.is() == sal_True, "SvxJavaOptionsPage::DialogClosedHdl(): no folder picker" );
-
- AddFolder( xFolderPicker->getDirectory() );
- }
- return 0L;
-}
-
-// -----------------------------------------------------------------------
-
-void SvxJavaOptionsPage::ClearJavaInfo()
-{
- if ( m_parJavaInfo )
- {
- JavaInfo** parInfo = m_parJavaInfo;
- for ( sal_Int32 i = 0; i < m_nInfoSize; ++i )
- {
- JavaInfo* pInfo = *parInfo++;
- jfw_freeJavaInfo( pInfo );
- }
-
- rtl_freeMemory( m_parJavaInfo );
- m_parJavaInfo = NULL;
- m_nInfoSize = 0;
- }
-}
-
-// -----------------------------------------------------------------------
-
-void SvxJavaOptionsPage::ClearJavaList()
-{
- SvLBoxEntry* pEntry = m_aJavaList.First();
- while ( pEntry )
- {
- String* pLocation = static_cast< String* >( pEntry->GetUserData() );
- delete pLocation;
- pEntry = m_aJavaList.Next( pEntry );
- }
- m_aJavaList.Clear();
-}
-
-// -----------------------------------------------------------------------
-
-void SvxJavaOptionsPage::LoadJREs()
-{
- WaitObject aWaitObj( &m_aJavaList );
- javaFrameworkError eErr = jfw_findAllJREs( &m_parJavaInfo, &m_nInfoSize );
- if ( JFW_E_NONE == eErr && m_parJavaInfo )
- {
- JavaInfo** parInfo = m_parJavaInfo;
- for ( sal_Int32 i = 0; i < m_nInfoSize; ++i )
- {
- JavaInfo* pInfo = *parInfo++;
- AddJRE( pInfo );
- }
- }
-
- std::vector< JavaInfo* >::iterator pIter;
- for ( pIter = m_aAddedInfos.begin(); pIter != m_aAddedInfos.end(); ++pIter )
- {
- JavaInfo* pInfo = *pIter;
- AddJRE( pInfo );
- }
-
- JavaInfo* pSelectedJava = NULL;
- eErr = jfw_getSelectedJRE( &pSelectedJava );
- if ( JFW_E_NONE == eErr && pSelectedJava )
- {
- JavaInfo** parInfo = m_parJavaInfo;
- for ( sal_Int32 i = 0; i < m_nInfoSize; ++i )
- {
- JavaInfo* pCmpInfo = *parInfo++;
- if ( jfw_areEqualJavaInfo( pCmpInfo, pSelectedJava ) )
- {
- SvLBoxEntry* pEntry = m_aJavaList.GetEntry(i);
- if ( pEntry )
- m_aJavaList.HandleEntryChecked( pEntry );
- break;
- }
- }
- }
-
- jfw_freeJavaInfo( pSelectedJava );
-}
-
-// -----------------------------------------------------------------------
-
-void SvxJavaOptionsPage::AddJRE( JavaInfo* _pInfo )
-{
- String sEntry( '\t' );
- sEntry += String( ::rtl::OUString( _pInfo->sVendor ) );
- sEntry += '\t';
- sEntry += String( ::rtl::OUString( _pInfo->sVersion ) );
- sEntry += '\t';
- if ( ( _pInfo->nFeatures & JFW_FEATURE_ACCESSBRIDGE ) == JFW_FEATURE_ACCESSBRIDGE )
- sEntry += m_sAccessibilityText;
- SvLBoxEntry* pEntry = m_aJavaList.InsertEntry( sEntry );
- INetURLObject aLocObj( ::rtl::OUString( _pInfo->sLocation ) );
- String* pLocation = new String( aLocObj.getFSysPath( INetURLObject::FSYS_DETECT ) );
- pEntry->SetUserData( pLocation );
-}
-
-// -----------------------------------------------------------------------
-
-void SvxJavaOptionsPage::HandleCheckEntry( SvLBoxEntry* _pEntry )
-{
- m_aJavaList.Select( _pEntry, sal_True );
- SvButtonState eState = m_aJavaList.GetCheckButtonState( _pEntry );
-
- if ( SV_BUTTON_CHECKED == eState )
- {
- // we have radio button behavior -> so uncheck the other entries
- SvLBoxEntry* pEntry = m_aJavaList.First();
- while ( pEntry )
- {
- if ( pEntry != _pEntry )
- m_aJavaList.SetCheckButtonState( pEntry, SV_BUTTON_UNCHECKED );
- pEntry = m_aJavaList.Next( pEntry );
- }
- }
- else
- m_aJavaList.SetCheckButtonState( _pEntry, SV_BUTTON_CHECKED );
-}
-
-// -----------------------------------------------------------------------
-
-void SvxJavaOptionsPage::AddFolder( const ::rtl::OUString& _rFolder )
-{
- bool bStartAgain = true;
- JavaInfo* pInfo = NULL;
- javaFrameworkError eErr = jfw_getJavaInfoByPath( _rFolder.pData, &pInfo );
- if ( JFW_E_NONE == eErr && pInfo )
- {
- sal_Int32 nPos = 0;
- bool bFound = false;
- JavaInfo** parInfo = m_parJavaInfo;
- for ( sal_Int32 i = 0; i < m_nInfoSize; ++i )
- {
- JavaInfo* pCmpInfo = *parInfo++;
- if ( jfw_areEqualJavaInfo( pCmpInfo, pInfo ) )
- {
- bFound = true;
- nPos = i;
- break;
- }
- }
-
- if ( !bFound )
- {
- std::vector< JavaInfo* >::iterator pIter;
- for ( pIter = m_aAddedInfos.begin(); pIter != m_aAddedInfos.end(); ++pIter )
- {
- JavaInfo* pCmpInfo = *pIter;
- if ( jfw_areEqualJavaInfo( pCmpInfo, pInfo ) )
- {
- bFound = true;
- break;
- }
- }
- }
-
- if ( !bFound )
- {
- jfw_addJRELocation( pInfo->sLocation );
- AddJRE( pInfo );
- m_aAddedInfos.push_back( pInfo );
- nPos = m_aJavaList.GetEntryCount() - 1;
- }
- else
- jfw_freeJavaInfo( pInfo );
-
- SvLBoxEntry* pEntry = m_aJavaList.GetEntry( nPos );
- m_aJavaList.Select( pEntry );
- m_aJavaList.SetCheckButtonState( pEntry, SV_BUTTON_CHECKED );
- HandleCheckEntry( pEntry );
- bStartAgain = false;
- }
- else if ( JFW_E_NOT_RECOGNIZED == eErr )
- {
- ErrorBox aErrBox( this, CUI_RES( RID_SVXERR_JRE_NOT_RECOGNIZED ) );
- aErrBox.Execute();
- }
- else if ( JFW_E_FAILED_VERSION == eErr )
- {
- ErrorBox aErrBox( this, CUI_RES( RID_SVXERR_JRE_FAILED_VERSION ) );
- aErrBox.Execute();
- }
-
- if ( bStartAgain )
- {
- xFolderPicker->setDisplayDirectory( _rFolder );
- Application::PostUserEvent( LINK( this, SvxJavaOptionsPage, StartFolderPickerHdl ) );
- }
-}
-
-// -----------------------------------------------------------------------
-
-SfxTabPage* SvxJavaOptionsPage::Create( Window* pParent, const SfxItemSet& rAttrSet )
-{
- return ( new SvxJavaOptionsPage( pParent, rAttrSet ) );
-}
-
-// -----------------------------------------------------------------------
-
-sal_Bool SvxJavaOptionsPage::FillItemSet( SfxItemSet& /*rCoreSet*/ )
-{
- sal_Bool bModified = sal_False;
- javaFrameworkError eErr = JFW_E_NONE;
- if ( m_pParamDlg )
- {
- Sequence< ::rtl::OUString > aParamList = m_pParamDlg->GetParameters();
- sal_Int32 i, nSize = aParamList.getLength();
- rtl_uString** pParamArr = (rtl_uString**)rtl_allocateMemory( sizeof(rtl_uString*) * nSize );
- rtl_uString** pParamArrIter = pParamArr;
- const ::rtl::OUString* pList = aParamList.getConstArray();
- for ( i = 0; i < nSize; ++i )
- pParamArr[i] = pList[i].pData;
- eErr = jfw_setVMParameters( pParamArrIter, nSize );
- DBG_ASSERT( JFW_E_NONE == eErr,
- "SvxJavaOptionsPage::FillItemSet(): error in jfw_setVMParameters" );
- pParamArrIter = pParamArr;
- rtl_freeMemory( pParamArr );
- bModified = sal_True;
- }
-
- if ( m_pPathDlg )
- {
- ::rtl::OUString sPath( m_pPathDlg->GetClassPath() );
- if ( m_pPathDlg->GetOldPath() != String( sPath ) )
- {
- eErr = jfw_setUserClassPath( sPath.pData );
- DBG_ASSERT( JFW_E_NONE == eErr,
- "SvxJavaOptionsPage::FillItemSet(): error in jfw_setUserClassPath" );
- bModified = sal_True;
- }
- }
-
- sal_uLong nCount = m_aJavaList.GetEntryCount();
- for ( sal_uLong i = 0; i < nCount; ++i )
- {
- if ( m_aJavaList.GetCheckButtonState( m_aJavaList.GetEntry(i) ) == SV_BUTTON_CHECKED )
- {
- JavaInfo* pInfo = NULL;
- if ( i < static_cast< sal_uLong >( m_nInfoSize ) )
- pInfo = m_parJavaInfo[i];
- else
- pInfo = m_aAddedInfos[ i - m_nInfoSize ];
-
- JavaInfo* pSelectedJava = NULL;
- eErr = jfw_getSelectedJRE( &pSelectedJava );
- if ( JFW_E_NONE == eErr || JFW_E_INVALID_SETTINGS == eErr )
- {
- if (pSelectedJava == NULL || !jfw_areEqualJavaInfo( pInfo, pSelectedJava ) )
- {
- sal_Bool bRunning = sal_False;
- eErr = jfw_isVMRunning( &bRunning );
- DBG_ASSERT( JFW_E_NONE == eErr,
- "SvxJavaOptionsPage::FillItemSet(): error in jfw_isVMRunning" );
- if ( bRunning ||
- ( ( pInfo->nRequirements & JFW_REQUIRE_NEEDRESTART ) == JFW_REQUIRE_NEEDRESTART ) )
- {
- WarningBox aWarnBox( this, CUI_RES( RID_SVX_MSGBOX_JAVA_RESTART ) );
- aWarnBox.Execute();
- }
-
- eErr = jfw_setSelectedJRE( pInfo );
- DBG_ASSERT( JFW_E_NONE == eErr,
- "SvxJavaOptionsPage::FillItemSet(): error in jfw_setSelectedJRE" );
- bModified = sal_True;
- }
- }
- jfw_freeJavaInfo( pSelectedJava );
- break;
- }
- }
-
- sal_Bool bEnabled = sal_False;
- eErr = jfw_getEnabled( &bEnabled );
- DBG_ASSERT( JFW_E_NONE == eErr,
- "SvxJavaOptionsPage::FillItemSet(): error in jfw_getEnabled" );
- if ( bEnabled != m_aJavaEnableCB.IsChecked() )
- {
- eErr = jfw_setEnabled( m_aJavaEnableCB.IsChecked() );
- DBG_ASSERT( JFW_E_NONE == eErr,
- "SvxJavaOptionsPage::FillItemSet(): error in jfw_setEnabled" );
- bModified = sal_True;
- }
-
- return bModified;
-}
-
-// -----------------------------------------------------------------------
-
-void SvxJavaOptionsPage::Reset( const SfxItemSet& /*rSet*/ )
-{
- ClearJavaInfo();
- ClearJavaList();
-
- sal_Bool bEnabled = sal_False;
- javaFrameworkError eErr = jfw_getEnabled( &bEnabled );
- if ( eErr != JFW_E_NONE )
- bEnabled = sal_False;
- m_aJavaEnableCB.Check( bEnabled );
- EnableHdl_Impl( &m_aJavaEnableCB );
-
- m_aResetTimer.Start();
-}
-
-// -----------------------------------------------------------------------
-
-void SvxJavaOptionsPage::FillUserData()
-{
- String aUserData;
- SetUserData( aUserData );
-}
-
-// class SvxJavaParameterDlg ---------------------------------------------
-
-SvxJavaParameterDlg::SvxJavaParameterDlg( Window* pParent ) :
-
- ModalDialog( pParent, CUI_RES( RID_SVXDLG_JAVA_PARAMETER ) ),
-
- m_aParameterLabel ( this, CUI_RES( FT_PARAMETER ) ),
- m_aParameterEdit ( this, CUI_RES( ED_PARAMETER ) ),
- m_aAssignBtn ( this, CUI_RES( PB_ASSIGN ) ),
- m_aAssignedLabel ( this, CUI_RES( FT_ASSIGNED ) ),
- m_aAssignedList ( this, CUI_RES( LB_ASSIGNED ) ),
- m_aExampleText ( this, CUI_RES( FT_EXAMPLE ) ),
- m_aRemoveBtn ( this, CUI_RES( PB_REMOVE ) ),
- m_aButtonsLine ( this, CUI_RES( FL_BUTTONS ) ),
- m_aOKBtn ( this, CUI_RES( PB_PARAMETER_OK ) ),
- m_aCancelBtn ( this, CUI_RES( PB_PARAMETER_ESC ) ),
- m_aHelpBtn ( this, CUI_RES( PB_PARAMETER_HLP ) )
-
-{
- FreeResource();
-
- m_aParameterEdit.SetModifyHdl( LINK( this, SvxJavaParameterDlg, ModifyHdl_Impl ) );
- m_aAssignBtn.SetClickHdl( LINK( this, SvxJavaParameterDlg, AssignHdl_Impl ) );
- m_aRemoveBtn.SetClickHdl( LINK( this, SvxJavaParameterDlg, RemoveHdl_Impl ) );
- m_aAssignedList.SetSelectHdl( LINK( this, SvxJavaParameterDlg, SelectHdl_Impl ) );
- m_aAssignedList.SetDoubleClickHdl( LINK( this, SvxJavaParameterDlg, DblClickHdl_Impl ) );
-
- ModifyHdl_Impl( &m_aParameterEdit );
- EnableRemoveButton();
-}
-
-// -----------------------------------------------------------------------
-
-SvxJavaParameterDlg::~SvxJavaParameterDlg()
-{
-}
-
-// -----------------------------------------------------------------------
-
-IMPL_LINK( SvxJavaParameterDlg, ModifyHdl_Impl, Edit *, EMPTYARG )
-{
- String sParam = STRIM( m_aParameterEdit.GetText() );
- m_aAssignBtn.Enable( sParam.Len() > 0 );
-
- return 0;
-}
-
-// -----------------------------------------------------------------------
-
-IMPL_LINK( SvxJavaParameterDlg, AssignHdl_Impl, PushButton *, EMPTYARG )
-{
- String sParam = STRIM( m_aParameterEdit.GetText() );
- if ( sParam.Len() > 0 )
- {
- sal_uInt16 nPos = m_aAssignedList.GetEntryPos( sParam );
- if ( LISTBOX_ENTRY_NOTFOUND == nPos )
- nPos = m_aAssignedList.InsertEntry( sParam );
- m_aAssignedList.SelectEntryPos( nPos );
- m_aParameterEdit.SetText( String() );
- ModifyHdl_Impl( &m_aParameterEdit );
- EnableRemoveButton();
- }
-
- return 0;
-}
-
-// -----------------------------------------------------------------------
-
-IMPL_LINK( SvxJavaParameterDlg, SelectHdl_Impl, ListBox *, EMPTYARG )
-{
- EnableRemoveButton();
- return 0;
-}
-
-// -----------------------------------------------------------------------
-
-IMPL_LINK( SvxJavaParameterDlg, DblClickHdl_Impl, ListBox *, EMPTYARG )
-{
- sal_uInt16 nPos = m_aAssignedList.GetSelectEntryPos();
- if ( nPos != LISTBOX_ENTRY_NOTFOUND )
- m_aParameterEdit.SetText( m_aAssignedList.GetEntry( nPos ) );
- return 0;
-}
-
-// -----------------------------------------------------------------------
-
-IMPL_LINK( SvxJavaParameterDlg, RemoveHdl_Impl, PushButton *, EMPTYARG )
-{
- sal_uInt16 nPos = m_aAssignedList.GetSelectEntryPos();
- if ( nPos != LISTBOX_ENTRY_NOTFOUND )
- {
- m_aAssignedList.RemoveEntry( nPos );
- sal_uInt16 nCount = m_aAssignedList.GetEntryCount();
- if ( nCount )
- {
- if ( nPos >= nCount )
- nPos = ( nCount - 1 );
- m_aAssignedList.SelectEntryPos( nPos );
- }
- }
- EnableRemoveButton();
-
- return 0;
-}
-
-// -----------------------------------------------------------------------
-
-short SvxJavaParameterDlg::Execute()
-{
- m_aParameterEdit.GrabFocus();
- m_aAssignedList.SetNoSelection();
- return ModalDialog::Execute();
-}
-
-// -----------------------------------------------------------------------
-
-Sequence< ::rtl::OUString > SvxJavaParameterDlg::GetParameters() const
-{
- sal_uInt16 nCount = m_aAssignedList.GetEntryCount();
- Sequence< ::rtl::OUString > aParamList( nCount );
- ::rtl::OUString* pArray = aParamList.getArray();
- for ( sal_uInt16 i = 0; i < nCount; ++i )
- pArray[i] = ::rtl::OUString( m_aAssignedList.GetEntry(i) );
- return aParamList;
-}
-
-// -----------------------------------------------------------------------
-
-void SvxJavaParameterDlg::SetParameters( Sequence< ::rtl::OUString >& rParams )
-{
- m_aAssignedList.Clear();
- sal_uLong i, nCount = rParams.getLength();
- const ::rtl::OUString* pArray = rParams.getConstArray();
- for ( i = 0; i < nCount; ++i )
- {
- String sParam = String( *pArray++ );
- m_aAssignedList.InsertEntry( sParam );
- }
-}
-
-// class SvxJavaClassPathDlg ---------------------------------------------
-
-SvxJavaClassPathDlg::SvxJavaClassPathDlg( Window* pParent ) :
-
- ModalDialog( pParent, CUI_RES( RID_SVXDLG_JAVA_CLASSPATH ) ),
-
- m_aPathLabel ( this, CUI_RES( FT_PATH ) ),
- m_aPathList ( this, CUI_RES( LB_PATH ) ),
- m_aAddArchiveBtn ( this, CUI_RES( PB_ADDARCHIVE ) ),
- m_aAddPathBtn ( this, CUI_RES( PB_ADDPATH ) ),
- m_aRemoveBtn ( this, CUI_RES( PB_REMOVE_PATH ) ),
- m_aButtonsLine ( this, CUI_RES( FL_PATH_BUTTONS ) ),
- m_aOKBtn ( this, CUI_RES( PB_PATH_OK ) ),
- m_aCancelBtn ( this, CUI_RES( PB_PATH_ESC ) ),
- m_aHelpBtn ( this, CUI_RES( PB_PATH_HLP ) )
-
-{
- FreeResource();
-
- m_aAddArchiveBtn.SetClickHdl( LINK( this, SvxJavaClassPathDlg, AddArchiveHdl_Impl ) );
- m_aAddPathBtn.SetClickHdl( LINK( this, SvxJavaClassPathDlg, AddPathHdl_Impl ) );
- m_aRemoveBtn.SetClickHdl( LINK( this, SvxJavaClassPathDlg, RemoveHdl_Impl ) );
- m_aPathList.SetSelectHdl( LINK( this, SvxJavaClassPathDlg, SelectHdl_Impl ) );
-
- // check if the buttons text are not too wide otherwise we have to stretch the buttons
- // and shrink the listbox
- long nTxtWidth1 = m_aAddArchiveBtn.GetTextWidth( m_aAddArchiveBtn.GetText() );
- long nTxtWidth2 = m_aAddPathBtn.GetTextWidth( m_aAddPathBtn.GetText() );
- Size aBtnSz = m_aAddArchiveBtn.GetSizePixel();
- if ( nTxtWidth1 > aBtnSz.Width() || nTxtWidth2 > aBtnSz.Width() )
- {
- long nW = ( nTxtWidth1 > aBtnSz.Width() ) ? nTxtWidth1 : nTxtWidth2;
- long nDelta = nW - aBtnSz.Width() + 2 * BUTTON_BORDER;
- aBtnSz.Width() += nDelta;
- Point aBtnPnt = m_aAddArchiveBtn.GetPosPixel();
- aBtnPnt.X() -= nDelta;
- m_aAddArchiveBtn.SetPosSizePixel( aBtnPnt, aBtnSz );
- aBtnPnt = m_aAddPathBtn.GetPosPixel();
- aBtnPnt.X() -= nDelta;
- m_aAddPathBtn.SetPosSizePixel( aBtnPnt, aBtnSz );
- aBtnPnt = m_aRemoveBtn.GetPosPixel();
- aBtnPnt.X() -= nDelta;
- m_aRemoveBtn.SetPosSizePixel( aBtnPnt, aBtnSz );
- Size aBoxSz = m_aPathList.GetSizePixel();
- aBoxSz.Width() -= nDelta;
- m_aPathList.SetSizePixel( aBoxSz );
- }
-
- // set initial focus to path list
- m_aPathList.GrabFocus();
-}
-
-// -----------------------------------------------------------------------
-
-SvxJavaClassPathDlg::~SvxJavaClassPathDlg()
-{
- sal_uInt16 i, nCount = m_aPathList.GetEntryCount();
- for ( i = 0; i < nCount; ++i )
- delete static_cast< String* >( m_aPathList.GetEntryData(i) );
-}
-
-// -----------------------------------------------------------------------
-
-IMPL_LINK( SvxJavaClassPathDlg, AddArchiveHdl_Impl, PushButton *, EMPTYARG )
-{
- sfx2::FileDialogHelper aDlg( TemplateDescription::FILEOPEN_SIMPLE, 0 );
- aDlg.SetTitle( CUI_RES( RID_SVXSTR_ARCHIVE_TITLE ) );
- aDlg.AddFilter( CUI_RES( RID_SVXSTR_ARCHIVE_HEADLINE ), String::CreateFromAscii("*.jar;*.zip") );
- String sFolder;
- if ( m_aPathList.GetSelectEntryCount() > 0 )
- {
- INetURLObject aObj( m_aPathList.GetSelectEntry(), INetURLObject::FSYS_DETECT );
- sFolder = aObj.GetMainURL( INetURLObject::NO_DECODE );
- }
- else
- sFolder = SvtPathOptions().GetWorkPath();
- aDlg.SetDisplayDirectory( sFolder );
- if ( aDlg.Execute() == ERRCODE_NONE )
- {
- String sURL = aDlg.GetPath();
- INetURLObject aURL( sURL );
- String sFile = aURL.getFSysPath( INetURLObject::FSYS_DETECT );
- if ( !IsPathDuplicate( sURL ) )
- {
- sal_uInt16 nPos = m_aPathList.InsertEntry( sFile, SvFileInformationManager::GetImage( aURL, false ) );
- m_aPathList.SelectEntryPos( nPos );
- }
- else
- {
- String sMsg( CUI_RES( RID_SVXSTR_MULTIFILE_DBL_ERR ) );
- sMsg.SearchAndReplaceAscii( "%1", sFile );
- ErrorBox( this, WB_OK, sMsg ).Execute();
- }
- }
- EnableRemoveButton();
- return 0;
-}
-
-// -----------------------------------------------------------------------
-
-IMPL_LINK( SvxJavaClassPathDlg, AddPathHdl_Impl, PushButton *, EMPTYARG )
-{
- rtl::OUString sService( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.ui.dialogs.FolderPicker" ) );
- Reference < XMultiServiceFactory > xFactory( ::comphelper::getProcessServiceFactory() );
- Reference < XFolderPicker > xFolderPicker( xFactory->createInstance( sService ), UNO_QUERY );
-
- String sOldFolder;
- if ( m_aPathList.GetSelectEntryCount() > 0 )
- {
- INetURLObject aObj( m_aPathList.GetSelectEntry(), INetURLObject::FSYS_DETECT );
- sOldFolder = aObj.GetMainURL( INetURLObject::NO_DECODE );
- }
- else
- sOldFolder = SvtPathOptions().GetWorkPath();
- xFolderPicker->setDisplayDirectory( sOldFolder );
- if ( xFolderPicker->execute() == ExecutableDialogResults::OK )
- {
- String sFolderURL( xFolderPicker->getDirectory() );
- INetURLObject aURL( sFolderURL );
- String sNewFolder = aURL.getFSysPath( INetURLObject::FSYS_DETECT );
- if ( !IsPathDuplicate( sFolderURL ) )
- {
- sal_uInt16 nPos = m_aPathList.InsertEntry( sNewFolder, SvFileInformationManager::GetImage( aURL, false ) );
- m_aPathList.SelectEntryPos( nPos );
- }
- else
- {
- String sMsg( CUI_RES( RID_SVXSTR_MULTIFILE_DBL_ERR ) );
- sMsg.SearchAndReplaceAscii( "%1", sNewFolder );
- ErrorBox( this, WB_OK, sMsg ).Execute();
- }
- }
- EnableRemoveButton();
- return 0;
-}
-
-// -----------------------------------------------------------------------
-
-IMPL_LINK( SvxJavaClassPathDlg, RemoveHdl_Impl, PushButton *, EMPTYARG )
-{
- sal_uInt16 nPos = m_aPathList.GetSelectEntryPos();
- if ( nPos != LISTBOX_ENTRY_NOTFOUND )
- {
- m_aPathList.RemoveEntry( nPos );
- sal_uInt16 nCount = m_aPathList.GetEntryCount();
- if ( nCount )
- {
- if ( nPos >= nCount )
- nPos = ( nCount - 1 );
- m_aPathList.SelectEntryPos( nPos );
- }
- }
-
- EnableRemoveButton();
- return 0;
-}
-
-// -----------------------------------------------------------------------
-
-IMPL_LINK( SvxJavaClassPathDlg, SelectHdl_Impl, ListBox *, EMPTYARG )
-{
- EnableRemoveButton();
- return 0;
-}
-
-// -----------------------------------------------------------------------
-
-bool SvxJavaClassPathDlg::IsPathDuplicate( const String& _rPath )
-{
- bool bRet = false;
- INetURLObject aFileObj( _rPath );
- sal_uInt16 nCount = m_aPathList.GetEntryCount();
- for ( sal_uInt16 i = 0; i < nCount; ++i )
- {
- INetURLObject aOtherObj( m_aPathList.GetEntry(i), INetURLObject::FSYS_DETECT );
- if ( aOtherObj == aFileObj )
- {
- bRet = true;
- break;
- }
- }
-
- return bRet;
-}
-
-// -----------------------------------------------------------------------
-
-String SvxJavaClassPathDlg::GetClassPath() const
-{
- String sPath;
- sal_uInt16 nCount = m_aPathList.GetEntryCount();
- for ( sal_uInt16 i = 0; i < nCount; ++i )
- {
- if ( sPath.Len() > 0 )
- sPath += CLASSPATH_DELIMITER;
- String* pFullPath = static_cast< String* >( m_aPathList.GetEntryData(i) );
- if ( pFullPath )
- sPath += *pFullPath;
- else
- sPath += m_aPathList.GetEntry(i);
- }
- return sPath;
-}
-
-// -----------------------------------------------------------------------
-
-void SvxJavaClassPathDlg::SetClassPath( const String& _rPath )
-{
- if ( m_sOldPath.Len() == 0 )
- m_sOldPath = _rPath;
- m_aPathList.Clear();
- xub_StrLen i, nIdx = 0;
- xub_StrLen nCount = _rPath.GetTokenCount( CLASSPATH_DELIMITER );
- for ( i = 0; i < nCount; ++i )
- {
- String sToken = _rPath.GetToken( 0, CLASSPATH_DELIMITER, nIdx );
- INetURLObject aURL( sToken, INetURLObject::FSYS_DETECT );
- String sPath = aURL.getFSysPath( INetURLObject::FSYS_DETECT );
- m_aPathList.InsertEntry( sPath, SvFileInformationManager::GetImage( aURL, false ) );
- }
- // select first entry
- m_aPathList.SelectEntryPos(0);
- SelectHdl_Impl( NULL );
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */