/************************************************************** * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * *************************************************************/ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_filter.hxx" #include #include "com/sun/star/ui/dialogs/TemplateDescription.hpp" #include #include #include #include #include "xmlfiltertabpagexslt.hxx" #include "xmlfiltertabpagexslt.hrc" #include "xmlfiltersettingsdialog.hxx" #include "xmlfilterhelpids.hrc" using namespace ::rtl; using namespace ::com::sun::star::uno; using namespace ::com::sun::star::frame; using namespace ::com::sun::star::lang; XMLFilterTabPageXSLT::XMLFilterTabPageXSLT( Window* pParent, ResMgr& rResMgr, const Reference< XMultiServiceFactory >& rxMSF ) : TabPage( pParent, ResId( RID_XML_FILTER_TABPAGE_XSLT, rResMgr ) ), maFTDocType( this, ResId( FT_XML_DOCTYPE, rResMgr ) ), maEDDocType( this, ResId( ED_XML_DOCTYPE, rResMgr ) ), maFTDTDSchema( this, ResId( FT_XML_DTD_SCHEMA, rResMgr ) ), maEDDTDSchema( this, ResId( ED_XML_DTD_SCHEMA, rResMgr ), INET_PROT_FILE ), maPBDTDSchemaBrowse( this, ResId( ED_XML_DTD_SCHEMA_BROWSE, rResMgr ) ), maFTExportXSLT( this, ResId( FT_XML_EXPORT_XSLT, rResMgr ) ), maEDExportXSLT( this, ResId( ED_XML_EXPORT_XSLT, rResMgr ), INET_PROT_FILE ), maPBExprotXSLT( this, ResId( PB_XML_EXPORT_XSLT_BROWSE, rResMgr ) ), maFTImportXSLT( this, ResId( FT_XML_IMPORT_XSLT, rResMgr ) ), maEDImportXSLT( this, ResId( ED_XML_IMPORT_XSLT, rResMgr ), INET_PROT_FILE ), maPBImportXSLT( this, ResId( PB_XML_IMPORT_XSLT_BROWSE, rResMgr ) ), maFTImportTemplate( this, ResId( FT_XML_IMPORT_TEMPLATE, rResMgr ) ), maEDImportTemplate( this, ResId( ED_XML_IMPORT_TEMPLATE, rResMgr ), INET_PROT_FILE ), maPBImportTemplate( this, ResId( PB_XML_IMPORT_TEMPLATE_BROWSE, rResMgr ) ), sHTTPSchema( RTL_CONSTASCII_USTRINGPARAM( "http://" ) ), sSHTTPSchema( RTL_CONSTASCII_USTRINGPARAM( "shttp://" ) ), sFILESchema( RTL_CONSTASCII_USTRINGPARAM( "file://" ) ), sFTPSchema( RTL_CONSTASCII_USTRINGPARAM( "ftp://" ) ), sInstPath( RTL_CONSTASCII_USTRINGPARAM( "$(prog)/" ) ) { FreeResource(); try { Reference< XConfigManager > xCfgMgr( rxMSF->createInstance(OUString::createFromAscii("com.sun.star.config.SpecialConfigManager")), UNO_QUERY ); if( xCfgMgr.is() ) sInstPath = xCfgMgr->substituteVariables( sInstPath ); } catch(Exception&) { DBG_ERROR( "XMLFilterTabPageXSLT::XMLFilterTabPageXSLT exception catched!" ); } maPBDTDSchemaBrowse.SetClickHdl( LINK ( this, XMLFilterTabPageXSLT, ClickBrowseHdl_Impl ) ); maPBExprotXSLT.SetClickHdl( LINK ( this, XMLFilterTabPageXSLT, ClickBrowseHdl_Impl ) ); maPBImportXSLT.SetClickHdl( LINK ( this, XMLFilterTabPageXSLT, ClickBrowseHdl_Impl ) ); maPBImportTemplate.SetClickHdl( LINK ( this, XMLFilterTabPageXSLT, ClickBrowseHdl_Impl ) ); maEDDTDSchema.SetHelpId( HID_XML_FILTER_DTD ); maEDExportXSLT.SetHelpId( HID_XML_FILTER_EXPORT_XSLT ); maEDImportXSLT.SetHelpId( HID_XML_FILTER_IMPORT_XSLT ); maEDImportTemplate.SetHelpId( HID_XML_FILTER_IMPORT_TEMPLATE ); } XMLFilterTabPageXSLT::~XMLFilterTabPageXSLT() { } bool XMLFilterTabPageXSLT::FillInfo( filter_info_impl* pInfo ) { if( pInfo ) { pInfo->maDocType = maEDDocType.GetText(); pInfo->maDTD = GetURL( maEDDTDSchema ); pInfo->maExportXSLT = GetURL( maEDExportXSLT ); pInfo->maImportXSLT = GetURL( maEDImportXSLT ); pInfo->maImportTemplate = GetURL( maEDImportTemplate ); } return true; } void XMLFilterTabPageXSLT::SetInfo(const filter_info_impl* pInfo) { if( pInfo ) { maEDDocType.SetText( pInfo->maDocType ); SetURL( maEDDTDSchema, pInfo->maDTD ); SetURL( maEDExportXSLT, pInfo->maExportXSLT ); SetURL( maEDImportXSLT, pInfo->maImportXSLT ); SetURL( maEDImportTemplate, pInfo->maImportTemplate ); } } void XMLFilterTabPageXSLT::SetURL( SvtURLBox& rURLBox, const OUString& rURL ) { OUString aPath; if( rURL.matchIgnoreAsciiCase( OUString( RTL_CONSTASCII_USTRINGPARAM( "file://" ) ) ) ) { osl::FileBase::getSystemPathFromFileURL( rURL, aPath ); rURLBox.SetBaseURL( rURL ); rURLBox.SetText( aPath ); } else if( rURL.matchIgnoreAsciiCase( OUString( RTL_CONSTASCII_USTRINGPARAM( "http://" ) ) ) || rURL.matchIgnoreAsciiCase( OUString( RTL_CONSTASCII_USTRINGPARAM( "shttp://" ) ) ) || rURL.matchIgnoreAsciiCase( OUString( RTL_CONSTASCII_USTRINGPARAM( "ftp://" ) ) ) ) { rURLBox.SetBaseURL( rURL ); rURLBox.SetText( rURL ); } else if( rURL.getLength() ) { rtl::OUString aURL( rURL ); aURL = URIHelper::SmartRel2Abs( sInstPath, aURL, Link(), false ); osl::FileBase::getSystemPathFromFileURL( aURL, aPath ); rURLBox.SetBaseURL( aURL ); rURLBox.SetText( aPath ); } else { rURLBox.SetBaseURL( sInstPath ); String aEmpty; rURLBox.SetText( aEmpty ); } } OUString XMLFilterTabPageXSLT::GetURL( SvtURLBox& rURLBox ) { OUString aURL; OUString aStrPath ( rURLBox.GetText() ); if( aStrPath.matchIgnoreAsciiCase( OUString( RTL_CONSTASCII_USTRINGPARAM( "http://" ) ) ) || aStrPath.matchIgnoreAsciiCase( OUString( RTL_CONSTASCII_USTRINGPARAM( "shttp://" ) ) ) || aStrPath.matchIgnoreAsciiCase( OUString( RTL_CONSTASCII_USTRINGPARAM( "ftp://" ) ) ) ) { return aStrPath; } else { const String aBaseURL ( rURLBox.GetBaseURL() ); osl::FileBase::getFileURLFromSystemPath( aStrPath, aURL ); } return aURL; } IMPL_LINK ( XMLFilterTabPageXSLT, ClickBrowseHdl_Impl, PushButton *, pButton ) { SvtURLBox* pURLBox; if( pButton == &maPBDTDSchemaBrowse ) { pURLBox = &maEDDTDSchema; } else if( pButton == &maPBExprotXSLT ) { pURLBox = &maEDExportXSLT; } else if( pButton == &maPBImportXSLT ) { pURLBox = &maEDImportXSLT; } else { pURLBox = &maEDImportTemplate; } // Open Fileopen-Dialog ::sfx2::FileDialogHelper aDlg( com::sun::star::ui::dialogs::TemplateDescription::FILEOPEN_SIMPLE, 0 ); aDlg.SetDisplayDirectory( GetURL( *pURLBox ) ); if ( aDlg.Execute() == ERRCODE_NONE ) { OUString aURL( aDlg.GetPath() ); SetURL( *pURLBox, aURL ); } return( 0L ); }