xref: /trunk/main/cui/source/dialogs/hltpbase.cxx (revision cdf0e10c4e3984b49a9502b011690b615761d4a3)
1*cdf0e10cSrcweir /*************************************************************************
2*cdf0e10cSrcweir  *
3*cdf0e10cSrcweir  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4*cdf0e10cSrcweir  *
5*cdf0e10cSrcweir  * Copyright 2000, 2010 Oracle and/or its affiliates.
6*cdf0e10cSrcweir  *
7*cdf0e10cSrcweir  * OpenOffice.org - a multi-platform office productivity suite
8*cdf0e10cSrcweir  *
9*cdf0e10cSrcweir  * This file is part of OpenOffice.org.
10*cdf0e10cSrcweir  *
11*cdf0e10cSrcweir  * OpenOffice.org is free software: you can redistribute it and/or modify
12*cdf0e10cSrcweir  * it under the terms of the GNU Lesser General Public License version 3
13*cdf0e10cSrcweir  * only, as published by the Free Software Foundation.
14*cdf0e10cSrcweir  *
15*cdf0e10cSrcweir  * OpenOffice.org is distributed in the hope that it will be useful,
16*cdf0e10cSrcweir  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17*cdf0e10cSrcweir  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18*cdf0e10cSrcweir  * GNU Lesser General Public License version 3 for more details
19*cdf0e10cSrcweir  * (a copy is included in the LICENSE file that accompanied this code).
20*cdf0e10cSrcweir  *
21*cdf0e10cSrcweir  * You should have received a copy of the GNU Lesser General Public License
22*cdf0e10cSrcweir  * version 3 along with OpenOffice.org.  If not, see
23*cdf0e10cSrcweir  * <http://www.openoffice.org/license.html>
24*cdf0e10cSrcweir  * for a copy of the LGPLv3 License.
25*cdf0e10cSrcweir  *
26*cdf0e10cSrcweir  ************************************************************************/
27*cdf0e10cSrcweir 
28*cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
29*cdf0e10cSrcweir #include "precompiled_cui.hxx"
30*cdf0e10cSrcweir 
31*cdf0e10cSrcweir #include <sfx2/frame.hxx>
32*cdf0e10cSrcweir #include <sfx2/viewfrm.hxx>
33*cdf0e10cSrcweir #include <sot/formats.hxx>
34*cdf0e10cSrcweir #include <sfx2/sfxsids.hrc>
35*cdf0e10cSrcweir #include <svl/macitem.hxx>
36*cdf0e10cSrcweir #include <ucbhelper/content.hxx>
37*cdf0e10cSrcweir #include <unotools/localfilehelper.hxx>
38*cdf0e10cSrcweir #include "hyperdlg.hrc"
39*cdf0e10cSrcweir #include "cuihyperdlg.hxx"  //CHINA001
40*cdf0e10cSrcweir #include "hltpbase.hxx"
41*cdf0e10cSrcweir #include "macroass.hxx"
42*cdf0e10cSrcweir #include <svx/svxdlg.hxx> //CHINA001
43*cdf0e10cSrcweir #include <cuires.hrc> //CHINA001
44*cdf0e10cSrcweir 
45*cdf0e10cSrcweir using namespace ::ucbhelper;
46*cdf0e10cSrcweir 
47*cdf0e10cSrcweir //########################################################################
48*cdf0e10cSrcweir //#                                                                      #
49*cdf0e10cSrcweir //# ComboBox-Control, wich is filled with all current framenames         #
50*cdf0e10cSrcweir //#                                                                      #
51*cdf0e10cSrcweir //########################################################################
52*cdf0e10cSrcweir 
53*cdf0e10cSrcweir /*************************************************************************
54*cdf0e10cSrcweir |*
55*cdf0e10cSrcweir |* Contructor / Destructor
56*cdf0e10cSrcweir |*
57*cdf0e10cSrcweir |************************************************************************/
58*cdf0e10cSrcweir 
59*cdf0e10cSrcweir SvxFramesComboBox::SvxFramesComboBox ( Window* pParent, const ResId& rResId,
60*cdf0e10cSrcweir                                         SfxDispatcher* pDispatch )
61*cdf0e10cSrcweir :   ComboBox (pParent, rResId)
62*cdf0e10cSrcweir {
63*cdf0e10cSrcweir     TargetList* pList = new TargetList;
64*cdf0e10cSrcweir     SfxViewFrame* pViewFrame = pDispatch ? pDispatch->GetFrame() : 0;
65*cdf0e10cSrcweir     SfxFrame* pFrame = pViewFrame ? &pViewFrame->GetTopFrame() : 0;
66*cdf0e10cSrcweir     if ( pFrame )
67*cdf0e10cSrcweir     {
68*cdf0e10cSrcweir         pFrame->GetTargetList(*pList);
69*cdf0e10cSrcweir         sal_uInt16 nCount = (sal_uInt16)pList->Count();
70*cdf0e10cSrcweir         if( nCount )
71*cdf0e10cSrcweir         {
72*cdf0e10cSrcweir             sal_uInt16 i;
73*cdf0e10cSrcweir             for ( i = 0; i < nCount; i++ )
74*cdf0e10cSrcweir             {
75*cdf0e10cSrcweir                 InsertEntry(*pList->GetObject(i));
76*cdf0e10cSrcweir             }
77*cdf0e10cSrcweir             for ( i = nCount; i; i-- )
78*cdf0e10cSrcweir             {
79*cdf0e10cSrcweir                 delete pList->GetObject( i - 1 );
80*cdf0e10cSrcweir             }
81*cdf0e10cSrcweir         }
82*cdf0e10cSrcweir         delete pList;
83*cdf0e10cSrcweir     }
84*cdf0e10cSrcweir }
85*cdf0e10cSrcweir 
86*cdf0e10cSrcweir SvxFramesComboBox::~SvxFramesComboBox ()
87*cdf0e10cSrcweir {
88*cdf0e10cSrcweir }
89*cdf0e10cSrcweir //########################################################################
90*cdf0e10cSrcweir //#                                                                      #
91*cdf0e10cSrcweir //# ComboBox-Control for URL's with History and Autocompletion           #
92*cdf0e10cSrcweir //#                                                                      #
93*cdf0e10cSrcweir //########################################################################
94*cdf0e10cSrcweir 
95*cdf0e10cSrcweir /*************************************************************************
96*cdf0e10cSrcweir |*
97*cdf0e10cSrcweir |* Contructor / Destructor
98*cdf0e10cSrcweir |*
99*cdf0e10cSrcweir |************************************************************************/
100*cdf0e10cSrcweir 
101*cdf0e10cSrcweir SvxHyperURLBox::SvxHyperURLBox( Window* pParent, INetProtocol eSmart, sal_Bool bAddresses )
102*cdf0e10cSrcweir : SvtURLBox         ( pParent, eSmart ),
103*cdf0e10cSrcweir   DropTargetHelper  ( this ),
104*cdf0e10cSrcweir   mbAccessAddress   (bAddresses)
105*cdf0e10cSrcweir {
106*cdf0e10cSrcweir }
107*cdf0e10cSrcweir 
108*cdf0e10cSrcweir sal_Int8 SvxHyperURLBox::AcceptDrop( const AcceptDropEvent& /* rEvt */ )
109*cdf0e10cSrcweir {
110*cdf0e10cSrcweir     return( IsDropFormatSupported( FORMAT_STRING ) ? DND_ACTION_COPY : DND_ACTION_NONE );
111*cdf0e10cSrcweir }
112*cdf0e10cSrcweir 
113*cdf0e10cSrcweir sal_Int8 SvxHyperURLBox::ExecuteDrop( const ExecuteDropEvent& rEvt )
114*cdf0e10cSrcweir {
115*cdf0e10cSrcweir     TransferableDataHelper  aDataHelper( rEvt.maDropEvent.Transferable );
116*cdf0e10cSrcweir     String                  aString;
117*cdf0e10cSrcweir     sal_Int8                nRet = DND_ACTION_NONE;
118*cdf0e10cSrcweir 
119*cdf0e10cSrcweir     if( aDataHelper.GetString( FORMAT_STRING, aString ) )
120*cdf0e10cSrcweir     {
121*cdf0e10cSrcweir         SetText( aString );
122*cdf0e10cSrcweir         nRet = DND_ACTION_COPY;
123*cdf0e10cSrcweir     }
124*cdf0e10cSrcweir 
125*cdf0e10cSrcweir     return nRet;
126*cdf0e10cSrcweir }
127*cdf0e10cSrcweir 
128*cdf0e10cSrcweir /*
129*cdf0e10cSrcweir Diese Methode parsed eine EMailadresse aus einem D&D-DataObjekt aus der Adre�datenbank heraus
130*cdf0e10cSrcweir 
131*cdf0e10cSrcweir #ifndef _OFF_OFADBMGR_HXX
132*cdf0e10cSrcweir #include <offmgr/ofadbmgr.hxx>
133*cdf0e10cSrcweir #endif
134*cdf0e10cSrcweir #ifndef _SFX_APP_HXX
135*cdf0e10cSrcweir #include <offmgr/app.hxx>
136*cdf0e10cSrcweir #endif
137*cdf0e10cSrcweir #ifndef _SDB_SDBCURS_HXX
138*cdf0e10cSrcweir #include <sdb/sdbcurs.hxx>
139*cdf0e10cSrcweir #endif
140*cdf0e10cSrcweir 
141*cdf0e10cSrcweir #define DB_DD_DELIM         ((char)11)
142*cdf0e10cSrcweir 
143*cdf0e10cSrcweir String SvxHyperURLBox::GetAllEmailNamesFromDragItem( sal_uInt16 nItem )
144*cdf0e10cSrcweir {
145*cdf0e10cSrcweir #if !defined( ICC ) && !defined( SOLARIS )
146*cdf0e10cSrcweir     String aAddress;
147*cdf0e10cSrcweir 
148*cdf0e10cSrcweir     if (  DragServer::HasFormat( nItem, SOT_FORMATSTR_ID_SBA_DATAEXCHANGE ) )
149*cdf0e10cSrcweir     {
150*cdf0e10cSrcweir         sal_uLong nLen = DragServer::GetDataLen( nItem, SOT_FORMATSTR_ID_SBA_DATAEXCHANGE ) - 1;
151*cdf0e10cSrcweir         sal_uInt16 i = 0;
152*cdf0e10cSrcweir         String aTxt;
153*cdf0e10cSrcweir         char *pTxt = aTxt.AllocStrBuf( (sal_uInt16)nLen );
154*cdf0e10cSrcweir         DragServer::PasteData( nItem, pTxt, nLen, SOT_FORMATSTR_ID_SBA_DATAEXCHANGE );
155*cdf0e10cSrcweir         String aDBName = aTxt.GetToken( i++, DB_DD_DELIM );
156*cdf0e10cSrcweir         String aTableName = aTxt.GetToken( i++, DB_DD_DELIM );
157*cdf0e10cSrcweir         i++;    // Format"anderung
158*cdf0e10cSrcweir         String aStatement = aTxt.GetToken( i++, DB_DD_DELIM );
159*cdf0e10cSrcweir         if ( !aStatement )
160*cdf0e10cSrcweir         {
161*cdf0e10cSrcweir             aDBName += DB_DELIM;
162*cdf0e10cSrcweir             aDBName += aTableName;
163*cdf0e10cSrcweir         }
164*cdf0e10cSrcweir         else
165*cdf0e10cSrcweir         {
166*cdf0e10cSrcweir             // use here another delimiter, because the OfaDBMgr uses two
167*cdf0e10cSrcweir             // delimiters ( (char)11 and ; )
168*cdf0e10cSrcweir             aDBName += ';';
169*cdf0e10cSrcweir             aDBName += aStatement;
170*cdf0e10cSrcweir         }
171*cdf0e10cSrcweir         SbaSelectionListRef pSelectionList;
172*cdf0e10cSrcweir         pSelectionList.Clear();
173*cdf0e10cSrcweir         pSelectionList = new SbaSelectionList;
174*cdf0e10cSrcweir         sal_uInt16 nTokCnt = aTxt.GetTokenCount( DB_DD_DELIM );
175*cdf0e10cSrcweir 
176*cdf0e10cSrcweir         for ( ; i < nTokCnt; ++i )
177*cdf0e10cSrcweir             pSelectionList->Insert(
178*cdf0e10cSrcweir                 (void*)(sal_uInt16)aTxt.GetToken( i, DB_DD_DELIM ), LIST_APPEND );
179*cdf0e10cSrcweir 
180*cdf0e10cSrcweir         OfaDBMgr* pDBMgr = SFX_APP()->GetOfaDBMgr();
181*cdf0e10cSrcweir         sal_Bool bBasic = DBMGR_STD;
182*cdf0e10cSrcweir 
183*cdf0e10cSrcweir         if ( !pDBMgr->OpenDB( bBasic, aDBName ) )
184*cdf0e10cSrcweir             return aAddress;
185*cdf0e10cSrcweir 
186*cdf0e10cSrcweir         OfaDBParam& rParam = pDBMgr->GetDBData( bBasic );
187*cdf0e10cSrcweir         pDBMgr->ChangeStatement( bBasic, aStatement );
188*cdf0e10cSrcweir         rParam.pSelectionList->Clear();
189*cdf0e10cSrcweir 
190*cdf0e10cSrcweir         if ( pSelectionList.Is() &&
191*cdf0e10cSrcweir                 (long)pSelectionList->GetObject(0) != -1L )
192*cdf0e10cSrcweir             *rParam.pSelectionList = *pSelectionList;
193*cdf0e10cSrcweir 
194*cdf0e10cSrcweir         if ( !pDBMgr->ToFirstSelectedRecord( bBasic ) )
195*cdf0e10cSrcweir         {
196*cdf0e10cSrcweir             pDBMgr->CloseAll();
197*cdf0e10cSrcweir             return aAddress;
198*cdf0e10cSrcweir         }
199*cdf0e10cSrcweir 
200*cdf0e10cSrcweir         if ( pDBMgr->IsSuccessful( bBasic ) )
201*cdf0e10cSrcweir         {
202*cdf0e10cSrcweir             //  Spaltenk"opfe
203*cdf0e10cSrcweir             SbaDBDataDefRef aDBDef = pDBMgr->OpenColumnNames( bBasic );
204*cdf0e10cSrcweir 
205*cdf0e10cSrcweir             if ( aDBDef.Is() )
206*cdf0e10cSrcweir             {
207*cdf0e10cSrcweir                 SbaColumn* pCol = aDBDef->GetColumn("EMAIL");
208*cdf0e10cSrcweir                 sal_uLong nPos = 0;
209*cdf0e10cSrcweir 
210*cdf0e10cSrcweir                 if ( pCol )
211*cdf0e10cSrcweir                     nPos = aDBDef->GetOriginalColumns().GetPos( pCol ) + 1;
212*cdf0e10cSrcweir                 for ( i = 0 ; nPos && i < pSelectionList->Count(); ++i )
213*cdf0e10cSrcweir                 {
214*cdf0e10cSrcweir                     sal_uLong nIndex = (sal_uLong)pSelectionList->GetObject(i);
215*cdf0e10cSrcweir 
216*cdf0e10cSrcweir                     // N"achsten zu lesenden Datensatz ansteuern
217*cdf0e10cSrcweir 
218*cdf0e10cSrcweir                     sal_Bool bEnd = rParam.GetCursor()->IsOffRange();
219*cdf0e10cSrcweir 
220*cdf0e10cSrcweir                     if ( !bEnd )
221*cdf0e10cSrcweir                     {
222*cdf0e10cSrcweir                         const ODbRowRef aRow =
223*cdf0e10cSrcweir                             pDBMgr->GetSelectedRecord( bBasic, i );
224*cdf0e10cSrcweir 
225*cdf0e10cSrcweir                         if ( aRow.Is() )
226*cdf0e10cSrcweir                         {
227*cdf0e10cSrcweir                             aAddress += pDBMgr->
228*cdf0e10cSrcweir                                 ImportDBField( (sal_uInt16)nPos, &aDBDef, aRow.getBodyPtr() );
229*cdf0e10cSrcweir                             aAddress += ',';
230*cdf0e10cSrcweir                         }
231*cdf0e10cSrcweir                         else
232*cdf0e10cSrcweir                         {
233*cdf0e10cSrcweir                             aAddress.Erase();
234*cdf0e10cSrcweir                             break;
235*cdf0e10cSrcweir                         }
236*cdf0e10cSrcweir                     }
237*cdf0e10cSrcweir                     else
238*cdf0e10cSrcweir                         break;
239*cdf0e10cSrcweir                 }
240*cdf0e10cSrcweir             }
241*cdf0e10cSrcweir         }
242*cdf0e10cSrcweir         pDBMgr->CloseAll();
243*cdf0e10cSrcweir     }
244*cdf0e10cSrcweir     aAddress.EraseTrailingChars( ',' );
245*cdf0e10cSrcweir     return aAddress;
246*cdf0e10cSrcweir #else
247*cdf0e10cSrcweir     return String();
248*cdf0e10cSrcweir #endif
249*cdf0e10cSrcweir }
250*cdf0e10cSrcweir */
251*cdf0e10cSrcweir 
252*cdf0e10cSrcweir void SvxHyperURLBox::Select()
253*cdf0e10cSrcweir {
254*cdf0e10cSrcweir     SvtURLBox::Select();
255*cdf0e10cSrcweir }
256*cdf0e10cSrcweir void SvxHyperURLBox::Modify()
257*cdf0e10cSrcweir {
258*cdf0e10cSrcweir     SvtURLBox::Modify();
259*cdf0e10cSrcweir }
260*cdf0e10cSrcweir long SvxHyperURLBox::Notify( NotifyEvent& rNEvt )
261*cdf0e10cSrcweir {
262*cdf0e10cSrcweir     return SvtURLBox::Notify( rNEvt );
263*cdf0e10cSrcweir }
264*cdf0e10cSrcweir long SvxHyperURLBox::PreNotify( NotifyEvent& rNEvt )
265*cdf0e10cSrcweir {
266*cdf0e10cSrcweir     return SvtURLBox::PreNotify( rNEvt );
267*cdf0e10cSrcweir }
268*cdf0e10cSrcweir 
269*cdf0e10cSrcweir //########################################################################
270*cdf0e10cSrcweir //#                                                                      #
271*cdf0e10cSrcweir //# Hyperlink-Dialog: Tabpages-Baseclass                                 #
272*cdf0e10cSrcweir //#                                                                      #
273*cdf0e10cSrcweir //########################################################################
274*cdf0e10cSrcweir 
275*cdf0e10cSrcweir /*************************************************************************
276*cdf0e10cSrcweir |*
277*cdf0e10cSrcweir |* Con/Destructor, Initialize
278*cdf0e10cSrcweir |*
279*cdf0e10cSrcweir \************************************************************************/
280*cdf0e10cSrcweir 
281*cdf0e10cSrcweir SvxHyperlinkTabPageBase::SvxHyperlinkTabPageBase ( Window *pParent,
282*cdf0e10cSrcweir                                                    const ResId &rResId,
283*cdf0e10cSrcweir                                                    const SfxItemSet& rItemSet )
284*cdf0e10cSrcweir :   IconChoicePage          ( pParent, rResId, rItemSet ),
285*cdf0e10cSrcweir     mpGrpMore               ( NULL ),
286*cdf0e10cSrcweir     mpFtFrame               ( NULL ),
287*cdf0e10cSrcweir     mpCbbFrame              ( NULL ),
288*cdf0e10cSrcweir     mpFtForm                ( NULL ),
289*cdf0e10cSrcweir     mpLbForm                ( NULL ),
290*cdf0e10cSrcweir     mpFtIndication          ( NULL ),
291*cdf0e10cSrcweir     mpEdIndication          ( NULL ),
292*cdf0e10cSrcweir     mpFtText                ( NULL ),
293*cdf0e10cSrcweir     mpEdText                ( NULL ),
294*cdf0e10cSrcweir     mpBtScript              ( NULL ),
295*cdf0e10cSrcweir     mbIsCloseDisabled       ( sal_False ),
296*cdf0e10cSrcweir     mpDialog                ( pParent ),
297*cdf0e10cSrcweir     mbStdControlsInit       ( sal_False ),
298*cdf0e10cSrcweir     aEmptyStr()
299*cdf0e10cSrcweir {
300*cdf0e10cSrcweir     // create bookmark-window
301*cdf0e10cSrcweir     mpMarkWnd = new SvxHlinkDlgMarkWnd ( this );
302*cdf0e10cSrcweir }
303*cdf0e10cSrcweir 
304*cdf0e10cSrcweir SvxHyperlinkTabPageBase::~SvxHyperlinkTabPageBase ()
305*cdf0e10cSrcweir {
306*cdf0e10cSrcweir     maTimer.Stop();
307*cdf0e10cSrcweir 
308*cdf0e10cSrcweir     if ( mbStdControlsInit )
309*cdf0e10cSrcweir     {
310*cdf0e10cSrcweir         delete mpGrpMore;
311*cdf0e10cSrcweir         delete mpFtFrame;
312*cdf0e10cSrcweir         delete mpCbbFrame;
313*cdf0e10cSrcweir         delete mpFtForm;
314*cdf0e10cSrcweir         delete mpLbForm;
315*cdf0e10cSrcweir         delete mpFtIndication;
316*cdf0e10cSrcweir         delete mpEdIndication;
317*cdf0e10cSrcweir         delete mpFtText;
318*cdf0e10cSrcweir         delete mpEdText ;
319*cdf0e10cSrcweir         delete mpBtScript;
320*cdf0e10cSrcweir     }
321*cdf0e10cSrcweir 
322*cdf0e10cSrcweir     delete mpMarkWnd;
323*cdf0e10cSrcweir }
324*cdf0e10cSrcweir 
325*cdf0e10cSrcweir void SvxHyperlinkTabPageBase::ActivatePage()
326*cdf0e10cSrcweir {
327*cdf0e10cSrcweir     TabPage::ActivatePage();
328*cdf0e10cSrcweir }
329*cdf0e10cSrcweir 
330*cdf0e10cSrcweir void SvxHyperlinkTabPageBase::DeactivatePage()
331*cdf0e10cSrcweir {
332*cdf0e10cSrcweir     TabPage::DeactivatePage();
333*cdf0e10cSrcweir }
334*cdf0e10cSrcweir 
335*cdf0e10cSrcweir sal_Bool SvxHyperlinkTabPageBase::QueryClose()
336*cdf0e10cSrcweir {
337*cdf0e10cSrcweir     return !mbIsCloseDisabled;
338*cdf0e10cSrcweir }
339*cdf0e10cSrcweir 
340*cdf0e10cSrcweir void SvxHyperlinkTabPageBase::InitStdControls ()
341*cdf0e10cSrcweir {
342*cdf0e10cSrcweir     if ( !mbStdControlsInit )
343*cdf0e10cSrcweir     {
344*cdf0e10cSrcweir         mpGrpMore     = new FixedLine           ( this, ResId (GRP_MORE, *m_pResMgr) );
345*cdf0e10cSrcweir         mpFtFrame     = new FixedText           ( this, ResId (FT_FRAME, *m_pResMgr) );
346*cdf0e10cSrcweir         mpCbbFrame    = new SvxFramesComboBox   ( this, ResId (CB_FRAME, *m_pResMgr), GetDispatcher() );
347*cdf0e10cSrcweir         mpFtForm      = new FixedText           ( this, ResId (FT_FORM, *m_pResMgr) );
348*cdf0e10cSrcweir         mpLbForm      = new ListBox             ( this, ResId (LB_FORM, *m_pResMgr) );
349*cdf0e10cSrcweir         mpFtIndication= new FixedText           ( this, ResId (FT_INDICATION, *m_pResMgr) );
350*cdf0e10cSrcweir         mpEdIndication= new Edit                ( this, ResId (ED_INDICATION, *m_pResMgr) );
351*cdf0e10cSrcweir         mpFtText      = new FixedText           ( this, ResId (FT_TEXT, *m_pResMgr) );
352*cdf0e10cSrcweir         mpEdText      = new Edit                ( this, ResId (ED_TEXT, *m_pResMgr) );
353*cdf0e10cSrcweir         mpBtScript    = new ImageButton         ( this, ResId (BTN_SCRIPT, *m_pResMgr) );
354*cdf0e10cSrcweir 
355*cdf0e10cSrcweir         mpBtScript->SetClickHdl ( LINK ( this, SvxHyperlinkTabPageBase, ClickScriptHdl_Impl ) );
356*cdf0e10cSrcweir 
357*cdf0e10cSrcweir         mpBtScript->SetModeImage( Image( ResId( IMG_SCRIPT_HC, *m_pResMgr ) ), BMP_COLOR_HIGHCONTRAST );
358*cdf0e10cSrcweir         mpBtScript->EnableTextDisplay (sal_False);
359*cdf0e10cSrcweir 
360*cdf0e10cSrcweir         mpBtScript->SetAccessibleRelationMemberOf( mpGrpMore );
361*cdf0e10cSrcweir         mpBtScript->SetAccessibleRelationLabeledBy( mpFtForm );
362*cdf0e10cSrcweir     }
363*cdf0e10cSrcweir 
364*cdf0e10cSrcweir     mbStdControlsInit = sal_True;
365*cdf0e10cSrcweir }
366*cdf0e10cSrcweir 
367*cdf0e10cSrcweir /*************************************************************************
368*cdf0e10cSrcweir |*
369*cdf0e10cSrcweir |* Move Extra-Window
370*cdf0e10cSrcweir |*
371*cdf0e10cSrcweir \************************************************************************/
372*cdf0e10cSrcweir 
373*cdf0e10cSrcweir sal_Bool SvxHyperlinkTabPageBase::MoveToExtraWnd( Point aNewPos, sal_Bool bDisConnectDlg )
374*cdf0e10cSrcweir {
375*cdf0e10cSrcweir     sal_Bool bReturn =  mpMarkWnd->MoveTo ( aNewPos );
376*cdf0e10cSrcweir 
377*cdf0e10cSrcweir     if( bDisConnectDlg )
378*cdf0e10cSrcweir         mpMarkWnd->ConnectToDialog( sal_False );
379*cdf0e10cSrcweir 
380*cdf0e10cSrcweir     return ( !bReturn && IsMarkWndVisible() );
381*cdf0e10cSrcweir }
382*cdf0e10cSrcweir 
383*cdf0e10cSrcweir /*************************************************************************
384*cdf0e10cSrcweir |*
385*cdf0e10cSrcweir |* Show Extra-Window
386*cdf0e10cSrcweir |*
387*cdf0e10cSrcweir \************************************************************************/
388*cdf0e10cSrcweir 
389*cdf0e10cSrcweir void SvxHyperlinkTabPageBase::ShowMarkWnd ()
390*cdf0e10cSrcweir {
391*cdf0e10cSrcweir     ( ( Window* ) mpMarkWnd )->Show();
392*cdf0e10cSrcweir 
393*cdf0e10cSrcweir     // Size of dialog-window in screen pixels
394*cdf0e10cSrcweir     Rectangle aDlgRect( mpDialog->GetWindowExtentsRelative( NULL ) );
395*cdf0e10cSrcweir     Point aDlgPos ( aDlgRect.TopLeft() );
396*cdf0e10cSrcweir     Size aDlgSize ( mpDialog->GetSizePixel () );
397*cdf0e10cSrcweir 
398*cdf0e10cSrcweir     // Absolute size of the screen
399*cdf0e10cSrcweir     Rectangle aScreen( mpDialog->GetDesktopRectPixel() );
400*cdf0e10cSrcweir 
401*cdf0e10cSrcweir     // Size of Extrawindow
402*cdf0e10cSrcweir     Size aExtraWndSize( mpMarkWnd->GetSizePixel () );
403*cdf0e10cSrcweir 
404*cdf0e10cSrcweir     // mpMarkWnd is a child of mpDialog, so coordinates for positioning must be relative to mpDialog
405*cdf0e10cSrcweir     if( aDlgPos.X()+(1.05*aDlgSize.Width())+aExtraWndSize.Width() > aScreen.Right() )
406*cdf0e10cSrcweir     {
407*cdf0e10cSrcweir         if( aDlgPos.X() - ( 0.05*aDlgSize.Width() ) - aExtraWndSize.Width() < 0 )
408*cdf0e10cSrcweir         {
409*cdf0e10cSrcweir             // Pos Extrawindow anywhere
410*cdf0e10cSrcweir             MoveToExtraWnd( Point(10,10) );  // very unlikely
411*cdf0e10cSrcweir             mpMarkWnd->ConnectToDialog( sal_False );
412*cdf0e10cSrcweir         }
413*cdf0e10cSrcweir         else
414*cdf0e10cSrcweir         {
415*cdf0e10cSrcweir             // Pos Extrawindow on the left side of Dialog
416*cdf0e10cSrcweir             MoveToExtraWnd( Point(0,0) - Point( long(0.05*aDlgSize.Width()), 0 ) - Point( aExtraWndSize.Width(), 0 ) );
417*cdf0e10cSrcweir         }
418*cdf0e10cSrcweir     }
419*cdf0e10cSrcweir     else
420*cdf0e10cSrcweir     {
421*cdf0e10cSrcweir         // Pos Extrawindow on the right side of Dialog
422*cdf0e10cSrcweir         MoveToExtraWnd ( Point( long(1.05*aDlgSize.getWidth()), 0 ) );
423*cdf0e10cSrcweir     }
424*cdf0e10cSrcweir 
425*cdf0e10cSrcweir     // Set size of Extra-Window
426*cdf0e10cSrcweir     mpMarkWnd->SetSizePixel( Size( aExtraWndSize.Width(), aDlgSize.Height() ) );
427*cdf0e10cSrcweir }
428*cdf0e10cSrcweir 
429*cdf0e10cSrcweir /*************************************************************************
430*cdf0e10cSrcweir |*
431*cdf0e10cSrcweir |* Fill Dialogfields
432*cdf0e10cSrcweir |*
433*cdf0e10cSrcweir \************************************************************************/
434*cdf0e10cSrcweir 
435*cdf0e10cSrcweir void SvxHyperlinkTabPageBase::FillStandardDlgFields ( SvxHyperlinkItem* pHyperlinkItem )
436*cdf0e10cSrcweir {
437*cdf0e10cSrcweir     // Frame
438*cdf0e10cSrcweir     sal_uInt16 nPos = mpCbbFrame->GetEntryPos ( pHyperlinkItem->GetTargetFrame() );
439*cdf0e10cSrcweir     if ( nPos != LISTBOX_ENTRY_NOTFOUND)
440*cdf0e10cSrcweir         mpCbbFrame->SetText ( pHyperlinkItem->GetTargetFrame() );
441*cdf0e10cSrcweir 
442*cdf0e10cSrcweir     // Form
443*cdf0e10cSrcweir     String aStrFormText = CUI_RESSTR( RID_SVXSTR_HYPERDLG_FROM_TEXT );
444*cdf0e10cSrcweir     String aStrFormButton = CUI_RESSTR( RID_SVXSTR_HYPERDLG_FORM_BUTTON );
445*cdf0e10cSrcweir 
446*cdf0e10cSrcweir     if( pHyperlinkItem->GetInsertMode() & HLINK_HTMLMODE )
447*cdf0e10cSrcweir     {
448*cdf0e10cSrcweir         mpLbForm->Clear();
449*cdf0e10cSrcweir         mpLbForm->InsertEntry( aStrFormText );
450*cdf0e10cSrcweir         mpLbForm->SelectEntryPos ( 0 );
451*cdf0e10cSrcweir     }
452*cdf0e10cSrcweir     else
453*cdf0e10cSrcweir     {
454*cdf0e10cSrcweir         mpLbForm->Clear();
455*cdf0e10cSrcweir         mpLbForm->InsertEntry( aStrFormText );
456*cdf0e10cSrcweir         mpLbForm->InsertEntry( aStrFormButton );
457*cdf0e10cSrcweir         mpLbForm->SelectEntryPos ( pHyperlinkItem->GetInsertMode() == HLINK_BUTTON ? 1 : 0 );
458*cdf0e10cSrcweir     }
459*cdf0e10cSrcweir 
460*cdf0e10cSrcweir     // URL
461*cdf0e10cSrcweir     mpEdIndication->SetText ( pHyperlinkItem->GetName() );
462*cdf0e10cSrcweir 
463*cdf0e10cSrcweir     // Name
464*cdf0e10cSrcweir     mpEdText->SetText ( pHyperlinkItem->GetIntName() );
465*cdf0e10cSrcweir 
466*cdf0e10cSrcweir     // Script-button
467*cdf0e10cSrcweir     if ( !pHyperlinkItem->GetMacroEvents() )
468*cdf0e10cSrcweir         mpBtScript->Disable();
469*cdf0e10cSrcweir     else
470*cdf0e10cSrcweir         mpBtScript->Enable();
471*cdf0e10cSrcweir }
472*cdf0e10cSrcweir 
473*cdf0e10cSrcweir /*************************************************************************
474*cdf0e10cSrcweir |*
475*cdf0e10cSrcweir |* Any action to do after apply-button is pressed
476*cdf0e10cSrcweir |*
477*cdf0e10cSrcweir \************************************************************************/
478*cdf0e10cSrcweir 
479*cdf0e10cSrcweir void SvxHyperlinkTabPageBase::DoApply ()
480*cdf0e10cSrcweir {
481*cdf0e10cSrcweir     // default-implemtation : do nothing
482*cdf0e10cSrcweir }
483*cdf0e10cSrcweir 
484*cdf0e10cSrcweir /*************************************************************************
485*cdf0e10cSrcweir |*
486*cdf0e10cSrcweir |* Ask page whether an insert is possible
487*cdf0e10cSrcweir |*
488*cdf0e10cSrcweir \************************************************************************/
489*cdf0e10cSrcweir 
490*cdf0e10cSrcweir sal_Bool SvxHyperlinkTabPageBase::AskApply ()
491*cdf0e10cSrcweir {
492*cdf0e10cSrcweir     // default-implementation
493*cdf0e10cSrcweir     return sal_True;
494*cdf0e10cSrcweir }
495*cdf0e10cSrcweir 
496*cdf0e10cSrcweir /*************************************************************************
497*cdf0e10cSrcweir |*
498*cdf0e10cSrcweir |* This method would be called from bookmark-window to set new mark-string
499*cdf0e10cSrcweir |*
500*cdf0e10cSrcweir \************************************************************************/
501*cdf0e10cSrcweir 
502*cdf0e10cSrcweir void SvxHyperlinkTabPageBase::SetMarkStr ( String& /*aStrMark*/ )
503*cdf0e10cSrcweir {
504*cdf0e10cSrcweir     // default-implemtation : do nothing
505*cdf0e10cSrcweir }
506*cdf0e10cSrcweir 
507*cdf0e10cSrcweir /*************************************************************************
508*cdf0e10cSrcweir |*
509*cdf0e10cSrcweir |* This method will be called from the dialog-class if the state off
510*cdf0e10cSrcweir |* the online-mode has changed.
511*cdf0e10cSrcweir |*
512*cdf0e10cSrcweir \************************************************************************/
513*cdf0e10cSrcweir 
514*cdf0e10cSrcweir void SvxHyperlinkTabPageBase::SetOnlineMode( sal_Bool /*bEnable*/ )
515*cdf0e10cSrcweir {
516*cdf0e10cSrcweir     // default-implemtation : do nothing
517*cdf0e10cSrcweir }
518*cdf0e10cSrcweir 
519*cdf0e10cSrcweir /*************************************************************************
520*cdf0e10cSrcweir |*
521*cdf0e10cSrcweir |* Set initial focus
522*cdf0e10cSrcweir |*
523*cdf0e10cSrcweir |************************************************************************/
524*cdf0e10cSrcweir 
525*cdf0e10cSrcweir void SvxHyperlinkTabPageBase::SetInitFocus()
526*cdf0e10cSrcweir {
527*cdf0e10cSrcweir     GrabFocus();
528*cdf0e10cSrcweir }
529*cdf0e10cSrcweir 
530*cdf0e10cSrcweir /*************************************************************************
531*cdf0e10cSrcweir |*
532*cdf0e10cSrcweir |* Ask dialog whether the curretn doc is a HTML-doc
533*cdf0e10cSrcweir |*
534*cdf0e10cSrcweir |************************************************************************/
535*cdf0e10cSrcweir 
536*cdf0e10cSrcweir sal_Bool SvxHyperlinkTabPageBase::IsHTMLDoc() const
537*cdf0e10cSrcweir {
538*cdf0e10cSrcweir     return ((SvxHpLinkDlg*)mpDialog)->IsHTMLDoc();
539*cdf0e10cSrcweir }
540*cdf0e10cSrcweir 
541*cdf0e10cSrcweir /*************************************************************************
542*cdf0e10cSrcweir |*
543*cdf0e10cSrcweir |* retrieve dispatcher
544*cdf0e10cSrcweir |*
545*cdf0e10cSrcweir |************************************************************************/
546*cdf0e10cSrcweir 
547*cdf0e10cSrcweir SfxDispatcher* SvxHyperlinkTabPageBase::GetDispatcher() const
548*cdf0e10cSrcweir {
549*cdf0e10cSrcweir     return ((SvxHpLinkDlg*)mpDialog)->GetDispatcher();
550*cdf0e10cSrcweir }
551*cdf0e10cSrcweir 
552*cdf0e10cSrcweir /*************************************************************************
553*cdf0e10cSrcweir |*
554*cdf0e10cSrcweir |* Click on imagebutton : Script
555*cdf0e10cSrcweir |*
556*cdf0e10cSrcweir |************************************************************************/
557*cdf0e10cSrcweir 
558*cdf0e10cSrcweir IMPL_LINK ( SvxHyperlinkTabPageBase, ClickScriptHdl_Impl, void *, EMPTYARG )
559*cdf0e10cSrcweir {
560*cdf0e10cSrcweir     SvxHyperlinkItem *pHyperlinkItem = (SvxHyperlinkItem *)
561*cdf0e10cSrcweir                                        GetItemSet().GetItem (SID_HYPERLINK_GETLINK);
562*cdf0e10cSrcweir 
563*cdf0e10cSrcweir     if ( pHyperlinkItem->GetMacroEvents() )
564*cdf0e10cSrcweir     {
565*cdf0e10cSrcweir         // get macros from itemset
566*cdf0e10cSrcweir         const SvxMacroTableDtor* pMacroTbl = pHyperlinkItem->GetMacroTbl();
567*cdf0e10cSrcweir         SvxMacroItem aItem ( GetWhich(SID_ATTR_MACROITEM) );
568*cdf0e10cSrcweir         if( pMacroTbl )
569*cdf0e10cSrcweir             aItem.SetMacroTable( *pMacroTbl );
570*cdf0e10cSrcweir 
571*cdf0e10cSrcweir         // create empty itemset for macro-dlg
572*cdf0e10cSrcweir         SfxItemSet* pItemSet = new SfxItemSet(SFX_APP()->GetPool(),
573*cdf0e10cSrcweir                                               SID_ATTR_MACROITEM,
574*cdf0e10cSrcweir                                               SID_ATTR_MACROITEM );
575*cdf0e10cSrcweir         pItemSet->Put ( aItem, SID_ATTR_MACROITEM );
576*cdf0e10cSrcweir 
577*cdf0e10cSrcweir         // --> PB 2006-01-13 #123474#
578*cdf0e10cSrcweir         /*  disable HyperLinkDlg for input while the MacroAssignDlg is working
579*cdf0e10cSrcweir             because if no JAVA is installed an error box occurs and then it is possible
580*cdf0e10cSrcweir             to close the HyperLinkDlg before its child (MacroAssignDlg) -> GPF
581*cdf0e10cSrcweir          */
582*cdf0e10cSrcweir         sal_Bool bIsInputEnabled = GetParent()->IsInputEnabled();
583*cdf0e10cSrcweir         if ( bIsInputEnabled )
584*cdf0e10cSrcweir             GetParent()->EnableInput( sal_False );
585*cdf0e10cSrcweir         // <--
586*cdf0e10cSrcweir         SfxMacroAssignDlg aDlg( this, mxDocumentFrame, *pItemSet );
587*cdf0e10cSrcweir 
588*cdf0e10cSrcweir         // add events
589*cdf0e10cSrcweir         SfxMacroTabPage *pMacroPage = (SfxMacroTabPage*) aDlg.GetTabPage();
590*cdf0e10cSrcweir 
591*cdf0e10cSrcweir         if ( pHyperlinkItem->GetMacroEvents() & HYPERDLG_EVENT_MOUSEOVER_OBJECT )
592*cdf0e10cSrcweir             pMacroPage->AddEvent( String( CUI_RESSTR(RID_SVXSTR_HYPDLG_MACROACT1) ),
593*cdf0e10cSrcweir                                   SFX_EVENT_MOUSEOVER_OBJECT );
594*cdf0e10cSrcweir         if ( pHyperlinkItem->GetMacroEvents() & HYPERDLG_EVENT_MOUSECLICK_OBJECT )
595*cdf0e10cSrcweir             pMacroPage->AddEvent( String( CUI_RESSTR(RID_SVXSTR_HYPDLG_MACROACT2) ),
596*cdf0e10cSrcweir                                   SFX_EVENT_MOUSECLICK_OBJECT);
597*cdf0e10cSrcweir         if ( pHyperlinkItem->GetMacroEvents() & HYPERDLG_EVENT_MOUSEOUT_OBJECT )
598*cdf0e10cSrcweir             pMacroPage->AddEvent( String( CUI_RESSTR(RID_SVXSTR_HYPDLG_MACROACT3) ),
599*cdf0e10cSrcweir                                   SFX_EVENT_MOUSEOUT_OBJECT);
600*cdf0e10cSrcweir 
601*cdf0e10cSrcweir         // --> PB 2006-01-13 #123474#
602*cdf0e10cSrcweir         if ( bIsInputEnabled )
603*cdf0e10cSrcweir             GetParent()->EnableInput( sal_True );
604*cdf0e10cSrcweir         // <--
605*cdf0e10cSrcweir         // execute dlg
606*cdf0e10cSrcweir         DisableClose( sal_True );
607*cdf0e10cSrcweir         short nRet = aDlg.Execute();
608*cdf0e10cSrcweir         DisableClose( sal_False );
609*cdf0e10cSrcweir         if ( RET_OK == nRet )
610*cdf0e10cSrcweir         {
611*cdf0e10cSrcweir             const SfxItemSet* pOutSet = aDlg.GetOutputItemSet();
612*cdf0e10cSrcweir             const SfxPoolItem* pItem;
613*cdf0e10cSrcweir             if( SFX_ITEM_SET == pOutSet->GetItemState( SID_ATTR_MACROITEM, sal_False, &pItem ))
614*cdf0e10cSrcweir             {
615*cdf0e10cSrcweir                 pHyperlinkItem->SetMacroTable( ((SvxMacroItem*)pItem)->GetMacroTable() );
616*cdf0e10cSrcweir             }
617*cdf0e10cSrcweir         }
618*cdf0e10cSrcweir         delete pItemSet;
619*cdf0e10cSrcweir     }
620*cdf0e10cSrcweir 
621*cdf0e10cSrcweir     return( 0L );
622*cdf0e10cSrcweir }
623*cdf0e10cSrcweir 
624*cdf0e10cSrcweir /*************************************************************************
625*cdf0e10cSrcweir |*
626*cdf0e10cSrcweir |* Get Macro-Infos
627*cdf0e10cSrcweir |*
628*cdf0e10cSrcweir |************************************************************************/
629*cdf0e10cSrcweir 
630*cdf0e10cSrcweir sal_uInt16 SvxHyperlinkTabPageBase::GetMacroEvents()
631*cdf0e10cSrcweir {
632*cdf0e10cSrcweir     SvxHyperlinkItem *pHyperlinkItem = (SvxHyperlinkItem *)
633*cdf0e10cSrcweir                                        GetItemSet().GetItem (SID_HYPERLINK_GETLINK);
634*cdf0e10cSrcweir 
635*cdf0e10cSrcweir     return pHyperlinkItem->GetMacroEvents();
636*cdf0e10cSrcweir }
637*cdf0e10cSrcweir 
638*cdf0e10cSrcweir SvxMacroTableDtor* SvxHyperlinkTabPageBase::GetMacroTable()
639*cdf0e10cSrcweir {
640*cdf0e10cSrcweir     SvxHyperlinkItem *pHyperlinkItem = (SvxHyperlinkItem *)
641*cdf0e10cSrcweir                                        GetItemSet().GetItem (SID_HYPERLINK_GETLINK);
642*cdf0e10cSrcweir 
643*cdf0e10cSrcweir     return ( (SvxMacroTableDtor*)pHyperlinkItem->GetMacroTbl() );
644*cdf0e10cSrcweir }
645*cdf0e10cSrcweir 
646*cdf0e10cSrcweir /*************************************************************************
647*cdf0e10cSrcweir |*
648*cdf0e10cSrcweir |* Does the given file exists ?
649*cdf0e10cSrcweir |*
650*cdf0e10cSrcweir |************************************************************************/
651*cdf0e10cSrcweir 
652*cdf0e10cSrcweir sal_Bool SvxHyperlinkTabPageBase::FileExists( const INetURLObject& rURL )
653*cdf0e10cSrcweir {
654*cdf0e10cSrcweir     sal_Bool bRet = sal_False;
655*cdf0e10cSrcweir 
656*cdf0e10cSrcweir     if( rURL.GetFull().getLength() > 0 )
657*cdf0e10cSrcweir     {
658*cdf0e10cSrcweir         try
659*cdf0e10cSrcweir         {
660*cdf0e10cSrcweir             Content     aCnt( rURL.GetMainURL( INetURLObject::NO_DECODE ), ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XCommandEnvironment >() );
661*cdf0e10cSrcweir             ::rtl::OUString aTitle;
662*cdf0e10cSrcweir 
663*cdf0e10cSrcweir             aCnt.getPropertyValue( ::rtl::OUString::createFromAscii( "Title" ) ) >>= aTitle;
664*cdf0e10cSrcweir             bRet = ( aTitle.getLength() > 0 );
665*cdf0e10cSrcweir         }
666*cdf0e10cSrcweir         catch( ... )
667*cdf0e10cSrcweir         {
668*cdf0e10cSrcweir             DBG_ERROR( "FileExists: ucb error" );
669*cdf0e10cSrcweir         }
670*cdf0e10cSrcweir     }
671*cdf0e10cSrcweir 
672*cdf0e10cSrcweir     return bRet;
673*cdf0e10cSrcweir }
674*cdf0e10cSrcweir 
675*cdf0e10cSrcweir /*************************************************************************
676*cdf0e10cSrcweir |*
677*cdf0e10cSrcweir |* try to detect the current protocol that is used in aStrURL
678*cdf0e10cSrcweir |*
679*cdf0e10cSrcweir |************************************************************************/
680*cdf0e10cSrcweir 
681*cdf0e10cSrcweir String SvxHyperlinkTabPageBase::GetSchemeFromURL( String aStrURL )
682*cdf0e10cSrcweir {
683*cdf0e10cSrcweir     String aStrScheme;
684*cdf0e10cSrcweir 
685*cdf0e10cSrcweir     INetURLObject aURL( aStrURL );
686*cdf0e10cSrcweir     INetProtocol aProtocol = aURL.GetProtocol();
687*cdf0e10cSrcweir 
688*cdf0e10cSrcweir     // #77696#
689*cdf0e10cSrcweir     // our new INetUrlObject now has the ability
690*cdf0e10cSrcweir     // to detect if an Url is valid or not :-(
691*cdf0e10cSrcweir     if ( aProtocol == INET_PROT_NOT_VALID )
692*cdf0e10cSrcweir     {
693*cdf0e10cSrcweir         if ( aStrURL.EqualsIgnoreCaseAscii( INET_HTTP_SCHEME, 0, 7 ) )
694*cdf0e10cSrcweir         {
695*cdf0e10cSrcweir             aStrScheme = String::CreateFromAscii( INET_HTTP_SCHEME );
696*cdf0e10cSrcweir         }
697*cdf0e10cSrcweir         else if ( aStrURL.EqualsIgnoreCaseAscii( INET_HTTPS_SCHEME, 0, 8 ) )
698*cdf0e10cSrcweir         {
699*cdf0e10cSrcweir             aStrScheme = String::CreateFromAscii( INET_HTTPS_SCHEME );
700*cdf0e10cSrcweir         }
701*cdf0e10cSrcweir         else if ( aStrURL.EqualsIgnoreCaseAscii( INET_FTP_SCHEME, 0, 6 ) )
702*cdf0e10cSrcweir         {
703*cdf0e10cSrcweir             aStrScheme = String::CreateFromAscii( INET_FTP_SCHEME );
704*cdf0e10cSrcweir         }
705*cdf0e10cSrcweir         else if ( aStrURL.EqualsIgnoreCaseAscii( INET_MAILTO_SCHEME, 0, 7 ) )
706*cdf0e10cSrcweir         {
707*cdf0e10cSrcweir             aStrScheme = String::CreateFromAscii( INET_MAILTO_SCHEME );
708*cdf0e10cSrcweir         }
709*cdf0e10cSrcweir         else if ( aStrURL.EqualsIgnoreCaseAscii( INET_NEWS_SCHEME, 0, 5 ) )
710*cdf0e10cSrcweir         {
711*cdf0e10cSrcweir             aStrScheme = String::CreateFromAscii( INET_NEWS_SCHEME );
712*cdf0e10cSrcweir         }
713*cdf0e10cSrcweir         else if ( aStrURL.EqualsIgnoreCaseAscii( INET_TELNET_SCHEME, 0, 9 ) )
714*cdf0e10cSrcweir         {
715*cdf0e10cSrcweir             aStrScheme = String::CreateFromAscii( INET_TELNET_SCHEME );
716*cdf0e10cSrcweir         }
717*cdf0e10cSrcweir     }
718*cdf0e10cSrcweir     else
719*cdf0e10cSrcweir         aStrScheme = INetURLObject::GetScheme( aProtocol );
720*cdf0e10cSrcweir     return aStrScheme;
721*cdf0e10cSrcweir }
722*cdf0e10cSrcweir 
723*cdf0e10cSrcweir 
724*cdf0e10cSrcweir void SvxHyperlinkTabPageBase::GetDataFromCommonFields( String& aStrName,
725*cdf0e10cSrcweir                                              String& aStrIntName, String& aStrFrame,
726*cdf0e10cSrcweir                                              SvxLinkInsertMode& eMode )
727*cdf0e10cSrcweir {
728*cdf0e10cSrcweir     aStrIntName = mpEdText->GetText();
729*cdf0e10cSrcweir     aStrName    = mpEdIndication->GetText();
730*cdf0e10cSrcweir     aStrFrame   = mpCbbFrame->GetText();
731*cdf0e10cSrcweir     eMode       = (SvxLinkInsertMode) (mpLbForm->GetSelectEntryPos()+1);
732*cdf0e10cSrcweir     if( IsHTMLDoc() )
733*cdf0e10cSrcweir         eMode = (SvxLinkInsertMode) ( sal_uInt16(eMode) | HLINK_HTMLMODE );
734*cdf0e10cSrcweir }
735*cdf0e10cSrcweir 
736*cdf0e10cSrcweir /*************************************************************************
737*cdf0e10cSrcweir |*
738*cdf0e10cSrcweir |* reset dialog-fields
739*cdf0e10cSrcweir |*
740*cdf0e10cSrcweir |************************************************************************/
741*cdf0e10cSrcweir 
742*cdf0e10cSrcweir void SvxHyperlinkTabPageBase::Reset( const SfxItemSet& rItemSet)
743*cdf0e10cSrcweir {
744*cdf0e10cSrcweir     ///////////////////////////////////////
745*cdf0e10cSrcweir     // Set dialog-fields from create-itemset
746*cdf0e10cSrcweir     maStrInitURL = aEmptyStr;
747*cdf0e10cSrcweir 
748*cdf0e10cSrcweir     SvxHyperlinkItem *pHyperlinkItem = (SvxHyperlinkItem *)
749*cdf0e10cSrcweir                                        rItemSet.GetItem (SID_HYPERLINK_GETLINK);
750*cdf0e10cSrcweir 
751*cdf0e10cSrcweir     if ( pHyperlinkItem )
752*cdf0e10cSrcweir     {
753*cdf0e10cSrcweir         // set dialog-fields
754*cdf0e10cSrcweir         FillStandardDlgFields (pHyperlinkItem);
755*cdf0e10cSrcweir 
756*cdf0e10cSrcweir         // set all other fields
757*cdf0e10cSrcweir         FillDlgFields ( (String&)pHyperlinkItem->GetURL() );
758*cdf0e10cSrcweir 
759*cdf0e10cSrcweir         // Store initial URL
760*cdf0e10cSrcweir         maStrInitURL = pHyperlinkItem->GetURL();
761*cdf0e10cSrcweir     }
762*cdf0e10cSrcweir }
763*cdf0e10cSrcweir 
764*cdf0e10cSrcweir /*************************************************************************
765*cdf0e10cSrcweir |*
766*cdf0e10cSrcweir |* Fill output-ItemSet
767*cdf0e10cSrcweir |*
768*cdf0e10cSrcweir |************************************************************************/
769*cdf0e10cSrcweir 
770*cdf0e10cSrcweir sal_Bool SvxHyperlinkTabPageBase::FillItemSet( SfxItemSet& rOut)
771*cdf0e10cSrcweir {
772*cdf0e10cSrcweir     String aStrURL, aStrName, aStrIntName, aStrFrame;
773*cdf0e10cSrcweir     SvxLinkInsertMode eMode;
774*cdf0e10cSrcweir 
775*cdf0e10cSrcweir     GetCurentItemData ( aStrURL, aStrName, aStrIntName, aStrFrame, eMode);
776*cdf0e10cSrcweir     if ( !aStrName.Len() ) //automatically create a visible name if the link is created without name
777*cdf0e10cSrcweir         aStrName = CreateUiNameFromURL(aStrURL);
778*cdf0e10cSrcweir 
779*cdf0e10cSrcweir     sal_uInt16 nEvents = GetMacroEvents();
780*cdf0e10cSrcweir     SvxMacroTableDtor* pTable = GetMacroTable();
781*cdf0e10cSrcweir 
782*cdf0e10cSrcweir     SvxHyperlinkItem aItem( SID_HYPERLINK_SETLINK, aStrName, aStrURL, aStrFrame,
783*cdf0e10cSrcweir                             aStrIntName, eMode, nEvents, pTable );
784*cdf0e10cSrcweir     rOut.Put (aItem);
785*cdf0e10cSrcweir 
786*cdf0e10cSrcweir     return sal_True;
787*cdf0e10cSrcweir }
788*cdf0e10cSrcweir 
789*cdf0e10cSrcweir String SvxHyperlinkTabPageBase::CreateUiNameFromURL( const String& aStrURL )
790*cdf0e10cSrcweir {
791*cdf0e10cSrcweir     String          aStrUiURL;
792*cdf0e10cSrcweir     INetURLObject   aURLObj( aStrURL );
793*cdf0e10cSrcweir 
794*cdf0e10cSrcweir     switch(aURLObj.GetProtocol())
795*cdf0e10cSrcweir     {
796*cdf0e10cSrcweir         case INET_PROT_FILE:
797*cdf0e10cSrcweir             utl::LocalFileHelper::ConvertURLToSystemPath( aURLObj.GetMainURL(INetURLObject::NO_DECODE), aStrUiURL );
798*cdf0e10cSrcweir             break;
799*cdf0e10cSrcweir         case INET_PROT_FTP :
800*cdf0e10cSrcweir             {
801*cdf0e10cSrcweir                 //remove password from name
802*cdf0e10cSrcweir                 INetURLObject   aTmpURL(aURLObj);
803*cdf0e10cSrcweir                 aTmpURL.SetPass(aEmptyStr);
804*cdf0e10cSrcweir                 aStrUiURL = aTmpURL.GetMainURL( INetURLObject::DECODE_UNAMBIGUOUS );
805*cdf0e10cSrcweir             }
806*cdf0e10cSrcweir             break;
807*cdf0e10cSrcweir         default :
808*cdf0e10cSrcweir             {
809*cdf0e10cSrcweir                 aStrUiURL = aURLObj.GetMainURL(INetURLObject::DECODE_UNAMBIGUOUS);
810*cdf0e10cSrcweir             }
811*cdf0e10cSrcweir     }
812*cdf0e10cSrcweir     if(!aStrUiURL.Len())
813*cdf0e10cSrcweir         return aStrURL;
814*cdf0e10cSrcweir     return aStrUiURL;
815*cdf0e10cSrcweir }
816*cdf0e10cSrcweir 
817*cdf0e10cSrcweir /*************************************************************************
818*cdf0e10cSrcweir |*
819*cdf0e10cSrcweir |* Activate / Deactivate Tabpage
820*cdf0e10cSrcweir |*
821*cdf0e10cSrcweir |************************************************************************/
822*cdf0e10cSrcweir 
823*cdf0e10cSrcweir void SvxHyperlinkTabPageBase::ActivatePage( const SfxItemSet& rItemSet )
824*cdf0e10cSrcweir {
825*cdf0e10cSrcweir     ///////////////////////////////////////
826*cdf0e10cSrcweir     // Set dialog-fields from input-itemset
827*cdf0e10cSrcweir     SvxHyperlinkItem *pHyperlinkItem = (SvxHyperlinkItem *)
828*cdf0e10cSrcweir                                        rItemSet.GetItem (SID_HYPERLINK_GETLINK);
829*cdf0e10cSrcweir 
830*cdf0e10cSrcweir     if ( pHyperlinkItem )
831*cdf0e10cSrcweir     {
832*cdf0e10cSrcweir         // standard-fields
833*cdf0e10cSrcweir         FillStandardDlgFields (pHyperlinkItem);
834*cdf0e10cSrcweir     }
835*cdf0e10cSrcweir 
836*cdf0e10cSrcweir     // show mark-window if it was open before
837*cdf0e10cSrcweir     if ( ShouldOpenMarkWnd () )
838*cdf0e10cSrcweir         ShowMarkWnd ();
839*cdf0e10cSrcweir }
840*cdf0e10cSrcweir 
841*cdf0e10cSrcweir int SvxHyperlinkTabPageBase::DeactivatePage( SfxItemSet* _pSet)
842*cdf0e10cSrcweir {
843*cdf0e10cSrcweir     // hide mark-wnd
844*cdf0e10cSrcweir     SetMarkWndShouldOpen( IsMarkWndVisible () );
845*cdf0e10cSrcweir     HideMarkWnd ();
846*cdf0e10cSrcweir 
847*cdf0e10cSrcweir     // retrieve data of dialog
848*cdf0e10cSrcweir     String aStrURL, aStrName, aStrIntName, aStrFrame;
849*cdf0e10cSrcweir     SvxLinkInsertMode eMode;
850*cdf0e10cSrcweir 
851*cdf0e10cSrcweir     GetCurentItemData ( aStrURL, aStrName, aStrIntName, aStrFrame, eMode);
852*cdf0e10cSrcweir 
853*cdf0e10cSrcweir     sal_uInt16 nEvents = GetMacroEvents();
854*cdf0e10cSrcweir     SvxMacroTableDtor* pTable = GetMacroTable();
855*cdf0e10cSrcweir 
856*cdf0e10cSrcweir     if( _pSet )
857*cdf0e10cSrcweir     {
858*cdf0e10cSrcweir         SvxHyperlinkItem aItem( SID_HYPERLINK_GETLINK, aStrName, aStrURL, aStrFrame,
859*cdf0e10cSrcweir                                 aStrIntName, eMode, nEvents, pTable );
860*cdf0e10cSrcweir         _pSet->Put( aItem );
861*cdf0e10cSrcweir     }
862*cdf0e10cSrcweir 
863*cdf0e10cSrcweir     return( LEAVE_PAGE );
864*cdf0e10cSrcweir }
865*cdf0e10cSrcweir 
866*cdf0e10cSrcweir sal_Bool SvxHyperlinkTabPageBase::ShouldOpenMarkWnd()
867*cdf0e10cSrcweir {
868*cdf0e10cSrcweir     return sal_False;
869*cdf0e10cSrcweir }
870*cdf0e10cSrcweir 
871*cdf0e10cSrcweir void SvxHyperlinkTabPageBase::SetMarkWndShouldOpen(sal_Bool)
872*cdf0e10cSrcweir {
873*cdf0e10cSrcweir }
874