2000-09-18 16:15:01 +00:00
|
|
|
/*************************************************************************
|
|
|
|
*
|
2008-04-10 20:28:18 +00:00
|
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
2000-09-18 16:15:01 +00:00
|
|
|
*
|
2010-02-12 15:01:35 +01:00
|
|
|
* Copyright 2000, 2010 Oracle and/or its affiliates.
|
2000-09-18 16:15:01 +00:00
|
|
|
*
|
2008-04-10 20:28:18 +00:00
|
|
|
* OpenOffice.org - a multi-platform office productivity suite
|
2000-09-18 16:15:01 +00:00
|
|
|
*
|
2008-04-10 20:28:18 +00:00
|
|
|
* This file is part of OpenOffice.org.
|
2000-09-18 16:15:01 +00:00
|
|
|
*
|
2008-04-10 20:28:18 +00:00
|
|
|
* 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.
|
2000-09-18 16:15:01 +00:00
|
|
|
*
|
2008-04-10 20:28:18 +00:00
|
|
|
* 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).
|
2000-09-18 16:15:01 +00:00
|
|
|
*
|
2008-04-10 20:28:18 +00:00
|
|
|
* 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.
|
2000-09-18 16:15:01 +00:00
|
|
|
*
|
|
|
|
************************************************************************/
|
|
|
|
|
2006-09-16 22:16:53 +00:00
|
|
|
// MARKER(update_precomp.py): autogen include statement, do not remove
|
|
|
|
#include "precompiled_sw.hxx"
|
|
|
|
|
2000-09-18 16:15:01 +00:00
|
|
|
|
|
|
|
#include <svx/svdview.hxx>
|
|
|
|
#include <tools/urlobj.hxx>
|
|
|
|
#include <svx/fmglob.hxx>
|
|
|
|
#include <svx/svdouno.hxx>
|
|
|
|
#include <com/sun/star/form/FormButtonType.hpp>
|
|
|
|
#include <com/sun/star/beans/XPropertySet.hpp>
|
|
|
|
|
|
|
|
#include <view.hxx>
|
|
|
|
#include <wrtsh.hxx>
|
|
|
|
#include <edtwin.hxx>
|
|
|
|
#include <swundo.hxx>
|
2002-04-29 10:26:26 +00:00
|
|
|
#include <basesh.hxx>
|
2000-09-18 16:15:01 +00:00
|
|
|
|
|
|
|
#ifndef _POOLFMT_HRC
|
|
|
|
#include <poolfmt.hrc>
|
|
|
|
#endif
|
|
|
|
|
2005-01-11 11:43:56 +00:00
|
|
|
#include <docsh.hxx>
|
|
|
|
#include <sfx2/docfile.hxx>
|
2009-10-16 00:05:16 +02:00
|
|
|
#include <svl/urihelper.hxx>
|
2008-03-07 15:31:49 +00:00
|
|
|
#include <avmedia/mediawindow.hxx>
|
2003-03-27 14:45:43 +00:00
|
|
|
|
2007-09-27 11:29:48 +00:00
|
|
|
#include <unomid.h>
|
|
|
|
|
|
|
|
|
2000-09-18 16:15:01 +00:00
|
|
|
using namespace ::com::sun::star;
|
2008-03-12 11:54:45 +00:00
|
|
|
using ::rtl::OUString;
|
2000-09-18 16:15:01 +00:00
|
|
|
/*---------------------------------------------------------------------------
|
|
|
|
Beschreibung:
|
|
|
|
----------------------------------------------------------------------------*/
|
|
|
|
|
2002-04-29 10:26:26 +00:00
|
|
|
void SwBaseShell::InsertURLButton(const String& rURL, const String& rTarget, const String& rTxt)
|
2000-09-18 16:15:01 +00:00
|
|
|
{
|
|
|
|
SwWrtShell& rSh = GetShell();
|
|
|
|
|
|
|
|
if (!rSh.HasDrawView())
|
|
|
|
rSh.MakeDrawView();
|
|
|
|
SdrView *pSdrView = rSh.GetDrawView();
|
|
|
|
|
|
|
|
// OBJ_FM_BUTTON
|
2002-04-29 11:29:06 +00:00
|
|
|
pSdrView->SetDesignMode(TRUE);
|
2000-09-18 16:15:01 +00:00
|
|
|
pSdrView->SetCurrentObj(OBJ_FM_BUTTON);
|
|
|
|
pSdrView->SetEditMode(sal_False);
|
|
|
|
|
|
|
|
Point aStartPos(rSh.GetCharRect().Pos() + Point(0, 1));
|
|
|
|
|
|
|
|
rSh.StartAction();
|
2007-09-27 11:29:48 +00:00
|
|
|
rSh.StartUndo( UNDO_UI_INSERT_URLBTN );
|
2000-09-18 16:15:01 +00:00
|
|
|
if (rSh.BeginCreate(OBJ_FM_BUTTON, FmFormInventor, aStartPos))
|
|
|
|
{
|
|
|
|
pSdrView->SetOrtho(sal_False);
|
|
|
|
Size aSz(GetView().GetEditWin().PixelToLogic(Size(140, 20)));
|
|
|
|
Point aEndPos(aSz.Width(), aSz.Height());
|
|
|
|
|
|
|
|
rSh.MoveCreate(aStartPos + aEndPos);
|
|
|
|
rSh.EndCreate(SDRCREATE_FORCEEND);
|
|
|
|
|
2004-07-12 14:52:22 +00:00
|
|
|
const SdrMarkList& rMarkList = pSdrView->GetMarkedObjectList();
|
2000-09-18 16:15:01 +00:00
|
|
|
if (rMarkList.GetMark(0))
|
|
|
|
{
|
2006-07-25 11:44:30 +00:00
|
|
|
SdrUnoObj* pUnoCtrl = PTR_CAST(SdrUnoObj, rMarkList.GetMark(0)->GetMarkedSdrObj());
|
2000-09-18 16:15:01 +00:00
|
|
|
uno::Reference< awt::XControlModel > xControlModel = pUnoCtrl->GetUnoControlModel();
|
|
|
|
|
|
|
|
ASSERT( xControlModel.is(), "UNO-Control ohne Model" );
|
|
|
|
if( !xControlModel.is() )
|
|
|
|
return;
|
|
|
|
|
|
|
|
uno::Reference< beans::XPropertySet > xPropSet(xControlModel, uno::UNO_QUERY);
|
|
|
|
|
|
|
|
|
|
|
|
uno::Any aTmp;
|
|
|
|
|
|
|
|
aTmp <<= OUString(rTxt);
|
|
|
|
xPropSet->setPropertyValue( C2U("Label"), aTmp );
|
|
|
|
|
2005-01-11 11:43:56 +00:00
|
|
|
SfxMedium* pMedium = rSh.GetView().GetDocShell()->GetMedium();
|
|
|
|
INetURLObject aAbs;
|
|
|
|
if( pMedium )
|
|
|
|
aAbs = pMedium->GetURLObject();
|
|
|
|
|
|
|
|
aTmp <<= OUString(URIHelper::SmartRel2Abs(aAbs, rURL));
|
2000-09-18 16:15:01 +00:00
|
|
|
xPropSet->setPropertyValue( C2U("TargetURL"), aTmp );
|
|
|
|
|
|
|
|
if( rTarget.Len() )
|
|
|
|
{
|
|
|
|
aTmp <<= OUString(rTarget);
|
|
|
|
xPropSet->setPropertyValue( C2U("TargetFrame"), aTmp );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
form::FormButtonType eButtonType = form::FormButtonType_URL;
|
|
|
|
aTmp.setValue( &eButtonType, ::getCppuType((const form::FormButtonType*)0));
|
|
|
|
xPropSet->setPropertyValue( C2U("ButtonType"), aTmp );
|
2002-12-02 13:16:43 +00:00
|
|
|
|
2008-03-07 15:31:49 +00:00
|
|
|
if ( ::avmedia::MediaWindow::isMediaURL( rURL ) )
|
2003-03-27 14:45:43 +00:00
|
|
|
{
|
|
|
|
// #105638# OJ
|
|
|
|
aTmp <<= sal_True;
|
|
|
|
xPropSet->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "DispatchURLInternal" )), aTmp );
|
|
|
|
}
|
2000-09-18 16:15:01 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
if (rSh.IsObjSelected())
|
|
|
|
{
|
|
|
|
rSh.UnSelectFrm();
|
|
|
|
}
|
|
|
|
}
|
2007-09-27 11:29:48 +00:00
|
|
|
rSh.EndUndo( UNDO_UI_INSERT_URLBTN );
|
2000-09-18 16:15:01 +00:00
|
|
|
rSh.EndAction();
|
|
|
|
}
|
|
|
|
|
|
|
|
|