xref: /aoo4110/main/sw/source/ui/shells/textsh1.cxx (revision b1cdbd2c)
1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski  *
3*b1cdbd2cSJim Jagielski  * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski  * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski  * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski  * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski  * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski  * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski  * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski  *
11*b1cdbd2cSJim Jagielski  *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski  *
13*b1cdbd2cSJim Jagielski  * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski  * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski  * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski  * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski  * under the License.
19*b1cdbd2cSJim Jagielski  *
20*b1cdbd2cSJim Jagielski  *************************************************************/
21*b1cdbd2cSJim Jagielski 
22*b1cdbd2cSJim Jagielski 
23*b1cdbd2cSJim Jagielski 
24*b1cdbd2cSJim Jagielski // MARKER(update_precomp.py): autogen include statement, do not remove
25*b1cdbd2cSJim Jagielski #include "precompiled_sw.hxx"
26*b1cdbd2cSJim Jagielski 
27*b1cdbd2cSJim Jagielski #include <com/sun/star/i18n/WordType.hpp>
28*b1cdbd2cSJim Jagielski #include <com/sun/star/ui/dialogs/XExecutableDialog.hpp>
29*b1cdbd2cSJim Jagielski 
30*b1cdbd2cSJim Jagielski #include <comphelper/processfactory.hxx>
31*b1cdbd2cSJim Jagielski #include <svx/dialogs.hrc>
32*b1cdbd2cSJim Jagielski #include <hintids.hxx>
33*b1cdbd2cSJim Jagielski #include <cmdid.h>
34*b1cdbd2cSJim Jagielski #include <helpid.h>
35*b1cdbd2cSJim Jagielski 
36*b1cdbd2cSJim Jagielski #include <i18npool/mslangid.hxx>
37*b1cdbd2cSJim Jagielski #include <svl/languageoptions.hxx>
38*b1cdbd2cSJim Jagielski #include <editeng/langitem.hxx>
39*b1cdbd2cSJim Jagielski #include <svtools/langtab.hxx>
40*b1cdbd2cSJim Jagielski #include <svl/slstitm.hxx>
41*b1cdbd2cSJim Jagielski #include <string.h>
42*b1cdbd2cSJim Jagielski #include <svl/stritem.hxx>
43*b1cdbd2cSJim Jagielski #include <svx/htmlmode.hxx>
44*b1cdbd2cSJim Jagielski #include <svl/whiter.hxx>
45*b1cdbd2cSJim Jagielski #include <sfx2/bindings.hxx>
46*b1cdbd2cSJim Jagielski #include <sfx2/dispatch.hxx>
47*b1cdbd2cSJim Jagielski #include <sfx2/objitem.hxx>
48*b1cdbd2cSJim Jagielski #include <vcl/msgbox.hxx>
49*b1cdbd2cSJim Jagielski #include <vcl/unohelp2.hxx>
50*b1cdbd2cSJim Jagielski #include <sfx2/request.hxx>
51*b1cdbd2cSJim Jagielski #include <svl/eitem.hxx>
52*b1cdbd2cSJim Jagielski #include <svl/macitem.hxx>
53*b1cdbd2cSJim Jagielski #include <editeng/lrspitem.hxx>
54*b1cdbd2cSJim Jagielski #include <editeng/ulspitem.hxx>
55*b1cdbd2cSJim Jagielski #include <editeng/colritem.hxx>
56*b1cdbd2cSJim Jagielski #include <editeng/tstpitem.hxx>
57*b1cdbd2cSJim Jagielski #include <editeng/brshitem.hxx>
58*b1cdbd2cSJim Jagielski #include <editeng/svxacorr.hxx>
59*b1cdbd2cSJim Jagielski #include <svl/cjkoptions.hxx>
60*b1cdbd2cSJim Jagielski #include <svl/ctloptions.hxx>
61*b1cdbd2cSJim Jagielski #include <IDocumentSettingAccess.hxx>
62*b1cdbd2cSJim Jagielski #include <charfmt.hxx>
63*b1cdbd2cSJim Jagielski #include <editeng/fontitem.hxx>
64*b1cdbd2cSJim Jagielski #include <svx/SmartTagItem.hxx>
65*b1cdbd2cSJim Jagielski #include <svx/dialmgr.hxx>
66*b1cdbd2cSJim Jagielski #include <fmtinfmt.hxx>
67*b1cdbd2cSJim Jagielski #include <swwait.hxx>
68*b1cdbd2cSJim Jagielski #include <wrtsh.hxx>
69*b1cdbd2cSJim Jagielski #include <wview.hxx>
70*b1cdbd2cSJim Jagielski #include <swmodule.hxx>
71*b1cdbd2cSJim Jagielski #include <viewopt.hxx>
72*b1cdbd2cSJim Jagielski #include <uitool.hxx>
73*b1cdbd2cSJim Jagielski #include <swevent.hxx>
74*b1cdbd2cSJim Jagielski #include <fmthdft.hxx>
75*b1cdbd2cSJim Jagielski #include <pagedesc.hxx>
76*b1cdbd2cSJim Jagielski #include <textsh.hxx>
77*b1cdbd2cSJim Jagielski #include <IMark.hxx>
78*b1cdbd2cSJim Jagielski #include <swdtflvr.hxx>
79*b1cdbd2cSJim Jagielski #include <docstat.hxx>
80*b1cdbd2cSJim Jagielski #include <outline.hxx>
81*b1cdbd2cSJim Jagielski #include <tablemgr.hxx>
82*b1cdbd2cSJim Jagielski #include <swundo.hxx>		// fuer Undo-IDs
83*b1cdbd2cSJim Jagielski #include <reffld.hxx>
84*b1cdbd2cSJim Jagielski #include <docsh.hxx>
85*b1cdbd2cSJim Jagielski #include <mdiexp.hxx>
86*b1cdbd2cSJim Jagielski #include <inputwin.hxx>
87*b1cdbd2cSJim Jagielski #include <pardlg.hxx>
88*b1cdbd2cSJim Jagielski #include <frmatr.hxx>
89*b1cdbd2cSJim Jagielski #include <fmtcol.hxx>
90*b1cdbd2cSJim Jagielski #include <cellatr.hxx>
91*b1cdbd2cSJim Jagielski #include <edtwin.hxx>
92*b1cdbd2cSJim Jagielski #include <redlndlg.hxx>
93*b1cdbd2cSJim Jagielski #include "fldmgr.hxx"
94*b1cdbd2cSJim Jagielski 
95*b1cdbd2cSJim Jagielski #include <globals.hrc>
96*b1cdbd2cSJim Jagielski #include <shells.hrc>
97*b1cdbd2cSJim Jagielski #include <app.hrc>
98*b1cdbd2cSJim Jagielski #include <web.hrc>
99*b1cdbd2cSJim Jagielski #include "paratr.hxx"
100*b1cdbd2cSJim Jagielski #include <crsskip.hxx>
101*b1cdbd2cSJim Jagielski #include <docstat.hxx>
102*b1cdbd2cSJim Jagielski #include <vcl/svapp.hxx>
103*b1cdbd2cSJim Jagielski #include <sfx2/app.hxx>
104*b1cdbd2cSJim Jagielski #include <breakit.hxx>
105*b1cdbd2cSJim Jagielski 
106*b1cdbd2cSJim Jagielski #include <SwSmartTagMgr.hxx>
107*b1cdbd2cSJim Jagielski 
108*b1cdbd2cSJim Jagielski #include <editeng/acorrcfg.hxx>
109*b1cdbd2cSJim Jagielski #include "swabstdlg.hxx"
110*b1cdbd2cSJim Jagielski #include "misc.hrc"
111*b1cdbd2cSJim Jagielski #include "chrdlg.hrc"
112*b1cdbd2cSJim Jagielski #include <IDocumentStatistics.hxx>
113*b1cdbd2cSJim Jagielski 
114*b1cdbd2cSJim Jagielski #include <sfx2/sfxdlg.hxx>
115*b1cdbd2cSJim Jagielski #include <svl/languageoptions.hxx>
116*b1cdbd2cSJim Jagielski #include <unotools/lingucfg.hxx>
117*b1cdbd2cSJim Jagielski #include <com/sun/star/beans/XPropertySet.hpp>
118*b1cdbd2cSJim Jagielski #include <com/sun/star/util/XChangesBatch.hpp>
119*b1cdbd2cSJim Jagielski #include <com/sun/star/uno/Any.hxx>
120*b1cdbd2cSJim Jagielski #include <editeng/unolingu.hxx>
121*b1cdbd2cSJim Jagielski #include <unotools/syslocaleoptions.hxx>
122*b1cdbd2cSJim Jagielski #include <doc.hxx>
123*b1cdbd2cSJim Jagielski #include <view.hxx>
124*b1cdbd2cSJim Jagielski #include <ndtxt.hxx>
125*b1cdbd2cSJim Jagielski #include <pam.hxx>
126*b1cdbd2cSJim Jagielski #include <sfx2/objface.hxx>
127*b1cdbd2cSJim Jagielski #include <langhelper.hxx>
128*b1cdbd2cSJim Jagielski 
129*b1cdbd2cSJim Jagielski #ifndef _NBDTMGFACT_HXX
130*b1cdbd2cSJim Jagielski #include <svx/nbdtmgfact.hxx>
131*b1cdbd2cSJim Jagielski #endif
132*b1cdbd2cSJim Jagielski #ifndef _NBDTMG_HXX
133*b1cdbd2cSJim Jagielski #include <svx/nbdtmg.hxx>
134*b1cdbd2cSJim Jagielski #endif
135*b1cdbd2cSJim Jagielski 
136*b1cdbd2cSJim Jagielski 
137*b1cdbd2cSJim Jagielski #include <numrule.hxx>
138*b1cdbd2cSJim Jagielski 
139*b1cdbd2cSJim Jagielski 
140*b1cdbd2cSJim Jagielski using namespace ::com::sun::star;
141*b1cdbd2cSJim Jagielski using namespace svx::sidebar;
142*b1cdbd2cSJim Jagielski 
143*b1cdbd2cSJim Jagielski 
lcl_CharDialog(SwWrtShell & rWrtSh,sal_Bool bUseDialog,sal_uInt16 nSlot,const SfxItemSet * pArgs,SfxRequest * pReq)144*b1cdbd2cSJim Jagielski void lcl_CharDialog( SwWrtShell &rWrtSh, sal_Bool bUseDialog, sal_uInt16 nSlot,const SfxItemSet *pArgs, SfxRequest *pReq )
145*b1cdbd2cSJim Jagielski {
146*b1cdbd2cSJim Jagielski 	FieldUnit eMetric = ::GetDfltMetric(0 != PTR_CAST(SwWebView, &rWrtSh.GetView()));
147*b1cdbd2cSJim Jagielski 	SW_MOD()->PutItem(SfxUInt16Item(SID_ATTR_METRIC, static_cast< sal_uInt16 >(eMetric)));
148*b1cdbd2cSJim Jagielski 	SfxItemSet aCoreSet( rWrtSh.GetView().GetPool(),
149*b1cdbd2cSJim Jagielski 						RES_CHRATR_BEGIN,      RES_CHRATR_END-1,
150*b1cdbd2cSJim Jagielski 						RES_TXTATR_INETFMT,    RES_TXTATR_INETFMT,
151*b1cdbd2cSJim Jagielski 						RES_BACKGROUND,        RES_BACKGROUND,
152*b1cdbd2cSJim Jagielski 						FN_PARAM_SELECTION,    FN_PARAM_SELECTION,
153*b1cdbd2cSJim Jagielski 						SID_HTML_MODE,         SID_HTML_MODE,
154*b1cdbd2cSJim Jagielski 						SID_ATTR_CHAR_WIDTH_FIT_TO_LINE,   SID_ATTR_CHAR_WIDTH_FIT_TO_LINE,
155*b1cdbd2cSJim Jagielski 						0 );
156*b1cdbd2cSJim Jagielski 	rWrtSh.GetCurAttr( aCoreSet );
157*b1cdbd2cSJim Jagielski 	sal_Bool bSel = rWrtSh.HasSelection();
158*b1cdbd2cSJim Jagielski 	sal_Bool bSelectionPut = sal_False;
159*b1cdbd2cSJim Jagielski 	if(bSel || rWrtSh.IsInWord())
160*b1cdbd2cSJim Jagielski 	{
161*b1cdbd2cSJim Jagielski 		if(!bSel)
162*b1cdbd2cSJim Jagielski 		{
163*b1cdbd2cSJim Jagielski 			rWrtSh.StartAction();
164*b1cdbd2cSJim Jagielski 			rWrtSh.Push();
165*b1cdbd2cSJim Jagielski 			if(!rWrtSh.SelectTxtAttr( RES_TXTATR_INETFMT ))
166*b1cdbd2cSJim Jagielski 				rWrtSh.SelWrd();
167*b1cdbd2cSJim Jagielski 		}
168*b1cdbd2cSJim Jagielski 		aCoreSet.Put(SfxStringItem(FN_PARAM_SELECTION, rWrtSh.GetSelTxt()));
169*b1cdbd2cSJim Jagielski 		bSelectionPut = sal_True;
170*b1cdbd2cSJim Jagielski 		if(!bSel)
171*b1cdbd2cSJim Jagielski 		{
172*b1cdbd2cSJim Jagielski 			rWrtSh.Pop(sal_False);
173*b1cdbd2cSJim Jagielski 			rWrtSh.EndAction();
174*b1cdbd2cSJim Jagielski 		}
175*b1cdbd2cSJim Jagielski 	}
176*b1cdbd2cSJim Jagielski 		aCoreSet.Put( SfxUInt16Item( SID_ATTR_CHAR_WIDTH_FIT_TO_LINE,
177*b1cdbd2cSJim Jagielski 					rWrtSh.GetScalingOfSelectedText() ) );
178*b1cdbd2cSJim Jagielski 	// Das CHRATR_BACKGROUND-Attribut wird fuer den Dialog in
179*b1cdbd2cSJim Jagielski 	// ein RES_BACKGROUND verwandelt und wieder zurueck ...
180*b1cdbd2cSJim Jagielski 	const SfxPoolItem *pTmpBrush;
181*b1cdbd2cSJim Jagielski 	if( SFX_ITEM_SET == aCoreSet.GetItemState( RES_CHRATR_BACKGROUND, sal_True, &pTmpBrush ) )
182*b1cdbd2cSJim Jagielski 	{
183*b1cdbd2cSJim Jagielski 		SvxBrushItem aTmpBrush( *((SvxBrushItem*)pTmpBrush) );
184*b1cdbd2cSJim Jagielski 		aTmpBrush.SetWhich( RES_BACKGROUND );
185*b1cdbd2cSJim Jagielski 		aCoreSet.Put( aTmpBrush );
186*b1cdbd2cSJim Jagielski 	}
187*b1cdbd2cSJim Jagielski 
188*b1cdbd2cSJim Jagielski 	aCoreSet.Put(SfxUInt16Item(SID_HTML_MODE, ::GetHtmlMode(rWrtSh.GetView().GetDocShell())));
189*b1cdbd2cSJim Jagielski 	SfxAbstractTabDialog* pDlg = NULL;
190*b1cdbd2cSJim Jagielski 	if ( bUseDialog && GetActiveView() )
191*b1cdbd2cSJim Jagielski 	{
192*b1cdbd2cSJim Jagielski 		SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
193*b1cdbd2cSJim Jagielski 		DBG_ASSERT(pFact, "SwAbstractDialogFactory fail!");
194*b1cdbd2cSJim Jagielski 
195*b1cdbd2cSJim Jagielski 		pDlg = pFact->CreateSwCharDlg( rWrtSh.GetView().GetWindow(), rWrtSh.GetView(), aCoreSet, DLG_CHAR );
196*b1cdbd2cSJim Jagielski 		DBG_ASSERT(pDlg, "Dialogdiet fail!");
197*b1cdbd2cSJim Jagielski 		if( FN_INSERT_HYPERLINK == nSlot )
198*b1cdbd2cSJim Jagielski 			pDlg->SetCurPageId(TP_CHAR_URL);
199*b1cdbd2cSJim Jagielski 	}
200*b1cdbd2cSJim Jagielski 	if (nSlot == SID_CHAR_DLG_EFFECT)
201*b1cdbd2cSJim Jagielski 	{
202*b1cdbd2cSJim Jagielski 		pDlg->SetCurPageId(TP_CHAR_EXT);
203*b1cdbd2cSJim Jagielski 	}
204*b1cdbd2cSJim Jagielski 
205*b1cdbd2cSJim Jagielski 	const SfxItemSet* pSet = NULL;
206*b1cdbd2cSJim Jagielski 	if ( !bUseDialog )
207*b1cdbd2cSJim Jagielski 		pSet = pArgs;
208*b1cdbd2cSJim Jagielski 	else if ( NULL != pDlg && pDlg->Execute() == RET_OK ) /* #110771# pDlg can be NULL */
209*b1cdbd2cSJim Jagielski 	{
210*b1cdbd2cSJim Jagielski 		pSet = pDlg->GetOutputItemSet();
211*b1cdbd2cSJim Jagielski 	}
212*b1cdbd2cSJim Jagielski 
213*b1cdbd2cSJim Jagielski 	if ( pSet)
214*b1cdbd2cSJim Jagielski 	{
215*b1cdbd2cSJim Jagielski 		SfxItemSet aTmpSet( *pSet );
216*b1cdbd2cSJim Jagielski 		if( SFX_ITEM_SET == aTmpSet.GetItemState( RES_BACKGROUND, sal_False, &pTmpBrush ) )
217*b1cdbd2cSJim Jagielski 		{
218*b1cdbd2cSJim Jagielski 			SvxBrushItem aTmpBrush( *((SvxBrushItem*)pTmpBrush) );
219*b1cdbd2cSJim Jagielski 			aTmpBrush.SetWhich( RES_CHRATR_BACKGROUND );
220*b1cdbd2cSJim Jagielski 			aTmpSet.Put( aTmpBrush );
221*b1cdbd2cSJim Jagielski 		}
222*b1cdbd2cSJim Jagielski 
223*b1cdbd2cSJim Jagielski 		aTmpSet.ClearItem( RES_BACKGROUND );
224*b1cdbd2cSJim Jagielski 
225*b1cdbd2cSJim Jagielski 		const SfxPoolItem* pSelectionItem;
226*b1cdbd2cSJim Jagielski 		sal_Bool bInsert = sal_False;
227*b1cdbd2cSJim Jagielski 		xub_StrLen nInsert = 0;
228*b1cdbd2cSJim Jagielski 
229*b1cdbd2cSJim Jagielski 		// aus ungeklaerter Ursache ist das alte Item wieder im Set
230*b1cdbd2cSJim Jagielski 		if( !bSelectionPut && SFX_ITEM_SET == aTmpSet.GetItemState(FN_PARAM_SELECTION, sal_False, &pSelectionItem) )
231*b1cdbd2cSJim Jagielski 		{
232*b1cdbd2cSJim Jagielski 			String sInsert = ((const SfxStringItem*)pSelectionItem)->GetValue();
233*b1cdbd2cSJim Jagielski 			bInsert = sInsert.Len() != 0;
234*b1cdbd2cSJim Jagielski 			if(bInsert)
235*b1cdbd2cSJim Jagielski 			{
236*b1cdbd2cSJim Jagielski 				nInsert = sInsert.Len();
237*b1cdbd2cSJim Jagielski 				rWrtSh.StartAction();
238*b1cdbd2cSJim Jagielski 				rWrtSh.Insert( sInsert );
239*b1cdbd2cSJim Jagielski 				rWrtSh.SetMark();
240*b1cdbd2cSJim Jagielski 				rWrtSh.ExtendSelection(sal_False, sInsert.Len());
241*b1cdbd2cSJim Jagielski 				SfxRequest aReq( rWrtSh.GetView().GetViewFrame(), FN_INSERT_STRING );
242*b1cdbd2cSJim Jagielski 				aReq.AppendItem( SfxStringItem( FN_INSERT_STRING, sInsert ) );
243*b1cdbd2cSJim Jagielski 				aReq.Done();
244*b1cdbd2cSJim Jagielski 				SfxRequest aReq1( rWrtSh.GetView().GetViewFrame(), FN_CHAR_LEFT );
245*b1cdbd2cSJim Jagielski 				aReq1.AppendItem( SfxInt16Item(FN_PARAM_MOVE_COUNT, nInsert) );
246*b1cdbd2cSJim Jagielski 				aReq1.AppendItem( SfxBoolItem(FN_PARAM_MOVE_SELECTION, sal_True) );
247*b1cdbd2cSJim Jagielski 				aReq1.Done();
248*b1cdbd2cSJim Jagielski 			}
249*b1cdbd2cSJim Jagielski 		}
250*b1cdbd2cSJim Jagielski 		aTmpSet.ClearItem(FN_PARAM_SELECTION);
251*b1cdbd2cSJim Jagielski 
252*b1cdbd2cSJim Jagielski 		SwTxtFmtColl* pColl = rWrtSh.GetCurTxtFmtColl();
253*b1cdbd2cSJim Jagielski 		if(bSel && rWrtSh.IsSelFullPara() && pColl && pColl->IsAutoUpdateFmt())
254*b1cdbd2cSJim Jagielski 		{
255*b1cdbd2cSJim Jagielski 			rWrtSh.AutoUpdatePara(pColl, aTmpSet);
256*b1cdbd2cSJim Jagielski 		}
257*b1cdbd2cSJim Jagielski 		else
258*b1cdbd2cSJim Jagielski 			rWrtSh.SetAttrSet( aTmpSet );
259*b1cdbd2cSJim Jagielski 		if (pReq)
260*b1cdbd2cSJim Jagielski 			pReq->Done(aTmpSet);
261*b1cdbd2cSJim Jagielski 		if(bInsert)
262*b1cdbd2cSJim Jagielski 		{
263*b1cdbd2cSJim Jagielski 			SfxRequest aReq1( rWrtSh.GetView().GetViewFrame(), FN_CHAR_RIGHT );
264*b1cdbd2cSJim Jagielski 			aReq1.AppendItem( SfxInt16Item(FN_PARAM_MOVE_COUNT, nInsert) );
265*b1cdbd2cSJim Jagielski 			aReq1.AppendItem( SfxBoolItem(FN_PARAM_MOVE_SELECTION, sal_False) );
266*b1cdbd2cSJim Jagielski 			aReq1.Done();
267*b1cdbd2cSJim Jagielski 			rWrtSh.SwapPam();
268*b1cdbd2cSJim Jagielski 			rWrtSh.ClearMark();
269*b1cdbd2cSJim Jagielski 			rWrtSh.DontExpandFmt();
270*b1cdbd2cSJim Jagielski 			rWrtSh.EndAction();
271*b1cdbd2cSJim Jagielski 		}
272*b1cdbd2cSJim Jagielski 	}
273*b1cdbd2cSJim Jagielski 
274*b1cdbd2cSJim Jagielski 	delete pDlg;
275*b1cdbd2cSJim Jagielski }
276*b1cdbd2cSJim Jagielski 
277*b1cdbd2cSJim Jagielski /*--------------------------------------------------------------------
278*b1cdbd2cSJim Jagielski 	Beschreibung:
279*b1cdbd2cSJim Jagielski  --------------------------------------------------------------------*/
280*b1cdbd2cSJim Jagielski 
lcl_AskRedlineMode(Window * pWin)281*b1cdbd2cSJim Jagielski short lcl_AskRedlineMode(Window *pWin)
282*b1cdbd2cSJim Jagielski {
283*b1cdbd2cSJim Jagielski 	MessBox aQBox( pWin, 0,
284*b1cdbd2cSJim Jagielski 					String( SW_RES( STR_REDLINE_TITLE ) ),
285*b1cdbd2cSJim Jagielski 					String( SW_RES( STR_REDLINE_MSG ) ) );
286*b1cdbd2cSJim Jagielski 	aQBox.SetImage( QueryBox::GetStandardImage() );
287*b1cdbd2cSJim Jagielski 	sal_uInt16 nBtnFlags = BUTTONDIALOG_DEFBUTTON |
288*b1cdbd2cSJim Jagielski 						BUTTONDIALOG_OKBUTTON |
289*b1cdbd2cSJim Jagielski 						BUTTONDIALOG_FOCUSBUTTON;
290*b1cdbd2cSJim Jagielski 
291*b1cdbd2cSJim Jagielski 	aQBox.AddButton(String(SW_RES(STR_REDLINE_ACCEPT_ALL)), RET_OK, nBtnFlags);
292*b1cdbd2cSJim Jagielski 	aQBox.GetPushButton( RET_OK )->SetHelpId(HID_AUTOFORMAT_ACCEPT);
293*b1cdbd2cSJim Jagielski 	aQBox.AddButton(String(SW_RES(STR_REDLINE_REJECT_ALL)), RET_CANCEL, BUTTONDIALOG_CANCELBUTTON);
294*b1cdbd2cSJim Jagielski 	aQBox.GetPushButton( RET_CANCEL )->SetHelpId(HID_AUTOFORMAT_REJECT  );
295*b1cdbd2cSJim Jagielski 	aQBox.AddButton(String(SW_RES(STR_REDLINE_EDIT)), 2, 0);
296*b1cdbd2cSJim Jagielski 	aQBox.GetPushButton( 2 )->SetHelpId(HID_AUTOFORMAT_EDIT_CHG);
297*b1cdbd2cSJim Jagielski 	aQBox.SetButtonHelpText( RET_OK, aEmptyStr );
298*b1cdbd2cSJim Jagielski 
299*b1cdbd2cSJim Jagielski 	return aQBox.Execute();
300*b1cdbd2cSJim Jagielski }
301*b1cdbd2cSJim Jagielski 
Execute(SfxRequest & rReq)302*b1cdbd2cSJim Jagielski void SwTextShell::Execute(SfxRequest &rReq)
303*b1cdbd2cSJim Jagielski {
304*b1cdbd2cSJim Jagielski     sal_Bool bUseDialog = sal_True;
305*b1cdbd2cSJim Jagielski     const SfxItemSet *pArgs = rReq.GetArgs();
306*b1cdbd2cSJim Jagielski     SwWrtShell& rWrtSh = GetShell();
307*b1cdbd2cSJim Jagielski     const SfxPoolItem* pItem = 0;
308*b1cdbd2cSJim Jagielski     sal_uInt16 nSlot = rReq.GetSlot();
309*b1cdbd2cSJim Jagielski     if(pArgs)
310*b1cdbd2cSJim Jagielski         pArgs->GetItemState(GetPool().GetWhich(nSlot), sal_False, &pItem);
311*b1cdbd2cSJim Jagielski     switch( nSlot )
312*b1cdbd2cSJim Jagielski     {
313*b1cdbd2cSJim Jagielski         case SID_LANGUAGE_STATUS:
314*b1cdbd2cSJim Jagielski         {
315*b1cdbd2cSJim Jagielski             // get the language
316*b1cdbd2cSJim Jagielski             String aNewLangTxt;
317*b1cdbd2cSJim Jagielski             SFX_REQUEST_ARG( rReq, pItem2, SfxStringItem, SID_LANGUAGE_STATUS , sal_False );
318*b1cdbd2cSJim Jagielski             if (pItem2)
319*b1cdbd2cSJim Jagielski                 aNewLangTxt = pItem2->GetValue();
320*b1cdbd2cSJim Jagielski 
321*b1cdbd2cSJim Jagielski             //!! Remember the view frame right now...
322*b1cdbd2cSJim Jagielski             //!! (call to GetView().GetViewFrame() will break if the
323*b1cdbd2cSJim Jagielski             //!! SwTextShell got destroyed meanwhile.)
324*b1cdbd2cSJim Jagielski             SfxViewFrame *pViewFrame = GetView().GetViewFrame();
325*b1cdbd2cSJim Jagielski 
326*b1cdbd2cSJim Jagielski             if (aNewLangTxt.EqualsAscii( "*" ))
327*b1cdbd2cSJim Jagielski             {
328*b1cdbd2cSJim Jagielski                 // open the dialog "Tools/Options/Language Settings - Language"
329*b1cdbd2cSJim Jagielski                 // to set the documents default language
330*b1cdbd2cSJim Jagielski                 SfxAbstractDialogFactory* pFact = SfxAbstractDialogFactory::Create();
331*b1cdbd2cSJim Jagielski                 if (pFact)
332*b1cdbd2cSJim Jagielski                 {
333*b1cdbd2cSJim Jagielski                     VclAbstractDialog* pDlg = pFact->CreateVclDialog( GetView().GetWindow(), SID_LANGUAGE_OPTIONS );
334*b1cdbd2cSJim Jagielski                     pDlg->Execute();
335*b1cdbd2cSJim Jagielski                     delete pDlg;
336*b1cdbd2cSJim Jagielski                 }
337*b1cdbd2cSJim Jagielski             }
338*b1cdbd2cSJim Jagielski             else
339*b1cdbd2cSJim Jagielski             {
340*b1cdbd2cSJim Jagielski                 //!! We have to use StartAction / EndAction bracketing in
341*b1cdbd2cSJim Jagielski                 //!! order to prevent possible destruction of the SwTextShell
342*b1cdbd2cSJim Jagielski                 //!! due to the selection changes coming below.
343*b1cdbd2cSJim Jagielski                 rWrtSh.StartAction();
344*b1cdbd2cSJim Jagielski                 // prevent view from jumping because of (temporary) selection changes
345*b1cdbd2cSJim Jagielski                 rWrtSh.LockView( sal_True );
346*b1cdbd2cSJim Jagielski 
347*b1cdbd2cSJim Jagielski                 // save selection for later restoration
348*b1cdbd2cSJim Jagielski                 rWrtSh.Push();
349*b1cdbd2cSJim Jagielski 
350*b1cdbd2cSJim Jagielski                 // setting the new language...
351*b1cdbd2cSJim Jagielski                 if (aNewLangTxt.Len() > 0)
352*b1cdbd2cSJim Jagielski                 {
353*b1cdbd2cSJim Jagielski                     const String aSelectionLangPrefix( String::CreateFromAscii("Current_") );
354*b1cdbd2cSJim Jagielski                     const String aParagraphLangPrefix( String::CreateFromAscii("Paragraph_") );
355*b1cdbd2cSJim Jagielski                     const String aDocumentLangPrefix( String::CreateFromAscii("Default_") );
356*b1cdbd2cSJim Jagielski                     const String aStrNone( String::CreateFromAscii("LANGUAGE_NONE") );
357*b1cdbd2cSJim Jagielski                     const String aStrResetLangs( String::CreateFromAscii("RESET_LANGUAGES") );
358*b1cdbd2cSJim Jagielski 
359*b1cdbd2cSJim Jagielski                     SfxItemSet aCoreSet( GetPool(),
360*b1cdbd2cSJim Jagielski                             RES_CHRATR_LANGUAGE,        RES_CHRATR_LANGUAGE,
361*b1cdbd2cSJim Jagielski                             RES_CHRATR_CJK_LANGUAGE,    RES_CHRATR_CJK_LANGUAGE,
362*b1cdbd2cSJim Jagielski                             RES_CHRATR_CTL_LANGUAGE,    RES_CHRATR_CTL_LANGUAGE,
363*b1cdbd2cSJim Jagielski                             0 );
364*b1cdbd2cSJim Jagielski 
365*b1cdbd2cSJim Jagielski                     xub_StrLen nPos = 0;
366*b1cdbd2cSJim Jagielski                     bool bForSelection = true;
367*b1cdbd2cSJim Jagielski                     bool bForParagraph = false;
368*b1cdbd2cSJim Jagielski                     if (STRING_NOTFOUND != (nPos = aNewLangTxt.Search( aSelectionLangPrefix, 0 )))
369*b1cdbd2cSJim Jagielski                     {
370*b1cdbd2cSJim Jagielski                         // ... for the current selection
371*b1cdbd2cSJim Jagielski                         aNewLangTxt = aNewLangTxt.Erase( nPos, aSelectionLangPrefix.Len() );
372*b1cdbd2cSJim Jagielski                         bForSelection = true;
373*b1cdbd2cSJim Jagielski                     }
374*b1cdbd2cSJim Jagielski                     else if (STRING_NOTFOUND != (nPos = aNewLangTxt.Search( aParagraphLangPrefix , 0 )))
375*b1cdbd2cSJim Jagielski                     {
376*b1cdbd2cSJim Jagielski                         // ... for the current paragraph language
377*b1cdbd2cSJim Jagielski                         aNewLangTxt = aNewLangTxt.Erase( nPos, aParagraphLangPrefix.Len() );
378*b1cdbd2cSJim Jagielski                         bForSelection = true;
379*b1cdbd2cSJim Jagielski                         bForParagraph = true;
380*b1cdbd2cSJim Jagielski                     }
381*b1cdbd2cSJim Jagielski                     else if (STRING_NOTFOUND != (nPos = aNewLangTxt.Search( aDocumentLangPrefix , 0 )))
382*b1cdbd2cSJim Jagielski                     {
383*b1cdbd2cSJim Jagielski                         // ... as default document language
384*b1cdbd2cSJim Jagielski                         aNewLangTxt = aNewLangTxt.Erase( nPos, aDocumentLangPrefix.Len() );
385*b1cdbd2cSJim Jagielski                         bForSelection = false;
386*b1cdbd2cSJim Jagielski                     }
387*b1cdbd2cSJim Jagielski 
388*b1cdbd2cSJim Jagielski                     if (bForParagraph)
389*b1cdbd2cSJim Jagielski                         SwLangHelper::SelectCurrentPara( rWrtSh );
390*b1cdbd2cSJim Jagielski 
391*b1cdbd2cSJim Jagielski                     if (!bForSelection) // document language to be changed...
392*b1cdbd2cSJim Jagielski                     {
393*b1cdbd2cSJim Jagielski                         rWrtSh.SelAll();
394*b1cdbd2cSJim Jagielski                         rWrtSh.ExtendedSelectAll();
395*b1cdbd2cSJim Jagielski                     }
396*b1cdbd2cSJim Jagielski 
397*b1cdbd2cSJim Jagielski                     rWrtSh.StartUndo( ( !bForParagraph && !bForSelection ) ? UNDO_SETDEFTATTR : UNDO_EMPTY );
398*b1cdbd2cSJim Jagielski                     if (aNewLangTxt == aStrNone)
399*b1cdbd2cSJim Jagielski                         SwLangHelper::SetLanguage_None( rWrtSh, bForSelection, aCoreSet );
400*b1cdbd2cSJim Jagielski                     else if (aNewLangTxt == aStrResetLangs)
401*b1cdbd2cSJim Jagielski                         SwLangHelper::ResetLanguages( rWrtSh, bForSelection );
402*b1cdbd2cSJim Jagielski                     else
403*b1cdbd2cSJim Jagielski                         SwLangHelper::SetLanguage( rWrtSh, aNewLangTxt, bForSelection, aCoreSet );
404*b1cdbd2cSJim Jagielski                     rWrtSh.EndUndo();
405*b1cdbd2cSJim Jagielski 
406*b1cdbd2cSJim Jagielski                 }
407*b1cdbd2cSJim Jagielski 
408*b1cdbd2cSJim Jagielski                 // restore selection...
409*b1cdbd2cSJim Jagielski                 rWrtSh.Pop( sal_False );
410*b1cdbd2cSJim Jagielski 
411*b1cdbd2cSJim Jagielski                 rWrtSh.LockView( sal_False );
412*b1cdbd2cSJim Jagielski                 rWrtSh.EndAction();
413*b1cdbd2cSJim Jagielski             }
414*b1cdbd2cSJim Jagielski 
415*b1cdbd2cSJim Jagielski             // invalidate slot to get the new language displayed
416*b1cdbd2cSJim Jagielski             pViewFrame->GetBindings().Invalidate( nSlot );
417*b1cdbd2cSJim Jagielski 
418*b1cdbd2cSJim Jagielski             rReq.Done();
419*b1cdbd2cSJim Jagielski             break;
420*b1cdbd2cSJim Jagielski         }
421*b1cdbd2cSJim Jagielski 
422*b1cdbd2cSJim Jagielski         case SID_THES:
423*b1cdbd2cSJim Jagielski         {
424*b1cdbd2cSJim Jagielski             // replace word/selection with text from selected sub menu entry
425*b1cdbd2cSJim Jagielski             String aReplaceText;
426*b1cdbd2cSJim Jagielski             SFX_REQUEST_ARG( rReq, pItem2, SfxStringItem, SID_THES , sal_False );
427*b1cdbd2cSJim Jagielski             if (pItem2)
428*b1cdbd2cSJim Jagielski                 aReplaceText = pItem2->GetValue();
429*b1cdbd2cSJim Jagielski             if (aReplaceText.Len() > 0)
430*b1cdbd2cSJim Jagielski             {
431*b1cdbd2cSJim Jagielski                 SwView &rView2 = rWrtSh.GetView();
432*b1cdbd2cSJim Jagielski                 const bool bSelection = rWrtSh.HasSelection();
433*b1cdbd2cSJim Jagielski                 const String aLookUpText = rView2.GetThesaurusLookUpText( bSelection );
434*b1cdbd2cSJim Jagielski                 rView2.InsertThesaurusSynonym( aReplaceText, aLookUpText, bSelection );
435*b1cdbd2cSJim Jagielski             }
436*b1cdbd2cSJim Jagielski         }
437*b1cdbd2cSJim Jagielski         break;
438*b1cdbd2cSJim Jagielski 
439*b1cdbd2cSJim Jagielski 		case SID_CHARMAP:
440*b1cdbd2cSJim Jagielski 		{
441*b1cdbd2cSJim Jagielski             InsertSymbol( rReq );
442*b1cdbd2cSJim Jagielski 		}
443*b1cdbd2cSJim Jagielski 		break;
444*b1cdbd2cSJim Jagielski 		case FN_INSERT_FOOTNOTE:
445*b1cdbd2cSJim Jagielski 		case FN_INSERT_ENDNOTE:
446*b1cdbd2cSJim Jagielski         {
447*b1cdbd2cSJim Jagielski             String aStr;
448*b1cdbd2cSJim Jagielski             SFX_REQUEST_ARG( rReq, pFont, SfxStringItem, FN_PARAM_1 , sal_False );
449*b1cdbd2cSJim Jagielski //            SFX_REQUEST_ARG( rReq, pCharset, SfxInt16Item, FN_PARAM_2 , sal_False );
450*b1cdbd2cSJim Jagielski             SFX_REQUEST_ARG( rReq, pNameItem, SfxStringItem, nSlot , sal_False );
451*b1cdbd2cSJim Jagielski             if ( pNameItem )
452*b1cdbd2cSJim Jagielski                 aStr = pNameItem->GetValue();
453*b1cdbd2cSJim Jagielski             sal_Bool bFont = pFont && pFont->GetValue().Len();
454*b1cdbd2cSJim Jagielski             rWrtSh.StartUndo( UNDO_UI_INSERT_FOOTNOTE );
455*b1cdbd2cSJim Jagielski             rWrtSh.InsertFootnote( aStr, nSlot == FN_INSERT_ENDNOTE, !bFont );
456*b1cdbd2cSJim Jagielski             if ( bFont )
457*b1cdbd2cSJim Jagielski             {
458*b1cdbd2cSJim Jagielski                 rWrtSh.Left( CRSR_SKIP_CHARS, sal_True, 1, sal_False );
459*b1cdbd2cSJim Jagielski                 SfxItemSet aSet( rWrtSh.GetAttrPool(), RES_CHRATR_FONT, RES_CHRATR_FONT );
460*b1cdbd2cSJim Jagielski                 rWrtSh.GetCurAttr( aSet );
461*b1cdbd2cSJim Jagielski                 SvxFontItem &rFont = (SvxFontItem &) aSet.Get( RES_CHRATR_FONT );
462*b1cdbd2cSJim Jagielski                 SvxFontItem aFont( rFont.GetFamily(), pFont->GetValue(),
463*b1cdbd2cSJim Jagielski                                     rFont.GetStyleName(), rFont.GetPitch(), RTL_TEXTENCODING_DONTKNOW, RES_CHRATR_FONT );
464*b1cdbd2cSJim Jagielski                                     //pCharset ? (CharSet) pCharset->GetValue() : RTL_TEXTENCODING_DONTKNOW );
465*b1cdbd2cSJim Jagielski                 rWrtSh.SetAttrSet( aSet, nsSetAttrMode::SETATTR_DONTEXPAND );
466*b1cdbd2cSJim Jagielski                 rWrtSh.ResetSelect(0, sal_False);
467*b1cdbd2cSJim Jagielski                 rWrtSh.EndSelect();
468*b1cdbd2cSJim Jagielski                 rWrtSh.GotoFtnTxt();
469*b1cdbd2cSJim Jagielski             }
470*b1cdbd2cSJim Jagielski             rWrtSh.EndUndo( UNDO_UI_INSERT_FOOTNOTE );
471*b1cdbd2cSJim Jagielski             rReq.Done();
472*b1cdbd2cSJim Jagielski         }
473*b1cdbd2cSJim Jagielski 		break;
474*b1cdbd2cSJim Jagielski 		case FN_INSERT_FOOTNOTE_DLG:
475*b1cdbd2cSJim Jagielski 		{
476*b1cdbd2cSJim Jagielski 			SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
477*b1cdbd2cSJim Jagielski             DBG_ASSERT(pFact, "Dialogdiet fail!");
478*b1cdbd2cSJim Jagielski             AbstractInsFootNoteDlg* pDlg = pFact->CreateInsFootNoteDlg( DLG_INS_FOOTNOTE,
479*b1cdbd2cSJim Jagielski 														GetView().GetWindow(), rWrtSh, sal_False );
480*b1cdbd2cSJim Jagielski             DBG_ASSERT(pDlg, "Dialogdiet fail!");
481*b1cdbd2cSJim Jagielski 			pDlg->SetHelpId(GetStaticInterface()->GetSlot(nSlot)->GetCommand());
482*b1cdbd2cSJim Jagielski             if ( pDlg->Execute() == RET_OK )
483*b1cdbd2cSJim Jagielski             {
484*b1cdbd2cSJim Jagielski                 sal_uInt16 nId = pDlg->IsEndNote() ? FN_INSERT_ENDNOTE : FN_INSERT_FOOTNOTE;
485*b1cdbd2cSJim Jagielski                 SfxRequest aReq( GetView().GetViewFrame(), nId );
486*b1cdbd2cSJim Jagielski                 if ( pDlg->GetStr().Len() )
487*b1cdbd2cSJim Jagielski                     aReq.AppendItem( SfxStringItem( nId, pDlg->GetStr() ) );
488*b1cdbd2cSJim Jagielski                 if ( pDlg->GetFontName().Len() )
489*b1cdbd2cSJim Jagielski                     aReq.AppendItem( SfxStringItem( FN_PARAM_1, pDlg->GetFontName() ) );
490*b1cdbd2cSJim Jagielski                 //aReq.AppendItem( SfxStringItem( FN_PARAM_2, pDlg->GetCharSet() ) );
491*b1cdbd2cSJim Jagielski                 ExecuteSlot( aReq );
492*b1cdbd2cSJim Jagielski             }
493*b1cdbd2cSJim Jagielski 
494*b1cdbd2cSJim Jagielski             rReq.Ignore();
495*b1cdbd2cSJim Jagielski             delete pDlg;
496*b1cdbd2cSJim Jagielski 		}
497*b1cdbd2cSJim Jagielski 		break;
498*b1cdbd2cSJim Jagielski 		case FN_FORMAT_FOOTNOTE_DLG:
499*b1cdbd2cSJim Jagielski 		{
500*b1cdbd2cSJim Jagielski             SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
501*b1cdbd2cSJim Jagielski             DBG_ASSERT(pFact, "SwAbstractDialogFactory fail!");
502*b1cdbd2cSJim Jagielski 
503*b1cdbd2cSJim Jagielski             VclAbstractDialog* pDlg = pFact->CreateSwFootNoteOptionDlg( GetView().GetWindow(), rWrtSh, DLG_DOC_FOOTNOTE );
504*b1cdbd2cSJim Jagielski             DBG_ASSERT(pDlg, "Dialogdiet fail!");
505*b1cdbd2cSJim Jagielski 			pDlg->Execute();
506*b1cdbd2cSJim Jagielski 			delete pDlg;
507*b1cdbd2cSJim Jagielski 			break;
508*b1cdbd2cSJim Jagielski 		}
509*b1cdbd2cSJim Jagielski 		case SID_INSERTDOC:
510*b1cdbd2cSJim Jagielski         {
511*b1cdbd2cSJim Jagielski             GetView().ExecuteInsertDoc( rReq, pItem );
512*b1cdbd2cSJim Jagielski 			break;
513*b1cdbd2cSJim Jagielski         }
514*b1cdbd2cSJim Jagielski 		case FN_FORMAT_RESET:
515*b1cdbd2cSJim Jagielski 		{
516*b1cdbd2cSJim Jagielski 			// #i78856, reset all attributes but not the language attributes
517*b1cdbd2cSJim Jagielski 			// (for this build an array of all relevant attributes and
518*b1cdbd2cSJim Jagielski 			// remove the languages from that)
519*b1cdbd2cSJim Jagielski 			SvUShortsSort aAttribs;
520*b1cdbd2cSJim Jagielski 
521*b1cdbd2cSJim Jagielski             sal_uInt16 __FAR_DATA aResetableSetRange[] = {
522*b1cdbd2cSJim Jagielski                 RES_FRMATR_BEGIN, RES_FRMATR_END-1,
523*b1cdbd2cSJim Jagielski                 RES_CHRATR_BEGIN, RES_CHRATR_LANGUAGE - 1,
524*b1cdbd2cSJim Jagielski                 RES_CHRATR_LANGUAGE + 1, RES_CHRATR_CJK_LANGUAGE - 1,
525*b1cdbd2cSJim Jagielski                 RES_CHRATR_CJK_LANGUAGE + 1, RES_CHRATR_CTL_LANGUAGE - 1,
526*b1cdbd2cSJim Jagielski                 RES_CHRATR_CTL_LANGUAGE + 1, RES_CHRATR_END-1,
527*b1cdbd2cSJim Jagielski                 RES_PARATR_BEGIN, RES_PARATR_END-1,
528*b1cdbd2cSJim Jagielski                 RES_TXTATR_INETFMT, RES_TXTATR_INETFMT,
529*b1cdbd2cSJim Jagielski                 RES_TXTATR_CHARFMT, RES_TXTATR_CHARFMT,
530*b1cdbd2cSJim Jagielski                 RES_TXTATR_CJK_RUBY, RES_TXTATR_CJK_RUBY,
531*b1cdbd2cSJim Jagielski                 RES_TXTATR_UNKNOWN_CONTAINER, RES_TXTATR_UNKNOWN_CONTAINER,
532*b1cdbd2cSJim Jagielski                 RES_UNKNOWNATR_BEGIN, RES_UNKNOWNATR_END-1,
533*b1cdbd2cSJim Jagielski                 0
534*b1cdbd2cSJim Jagielski             };
535*b1cdbd2cSJim Jagielski             sal_uInt16 __FAR_DATA *pUShorts = aResetableSetRange;
536*b1cdbd2cSJim Jagielski 			while (*pUShorts)
537*b1cdbd2cSJim Jagielski 			{
538*b1cdbd2cSJim Jagielski 				sal_uInt16 nL = pUShorts[1] - pUShorts[0] + 1;
539*b1cdbd2cSJim Jagielski 				sal_uInt16 nE = pUShorts[0];
540*b1cdbd2cSJim Jagielski 				for (sal_uInt16 i = 0; i < nL; ++i)
541*b1cdbd2cSJim Jagielski 					aAttribs.Insert( nE++ );
542*b1cdbd2cSJim Jagielski 				pUShorts += 2;
543*b1cdbd2cSJim Jagielski 			}
544*b1cdbd2cSJim Jagielski 
545*b1cdbd2cSJim Jagielski 			rWrtSh.ResetAttr( &aAttribs );
546*b1cdbd2cSJim Jagielski 			rReq.Done();
547*b1cdbd2cSJim Jagielski 			break;
548*b1cdbd2cSJim Jagielski 		}
549*b1cdbd2cSJim Jagielski 		case FN_INSERT_BREAK_DLG:
550*b1cdbd2cSJim Jagielski 		{
551*b1cdbd2cSJim Jagielski             sal_uInt16 nKind=0, nPageNumber=0;
552*b1cdbd2cSJim Jagielski             String aTemplateName;
553*b1cdbd2cSJim Jagielski             if ( pItem )
554*b1cdbd2cSJim Jagielski             {
555*b1cdbd2cSJim Jagielski                 nKind = ((SfxInt16Item*)pItem)->GetValue();
556*b1cdbd2cSJim Jagielski                 SFX_REQUEST_ARG( rReq, pTemplate, SfxStringItem, FN_PARAM_1 , sal_False );
557*b1cdbd2cSJim Jagielski                 SFX_REQUEST_ARG( rReq, pNumber, SfxUInt16Item, FN_PARAM_2 , sal_False );
558*b1cdbd2cSJim Jagielski                 if ( pTemplate )
559*b1cdbd2cSJim Jagielski                     aTemplateName = pTemplate->GetValue();
560*b1cdbd2cSJim Jagielski                 if ( pNumber )
561*b1cdbd2cSJim Jagielski                     nPageNumber = pNumber->GetValue();
562*b1cdbd2cSJim Jagielski             }
563*b1cdbd2cSJim Jagielski             else
564*b1cdbd2cSJim Jagielski             {
565*b1cdbd2cSJim Jagielski                 SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
566*b1cdbd2cSJim Jagielski                 DBG_ASSERT(pFact, "SwAbstractDialogFactory fail!");
567*b1cdbd2cSJim Jagielski 
568*b1cdbd2cSJim Jagielski                 AbstractSwBreakDlg* pDlg = pFact->CreateSwBreakDlg( GetView().GetWindow(), rWrtSh, DLG_BREAK );
569*b1cdbd2cSJim Jagielski                 DBG_ASSERT(pDlg, "Dialogdiet fail!");
570*b1cdbd2cSJim Jagielski                 if ( pDlg->Execute() == RET_OK )
571*b1cdbd2cSJim Jagielski                 {
572*b1cdbd2cSJim Jagielski                     nKind = pDlg->GetKind();
573*b1cdbd2cSJim Jagielski                     aTemplateName = pDlg->GetTemplateName();
574*b1cdbd2cSJim Jagielski                     nPageNumber = pDlg->GetPageNumber();
575*b1cdbd2cSJim Jagielski                     rReq.AppendItem( SfxInt16Item( FN_INSERT_BREAK_DLG, nKind ) );
576*b1cdbd2cSJim Jagielski                     rReq.AppendItem( SfxUInt16Item( FN_PARAM_2, nPageNumber ) );
577*b1cdbd2cSJim Jagielski                     rReq.AppendItem( SfxStringItem( FN_PARAM_1, aTemplateName ) );
578*b1cdbd2cSJim Jagielski                     rReq.Done();
579*b1cdbd2cSJim Jagielski                 }
580*b1cdbd2cSJim Jagielski                 else
581*b1cdbd2cSJim Jagielski                     rReq.Ignore();
582*b1cdbd2cSJim Jagielski                 delete pDlg;
583*b1cdbd2cSJim Jagielski             }
584*b1cdbd2cSJim Jagielski 
585*b1cdbd2cSJim Jagielski             switch ( nKind )
586*b1cdbd2cSJim Jagielski             {
587*b1cdbd2cSJim Jagielski                 case 1 :
588*b1cdbd2cSJim Jagielski                     rWrtSh.InsertLineBreak(); break;
589*b1cdbd2cSJim Jagielski                 case 2 :
590*b1cdbd2cSJim Jagielski                     rWrtSh.InsertColumnBreak(); break;
591*b1cdbd2cSJim Jagielski                 case 3 :
592*b1cdbd2cSJim Jagielski                 {
593*b1cdbd2cSJim Jagielski                     rWrtSh.StartAllAction();
594*b1cdbd2cSJim Jagielski                     if( aTemplateName.Len() )
595*b1cdbd2cSJim Jagielski                         rWrtSh.InsertPageBreak( &aTemplateName, nPageNumber );
596*b1cdbd2cSJim Jagielski                     else
597*b1cdbd2cSJim Jagielski                         rWrtSh.InsertPageBreak();
598*b1cdbd2cSJim Jagielski                     rWrtSh.EndAllAction();
599*b1cdbd2cSJim Jagielski                 }
600*b1cdbd2cSJim Jagielski             }
601*b1cdbd2cSJim Jagielski 
602*b1cdbd2cSJim Jagielski 			break;
603*b1cdbd2cSJim Jagielski 		}
604*b1cdbd2cSJim Jagielski 		case FN_INSERT_BOOKMARK:
605*b1cdbd2cSJim Jagielski 		{
606*b1cdbd2cSJim Jagielski             if ( pItem )
607*b1cdbd2cSJim Jagielski             {
608*b1cdbd2cSJim Jagielski                 ::rtl::OUString sName = ((SfxStringItem*)pItem)->GetValue();
609*b1cdbd2cSJim Jagielski                 rWrtSh.SetBookmark( KeyCode(), sName, aEmptyStr );
610*b1cdbd2cSJim Jagielski             }
611*b1cdbd2cSJim Jagielski             else
612*b1cdbd2cSJim Jagielski             {
613*b1cdbd2cSJim Jagielski                 SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
614*b1cdbd2cSJim Jagielski                 DBG_ASSERT(pFact, "SwAbstractDialogFactory fail!");
615*b1cdbd2cSJim Jagielski 
616*b1cdbd2cSJim Jagielski                 VclAbstractDialog* pDlg = pFact->CreateSwInsertBookmarkDlg( GetView().GetWindow(), rWrtSh, rReq, DLG_INSERT_BOOKMARK );
617*b1cdbd2cSJim Jagielski                 DBG_ASSERT(pDlg, "Dialogdiet fail!");
618*b1cdbd2cSJim Jagielski 				pDlg->Execute();
619*b1cdbd2cSJim Jagielski                 delete pDlg;
620*b1cdbd2cSJim Jagielski             }
621*b1cdbd2cSJim Jagielski 
622*b1cdbd2cSJim Jagielski             break;
623*b1cdbd2cSJim Jagielski 		}
624*b1cdbd2cSJim Jagielski         case FN_DELETE_BOOKMARK:
625*b1cdbd2cSJim Jagielski         {
626*b1cdbd2cSJim Jagielski             if ( pItem )
627*b1cdbd2cSJim Jagielski             {
628*b1cdbd2cSJim Jagielski                 IDocumentMarkAccess* const pMarkAccess = rWrtSh.getIDocumentMarkAccess();
629*b1cdbd2cSJim Jagielski                 pMarkAccess->deleteMark( pMarkAccess->findMark(((SfxStringItem*)pItem)->GetValue()) );
630*b1cdbd2cSJim Jagielski             }
631*b1cdbd2cSJim Jagielski             break;
632*b1cdbd2cSJim Jagielski         }
633*b1cdbd2cSJim Jagielski 		case FN_AUTOFORMAT_REDLINE_APPLY:
634*b1cdbd2cSJim Jagielski 		{
635*b1cdbd2cSJim Jagielski 			SvxSwAutoFmtFlags aFlags(SvxAutoCorrCfg::Get()->GetAutoCorrect()->GetSwFlags());
636*b1cdbd2cSJim Jagielski 			// das muss fuer die Nachbearbeitung immer sal_False sein
637*b1cdbd2cSJim Jagielski 			aFlags.bAFmtByInput = sal_False;
638*b1cdbd2cSJim Jagielski 			aFlags.bWithRedlining = sal_True;
639*b1cdbd2cSJim Jagielski 			rWrtSh.AutoFormat( &aFlags );
640*b1cdbd2cSJim Jagielski 			aFlags.bWithRedlining = sal_False;
641*b1cdbd2cSJim Jagielski 
642*b1cdbd2cSJim Jagielski 			SfxViewFrame* pVFrame = GetView().GetViewFrame();
643*b1cdbd2cSJim Jagielski 			if (pVFrame->HasChildWindow(FN_REDLINE_ACCEPT))
644*b1cdbd2cSJim Jagielski 				pVFrame->ToggleChildWindow(FN_REDLINE_ACCEPT);
645*b1cdbd2cSJim Jagielski 
646*b1cdbd2cSJim Jagielski             SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
647*b1cdbd2cSJim Jagielski             DBG_ASSERT(pFact, "SwAbstractDialogFactory fail!");
648*b1cdbd2cSJim Jagielski 
649*b1cdbd2cSJim Jagielski             AbstractSwModalRedlineAcceptDlg* pDlg = pFact->CreateSwModalRedlineAcceptDlg( &GetView().GetEditWin(), DLG_MOD_REDLINE_ACCEPT );
650*b1cdbd2cSJim Jagielski             DBG_ASSERT(pDlg, "Dialogdiet fail!");
651*b1cdbd2cSJim Jagielski 
652*b1cdbd2cSJim Jagielski 			switch (lcl_AskRedlineMode(&GetView().GetEditWin()))
653*b1cdbd2cSJim Jagielski 			{
654*b1cdbd2cSJim Jagielski 				case RET_OK:
655*b1cdbd2cSJim Jagielski                 {
656*b1cdbd2cSJim Jagielski                     pDlg->AcceptAll(sal_True);
657*b1cdbd2cSJim Jagielski                     SfxRequest aReq( pVFrame, FN_AUTOFORMAT_APPLY );
658*b1cdbd2cSJim Jagielski                     aReq.Done();
659*b1cdbd2cSJim Jagielski                     rReq.Ignore();
660*b1cdbd2cSJim Jagielski 					break;
661*b1cdbd2cSJim Jagielski                 }
662*b1cdbd2cSJim Jagielski 
663*b1cdbd2cSJim Jagielski 				case RET_CANCEL:
664*b1cdbd2cSJim Jagielski                     pDlg->AcceptAll(sal_False);
665*b1cdbd2cSJim Jagielski                     rReq.Ignore();
666*b1cdbd2cSJim Jagielski 					break;
667*b1cdbd2cSJim Jagielski 
668*b1cdbd2cSJim Jagielski 				case 2:
669*b1cdbd2cSJim Jagielski                     pDlg->Execute();
670*b1cdbd2cSJim Jagielski                     rReq.Done();
671*b1cdbd2cSJim Jagielski 					break;
672*b1cdbd2cSJim Jagielski 			}
673*b1cdbd2cSJim Jagielski             delete pDlg;
674*b1cdbd2cSJim Jagielski 		}
675*b1cdbd2cSJim Jagielski 		break;
676*b1cdbd2cSJim Jagielski 
677*b1cdbd2cSJim Jagielski 		case FN_AUTOFORMAT_APPLY:
678*b1cdbd2cSJim Jagielski 		{
679*b1cdbd2cSJim Jagielski 			SvxSwAutoFmtFlags aFlags(SvxAutoCorrCfg::Get()->GetAutoCorrect()->GetSwFlags());
680*b1cdbd2cSJim Jagielski 			// das muss fuer die Nachbearbeitung immer sal_False sein
681*b1cdbd2cSJim Jagielski 			aFlags.bAFmtByInput = sal_False;
682*b1cdbd2cSJim Jagielski 			rWrtSh.AutoFormat( &aFlags );
683*b1cdbd2cSJim Jagielski             rReq.Done();
684*b1cdbd2cSJim Jagielski 		}
685*b1cdbd2cSJim Jagielski 		break;
686*b1cdbd2cSJim Jagielski 		case FN_AUTOFORMAT_AUTO:
687*b1cdbd2cSJim Jagielski 		{
688*b1cdbd2cSJim Jagielski 			SvxAutoCorrCfg*	pACfg = SvxAutoCorrCfg::Get();
689*b1cdbd2cSJim Jagielski             sal_Bool bSet = pItem ? ((const SfxBoolItem*)pItem)->GetValue() : !pACfg->IsAutoFmtByInput();
690*b1cdbd2cSJim Jagielski 			if( bSet != pACfg->IsAutoFmtByInput() )
691*b1cdbd2cSJim Jagielski             {
692*b1cdbd2cSJim Jagielski 				pACfg->SetAutoFmtByInput( bSet );
693*b1cdbd2cSJim Jagielski                 GetView().GetViewFrame()->GetBindings().Invalidate( nSlot );
694*b1cdbd2cSJim Jagielski                 if ( !pItem )
695*b1cdbd2cSJim Jagielski                     rReq.AppendItem( SfxBoolItem( GetPool().GetWhich(nSlot), bSet ) );
696*b1cdbd2cSJim Jagielski                 rReq.Done();
697*b1cdbd2cSJim Jagielski             }
698*b1cdbd2cSJim Jagielski 		}
699*b1cdbd2cSJim Jagielski 		break;
700*b1cdbd2cSJim Jagielski 		case FN_AUTO_CORRECT:
701*b1cdbd2cSJim Jagielski 		{
702*b1cdbd2cSJim Jagielski 			// erstmal auf Blank defaulten
703*b1cdbd2cSJim Jagielski 			sal_Unicode cChar = ' ';
704*b1cdbd2cSJim Jagielski 			rWrtSh.AutoCorrect( *SvxAutoCorrCfg::Get()->GetAutoCorrect(), cChar );
705*b1cdbd2cSJim Jagielski 			rReq.Done();
706*b1cdbd2cSJim Jagielski 		}
707*b1cdbd2cSJim Jagielski 		break;
708*b1cdbd2cSJim Jagielski         case FN_TABLE_SORT_DIALOG:
709*b1cdbd2cSJim Jagielski 		case FN_SORTING_DLG:
710*b1cdbd2cSJim Jagielski 		{
711*b1cdbd2cSJim Jagielski             SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
712*b1cdbd2cSJim Jagielski             DBG_ASSERT(pFact, "SwAbstractDialogFactory fail!");
713*b1cdbd2cSJim Jagielski 
714*b1cdbd2cSJim Jagielski             VclAbstractDialog* pDlg = pFact->CreateVclAbstractDialog( GetView().GetWindow(), rWrtSh, DLG_SORTING );
715*b1cdbd2cSJim Jagielski             DBG_ASSERT(pDlg, "Dialogdiet fail!");
716*b1cdbd2cSJim Jagielski 			pDlg->Execute();
717*b1cdbd2cSJim Jagielski 			delete pDlg;
718*b1cdbd2cSJim Jagielski 			rReq.Done();
719*b1cdbd2cSJim Jagielski 		}
720*b1cdbd2cSJim Jagielski 		break;
721*b1cdbd2cSJim Jagielski 		case FN_NUMBERING_OUTLINE_DLG:
722*b1cdbd2cSJim Jagielski 		{
723*b1cdbd2cSJim Jagielski 			SfxItemSet aTmp(GetPool(), FN_PARAM_1, FN_PARAM_1);
724*b1cdbd2cSJim Jagielski 			SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
725*b1cdbd2cSJim Jagielski             DBG_ASSERT(pFact, "Dialogdiet fail!");
726*b1cdbd2cSJim Jagielski             SfxAbstractTabDialog* pDlg = pFact->CreateSwTabDialog( DLG_TAB_OUTLINE,
727*b1cdbd2cSJim Jagielski 														GetView().GetWindow(), &aTmp, rWrtSh);
728*b1cdbd2cSJim Jagielski             DBG_ASSERT(pDlg, "Dialogdiet fail!");
729*b1cdbd2cSJim Jagielski 			pDlg->Execute();
730*b1cdbd2cSJim Jagielski 			delete pDlg;
731*b1cdbd2cSJim Jagielski 			rReq.Done();
732*b1cdbd2cSJim Jagielski 		}
733*b1cdbd2cSJim Jagielski 			break;
734*b1cdbd2cSJim Jagielski 		case FN_CALCULATE:
735*b1cdbd2cSJim Jagielski 			{
736*b1cdbd2cSJim Jagielski 				SwTransferable* pTransfer = new SwTransferable( rWrtSh );
737*b1cdbd2cSJim Jagielski /*??*/          uno::Reference<
738*b1cdbd2cSJim Jagielski                     datatransfer::XTransferable > xRef(
739*b1cdbd2cSJim Jagielski 													pTransfer );
740*b1cdbd2cSJim Jagielski 				pTransfer->CalculateAndCopy();
741*b1cdbd2cSJim Jagielski 				rReq.Done();
742*b1cdbd2cSJim Jagielski 			}
743*b1cdbd2cSJim Jagielski 			break;
744*b1cdbd2cSJim Jagielski 		case FN_GOTO_REFERENCE:
745*b1cdbd2cSJim Jagielski 		{
746*b1cdbd2cSJim Jagielski 			SwField *pFld = rWrtSh.GetCurFld();
747*b1cdbd2cSJim Jagielski 			if(pFld && pFld->GetTypeId() == TYP_GETREFFLD)
748*b1cdbd2cSJim Jagielski 			{
749*b1cdbd2cSJim Jagielski 				rWrtSh.StartAllAction();
750*b1cdbd2cSJim Jagielski 				rWrtSh.SwCrsrShell::GotoRefMark( ((SwGetRefField*)pFld)->GetSetRefName(),
751*b1cdbd2cSJim Jagielski 									((SwGetRefField*)pFld)->GetSubType(),
752*b1cdbd2cSJim Jagielski 									((SwGetRefField*)pFld)->GetSeqNo() );
753*b1cdbd2cSJim Jagielski 				rWrtSh.EndAllAction();
754*b1cdbd2cSJim Jagielski 				rReq.Done();
755*b1cdbd2cSJim Jagielski 			}
756*b1cdbd2cSJim Jagielski 		}
757*b1cdbd2cSJim Jagielski 			break;
758*b1cdbd2cSJim Jagielski 		case FN_EDIT_FORMULA:
759*b1cdbd2cSJim Jagielski 		{
760*b1cdbd2cSJim Jagielski             const sal_uInt16 nId = SwInputChild::GetChildWindowId();
761*b1cdbd2cSJim Jagielski             SfxViewFrame* pVFrame = GetView().GetViewFrame();
762*b1cdbd2cSJim Jagielski             if(pItem)
763*b1cdbd2cSJim Jagielski             {
764*b1cdbd2cSJim Jagielski                 //if the ChildWindow is active it has to be removed
765*b1cdbd2cSJim Jagielski                 if( pVFrame->HasChildWindow( nId ) )
766*b1cdbd2cSJim Jagielski                 {
767*b1cdbd2cSJim Jagielski                     pVFrame->ToggleChildWindow( nId );
768*b1cdbd2cSJim Jagielski                     pVFrame->GetBindings().InvalidateAll( sal_True );
769*b1cdbd2cSJim Jagielski                 }
770*b1cdbd2cSJim Jagielski 
771*b1cdbd2cSJim Jagielski                 String sFormula(((const SfxStringItem*)pItem)->GetValue());
772*b1cdbd2cSJim Jagielski                 SwFldMgr aFldMgr;
773*b1cdbd2cSJim Jagielski                 rWrtSh.StartAllAction();
774*b1cdbd2cSJim Jagielski                 sal_Bool bDelSel;
775*b1cdbd2cSJim Jagielski                 if( 0 != (bDelSel = rWrtSh.HasSelection()) )
776*b1cdbd2cSJim Jagielski                 {
777*b1cdbd2cSJim Jagielski                     rWrtSh.StartUndo( UNDO_START );
778*b1cdbd2cSJim Jagielski                     rWrtSh.DelRight();
779*b1cdbd2cSJim Jagielski                 }
780*b1cdbd2cSJim Jagielski                 else
781*b1cdbd2cSJim Jagielski                 {
782*b1cdbd2cSJim Jagielski                     rWrtSh.EnterStdMode();
783*b1cdbd2cSJim Jagielski                 }
784*b1cdbd2cSJim Jagielski 
785*b1cdbd2cSJim Jagielski                 if( !bDelSel && aFldMgr.GetCurFld() && TYP_FORMELFLD == aFldMgr.GetCurTypeId() )
786*b1cdbd2cSJim Jagielski                     aFldMgr.UpdateCurFld( aFldMgr.GetCurFld()->GetFormat(), aEmptyStr, sFormula );
787*b1cdbd2cSJim Jagielski                 else if( sFormula.Len() )
788*b1cdbd2cSJim Jagielski                 {
789*b1cdbd2cSJim Jagielski                     if( rWrtSh.IsCrsrInTbl() )
790*b1cdbd2cSJim Jagielski                     {
791*b1cdbd2cSJim Jagielski                         SfxItemSet aSet( rWrtSh.GetAttrPool(), RES_BOXATR_FORMULA, RES_BOXATR_FORMULA );
792*b1cdbd2cSJim Jagielski                         aSet.Put( SwTblBoxFormula( sFormula ));
793*b1cdbd2cSJim Jagielski                         rWrtSh.SetTblBoxFormulaAttrs( aSet );
794*b1cdbd2cSJim Jagielski                         rWrtSh.UpdateTable();
795*b1cdbd2cSJim Jagielski                     }
796*b1cdbd2cSJim Jagielski                     else
797*b1cdbd2cSJim Jagielski                     {
798*b1cdbd2cSJim Jagielski                         SvNumberFormatter* pFormatter = rWrtSh.GetNumberFormatter();
799*b1cdbd2cSJim Jagielski                         sal_uLong nSysNumFmt = pFormatter->GetFormatIndex( NF_NUMBER_STANDARD, LANGUAGE_SYSTEM);
800*b1cdbd2cSJim Jagielski                         SwInsertFld_Data aData(TYP_FORMELFLD, nsSwGetSetExpType::GSE_FORMULA, aEmptyStr, sFormula, nSysNumFmt);
801*b1cdbd2cSJim Jagielski                         aFldMgr.InsertFld(aData);
802*b1cdbd2cSJim Jagielski                     }
803*b1cdbd2cSJim Jagielski                 }
804*b1cdbd2cSJim Jagielski 
805*b1cdbd2cSJim Jagielski                 if( bDelSel )
806*b1cdbd2cSJim Jagielski                     rWrtSh.EndUndo( UNDO_END );
807*b1cdbd2cSJim Jagielski                 rWrtSh.EndAllAction();
808*b1cdbd2cSJim Jagielski                 rReq.Done();
809*b1cdbd2cSJim Jagielski             }
810*b1cdbd2cSJim Jagielski             else
811*b1cdbd2cSJim Jagielski             {
812*b1cdbd2cSJim Jagielski                 rWrtSh.EndAllTblBoxEdit();
813*b1cdbd2cSJim Jagielski                 pVFrame->ToggleChildWindow( nId );
814*b1cdbd2cSJim Jagielski                 if( !pVFrame->HasChildWindow( nId ) )
815*b1cdbd2cSJim Jagielski                     pVFrame->GetBindings().InvalidateAll( sal_True );
816*b1cdbd2cSJim Jagielski                 rReq.Ignore();
817*b1cdbd2cSJim Jagielski             }
818*b1cdbd2cSJim Jagielski 		}
819*b1cdbd2cSJim Jagielski 
820*b1cdbd2cSJim Jagielski 		break;
821*b1cdbd2cSJim Jagielski 		case FN_TABLE_UNSET_READ_ONLY:
822*b1cdbd2cSJim Jagielski 		{
823*b1cdbd2cSJim Jagielski 			rWrtSh.UnProtectTbls();
824*b1cdbd2cSJim Jagielski 		}
825*b1cdbd2cSJim Jagielski 		break;
826*b1cdbd2cSJim Jagielski 		case FN_EDIT_HYPERLINK:
827*b1cdbd2cSJim Jagielski 			GetView().GetViewFrame()->ToggleChildWindow(SID_HYPERLINK_DIALOG);
828*b1cdbd2cSJim Jagielski 		break;
829*b1cdbd2cSJim Jagielski         case FN_REMOVE_HYPERLINK:
830*b1cdbd2cSJim Jagielski         {
831*b1cdbd2cSJim Jagielski             sal_Bool bSel = rWrtSh.HasSelection();
832*b1cdbd2cSJim Jagielski             if(!bSel)
833*b1cdbd2cSJim Jagielski             {
834*b1cdbd2cSJim Jagielski                 rWrtSh.StartAction();
835*b1cdbd2cSJim Jagielski                 rWrtSh.Push();
836*b1cdbd2cSJim Jagielski                 if(!rWrtSh.SelectTxtAttr( RES_TXTATR_INETFMT ))
837*b1cdbd2cSJim Jagielski                     rWrtSh.SelWrd();
838*b1cdbd2cSJim Jagielski             }
839*b1cdbd2cSJim Jagielski             //now remove the attribute
840*b1cdbd2cSJim Jagielski             SvUShortsSort aAttribs;
841*b1cdbd2cSJim Jagielski             aAttribs.Insert( RES_TXTATR_INETFMT );
842*b1cdbd2cSJim Jagielski             rWrtSh.ResetAttr( &aAttribs );
843*b1cdbd2cSJim Jagielski             if(!bSel)
844*b1cdbd2cSJim Jagielski             {
845*b1cdbd2cSJim Jagielski                 rWrtSh.Pop(sal_False);
846*b1cdbd2cSJim Jagielski                 rWrtSh.EndAction();
847*b1cdbd2cSJim Jagielski             }
848*b1cdbd2cSJim Jagielski         }
849*b1cdbd2cSJim Jagielski         break;
850*b1cdbd2cSJim Jagielski         case SID_ATTR_BRUSH_CHAR :
851*b1cdbd2cSJim Jagielski         case SID_ATTR_CHAR_SCALEWIDTH :
852*b1cdbd2cSJim Jagielski         case SID_ATTR_CHAR_ROTATED :
853*b1cdbd2cSJim Jagielski         case FN_TXTATR_INET :
854*b1cdbd2cSJim Jagielski 		case FN_INSERT_HYPERLINK:
855*b1cdbd2cSJim Jagielski         {
856*b1cdbd2cSJim Jagielski             sal_uInt16 nWhich = GetPool().GetWhich( nSlot );
857*b1cdbd2cSJim Jagielski             if ( pArgs && pArgs->GetItemState( nWhich ) == SFX_ITEM_SET )
858*b1cdbd2cSJim Jagielski                 bUseDialog = sal_False;
859*b1cdbd2cSJim Jagielski             // intentionally no break
860*b1cdbd2cSJim Jagielski         }
861*b1cdbd2cSJim Jagielski 		case SID_CHAR_DLG:
862*b1cdbd2cSJim Jagielski 		case SID_CHAR_DLG_EFFECT:
863*b1cdbd2cSJim Jagielski 		{
864*b1cdbd2cSJim Jagielski             lcl_CharDialog( rWrtSh, bUseDialog, nSlot, pArgs, &rReq );
865*b1cdbd2cSJim Jagielski 		}
866*b1cdbd2cSJim Jagielski         break;
867*b1cdbd2cSJim Jagielski         case SID_CHAR_DLG_FOR_PARAGRAPH:
868*b1cdbd2cSJim Jagielski         {
869*b1cdbd2cSJim Jagielski 			rWrtSh.Push();			//save current cursor
870*b1cdbd2cSJim Jagielski             SwLangHelper::SelectCurrentPara( rWrtSh );
871*b1cdbd2cSJim Jagielski             lcl_CharDialog( rWrtSh, bUseDialog, nSlot, pArgs, &rReq );
872*b1cdbd2cSJim Jagielski 			rWrtSh.Pop( sal_False );	//restore old cursor
873*b1cdbd2cSJim Jagielski         }
874*b1cdbd2cSJim Jagielski 		break;
875*b1cdbd2cSJim Jagielski         case SID_ATTR_LRSPACE :
876*b1cdbd2cSJim Jagielski 		case SID_ATTR_ULSPACE :
877*b1cdbd2cSJim Jagielski         case SID_ATTR_BRUSH :
878*b1cdbd2cSJim Jagielski 		case SID_PARA_VERTALIGN :
879*b1cdbd2cSJim Jagielski         case SID_ATTR_PARA_NUMRULE :
880*b1cdbd2cSJim Jagielski 		case SID_ATTR_PARA_REGISTER :
881*b1cdbd2cSJim Jagielski         case SID_ATTR_PARA_PAGENUM :
882*b1cdbd2cSJim Jagielski         case FN_FORMAT_LINENUMBER :
883*b1cdbd2cSJim Jagielski         case FN_NUMBER_NEWSTART :
884*b1cdbd2cSJim Jagielski         case FN_NUMBER_NEWSTART_AT :
885*b1cdbd2cSJim Jagielski         case FN_FORMAT_DROPCAPS :
886*b1cdbd2cSJim Jagielski         case FN_DROP_TEXT:
887*b1cdbd2cSJim Jagielski         case SID_ATTR_PARA_LRSPACE:
888*b1cdbd2cSJim Jagielski         {
889*b1cdbd2cSJim Jagielski             sal_uInt16 nWhich = GetPool().GetWhich( nSlot );
890*b1cdbd2cSJim Jagielski             if ( pArgs && pArgs->GetItemState( nWhich ) == SFX_ITEM_SET )
891*b1cdbd2cSJim Jagielski                 bUseDialog = sal_False;
892*b1cdbd2cSJim Jagielski             // intentionally no break
893*b1cdbd2cSJim Jagielski 
894*b1cdbd2cSJim Jagielski         }
895*b1cdbd2cSJim Jagielski 		case SID_PARA_DLG:
896*b1cdbd2cSJim Jagielski 		{
897*b1cdbd2cSJim Jagielski             FieldUnit eMetric = ::GetDfltMetric(0 != PTR_CAST(SwWebView, &GetView()));
898*b1cdbd2cSJim Jagielski             SW_MOD()->PutItem(SfxUInt16Item(SID_ATTR_METRIC, static_cast< sal_uInt16 >(eMetric)));
899*b1cdbd2cSJim Jagielski             SfxItemSet aCoreSet( GetPool(),
900*b1cdbd2cSJim Jagielski                             RES_PARATR_BEGIN,           RES_PARATR_END - 1,
901*b1cdbd2cSJim Jagielski                             // --> OD 2008-02-25 #refactorlists#
902*b1cdbd2cSJim Jagielski                             RES_PARATR_LIST_BEGIN,      RES_PARATR_LIST_END - 1,
903*b1cdbd2cSJim Jagielski                             // <--
904*b1cdbd2cSJim Jagielski                             RES_FRMATR_BEGIN,           RES_FRMATR_END - 1,
905*b1cdbd2cSJim Jagielski                             SID_ATTR_TABSTOP_POS,       SID_ATTR_TABSTOP_POS,
906*b1cdbd2cSJim Jagielski                             SID_ATTR_TABSTOP_DEFAULTS,  SID_ATTR_TABSTOP_DEFAULTS,
907*b1cdbd2cSJim Jagielski                             SID_ATTR_TABSTOP_OFFSET,    SID_ATTR_TABSTOP_OFFSET,
908*b1cdbd2cSJim Jagielski                             SID_ATTR_BORDER_INNER,      SID_ATTR_BORDER_INNER,
909*b1cdbd2cSJim Jagielski                             SID_ATTR_PARA_MODEL,        SID_ATTR_PARA_KEEP,
910*b1cdbd2cSJim Jagielski                             SID_ATTR_PARA_PAGENUM,      SID_ATTR_PARA_PAGENUM,
911*b1cdbd2cSJim Jagielski                             SID_HTML_MODE,              SID_HTML_MODE,
912*b1cdbd2cSJim Jagielski                             FN_PARAM_1,                 FN_PARAM_1,
913*b1cdbd2cSJim Jagielski                             FN_NUMBER_NEWSTART,         FN_NUMBER_NEWSTART_AT,
914*b1cdbd2cSJim Jagielski                             FN_DROP_TEXT,               FN_DROP_CHAR_STYLE_NAME,
915*b1cdbd2cSJim Jagielski                             0);
916*b1cdbd2cSJim Jagielski             // --> OD 2008-01-16 #newlistlevelattrs#
917*b1cdbd2cSJim Jagielski             // get also the list level indent values merged as LR-SPACE item, if needed.
918*b1cdbd2cSJim Jagielski             rWrtSh.GetCurAttr( aCoreSet, true );
919*b1cdbd2cSJim Jagielski             // <--
920*b1cdbd2cSJim Jagielski             aCoreSet.Put(SfxUInt16Item(SID_HTML_MODE,
921*b1cdbd2cSJim Jagielski                             ::GetHtmlMode(GetView().GetDocShell())));
922*b1cdbd2cSJim Jagielski 
923*b1cdbd2cSJim Jagielski             // Tabulatoren, DefaultTabs ins ItemSet Stecken
924*b1cdbd2cSJim Jagielski             const SvxTabStopItem& rDefTabs = (const SvxTabStopItem&)
925*b1cdbd2cSJim Jagielski                             GetPool().GetDefaultItem(RES_PARATR_TABSTOP);
926*b1cdbd2cSJim Jagielski 
927*b1cdbd2cSJim Jagielski             sal_uInt16 nDefDist = ::GetTabDist( rDefTabs );
928*b1cdbd2cSJim Jagielski             SfxUInt16Item aDefDistItem( SID_ATTR_TABSTOP_DEFAULTS, nDefDist );
929*b1cdbd2cSJim Jagielski             aCoreSet.Put( aDefDistItem );
930*b1cdbd2cSJim Jagielski 
931*b1cdbd2cSJim Jagielski             // Aktueller Tab
932*b1cdbd2cSJim Jagielski             SfxUInt16Item aTabPos( SID_ATTR_TABSTOP_POS, 0 );
933*b1cdbd2cSJim Jagielski             aCoreSet.Put( aTabPos );
934*b1cdbd2cSJim Jagielski 
935*b1cdbd2cSJim Jagielski             // linker Rand als Offset
936*b1cdbd2cSJim Jagielski             //#i24363# tab stops relative to indent
937*b1cdbd2cSJim Jagielski             const long nOff = rWrtSh.getIDocumentSettingAccess()->get(IDocumentSettingAccess::TABS_RELATIVE_TO_INDENT) ?
938*b1cdbd2cSJim Jagielski                 ((SvxLRSpaceItem&)aCoreSet.Get( RES_LR_SPACE )).GetTxtLeft() : 0;
939*b1cdbd2cSJim Jagielski             SfxInt32Item aOff( SID_ATTR_TABSTOP_OFFSET, nOff );
940*b1cdbd2cSJim Jagielski             aCoreSet.Put( aOff );
941*b1cdbd2cSJim Jagielski 
942*b1cdbd2cSJim Jagielski             // BoxInfo setzen
943*b1cdbd2cSJim Jagielski             ::PrepareBoxInfo( aCoreSet, rWrtSh );
944*b1cdbd2cSJim Jagielski 
945*b1cdbd2cSJim Jagielski             //aktuelles Seitenformat
946*b1cdbd2cSJim Jagielski             ::SwToSfxPageDescAttr( aCoreSet );
947*b1cdbd2cSJim Jagielski 
948*b1cdbd2cSJim Jagielski             sal_uInt16 nDefPage = 0;
949*b1cdbd2cSJim Jagielski             if( pItem )
950*b1cdbd2cSJim Jagielski                 nDefPage = ((SfxUInt16Item *)pItem)->GetValue();
951*b1cdbd2cSJim Jagielski 
952*b1cdbd2cSJim Jagielski             // Numerierungseigenschaften
953*b1cdbd2cSJim Jagielski             if(rWrtSh.GetCurNumRule())
954*b1cdbd2cSJim Jagielski             {
955*b1cdbd2cSJim Jagielski                 SfxBoolItem aStart( FN_NUMBER_NEWSTART, rWrtSh.IsNumRuleStart() );
956*b1cdbd2cSJim Jagielski                 aCoreSet.Put(aStart);
957*b1cdbd2cSJim Jagielski                 // --> OD 2008-02-29 #refactorlists#
958*b1cdbd2cSJim Jagielski //                SfxUInt16Item aStartAt(FN_NUMBER_NEWSTART_AT,
959*b1cdbd2cSJim Jagielski //                                                rWrtSh.IsNodeNumStart());
960*b1cdbd2cSJim Jagielski                 SfxUInt16Item aStartAt( FN_NUMBER_NEWSTART_AT,
961*b1cdbd2cSJim Jagielski                                         rWrtSh.GetNodeNumStart() );
962*b1cdbd2cSJim Jagielski                 // <--
963*b1cdbd2cSJim Jagielski                 aCoreSet.Put(aStartAt);
964*b1cdbd2cSJim Jagielski             }
965*b1cdbd2cSJim Jagielski             SfxAbstractTabDialog* pDlg = NULL;
966*b1cdbd2cSJim Jagielski 
967*b1cdbd2cSJim Jagielski             if ( bUseDialog && GetActiveView() )
968*b1cdbd2cSJim Jagielski 			{
969*b1cdbd2cSJim Jagielski                 SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
970*b1cdbd2cSJim Jagielski                 DBG_ASSERT(pFact, "SwAbstractDialogFactory fail!");
971*b1cdbd2cSJim Jagielski 
972*b1cdbd2cSJim Jagielski                 pDlg = pFact->CreateSwParaDlg( GetView().GetWindow(),GetView(), aCoreSet,DLG_STD, DLG_PARA,NULL, sal_False, nDefPage );
973*b1cdbd2cSJim Jagielski                 DBG_ASSERT(pDlg, "Dialogdiet fail!");
974*b1cdbd2cSJim Jagielski 			}
975*b1cdbd2cSJim Jagielski             SfxItemSet* pSet = NULL;
976*b1cdbd2cSJim Jagielski             if ( !bUseDialog )
977*b1cdbd2cSJim Jagielski             {
978*b1cdbd2cSJim Jagielski                 if ( nSlot == SID_ATTR_PARA_LRSPACE)
979*b1cdbd2cSJim Jagielski 		{
980*b1cdbd2cSJim Jagielski 			SvxLRSpaceItem aParaMargin((const SvxLRSpaceItem&)pArgs->Get(nSlot));
981*b1cdbd2cSJim Jagielski 			aParaMargin.SetWhich( RES_LR_SPACE);
982*b1cdbd2cSJim Jagielski 			aCoreSet.Put(aParaMargin);
983*b1cdbd2cSJim Jagielski 			pSet = &aCoreSet;
984*b1cdbd2cSJim Jagielski 
985*b1cdbd2cSJim Jagielski 		} else
986*b1cdbd2cSJim Jagielski                     pSet = (SfxItemSet*) pArgs;
987*b1cdbd2cSJim Jagielski 
988*b1cdbd2cSJim Jagielski             }
989*b1cdbd2cSJim Jagielski             else if ( NULL != pDlg && pDlg->Execute() == RET_OK )
990*b1cdbd2cSJim Jagielski             {
991*b1cdbd2cSJim Jagielski                 // Defaults evtl umsetzen
992*b1cdbd2cSJim Jagielski                 pSet = (SfxItemSet*)pDlg->GetOutputItemSet();
993*b1cdbd2cSJim Jagielski                 sal_uInt16 nNewDist;
994*b1cdbd2cSJim Jagielski                 if( SFX_ITEM_SET == pSet->GetItemState( SID_ATTR_TABSTOP_DEFAULTS, sal_False, &pItem ) &&
995*b1cdbd2cSJim Jagielski                     nDefDist != (nNewDist = ((SfxUInt16Item*)pItem)->GetValue()) )
996*b1cdbd2cSJim Jagielski                 {
997*b1cdbd2cSJim Jagielski                     SvxTabStopItem aDefTabs( 0, 0, SVX_TAB_ADJUST_DEFAULT, RES_PARATR_TABSTOP );
998*b1cdbd2cSJim Jagielski                     MakeDefTabs( nNewDist, aDefTabs );
999*b1cdbd2cSJim Jagielski                     rWrtSh.SetDefault( aDefTabs );
1000*b1cdbd2cSJim Jagielski                     pSet->ClearItem( SID_ATTR_TABSTOP_DEFAULTS );
1001*b1cdbd2cSJim Jagielski                 }
1002*b1cdbd2cSJim Jagielski 
1003*b1cdbd2cSJim Jagielski                 if ( SFX_ITEM_SET == pSet->GetItemState(FN_PARAM_1,sal_False,&pItem) )
1004*b1cdbd2cSJim Jagielski                 {
1005*b1cdbd2cSJim Jagielski                     pSet->Put(SfxStringItem(FN_DROP_TEXT, ((const SfxStringItem*)pItem)->GetValue()));
1006*b1cdbd2cSJim Jagielski                     pSet->ClearItem(FN_PARAM_1);
1007*b1cdbd2cSJim Jagielski                 }
1008*b1cdbd2cSJim Jagielski 
1009*b1cdbd2cSJim Jagielski                 if( SFX_ITEM_SET == pSet->GetItemState( RES_PARATR_DROP, sal_False, &pItem ))
1010*b1cdbd2cSJim Jagielski                 {
1011*b1cdbd2cSJim Jagielski                     String sCharStyleName;
1012*b1cdbd2cSJim Jagielski                     if(((const SwFmtDrop*)pItem)->GetCharFmt())
1013*b1cdbd2cSJim Jagielski                         sCharStyleName = ((const SwFmtDrop*)pItem)->GetCharFmt()->GetName();
1014*b1cdbd2cSJim Jagielski                     pSet->Put(SfxStringItem(FN_DROP_CHAR_STYLE_NAME, sCharStyleName));
1015*b1cdbd2cSJim Jagielski                 }
1016*b1cdbd2cSJim Jagielski             }
1017*b1cdbd2cSJim Jagielski 
1018*b1cdbd2cSJim Jagielski             if ( pSet )
1019*b1cdbd2cSJim Jagielski             {
1020*b1cdbd2cSJim Jagielski                 rReq.Done( *pSet );
1021*b1cdbd2cSJim Jagielski                 ::SfxToSwPageDescAttr( rWrtSh, *pSet );
1022*b1cdbd2cSJim Jagielski                 // --> OD 2006-12-06 #i56253#
1023*b1cdbd2cSJim Jagielski                 // enclose all undos.
1024*b1cdbd2cSJim Jagielski                 // Thus, check conditions, if actions will be performed.
1025*b1cdbd2cSJim Jagielski                 const bool bUndoNeeded( pSet->Count() ||
1026*b1cdbd2cSJim Jagielski                         SFX_ITEM_SET == pSet->GetItemState(FN_NUMBER_NEWSTART) ||
1027*b1cdbd2cSJim Jagielski                         SFX_ITEM_SET == pSet->GetItemState(FN_NUMBER_NEWSTART_AT) );
1028*b1cdbd2cSJim Jagielski                 if ( bUndoNeeded )
1029*b1cdbd2cSJim Jagielski                 {
1030*b1cdbd2cSJim Jagielski                     rWrtSh.StartUndo( UNDO_INSATTR );
1031*b1cdbd2cSJim Jagielski                 }
1032*b1cdbd2cSJim Jagielski                 // <--
1033*b1cdbd2cSJim Jagielski                 if( pSet->Count() )
1034*b1cdbd2cSJim Jagielski                 {
1035*b1cdbd2cSJim Jagielski                     rWrtSh.StartAction();
1036*b1cdbd2cSJim Jagielski //                    rWrtSh.StartUndo( UNDO_START );
1037*b1cdbd2cSJim Jagielski                     if ( SFX_ITEM_SET == pSet->GetItemState(FN_DROP_TEXT, sal_False, &pItem) )
1038*b1cdbd2cSJim Jagielski                     {
1039*b1cdbd2cSJim Jagielski                         if ( ((SfxStringItem*)pItem)->GetValue().Len() )
1040*b1cdbd2cSJim Jagielski                             rWrtSh.ReplaceDropTxt(((SfxStringItem*)pItem)->GetValue());
1041*b1cdbd2cSJim Jagielski                     }
1042*b1cdbd2cSJim Jagielski                     rWrtSh.SetAttrSet( *pSet );
1043*b1cdbd2cSJim Jagielski //                    rWrtSh.EndUndo( UNDO_END );
1044*b1cdbd2cSJim Jagielski                     rWrtSh.EndAction();
1045*b1cdbd2cSJim Jagielski                     SwTxtFmtColl* pColl = rWrtSh.GetCurTxtFmtColl();
1046*b1cdbd2cSJim Jagielski                     if(pColl && pColl->IsAutoUpdateFmt())
1047*b1cdbd2cSJim Jagielski                     {
1048*b1cdbd2cSJim Jagielski                         rWrtSh.AutoUpdatePara(pColl, *pSet);
1049*b1cdbd2cSJim Jagielski                     }
1050*b1cdbd2cSJim Jagielski                 }
1051*b1cdbd2cSJim Jagielski 
1052*b1cdbd2cSJim Jagielski                 if( SFX_ITEM_SET == pSet->GetItemState(FN_NUMBER_NEWSTART) )
1053*b1cdbd2cSJim Jagielski                 {
1054*b1cdbd2cSJim Jagielski                     //SetNumRuleStart(sal_True) restarts the numbering at the value
1055*b1cdbd2cSJim Jagielski                     //that is defined at the starting point of the numbering level
1056*b1cdbd2cSJim Jagielski                     //otherwise the SetNodeNumStart() value determines the start
1057*b1cdbd2cSJim Jagielski                     //if it's set to something different than (sal_uInt16)0xFFFF
1058*b1cdbd2cSJim Jagielski 
1059*b1cdbd2cSJim Jagielski                     sal_Bool bStart = ((SfxBoolItem&)pSet->Get(FN_NUMBER_NEWSTART)).GetValue();
1060*b1cdbd2cSJim Jagielski                     // --> OD 2007-06-11 #b6560525#
1061*b1cdbd2cSJim Jagielski                     // Default value for restart value has to be (sal_uInt16)0xFFFF
1062*b1cdbd2cSJim Jagielski                     // in order to indicate that the restart value of the list
1063*b1cdbd2cSJim Jagielski                     // style has to be used on restart.
1064*b1cdbd2cSJim Jagielski                     sal_uInt16 nNumStart = (sal_uInt16)0xFFFF;
1065*b1cdbd2cSJim Jagielski                     // <--
1066*b1cdbd2cSJim Jagielski 					if( SFX_ITEM_SET == pSet->GetItemState(FN_NUMBER_NEWSTART_AT) )
1067*b1cdbd2cSJim Jagielski                     {
1068*b1cdbd2cSJim Jagielski                         nNumStart = ((SfxUInt16Item&)pSet->Get(FN_NUMBER_NEWSTART_AT)).GetValue();
1069*b1cdbd2cSJim Jagielski                     }
1070*b1cdbd2cSJim Jagielski                     rWrtSh.SetNumRuleStart(bStart);
1071*b1cdbd2cSJim Jagielski                     rWrtSh.SetNodeNumStart(nNumStart);
1072*b1cdbd2cSJim Jagielski                 }
1073*b1cdbd2cSJim Jagielski                 else if( SFX_ITEM_SET == pSet->GetItemState(FN_NUMBER_NEWSTART_AT) )
1074*b1cdbd2cSJim Jagielski                 {
1075*b1cdbd2cSJim Jagielski                     sal_uInt16 nNumStart = ((SfxUInt16Item&)pSet->Get(FN_NUMBER_NEWSTART_AT)).GetValue();
1076*b1cdbd2cSJim Jagielski                     rWrtSh.SetNodeNumStart(nNumStart);
1077*b1cdbd2cSJim Jagielski                     rWrtSh.SetNumRuleStart(sal_False);
1078*b1cdbd2cSJim Jagielski                 }
1079*b1cdbd2cSJim Jagielski                 // --> OD 2006-12-06 #i56253#
1080*b1cdbd2cSJim Jagielski                 if ( bUndoNeeded )
1081*b1cdbd2cSJim Jagielski                 {
1082*b1cdbd2cSJim Jagielski                     rWrtSh.EndUndo( UNDO_INSATTR );
1083*b1cdbd2cSJim Jagielski                 }
1084*b1cdbd2cSJim Jagielski                 // <--
1085*b1cdbd2cSJim Jagielski             }
1086*b1cdbd2cSJim Jagielski 
1087*b1cdbd2cSJim Jagielski             delete pDlg;
1088*b1cdbd2cSJim Jagielski 		}
1089*b1cdbd2cSJim Jagielski 		break;
1090*b1cdbd2cSJim Jagielski         case FN_NUM_CONTINUE:
1091*b1cdbd2cSJim Jagielski         {
1092*b1cdbd2cSJim Jagielski             // --> OD 2008-03-18 #refactorlists#
1093*b1cdbd2cSJim Jagielski             String sContinuedListId;
1094*b1cdbd2cSJim Jagielski             const SwNumRule* pRule =
1095*b1cdbd2cSJim Jagielski                 rWrtSh.SearchNumRule( false, true, false, -1, sContinuedListId );
1096*b1cdbd2cSJim Jagielski             // --> OD 2009-08-26 #i86492#
1097*b1cdbd2cSJim Jagielski             // Search also for bullet list
1098*b1cdbd2cSJim Jagielski             if ( !pRule )
1099*b1cdbd2cSJim Jagielski             {
1100*b1cdbd2cSJim Jagielski                 pRule = rWrtSh.SearchNumRule( false, false, false, -1, sContinuedListId );
1101*b1cdbd2cSJim Jagielski             }
1102*b1cdbd2cSJim Jagielski             // <--
1103*b1cdbd2cSJim Jagielski             if ( pRule )
1104*b1cdbd2cSJim Jagielski             {
1105*b1cdbd2cSJim Jagielski                 rWrtSh.SetCurNumRule( *pRule, false, sContinuedListId );
1106*b1cdbd2cSJim Jagielski             }
1107*b1cdbd2cSJim Jagielski             // <--
1108*b1cdbd2cSJim Jagielski         }
1109*b1cdbd2cSJim Jagielski         break;
1110*b1cdbd2cSJim Jagielski 		case FN_SELECT_PARA:
1111*b1cdbd2cSJim Jagielski 		{
1112*b1cdbd2cSJim Jagielski 			if(!rWrtSh.IsSttOfPara())
1113*b1cdbd2cSJim Jagielski 				rWrtSh.SttPara(sal_False);
1114*b1cdbd2cSJim Jagielski 			else
1115*b1cdbd2cSJim Jagielski 				rWrtSh.EnterStdMode();
1116*b1cdbd2cSJim Jagielski 			rWrtSh.EndPara(sal_True);
1117*b1cdbd2cSJim Jagielski 		}
1118*b1cdbd2cSJim Jagielski 		break;
1119*b1cdbd2cSJim Jagielski 
1120*b1cdbd2cSJim Jagielski 		case SID_DEC_INDENT:
1121*b1cdbd2cSJim Jagielski 		case SID_INC_INDENT:
1122*b1cdbd2cSJim Jagielski 			//According to the requirement, modified the behavior when user
1123*b1cdbd2cSJim Jagielski 			//using the indent button on the toolbar. Now if we increase/decrease indent for a
1124*b1cdbd2cSJim Jagielski 			//paragraph which has bullet style it will increase/decrease the bullet level.
1125*b1cdbd2cSJim Jagielski 			{
1126*b1cdbd2cSJim Jagielski 				//If the current paragraph has bullet call the function to
1127*b1cdbd2cSJim Jagielski 				//increase or decrease the bullet level.
1128*b1cdbd2cSJim Jagielski 				//Why could I know wheter a paragraph has bullet or not by checking the below conditions?
1129*b1cdbd2cSJim Jagielski 				//Please refer to the "case KEY_TAB:" section in SwEditWin::KeyInput(..) :
1130*b1cdbd2cSJim Jagielski 				//		if( rSh.GetCurNumRule() && rSh.IsSttOfPara() &&
1131*b1cdbd2cSJim Jagielski 				//					!rSh.HasReadonlySel() )
1132*b1cdbd2cSJim Jagielski 				//				eKeyState = KS_NumDown;
1133*b1cdbd2cSJim Jagielski 				//Above code demonstrates that when the cursor is at the start of a paragraph which has bullet,
1134*b1cdbd2cSJim Jagielski 				//press TAB will increase the bullet level.
1135*b1cdbd2cSJim Jagielski 				//So I copied from that ^^
1136*b1cdbd2cSJim Jagielski 				if ( rWrtSh.GetCurNumRule() && !rWrtSh.HasReadonlySel() )
1137*b1cdbd2cSJim Jagielski 				{
1138*b1cdbd2cSJim Jagielski 					rWrtSh.NumUpDown( SID_INC_INDENT == nSlot );
1139*b1cdbd2cSJim Jagielski 				}
1140*b1cdbd2cSJim Jagielski 				else//execute the original processing functions
1141*b1cdbd2cSJim Jagielski 				{
1142*b1cdbd2cSJim Jagielski 					//below is copied of the old codes
1143*b1cdbd2cSJim Jagielski 			rWrtSh.MoveLeftMargin( SID_INC_INDENT == nSlot,
1144*b1cdbd2cSJim Jagielski 									rReq.GetModifier() != KEY_MOD1 );
1145*b1cdbd2cSJim Jagielski 				}
1146*b1cdbd2cSJim Jagielski 			}
1147*b1cdbd2cSJim Jagielski 			//rWrtSh.MoveLeftMargin( SID_INC_INDENT == nSlot,
1148*b1cdbd2cSJim Jagielski 			//						rReq.GetModifier() != KEY_MOD1 );
1149*b1cdbd2cSJim Jagielski 			rReq.Done();
1150*b1cdbd2cSJim Jagielski 			break;
1151*b1cdbd2cSJim Jagielski 		case FN_DEC_INDENT_OFFSET:
1152*b1cdbd2cSJim Jagielski 		case FN_INC_INDENT_OFFSET:
1153*b1cdbd2cSJim Jagielski 			rWrtSh.MoveLeftMargin( FN_INC_INDENT_OFFSET == nSlot,
1154*b1cdbd2cSJim Jagielski 									rReq.GetModifier() == KEY_MOD1 );
1155*b1cdbd2cSJim Jagielski 			rReq.Done();
1156*b1cdbd2cSJim Jagielski 			break;
1157*b1cdbd2cSJim Jagielski 
1158*b1cdbd2cSJim Jagielski 		case SID_ATTR_CHAR_COLOR2:
1159*b1cdbd2cSJim Jagielski 		{
1160*b1cdbd2cSJim Jagielski 			if(pItem)
1161*b1cdbd2cSJim Jagielski 			{
1162*b1cdbd2cSJim Jagielski 				Color aSet = ((const SvxColorItem*)pItem)->GetValue();
1163*b1cdbd2cSJim Jagielski                 SwEditWin& rEditWin = GetView().GetEditWin();
1164*b1cdbd2cSJim Jagielski 				rEditWin.SetTextColor(aSet);
1165*b1cdbd2cSJim Jagielski 				SwApplyTemplate* pApply = rEditWin.GetApplyTemplate();
1166*b1cdbd2cSJim Jagielski 				SvxColorItem aItem(aSet, RES_CHRATR_COLOR);
1167*b1cdbd2cSJim Jagielski 
1168*b1cdbd2cSJim Jagielski 				// besteht eine Selektion, wird sie gleich gefaerbt
1169*b1cdbd2cSJim Jagielski 				if(!pApply && rWrtSh.HasSelection())
1170*b1cdbd2cSJim Jagielski 				{
1171*b1cdbd2cSJim Jagielski                     rWrtSh.SetAttrItem(SvxColorItem (aSet, RES_CHRATR_COLOR));
1172*b1cdbd2cSJim Jagielski 				}
1173*b1cdbd2cSJim Jagielski 				else if(!pApply || pApply->nColor != SID_ATTR_CHAR_COLOR_EXT)
1174*b1cdbd2cSJim Jagielski 				{
1175*b1cdbd2cSJim Jagielski                     GetView().GetViewFrame()->GetDispatcher()->Execute(SID_ATTR_CHAR_COLOR_EXT);
1176*b1cdbd2cSJim Jagielski 				}
1177*b1cdbd2cSJim Jagielski 
1178*b1cdbd2cSJim Jagielski                 rReq.Done();
1179*b1cdbd2cSJim Jagielski 			}
1180*b1cdbd2cSJim Jagielski 		}
1181*b1cdbd2cSJim Jagielski 		break;
1182*b1cdbd2cSJim Jagielski 		case SID_ATTR_CHAR_COLOR_BACKGROUND:
1183*b1cdbd2cSJim Jagielski 		{
1184*b1cdbd2cSJim Jagielski             SwEditWin& rEdtWin = GetView().GetEditWin();
1185*b1cdbd2cSJim Jagielski 			SwApplyTemplate* pApply = rEdtWin.GetApplyTemplate();
1186*b1cdbd2cSJim Jagielski 			rEdtWin.SetTextBackColorTransparent(0 == pItem);
1187*b1cdbd2cSJim Jagielski 			Color aSet;
1188*b1cdbd2cSJim Jagielski 			if(pItem)
1189*b1cdbd2cSJim Jagielski 			{
1190*b1cdbd2cSJim Jagielski 				aSet = ((const SvxColorItem*)pItem)->GetValue();
1191*b1cdbd2cSJim Jagielski 				rEdtWin.SetTextBackColor(aSet);
1192*b1cdbd2cSJim Jagielski 			}
1193*b1cdbd2cSJim Jagielski 			if(!pApply && (rWrtSh.HasSelection() || rReq.IsAPI()))
1194*b1cdbd2cSJim Jagielski 			{
1195*b1cdbd2cSJim Jagielski 				SvxBrushItem aBrushItem(RES_CHRATR_BACKGROUND);
1196*b1cdbd2cSJim Jagielski 				if(pItem)
1197*b1cdbd2cSJim Jagielski 					aBrushItem.SetColor(aSet);
1198*b1cdbd2cSJim Jagielski 				else
1199*b1cdbd2cSJim Jagielski 					aBrushItem.SetColor(Color(COL_TRANSPARENT));
1200*b1cdbd2cSJim Jagielski 				rWrtSh.SetAttrItem( aBrushItem );
1201*b1cdbd2cSJim Jagielski 			}
1202*b1cdbd2cSJim Jagielski 			else if(!pApply || pApply->nColor != SID_ATTR_CHAR_COLOR_BACKGROUND_EXT)
1203*b1cdbd2cSJim Jagielski 			{
1204*b1cdbd2cSJim Jagielski                 GetView().GetViewFrame()->GetDispatcher()->Execute(SID_ATTR_CHAR_COLOR_BACKGROUND_EXT);
1205*b1cdbd2cSJim Jagielski 			}
1206*b1cdbd2cSJim Jagielski 
1207*b1cdbd2cSJim Jagielski             rReq.Done();
1208*b1cdbd2cSJim Jagielski 
1209*b1cdbd2cSJim Jagielski 		}
1210*b1cdbd2cSJim Jagielski 		break;
1211*b1cdbd2cSJim Jagielski 		case SID_ATTR_CHAR_COLOR_BACKGROUND_EXT:
1212*b1cdbd2cSJim Jagielski 		case SID_ATTR_CHAR_COLOR_EXT:
1213*b1cdbd2cSJim Jagielski 		{
1214*b1cdbd2cSJim Jagielski 			SwEditWin& rEdtWin = GetView().GetEditWin();
1215*b1cdbd2cSJim Jagielski 			SwApplyTemplate* pApply = rEdtWin.GetApplyTemplate();
1216*b1cdbd2cSJim Jagielski 			SwApplyTemplate aTempl;
1217*b1cdbd2cSJim Jagielski 			sal_Bool bSelection = rWrtSh.HasSelection();
1218*b1cdbd2cSJim Jagielski 			if(bSelection)
1219*b1cdbd2cSJim Jagielski 			{
1220*b1cdbd2cSJim Jagielski 
1221*b1cdbd2cSJim Jagielski 				if(nSlot == SID_ATTR_CHAR_COLOR_BACKGROUND_EXT)
1222*b1cdbd2cSJim Jagielski 				{
1223*b1cdbd2cSJim Jagielski 					rWrtSh.SetAttrItem(
1224*b1cdbd2cSJim Jagielski                         SvxBrushItem( rEdtWin.GetTextBackColor(), RES_CHRATR_BACKGROUND) );
1225*b1cdbd2cSJim Jagielski 				}
1226*b1cdbd2cSJim Jagielski 				else
1227*b1cdbd2cSJim Jagielski 					rWrtSh.SetAttrItem(
1228*b1cdbd2cSJim Jagielski                         SvxColorItem( rEdtWin.GetTextColor(), RES_CHRATR_COLOR) );
1229*b1cdbd2cSJim Jagielski 			}
1230*b1cdbd2cSJim Jagielski 			else
1231*b1cdbd2cSJim Jagielski 			{
1232*b1cdbd2cSJim Jagielski 				if(!pApply || pApply->nColor != nSlot)
1233*b1cdbd2cSJim Jagielski 					aTempl.nColor = nSlot;
1234*b1cdbd2cSJim Jagielski 				rEdtWin.SetApplyTemplate(aTempl);
1235*b1cdbd2cSJim Jagielski 			}
1236*b1cdbd2cSJim Jagielski 
1237*b1cdbd2cSJim Jagielski 			rReq.Done();
1238*b1cdbd2cSJim Jagielski 		}
1239*b1cdbd2cSJim Jagielski 		break;
1240*b1cdbd2cSJim Jagielski 
1241*b1cdbd2cSJim Jagielski 		case FN_NUM_BULLET_MOVEDOWN:
1242*b1cdbd2cSJim Jagielski 			if (!rWrtSh.IsAddMode())
1243*b1cdbd2cSJim Jagielski 				rWrtSh.MoveParagraph(1);
1244*b1cdbd2cSJim Jagielski 			rReq.Done();
1245*b1cdbd2cSJim Jagielski 			break;
1246*b1cdbd2cSJim Jagielski 
1247*b1cdbd2cSJim Jagielski 		case FN_NUM_BULLET_MOVEUP:
1248*b1cdbd2cSJim Jagielski 			if (!rWrtSh.IsAddMode())
1249*b1cdbd2cSJim Jagielski 				rWrtSh.MoveParagraph(-1);
1250*b1cdbd2cSJim Jagielski 			rReq.Done();
1251*b1cdbd2cSJim Jagielski 			break;
1252*b1cdbd2cSJim Jagielski 		case SID_RUBY_DIALOG:
1253*b1cdbd2cSJim Jagielski 		case SID_HYPERLINK_DIALOG:
1254*b1cdbd2cSJim Jagielski 		{
1255*b1cdbd2cSJim Jagielski 			SfxRequest aReq(nSlot, SFX_CALLMODE_SLOT, SFX_APP()->GetPool());
1256*b1cdbd2cSJim Jagielski 		    GetView().GetViewFrame()->ExecuteSlot( aReq);
1257*b1cdbd2cSJim Jagielski             rReq.Ignore();
1258*b1cdbd2cSJim Jagielski 		}
1259*b1cdbd2cSJim Jagielski 		break;
1260*b1cdbd2cSJim Jagielski     case FN_INSERT_PAGEHEADER:
1261*b1cdbd2cSJim Jagielski     case FN_INSERT_PAGEFOOTER:
1262*b1cdbd2cSJim Jagielski     if(pArgs && pArgs->Count())
1263*b1cdbd2cSJim Jagielski     {
1264*b1cdbd2cSJim Jagielski         String sStyleName;
1265*b1cdbd2cSJim Jagielski         if(pItem)
1266*b1cdbd2cSJim Jagielski             sStyleName = ((const SfxStringItem*)pItem)->GetValue();
1267*b1cdbd2cSJim Jagielski         sal_Bool bOn = sal_True;
1268*b1cdbd2cSJim Jagielski         if( SFX_ITEM_SET == pArgs->GetItemState(FN_PARAM_1, sal_False, &pItem))
1269*b1cdbd2cSJim Jagielski             bOn = ((const SfxBoolItem*)pItem)->GetValue();
1270*b1cdbd2cSJim Jagielski         ChangeHeaderOrFooter(sStyleName, FN_INSERT_PAGEHEADER == nSlot, bOn, !rReq.IsAPI());
1271*b1cdbd2cSJim Jagielski         rReq.Done();
1272*b1cdbd2cSJim Jagielski     }
1273*b1cdbd2cSJim Jagielski     break;
1274*b1cdbd2cSJim Jagielski     case FN_READONLY_SELECTION_MODE :
1275*b1cdbd2cSJim Jagielski         if(GetView().GetDocShell()->IsReadOnly())
1276*b1cdbd2cSJim Jagielski         {
1277*b1cdbd2cSJim Jagielski             rWrtSh.SetReadonlySelectionOption(
1278*b1cdbd2cSJim Jagielski                 !rWrtSh.GetViewOptions()->IsSelectionInReadonly());
1279*b1cdbd2cSJim Jagielski             rWrtSh.ShowCrsr();
1280*b1cdbd2cSJim Jagielski         }
1281*b1cdbd2cSJim Jagielski     break;
1282*b1cdbd2cSJim Jagielski     case FN_SELECTION_MODE_DEFAULT:
1283*b1cdbd2cSJim Jagielski     case FN_SELECTION_MODE_BLOCK :
1284*b1cdbd2cSJim Jagielski     {
1285*b1cdbd2cSJim Jagielski         bool bSetBlockMode = !rWrtSh.IsBlockMode();
1286*b1cdbd2cSJim Jagielski         if( pArgs && SFX_ITEM_SET == pArgs->GetItemState(nSlot, sal_False, &pItem))
1287*b1cdbd2cSJim Jagielski             bSetBlockMode = ((const SfxBoolItem*)pItem)->GetValue();
1288*b1cdbd2cSJim Jagielski         if( ( nSlot == FN_SELECTION_MODE_DEFAULT ) ^ bSetBlockMode )
1289*b1cdbd2cSJim Jagielski             rWrtSh.EnterBlockMode();
1290*b1cdbd2cSJim Jagielski         else
1291*b1cdbd2cSJim Jagielski             rWrtSh.EnterStdMode();
1292*b1cdbd2cSJim Jagielski         SfxBindings &rBnd = GetView().GetViewFrame()->GetBindings();
1293*b1cdbd2cSJim Jagielski         rBnd.Invalidate(FN_STAT_SELMODE);
1294*b1cdbd2cSJim Jagielski         rBnd.Update(FN_STAT_SELMODE);
1295*b1cdbd2cSJim Jagielski     }
1296*b1cdbd2cSJim Jagielski     break;
1297*b1cdbd2cSJim Jagielski     case SID_OPEN_HYPERLINK:
1298*b1cdbd2cSJim Jagielski     case FN_COPY_HYPERLINK_LOCATION:
1299*b1cdbd2cSJim Jagielski     {
1300*b1cdbd2cSJim Jagielski         SfxItemSet aSet(GetPool(),
1301*b1cdbd2cSJim Jagielski                         RES_TXTATR_INETFMT,
1302*b1cdbd2cSJim Jagielski                         RES_TXTATR_INETFMT);
1303*b1cdbd2cSJim Jagielski         rWrtSh.GetCurAttr(aSet);
1304*b1cdbd2cSJim Jagielski         if(SFX_ITEM_SET <= aSet.GetItemState( RES_TXTATR_INETFMT, sal_True ))
1305*b1cdbd2cSJim Jagielski         {
1306*b1cdbd2cSJim Jagielski             const SwFmtINetFmt& rINetFmt = dynamic_cast<const SwFmtINetFmt&>( aSet.Get(RES_TXTATR_INETFMT, sal_True) );
1307*b1cdbd2cSJim Jagielski             if( nSlot == FN_COPY_HYPERLINK_LOCATION )
1308*b1cdbd2cSJim Jagielski             {
1309*b1cdbd2cSJim Jagielski                 ::uno::Reference< datatransfer::clipboard::XClipboard > xClipboard = GetView().GetEditWin().GetClipboard();
1310*b1cdbd2cSJim Jagielski                 vcl::unohelper::TextDataObject::CopyStringTo(
1311*b1cdbd2cSJim Jagielski                         rINetFmt.GetValue(),
1312*b1cdbd2cSJim Jagielski                         xClipboard );
1313*b1cdbd2cSJim Jagielski             }
1314*b1cdbd2cSJim Jagielski             else
1315*b1cdbd2cSJim Jagielski                 rWrtSh.ClickToINetAttr(rINetFmt, URLLOAD_NOFILTER);
1316*b1cdbd2cSJim Jagielski         }
1317*b1cdbd2cSJim Jagielski     }
1318*b1cdbd2cSJim Jagielski     break;
1319*b1cdbd2cSJim Jagielski     case SID_OPEN_XML_FILTERSETTINGS:
1320*b1cdbd2cSJim Jagielski     {
1321*b1cdbd2cSJim Jagielski 		try
1322*b1cdbd2cSJim Jagielski 		{
1323*b1cdbd2cSJim Jagielski             uno::Reference < ui::dialogs::XExecutableDialog > xDialog(::comphelper::getProcessServiceFactory()->createInstance(rtl::OUString::createFromAscii("com.sun.star.comp.ui.XSLTFilterDialog")), uno::UNO_QUERY);
1324*b1cdbd2cSJim Jagielski 			if( xDialog.is() )
1325*b1cdbd2cSJim Jagielski 			{
1326*b1cdbd2cSJim Jagielski 				xDialog->execute();
1327*b1cdbd2cSJim Jagielski 			}
1328*b1cdbd2cSJim Jagielski 		}
1329*b1cdbd2cSJim Jagielski         catch( uno::Exception& )
1330*b1cdbd2cSJim Jagielski 		{
1331*b1cdbd2cSJim Jagielski 		}
1332*b1cdbd2cSJim Jagielski 		rReq.Ignore ();
1333*b1cdbd2cSJim Jagielski 	}
1334*b1cdbd2cSJim Jagielski 	break;
1335*b1cdbd2cSJim Jagielski 	case FN_FORMAT_APPLY_HEAD1:
1336*b1cdbd2cSJim Jagielski 	{
1337*b1cdbd2cSJim Jagielski 	}
1338*b1cdbd2cSJim Jagielski 	break;
1339*b1cdbd2cSJim Jagielski 	case FN_FORMAT_APPLY_HEAD2:
1340*b1cdbd2cSJim Jagielski 	{
1341*b1cdbd2cSJim Jagielski 	}
1342*b1cdbd2cSJim Jagielski 	break;
1343*b1cdbd2cSJim Jagielski 	case FN_FORMAT_APPLY_HEAD3:
1344*b1cdbd2cSJim Jagielski 	{
1345*b1cdbd2cSJim Jagielski 	}
1346*b1cdbd2cSJim Jagielski 	break;
1347*b1cdbd2cSJim Jagielski 	case FN_FORMAT_APPLY_DEFAULT:
1348*b1cdbd2cSJim Jagielski 	{
1349*b1cdbd2cSJim Jagielski 	}
1350*b1cdbd2cSJim Jagielski 	break;
1351*b1cdbd2cSJim Jagielski 	case FN_FORMAT_APPLY_TEXTBODY:
1352*b1cdbd2cSJim Jagielski 	{
1353*b1cdbd2cSJim Jagielski 	}
1354*b1cdbd2cSJim Jagielski 	break;
1355*b1cdbd2cSJim Jagielski     case FN_WORDCOUNT_DIALOG:
1356*b1cdbd2cSJim Jagielski     {
1357*b1cdbd2cSJim Jagielski         SwWrtShell &rSh = GetShell();
1358*b1cdbd2cSJim Jagielski         SwDocStat aCurr;
1359*b1cdbd2cSJim Jagielski         SwDocStat aDocStat( rSh.getIDocumentStatistics()->GetDocStat() );
1360*b1cdbd2cSJim Jagielski         {
1361*b1cdbd2cSJim Jagielski             SwWait aWait( *GetView().GetDocShell(), true );
1362*b1cdbd2cSJim Jagielski             rSh.StartAction();
1363*b1cdbd2cSJim Jagielski             rSh.CountWords( aCurr );
1364*b1cdbd2cSJim Jagielski             rSh.UpdateDocStat( aDocStat );
1365*b1cdbd2cSJim Jagielski             rSh.EndAction();
1366*b1cdbd2cSJim Jagielski         }
1367*b1cdbd2cSJim Jagielski 
1368*b1cdbd2cSJim Jagielski         SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
1369*b1cdbd2cSJim Jagielski         DBG_ASSERT(pFact, "Dialogdiet fail!");
1370*b1cdbd2cSJim Jagielski         AbstractSwWordCountDialog* pDialog = pFact->CreateSwWordCountDialog( GetView().GetWindow() );
1371*b1cdbd2cSJim Jagielski         pDialog->SetValues(aCurr, aDocStat );
1372*b1cdbd2cSJim Jagielski         pDialog->Execute();
1373*b1cdbd2cSJim Jagielski         delete pDialog;
1374*b1cdbd2cSJim Jagielski     }
1375*b1cdbd2cSJim Jagielski     break;
1376*b1cdbd2cSJim Jagielski     default:
1377*b1cdbd2cSJim Jagielski 		ASSERT(!this, falscher Dispatcher);
1378*b1cdbd2cSJim Jagielski 		return;
1379*b1cdbd2cSJim Jagielski 	}
1380*b1cdbd2cSJim Jagielski }
1381*b1cdbd2cSJim Jagielski 
1382*b1cdbd2cSJim Jagielski 
1383*b1cdbd2cSJim Jagielski /*--------------------------------------------------------------------
1384*b1cdbd2cSJim Jagielski 	Beschreibung:
1385*b1cdbd2cSJim Jagielski  --------------------------------------------------------------------*/
1386*b1cdbd2cSJim Jagielski 
1387*b1cdbd2cSJim Jagielski 
GetState(SfxItemSet & rSet)1388*b1cdbd2cSJim Jagielski void SwTextShell::GetState( SfxItemSet &rSet )
1389*b1cdbd2cSJim Jagielski {
1390*b1cdbd2cSJim Jagielski 	SwWrtShell &rSh = GetShell();
1391*b1cdbd2cSJim Jagielski 	SfxWhichIter aIter( rSet );
1392*b1cdbd2cSJim Jagielski 	sal_uInt16 nWhich = aIter.FirstWhich();
1393*b1cdbd2cSJim Jagielski 	while ( nWhich )
1394*b1cdbd2cSJim Jagielski 	{
1395*b1cdbd2cSJim Jagielski 		switch ( nWhich )
1396*b1cdbd2cSJim Jagielski 		{
1397*b1cdbd2cSJim Jagielski         case SID_LANGUAGE_STATUS:
1398*b1cdbd2cSJim Jagielski             {
1399*b1cdbd2cSJim Jagielski                 // the value of used script types
1400*b1cdbd2cSJim Jagielski                 String aScriptTypesInUse( String::CreateFromInt32( rSh.GetScriptType() ) );
1401*b1cdbd2cSJim Jagielski 
1402*b1cdbd2cSJim Jagielski                 SvtLanguageTable aLangTable;
1403*b1cdbd2cSJim Jagielski 
1404*b1cdbd2cSJim Jagielski                 // get keyboard language
1405*b1cdbd2cSJim Jagielski                 String aKeyboardLang;
1406*b1cdbd2cSJim Jagielski                 LanguageType nLang = LANGUAGE_DONTKNOW;
1407*b1cdbd2cSJim Jagielski                 SwEditWin& rEditWin = GetView().GetEditWin();
1408*b1cdbd2cSJim Jagielski                 nLang = rEditWin.GetInputLanguage();
1409*b1cdbd2cSJim Jagielski                 if (nLang != LANGUAGE_DONTKNOW && nLang != LANGUAGE_SYSTEM)
1410*b1cdbd2cSJim Jagielski                     aKeyboardLang = aLangTable.GetString( nLang );
1411*b1cdbd2cSJim Jagielski 
1412*b1cdbd2cSJim Jagielski                 // get the language that is in use
1413*b1cdbd2cSJim Jagielski                 const String aMultipleLanguages = String::CreateFromAscii("*");
1414*b1cdbd2cSJim Jagielski                 String aCurrentLang = aMultipleLanguages;
1415*b1cdbd2cSJim Jagielski                 nLang = SwLangHelper::GetCurrentLanguage( rSh );
1416*b1cdbd2cSJim Jagielski                 if (nLang != LANGUAGE_DONTKNOW)
1417*b1cdbd2cSJim Jagielski                     aCurrentLang = aLangTable.GetString( nLang );
1418*b1cdbd2cSJim Jagielski 
1419*b1cdbd2cSJim Jagielski                 // build sequence for status value
1420*b1cdbd2cSJim Jagielski                 uno::Sequence< ::rtl::OUString > aSeq( 4 );
1421*b1cdbd2cSJim Jagielski                 aSeq[0] = aCurrentLang;
1422*b1cdbd2cSJim Jagielski                 aSeq[1] = aScriptTypesInUse;
1423*b1cdbd2cSJim Jagielski                 aSeq[2] = aKeyboardLang;
1424*b1cdbd2cSJim Jagielski                 aSeq[3] = SwLangHelper::GetTextForLanguageGuessing( rSh );
1425*b1cdbd2cSJim Jagielski 
1426*b1cdbd2cSJim Jagielski                 // set sequence as status value
1427*b1cdbd2cSJim Jagielski                 SfxStringListItem aItem( SID_LANGUAGE_STATUS );
1428*b1cdbd2cSJim Jagielski                 aItem.SetStringList( aSeq );
1429*b1cdbd2cSJim Jagielski                 rSet.Put( aItem, SID_LANGUAGE_STATUS );
1430*b1cdbd2cSJim Jagielski             }
1431*b1cdbd2cSJim Jagielski         break;
1432*b1cdbd2cSJim Jagielski 
1433*b1cdbd2cSJim Jagielski         case SID_THES:
1434*b1cdbd2cSJim Jagielski         {
1435*b1cdbd2cSJim Jagielski             // is there a valid selection to get text from?
1436*b1cdbd2cSJim Jagielski             String aText;
1437*b1cdbd2cSJim Jagielski             sal_Bool bValid = !rSh.HasSelection() ||
1438*b1cdbd2cSJim Jagielski                     (rSh.IsSelOnePara() && !rSh.IsMultiSelection());
1439*b1cdbd2cSJim Jagielski             // prevent context menu from showing when cursor is not in or at the end of a word
1440*b1cdbd2cSJim Jagielski             // (GetCurWord will return the next word if there is none at the current position...)
1441*b1cdbd2cSJim Jagielski             const sal_Int16 nWordType = ::i18n::WordType::DICTIONARY_WORD;
1442*b1cdbd2cSJim Jagielski             bool bWord = rSh.IsInWord( nWordType ) || rSh.IsStartWord( nWordType ) || rSh.IsEndWord( nWordType );
1443*b1cdbd2cSJim Jagielski             if (bValid && bWord)
1444*b1cdbd2cSJim Jagielski                aText = rSh.HasSelection()? rSh.GetSelTxt() : rSh.GetCurWord();
1445*b1cdbd2cSJim Jagielski 
1446*b1cdbd2cSJim Jagielski             LanguageType nLang = rSh.GetCurLang();
1447*b1cdbd2cSJim Jagielski             lang::Locale aLocale = SvxCreateLocale( nLang );
1448*b1cdbd2cSJim Jagielski             String aLangText( MsLangId::convertLanguageToIsoString( nLang ) );
1449*b1cdbd2cSJim Jagielski 
1450*b1cdbd2cSJim Jagielski             // set word and locale to look up as status value
1451*b1cdbd2cSJim Jagielski             String aStatusVal( aText );
1452*b1cdbd2cSJim Jagielski             aStatusVal.AppendAscii( "#" );
1453*b1cdbd2cSJim Jagielski             aStatusVal += aLangText;
1454*b1cdbd2cSJim Jagielski 
1455*b1cdbd2cSJim Jagielski             rSet.Put( SfxStringItem( SID_THES, aStatusVal ) );
1456*b1cdbd2cSJim Jagielski 
1457*b1cdbd2cSJim Jagielski             // disable "Thesaurus" context menu entry if there is nothing to look up
1458*b1cdbd2cSJim Jagielski             uno::Reference< linguistic2::XThesaurus >  xThes( ::GetThesaurus() );
1459*b1cdbd2cSJim Jagielski             if (aText.Len() == 0 ||
1460*b1cdbd2cSJim Jagielski                 !xThes.is() || nLang == LANGUAGE_NONE || !xThes->hasLocale( aLocale ))
1461*b1cdbd2cSJim Jagielski                 rSet.DisableItem( SID_THES );
1462*b1cdbd2cSJim Jagielski         }
1463*b1cdbd2cSJim Jagielski         break;
1464*b1cdbd2cSJim Jagielski 
1465*b1cdbd2cSJim Jagielski         case FN_NUMBER_NEWSTART :
1466*b1cdbd2cSJim Jagielski             if(!rSh.GetCurNumRule())
1467*b1cdbd2cSJim Jagielski                     rSet.DisableItem(nWhich);
1468*b1cdbd2cSJim Jagielski             else
1469*b1cdbd2cSJim Jagielski                 rSet.Put(SfxBoolItem(FN_NUMBER_NEWSTART,
1470*b1cdbd2cSJim Jagielski                     rSh.IsNumRuleStart()));
1471*b1cdbd2cSJim Jagielski         break;
1472*b1cdbd2cSJim Jagielski 
1473*b1cdbd2cSJim Jagielski         case FN_EDIT_FORMULA:
1474*b1cdbd2cSJim Jagielski         case SID_CHARMAP:
1475*b1cdbd2cSJim Jagielski             {
1476*b1cdbd2cSJim Jagielski                 const int nType = rSh.GetSelectionType();
1477*b1cdbd2cSJim Jagielski                 if (!(nType & nsSelectionType::SEL_TXT) &&
1478*b1cdbd2cSJim Jagielski                     !(nType & nsSelectionType::SEL_TBL) &&
1479*b1cdbd2cSJim Jagielski                     !(nType & nsSelectionType::SEL_NUM))
1480*b1cdbd2cSJim Jagielski                 {
1481*b1cdbd2cSJim Jagielski                     rSet.DisableItem(nWhich);
1482*b1cdbd2cSJim Jagielski                 }
1483*b1cdbd2cSJim Jagielski                 else if ( nWhich == FN_EDIT_FORMULA
1484*b1cdbd2cSJim Jagielski                           && rSh.CrsrInsideInputFld() )
1485*b1cdbd2cSJim Jagielski                 {
1486*b1cdbd2cSJim Jagielski                     rSet.DisableItem( nWhich );
1487*b1cdbd2cSJim Jagielski                 }
1488*b1cdbd2cSJim Jagielski             }
1489*b1cdbd2cSJim Jagielski             break;
1490*b1cdbd2cSJim Jagielski 
1491*b1cdbd2cSJim Jagielski         case FN_INSERT_ENDNOTE:
1492*b1cdbd2cSJim Jagielski         case FN_INSERT_FOOTNOTE:
1493*b1cdbd2cSJim Jagielski         case FN_INSERT_FOOTNOTE_DLG:
1494*b1cdbd2cSJim Jagielski             {
1495*b1cdbd2cSJim Jagielski                 const sal_uInt16 nNoType =
1496*b1cdbd2cSJim Jagielski                     FRMTYPE_FLY_ANY | FRMTYPE_HEADER | FRMTYPE_FOOTER | FRMTYPE_FOOTNOTE;
1497*b1cdbd2cSJim Jagielski                 if ( (rSh.GetFrmType(0,sal_True) & nNoType) )
1498*b1cdbd2cSJim Jagielski                     rSet.DisableItem(nWhich);
1499*b1cdbd2cSJim Jagielski 
1500*b1cdbd2cSJim Jagielski                 if ( rSh.CrsrInsideInputFld() )
1501*b1cdbd2cSJim Jagielski                 {
1502*b1cdbd2cSJim Jagielski                     rSet.DisableItem( nWhich );
1503*b1cdbd2cSJim Jagielski                 }
1504*b1cdbd2cSJim Jagielski             }
1505*b1cdbd2cSJim Jagielski             break;
1506*b1cdbd2cSJim Jagielski 
1507*b1cdbd2cSJim Jagielski         case FN_INSERT_HYPERLINK:
1508*b1cdbd2cSJim Jagielski         case SID_INSERTDOC:
1509*b1cdbd2cSJim Jagielski         case FN_INSERT_GLOSSARY:
1510*b1cdbd2cSJim Jagielski         case FN_EXPAND_GLOSSARY:
1511*b1cdbd2cSJim Jagielski             if ( rSh.CrsrInsideInputFld() )
1512*b1cdbd2cSJim Jagielski             {
1513*b1cdbd2cSJim Jagielski                 rSet.DisableItem( nWhich );
1514*b1cdbd2cSJim Jagielski             }
1515*b1cdbd2cSJim Jagielski             break;
1516*b1cdbd2cSJim Jagielski 
1517*b1cdbd2cSJim Jagielski         case FN_INSERT_TABLE:
1518*b1cdbd2cSJim Jagielski             if ( rSh.CrsrInsideInputFld()
1519*b1cdbd2cSJim Jagielski                  || rSh.GetTableFmt()
1520*b1cdbd2cSJim Jagielski                  || (rSh.GetFrmType(0,sal_True) & FRMTYPE_FOOTNOTE) )
1521*b1cdbd2cSJim Jagielski             {
1522*b1cdbd2cSJim Jagielski                 rSet.DisableItem( nWhich );
1523*b1cdbd2cSJim Jagielski             }
1524*b1cdbd2cSJim Jagielski             break;
1525*b1cdbd2cSJim Jagielski 
1526*b1cdbd2cSJim Jagielski 		case FN_CALCULATE:
1527*b1cdbd2cSJim Jagielski 			if ( !rSh.IsSelection() )
1528*b1cdbd2cSJim Jagielski 				rSet.DisableItem(nWhich);
1529*b1cdbd2cSJim Jagielski 			break;
1530*b1cdbd2cSJim Jagielski 		case FN_GOTO_REFERENCE:
1531*b1cdbd2cSJim Jagielski 			{
1532*b1cdbd2cSJim Jagielski 				SwField *pFld = rSh.GetCurFld();
1533*b1cdbd2cSJim Jagielski 				if ( !pFld || (pFld &&  pFld->GetTypeId() != TYP_GETREFFLD) )
1534*b1cdbd2cSJim Jagielski 					rSet.DisableItem(nWhich);
1535*b1cdbd2cSJim Jagielski 			}
1536*b1cdbd2cSJim Jagielski 			break;
1537*b1cdbd2cSJim Jagielski 		case FN_AUTOFORMAT_AUTO:
1538*b1cdbd2cSJim Jagielski 			{
1539*b1cdbd2cSJim Jagielski 				rSet.Put( SfxBoolItem( nWhich, SvxAutoCorrCfg::Get()->IsAutoFmtByInput() ));
1540*b1cdbd2cSJim Jagielski 			}
1541*b1cdbd2cSJim Jagielski 			break;
1542*b1cdbd2cSJim Jagielski 
1543*b1cdbd2cSJim Jagielski         case FN_GLOSSARY_DLG:
1544*b1cdbd2cSJim Jagielski             {
1545*b1cdbd2cSJim Jagielski                 if ( rSh.CrsrInsideInputFld() )
1546*b1cdbd2cSJim Jagielski                 {
1547*b1cdbd2cSJim Jagielski                     rSet.DisableItem( nWhich );
1548*b1cdbd2cSJim Jagielski                 }
1549*b1cdbd2cSJim Jagielski                 else
1550*b1cdbd2cSJim Jagielski                 {
1551*b1cdbd2cSJim Jagielski                     rSet.Put(SfxBoolItem(nWhich), sal_True);
1552*b1cdbd2cSJim Jagielski                 }
1553*b1cdbd2cSJim Jagielski             }
1554*b1cdbd2cSJim Jagielski             break;
1555*b1cdbd2cSJim Jagielski 
1556*b1cdbd2cSJim Jagielski 		case SID_DEC_INDENT:
1557*b1cdbd2cSJim Jagielski 		case SID_INC_INDENT:
1558*b1cdbd2cSJim Jagielski 			{
1559*b1cdbd2cSJim Jagielski 				//if the paragrah has bullet we'll do the following things:
1560*b1cdbd2cSJim Jagielski 				//1: if the bullet level is the first level, disable the decrease-indent button
1561*b1cdbd2cSJim Jagielski 				//2: if the bullet level is the last level, disable the increase-indent button
1562*b1cdbd2cSJim Jagielski 				if ( rSh.GetCurNumRule() && !rSh.HasReadonlySel() )
1563*b1cdbd2cSJim Jagielski 				{
1564*b1cdbd2cSJim Jagielski 					sal_uInt8 nLevel = rSh.GetNumLevel();
1565*b1cdbd2cSJim Jagielski 					if ( nLevel == (MAXLEVEL-1) && nWhich == SID_INC_INDENT ||
1566*b1cdbd2cSJim Jagielski 						nLevel == 0 && nWhich == SID_DEC_INDENT )
1567*b1cdbd2cSJim Jagielski 					{
1568*b1cdbd2cSJim Jagielski 						rSet.DisableItem( nWhich );
1569*b1cdbd2cSJim Jagielski 					}
1570*b1cdbd2cSJim Jagielski 				}
1571*b1cdbd2cSJim Jagielski 				else//if the paragraph has no bullet, execute the original functions
1572*b1cdbd2cSJim Jagielski 				{
1573*b1cdbd2cSJim Jagielski 					//below is copied of the old codes
1574*b1cdbd2cSJim Jagielski 				sal_uInt16 nHtmlMode = ::GetHtmlMode(GetView().GetDocShell());
1575*b1cdbd2cSJim Jagielski 				nHtmlMode &= HTMLMODE_ON|HTMLMODE_SOME_STYLES;
1576*b1cdbd2cSJim Jagielski 				if( (nHtmlMode == HTMLMODE_ON) || !rSh.IsMoveLeftMargin(
1577*b1cdbd2cSJim Jagielski 										SID_INC_INDENT == nWhich, sal_True ))
1578*b1cdbd2cSJim Jagielski 					rSet.DisableItem( nWhich );
1579*b1cdbd2cSJim Jagielski 				}
1580*b1cdbd2cSJim Jagielski 				//old code begins
1581*b1cdbd2cSJim Jagielski 				//sal_uInt16 nHtmlMode = ::GetHtmlMode(GetView().GetDocShell());
1582*b1cdbd2cSJim Jagielski 				//nHtmlMode &= HTMLMODE_ON|HTMLMODE_SOME_STYLES;
1583*b1cdbd2cSJim Jagielski 				//if( (nHtmlMode == HTMLMODE_ON) || !rSh.IsMoveLeftMargin(
1584*b1cdbd2cSJim Jagielski 				//	SID_INC_INDENT == nWhich, TRUE ))
1585*b1cdbd2cSJim Jagielski 				//	rSet.DisableItem( nWhich );
1586*b1cdbd2cSJim Jagielski 				//old code ends
1587*b1cdbd2cSJim Jagielski 			}
1588*b1cdbd2cSJim Jagielski 			break;
1589*b1cdbd2cSJim Jagielski 
1590*b1cdbd2cSJim Jagielski 		case FN_DEC_INDENT_OFFSET:
1591*b1cdbd2cSJim Jagielski 		case FN_INC_INDENT_OFFSET:
1592*b1cdbd2cSJim Jagielski 			{
1593*b1cdbd2cSJim Jagielski 				sal_uInt16 nHtmlMode = ::GetHtmlMode(GetView().GetDocShell());
1594*b1cdbd2cSJim Jagielski 				nHtmlMode &= HTMLMODE_ON|HTMLMODE_SOME_STYLES;
1595*b1cdbd2cSJim Jagielski 				if( (nHtmlMode == HTMLMODE_ON) ||
1596*b1cdbd2cSJim Jagielski 					!rSh.IsMoveLeftMargin( FN_INC_INDENT_OFFSET == nWhich,
1597*b1cdbd2cSJim Jagielski 											sal_False ))
1598*b1cdbd2cSJim Jagielski 					rSet.DisableItem( nWhich );
1599*b1cdbd2cSJim Jagielski 			}
1600*b1cdbd2cSJim Jagielski 			break;
1601*b1cdbd2cSJim Jagielski 
1602*b1cdbd2cSJim Jagielski 		case SID_ATTR_CHAR_COLOR2:
1603*b1cdbd2cSJim Jagielski 			{
1604*b1cdbd2cSJim Jagielski 				rSet.Put(SvxColorItem(GetView().GetEditWin().GetTextColor(), SID_ATTR_CHAR_COLOR2));
1605*b1cdbd2cSJim Jagielski 			}
1606*b1cdbd2cSJim Jagielski 			break;
1607*b1cdbd2cSJim Jagielski 		case SID_ATTR_CHAR_COLOR_BACKGROUND:
1608*b1cdbd2cSJim Jagielski 			{
1609*b1cdbd2cSJim Jagielski               if(GetView().GetEditWin().IsTextBackColorTransparent())
1610*b1cdbd2cSJim Jagielski                   rSet.Put(SvxColorItem(Color(COL_TRANSPARENT), SID_ATTR_CHAR_COLOR_BACKGROUND));
1611*b1cdbd2cSJim Jagielski               else
1612*b1cdbd2cSJim Jagielski 					rSet.Put(SvxColorItem(GetView().GetEditWin().GetTextBackColor(), SID_ATTR_CHAR_COLOR_BACKGROUND));
1613*b1cdbd2cSJim Jagielski 			}
1614*b1cdbd2cSJim Jagielski 			break;
1615*b1cdbd2cSJim Jagielski 		case SID_ATTR_CHAR_COLOR_BACKGROUND_EXT:
1616*b1cdbd2cSJim Jagielski 		case SID_ATTR_CHAR_COLOR_EXT:
1617*b1cdbd2cSJim Jagielski 			{
1618*b1cdbd2cSJim Jagielski 				SwEditWin& rEdtWin = GetView().GetEditWin();
1619*b1cdbd2cSJim Jagielski 				SwApplyTemplate* pApply = rEdtWin.GetApplyTemplate();
1620*b1cdbd2cSJim Jagielski 				rSet.Put(SfxBoolItem(nWhich, pApply && pApply->nColor == nWhich));
1621*b1cdbd2cSJim Jagielski 			}
1622*b1cdbd2cSJim Jagielski 			break;
1623*b1cdbd2cSJim Jagielski 
1624*b1cdbd2cSJim Jagielski         case FN_INSERT_BOOKMARK:
1625*b1cdbd2cSJim Jagielski             if( rSh.IsTableMode()
1626*b1cdbd2cSJim Jagielski                 || rSh.CrsrInsideInputFld() )
1627*b1cdbd2cSJim Jagielski             {
1628*b1cdbd2cSJim Jagielski                 rSet.DisableItem( nWhich );
1629*b1cdbd2cSJim Jagielski             }
1630*b1cdbd2cSJim Jagielski             break;
1631*b1cdbd2cSJim Jagielski 
1632*b1cdbd2cSJim Jagielski 
1633*b1cdbd2cSJim Jagielski         case FN_INSERT_BREAK:
1634*b1cdbd2cSJim Jagielski             if ( rSh.HasReadonlySel()
1635*b1cdbd2cSJim Jagielski                  && !rSh.CrsrInsideInputFld() )
1636*b1cdbd2cSJim Jagielski             {
1637*b1cdbd2cSJim Jagielski                 rSet.DisableItem( nWhich );
1638*b1cdbd2cSJim Jagielski             }
1639*b1cdbd2cSJim Jagielski             break;
1640*b1cdbd2cSJim Jagielski 
1641*b1cdbd2cSJim Jagielski 
1642*b1cdbd2cSJim Jagielski         case FN_INSERT_BREAK_DLG:
1643*b1cdbd2cSJim Jagielski         case FN_INSERT_COLUMN_BREAK:
1644*b1cdbd2cSJim Jagielski         case FN_INSERT_PAGEBREAK:
1645*b1cdbd2cSJim Jagielski             if( rSh.CrsrInsideInputFld() )
1646*b1cdbd2cSJim Jagielski             {
1647*b1cdbd2cSJim Jagielski                 rSet.DisableItem( nWhich );
1648*b1cdbd2cSJim Jagielski             }
1649*b1cdbd2cSJim Jagielski             break;
1650*b1cdbd2cSJim Jagielski 
1651*b1cdbd2cSJim Jagielski 		case FN_INSERT_PAGEHEADER:
1652*b1cdbd2cSJim Jagielski 		case FN_INSERT_PAGEFOOTER:
1653*b1cdbd2cSJim Jagielski 			{
1654*b1cdbd2cSJim Jagielski #ifndef CHECK_MENU
1655*b1cdbd2cSJim Jagielski 				rSet.Put( SfxObjectShellItem( nWhich, GetView().GetDocShell() ));
1656*b1cdbd2cSJim Jagielski #else
1657*b1cdbd2cSJim Jagielski 				// Seitenvorlagen besorgen
1658*b1cdbd2cSJim Jagielski 				sal_Bool bFound = sal_False;
1659*b1cdbd2cSJim Jagielski 				sal_uInt16 n, nCnt = rSh.GetPageDescCnt();
1660*b1cdbd2cSJim Jagielski 				for( n = 0; n < nCnt; ++n )
1661*b1cdbd2cSJim Jagielski 				{
1662*b1cdbd2cSJim Jagielski 					const SwPageDesc& rDesc = rSh.GetPageDesc( n );
1663*b1cdbd2cSJim Jagielski 					if( FN_INSERT_PAGEHEADER == nWhich
1664*b1cdbd2cSJim Jagielski 						? !rDesc.GetMaster().GetHeader().IsActive()
1665*b1cdbd2cSJim Jagielski 						: !rDesc.GetMaster().GetFooter().IsActive() )
1666*b1cdbd2cSJim Jagielski 					{
1667*b1cdbd2cSJim Jagielski 						bFound = sal_True;
1668*b1cdbd2cSJim Jagielski 						break;
1669*b1cdbd2cSJim Jagielski 					}
1670*b1cdbd2cSJim Jagielski 				}
1671*b1cdbd2cSJim Jagielski 
1672*b1cdbd2cSJim Jagielski 				if( bFound )
1673*b1cdbd2cSJim Jagielski 					rSet.Put( SfxObjectShellItem( nWhich, GetView().GetDocShell() ));
1674*b1cdbd2cSJim Jagielski 				else
1675*b1cdbd2cSJim Jagielski 					rSet.DisableItem( nWhich );
1676*b1cdbd2cSJim Jagielski #endif
1677*b1cdbd2cSJim Jagielski 			}
1678*b1cdbd2cSJim Jagielski 			break;
1679*b1cdbd2cSJim Jagielski             case FN_TABLE_SORT_DIALOG:
1680*b1cdbd2cSJim Jagielski             case FN_SORTING_DLG:
1681*b1cdbd2cSJim Jagielski                 if(!rSh.HasSelection() ||
1682*b1cdbd2cSJim Jagielski                         (FN_TABLE_SORT_DIALOG == nWhich && !rSh.GetTableFmt()))
1683*b1cdbd2cSJim Jagielski 					rSet.DisableItem( nWhich );
1684*b1cdbd2cSJim Jagielski 			break;
1685*b1cdbd2cSJim Jagielski 
1686*b1cdbd2cSJim Jagielski             case SID_RUBY_DIALOG:
1687*b1cdbd2cSJim Jagielski                 {
1688*b1cdbd2cSJim Jagielski                     SvtCJKOptions aCJKOptions;
1689*b1cdbd2cSJim Jagielski                     if( !aCJKOptions.IsRubyEnabled()
1690*b1cdbd2cSJim Jagielski                         || rSh.CrsrInsideInputFld() )
1691*b1cdbd2cSJim Jagielski                     {
1692*b1cdbd2cSJim Jagielski                         GetView().GetViewFrame()->GetBindings().SetVisibleState( nWhich, sal_False );
1693*b1cdbd2cSJim Jagielski                         rSet.DisableItem(nWhich);
1694*b1cdbd2cSJim Jagielski                     }
1695*b1cdbd2cSJim Jagielski                     else
1696*b1cdbd2cSJim Jagielski                         GetView().GetViewFrame()->GetBindings().SetVisibleState( nWhich, sal_True );
1697*b1cdbd2cSJim Jagielski                 }
1698*b1cdbd2cSJim Jagielski                 break;
1699*b1cdbd2cSJim Jagielski 
1700*b1cdbd2cSJim Jagielski             case SID_HYPERLINK_DIALOG:
1701*b1cdbd2cSJim Jagielski                 if( GetView().GetDocShell()->IsReadOnly()
1702*b1cdbd2cSJim Jagielski                     || ( !GetView().GetViewFrame()->HasChildWindow(nWhich)
1703*b1cdbd2cSJim Jagielski                          && rSh.HasReadonlySel() )
1704*b1cdbd2cSJim Jagielski                     || rSh.CrsrInsideInputFld() )
1705*b1cdbd2cSJim Jagielski                 {
1706*b1cdbd2cSJim Jagielski                     rSet.DisableItem(nWhich);
1707*b1cdbd2cSJim Jagielski                 }
1708*b1cdbd2cSJim Jagielski                 else
1709*b1cdbd2cSJim Jagielski                 {
1710*b1cdbd2cSJim Jagielski                     rSet.Put(SfxBoolItem( nWhich, 0 != GetView().GetViewFrame()->GetChildWindow( nWhich ) ));
1711*b1cdbd2cSJim Jagielski                 }
1712*b1cdbd2cSJim Jagielski                 break;
1713*b1cdbd2cSJim Jagielski 
1714*b1cdbd2cSJim Jagielski             case FN_EDIT_HYPERLINK:
1715*b1cdbd2cSJim Jagielski             case FN_REMOVE_HYPERLINK:
1716*b1cdbd2cSJim Jagielski             case FN_COPY_HYPERLINK_LOCATION:
1717*b1cdbd2cSJim Jagielski                 {
1718*b1cdbd2cSJim Jagielski                     SfxItemSet aSet(GetPool(),
1719*b1cdbd2cSJim Jagielski                         RES_TXTATR_INETFMT,
1720*b1cdbd2cSJim Jagielski                         RES_TXTATR_INETFMT);
1721*b1cdbd2cSJim Jagielski                     rSh.GetCurAttr(aSet);
1722*b1cdbd2cSJim Jagielski                     if(SFX_ITEM_SET > aSet.GetItemState( RES_TXTATR_INETFMT, sal_True ) || rSh.HasReadonlySel())
1723*b1cdbd2cSJim Jagielski                     {
1724*b1cdbd2cSJim Jagielski                         rSet.DisableItem(nWhich);
1725*b1cdbd2cSJim Jagielski                     }
1726*b1cdbd2cSJim Jagielski                 }
1727*b1cdbd2cSJim Jagielski                 break;
1728*b1cdbd2cSJim Jagielski 
1729*b1cdbd2cSJim Jagielski             case SID_TRANSLITERATE_HALFWIDTH:
1730*b1cdbd2cSJim Jagielski             case SID_TRANSLITERATE_FULLWIDTH:
1731*b1cdbd2cSJim Jagielski             case SID_TRANSLITERATE_HIRAGANA:
1732*b1cdbd2cSJim Jagielski             case SID_TRANSLITERATE_KATAGANA:
1733*b1cdbd2cSJim Jagielski             {
1734*b1cdbd2cSJim Jagielski                 SvtCJKOptions aCJKOptions;
1735*b1cdbd2cSJim Jagielski                 if(!aCJKOptions.IsChangeCaseMapEnabled())
1736*b1cdbd2cSJim Jagielski                 {
1737*b1cdbd2cSJim Jagielski                     GetView().GetViewFrame()->GetBindings().SetVisibleState( nWhich, sal_False );
1738*b1cdbd2cSJim Jagielski                     rSet.DisableItem(nWhich);
1739*b1cdbd2cSJim Jagielski                 }
1740*b1cdbd2cSJim Jagielski                 else
1741*b1cdbd2cSJim Jagielski                     GetView().GetViewFrame()->GetBindings().SetVisibleState( nWhich, sal_True );
1742*b1cdbd2cSJim Jagielski             }
1743*b1cdbd2cSJim Jagielski             break;
1744*b1cdbd2cSJim Jagielski             case FN_READONLY_SELECTION_MODE :
1745*b1cdbd2cSJim Jagielski                 if(!GetView().GetDocShell()->IsReadOnly())
1746*b1cdbd2cSJim Jagielski                     rSet.DisableItem( nWhich );
1747*b1cdbd2cSJim Jagielski                 else
1748*b1cdbd2cSJim Jagielski                 {
1749*b1cdbd2cSJim Jagielski                     rSet.Put(SfxBoolItem(nWhich, rSh.GetViewOptions()->IsSelectionInReadonly()));
1750*b1cdbd2cSJim Jagielski                 }
1751*b1cdbd2cSJim Jagielski             break;
1752*b1cdbd2cSJim Jagielski             case FN_SELECTION_MODE_DEFAULT:
1753*b1cdbd2cSJim Jagielski             case FN_SELECTION_MODE_BLOCK :
1754*b1cdbd2cSJim Jagielski                     rSet.Put(SfxBoolItem(nWhich, (nWhich == FN_SELECTION_MODE_DEFAULT) != rSh.IsBlockMode()));
1755*b1cdbd2cSJim Jagielski             break;
1756*b1cdbd2cSJim Jagielski             case  SID_OPEN_HYPERLINK:
1757*b1cdbd2cSJim Jagielski             {
1758*b1cdbd2cSJim Jagielski                 SfxItemSet aSet(GetPool(),
1759*b1cdbd2cSJim Jagielski                                 RES_TXTATR_INETFMT,
1760*b1cdbd2cSJim Jagielski                                 RES_TXTATR_INETFMT);
1761*b1cdbd2cSJim Jagielski                 rSh.GetCurAttr(aSet);
1762*b1cdbd2cSJim Jagielski                 if(SFX_ITEM_SET > aSet.GetItemState( RES_TXTATR_INETFMT, sal_False ))
1763*b1cdbd2cSJim Jagielski                     rSet.DisableItem(nWhich);
1764*b1cdbd2cSJim Jagielski             }
1765*b1cdbd2cSJim Jagielski             break;
1766*b1cdbd2cSJim Jagielski             case  SID_OPEN_SMARTTAGMENU:
1767*b1cdbd2cSJim Jagielski             {
1768*b1cdbd2cSJim Jagielski                  uno::Sequence< rtl::OUString > aSmartTagTypes;
1769*b1cdbd2cSJim Jagielski                  uno::Sequence< uno::Reference< container::XStringKeyMap > > aStringKeyMaps;
1770*b1cdbd2cSJim Jagielski                  uno::Reference<text::XTextRange> xRange;
1771*b1cdbd2cSJim Jagielski 
1772*b1cdbd2cSJim Jagielski                  rSh.GetSmartTagTerm( aSmartTagTypes, aStringKeyMaps, xRange );
1773*b1cdbd2cSJim Jagielski 
1774*b1cdbd2cSJim Jagielski                  if ( xRange.is() && aSmartTagTypes.getLength() )
1775*b1cdbd2cSJim Jagielski                  {
1776*b1cdbd2cSJim Jagielski                      uno::Sequence < uno::Sequence< uno::Reference< smarttags::XSmartTagAction > > > aActionComponentsSequence;
1777*b1cdbd2cSJim Jagielski                      uno::Sequence < uno::Sequence< sal_Int32 > > aActionIndicesSequence;
1778*b1cdbd2cSJim Jagielski 
1779*b1cdbd2cSJim Jagielski                      const SmartTagMgr& rSmartTagMgr = SwSmartTagMgr::Get();
1780*b1cdbd2cSJim Jagielski                      rSmartTagMgr.GetActionSequences( aSmartTagTypes,
1781*b1cdbd2cSJim Jagielski                                                       aActionComponentsSequence,
1782*b1cdbd2cSJim Jagielski                                                       aActionIndicesSequence );
1783*b1cdbd2cSJim Jagielski 
1784*b1cdbd2cSJim Jagielski                      uno::Reference <frame::XController> xController = GetView().GetController();
1785*b1cdbd2cSJim Jagielski                      const lang::Locale aLocale( SW_BREAKITER()->GetLocale( (LanguageType)GetAppLanguage() ) );
1786*b1cdbd2cSJim Jagielski                      const rtl::OUString aApplicationName( rSmartTagMgr.GetApplicationName() );
1787*b1cdbd2cSJim Jagielski                      const rtl::OUString aRangeText = xRange->getString();
1788*b1cdbd2cSJim Jagielski 
1789*b1cdbd2cSJim Jagielski                      const SvxSmartTagItem aItem( nWhich,
1790*b1cdbd2cSJim Jagielski                                                   aActionComponentsSequence,
1791*b1cdbd2cSJim Jagielski                                                   aActionIndicesSequence,
1792*b1cdbd2cSJim Jagielski                                                   aStringKeyMaps,
1793*b1cdbd2cSJim Jagielski                                                   xRange,
1794*b1cdbd2cSJim Jagielski                                                   xController,
1795*b1cdbd2cSJim Jagielski                                                   aLocale,
1796*b1cdbd2cSJim Jagielski                                                   aApplicationName,
1797*b1cdbd2cSJim Jagielski                                                   aRangeText );
1798*b1cdbd2cSJim Jagielski 
1799*b1cdbd2cSJim Jagielski                      rSet.Put( aItem );
1800*b1cdbd2cSJim Jagielski                  }
1801*b1cdbd2cSJim Jagielski                  else
1802*b1cdbd2cSJim Jagielski                      rSet.DisableItem(nWhich);
1803*b1cdbd2cSJim Jagielski             }
1804*b1cdbd2cSJim Jagielski             break;
1805*b1cdbd2cSJim Jagielski             case FN_NUM_NUMBERING_ON:
1806*b1cdbd2cSJim Jagielski                 rSet.Put(SfxBoolItem(FN_NUM_NUMBERING_ON,rSh.SelectionHasNumber()));
1807*b1cdbd2cSJim Jagielski             break;
1808*b1cdbd2cSJim Jagielski             case FN_NUM_BULLET_ON:
1809*b1cdbd2cSJim Jagielski                 rSet.Put(SfxBoolItem(FN_NUM_BULLET_ON,rSh.SelectionHasBullet()));
1810*b1cdbd2cSJim Jagielski             break;
1811*b1cdbd2cSJim Jagielski             case FN_BUL_NUM_RULE_INDEX:
1812*b1cdbd2cSJim Jagielski             case FN_NUM_NUM_RULE_INDEX:
1813*b1cdbd2cSJim Jagielski 		{
1814*b1cdbd2cSJim Jagielski 			SwNumRule* pCurRule = (SwNumRule*)(GetShell().GetCurNumRule());
1815*b1cdbd2cSJim Jagielski 			sal_uInt16	nActNumLvl = (sal_uInt16)0xFFFF;
1816*b1cdbd2cSJim Jagielski 			rSet.Put(SfxUInt16Item(FN_NUM_NUM_RULE_INDEX,DEFAULT_NONE));
1817*b1cdbd2cSJim Jagielski 			rSet.Put(SfxUInt16Item(FN_BUL_NUM_RULE_INDEX,DEFAULT_NONE));
1818*b1cdbd2cSJim Jagielski 			if( pCurRule )
1819*b1cdbd2cSJim Jagielski 			{
1820*b1cdbd2cSJim Jagielski 				nActNumLvl = GetShell().GetNumLevel();
1821*b1cdbd2cSJim Jagielski 				if( nActNumLvl < MAXLEVEL )
1822*b1cdbd2cSJim Jagielski 				{
1823*b1cdbd2cSJim Jagielski 					nActNumLvl = 1<<nActNumLvl;
1824*b1cdbd2cSJim Jagielski 				}
1825*b1cdbd2cSJim Jagielski 				SvxNumRule aSvxRule = pCurRule->MakeSvxNumRule();
1826*b1cdbd2cSJim Jagielski 				if ( GetShell().HasBullet())
1827*b1cdbd2cSJim Jagielski 				{
1828*b1cdbd2cSJim Jagielski 					rSet.Put(SfxUInt16Item(FN_BUL_NUM_RULE_INDEX,(sal_uInt16)0xFFFF));
1829*b1cdbd2cSJim Jagielski 					rSet.Put(SfxUInt16Item(FN_NUM_NUM_RULE_INDEX,(sal_uInt16)0xFFFF));
1830*b1cdbd2cSJim Jagielski 					NBOTypeMgrBase* pBullets = NBOutlineTypeMgrFact::CreateInstance(eNBOType::MIXBULLETS);
1831*b1cdbd2cSJim Jagielski 					if ( pBullets )
1832*b1cdbd2cSJim Jagielski 					{
1833*b1cdbd2cSJim Jagielski 						sal_uInt16 nBulIndex = pBullets->GetNBOIndexForNumRule(aSvxRule,nActNumLvl);
1834*b1cdbd2cSJim Jagielski 						rSet.Put(SfxUInt16Item(FN_BUL_NUM_RULE_INDEX,nBulIndex));
1835*b1cdbd2cSJim Jagielski 					}
1836*b1cdbd2cSJim Jagielski 				}else if ( GetShell().HasNumber() )
1837*b1cdbd2cSJim Jagielski 				{
1838*b1cdbd2cSJim Jagielski 					rSet.Put(SfxUInt16Item(FN_BUL_NUM_RULE_INDEX,(sal_uInt16)0xFFFF));
1839*b1cdbd2cSJim Jagielski 					rSet.Put(SfxUInt16Item(FN_NUM_NUM_RULE_INDEX,(sal_uInt16)0xFFFF));
1840*b1cdbd2cSJim Jagielski 					NBOTypeMgrBase* pNumbering = NBOutlineTypeMgrFact::CreateInstance(eNBOType::NUMBERING);
1841*b1cdbd2cSJim Jagielski 					if ( pNumbering )
1842*b1cdbd2cSJim Jagielski 					{
1843*b1cdbd2cSJim Jagielski 						sal_uInt16 nBulIndex = pNumbering->GetNBOIndexForNumRule(aSvxRule,nActNumLvl);
1844*b1cdbd2cSJim Jagielski 						rSet.Put(SfxUInt16Item(FN_NUM_NUM_RULE_INDEX,nBulIndex));
1845*b1cdbd2cSJim Jagielski 					}
1846*b1cdbd2cSJim Jagielski 				}
1847*b1cdbd2cSJim Jagielski 			}
1848*b1cdbd2cSJim Jagielski 		}
1849*b1cdbd2cSJim Jagielski             break;
1850*b1cdbd2cSJim Jagielski             case FN_NUM_CONTINUE:
1851*b1cdbd2cSJim Jagielski             {
1852*b1cdbd2cSJim Jagielski                 {
1853*b1cdbd2cSJim Jagielski                     // --> OD 2009-08-26 #i86492#
1854*b1cdbd2cSJim Jagielski                     // Search also for bullet list
1855*b1cdbd2cSJim Jagielski                     String aDummy;
1856*b1cdbd2cSJim Jagielski                     const SwNumRule* pRule =
1857*b1cdbd2cSJim Jagielski                             rSh.SearchNumRule( false, true, false, -1, aDummy );
1858*b1cdbd2cSJim Jagielski                     if ( !pRule )
1859*b1cdbd2cSJim Jagielski                     {
1860*b1cdbd2cSJim Jagielski                         pRule = rSh.SearchNumRule( false, false, false, -1, aDummy );
1861*b1cdbd2cSJim Jagielski                     }
1862*b1cdbd2cSJim Jagielski                     // <--
1863*b1cdbd2cSJim Jagielski                     if ( !pRule )
1864*b1cdbd2cSJim Jagielski                         rSet.DisableItem(nWhich);
1865*b1cdbd2cSJim Jagielski                 }
1866*b1cdbd2cSJim Jagielski             }
1867*b1cdbd2cSJim Jagielski             break;
1868*b1cdbd2cSJim Jagielski             case SID_INSERT_RLM :
1869*b1cdbd2cSJim Jagielski             case SID_INSERT_LRM :
1870*b1cdbd2cSJim Jagielski             case SID_INSERT_ZWNBSP :
1871*b1cdbd2cSJim Jagielski             case SID_INSERT_ZWSP:
1872*b1cdbd2cSJim Jagielski             {
1873*b1cdbd2cSJim Jagielski                 SvtCTLOptions aCTLOptions;
1874*b1cdbd2cSJim Jagielski                 sal_Bool bEnabled = aCTLOptions.IsCTLFontEnabled();
1875*b1cdbd2cSJim Jagielski                 GetView().GetViewFrame()->GetBindings().SetVisibleState( nWhich, bEnabled );
1876*b1cdbd2cSJim Jagielski                 if(!bEnabled)
1877*b1cdbd2cSJim Jagielski                     rSet.DisableItem(nWhich);
1878*b1cdbd2cSJim Jagielski             }
1879*b1cdbd2cSJim Jagielski             break;
1880*b1cdbd2cSJim Jagielski         }
1881*b1cdbd2cSJim Jagielski         nWhich = aIter.NextWhich();
1882*b1cdbd2cSJim Jagielski 	}
1883*b1cdbd2cSJim Jagielski }
1884*b1cdbd2cSJim Jagielski /* -----------------------------2002/07/05 10:31------------------------------
1885*b1cdbd2cSJim Jagielski     Switch on/off header of footer of a page style - if an empty name is
1886*b1cdbd2cSJim Jagielski     given all styles are changed
1887*b1cdbd2cSJim Jagielski  ---------------------------------------------------------------------------*/
ChangeHeaderOrFooter(const String & rStyleName,sal_Bool bHeader,sal_Bool bOn,sal_Bool bShowWarning)1888*b1cdbd2cSJim Jagielski void SwTextShell::ChangeHeaderOrFooter(
1889*b1cdbd2cSJim Jagielski     const String& rStyleName, sal_Bool bHeader, sal_Bool bOn, sal_Bool bShowWarning)
1890*b1cdbd2cSJim Jagielski {
1891*b1cdbd2cSJim Jagielski     SwWrtShell& rSh = GetShell();
1892*b1cdbd2cSJim Jagielski     rSh.StartAllAction();
1893*b1cdbd2cSJim Jagielski     rSh.StartUndo( UNDO_HEADER_FOOTER ); // #i7983#
1894*b1cdbd2cSJim Jagielski     sal_Bool bExecute = sal_True;
1895*b1cdbd2cSJim Jagielski     sal_Bool bCrsrSet = sal_False;
1896*b1cdbd2cSJim Jagielski     for( sal_uInt16 nFrom = 0, nTo = rSh.GetPageDescCnt();
1897*b1cdbd2cSJim Jagielski             nFrom < nTo; ++nFrom )
1898*b1cdbd2cSJim Jagielski     {
1899*b1cdbd2cSJim Jagielski         int bChgd = sal_False;
1900*b1cdbd2cSJim Jagielski         SwPageDesc aDesc( rSh.GetPageDesc( nFrom ));
1901*b1cdbd2cSJim Jagielski         String sTmp(aDesc.GetName());
1902*b1cdbd2cSJim Jagielski         if( !rStyleName.Len() || rStyleName == sTmp )
1903*b1cdbd2cSJim Jagielski         {
1904*b1cdbd2cSJim Jagielski             if( bShowWarning && !bOn && GetActiveView() && GetActiveView() == &GetView() &&
1905*b1cdbd2cSJim Jagielski                     ((bHeader && aDesc.GetMaster().GetHeader().IsActive()) ||
1906*b1cdbd2cSJim Jagielski                         (!bHeader && aDesc.GetMaster().GetFooter().IsActive())))
1907*b1cdbd2cSJim Jagielski             {
1908*b1cdbd2cSJim Jagielski                 bShowWarning = sal_False;
1909*b1cdbd2cSJim Jagielski                 //Actions have to be closed while the dialog is showing
1910*b1cdbd2cSJim Jagielski                 rSh.EndAllAction();
1911*b1cdbd2cSJim Jagielski 
1912*b1cdbd2cSJim Jagielski                 Window* pParent = &GetView().GetViewFrame()->GetWindow();
1913*b1cdbd2cSJim Jagielski                 sal_Bool bRet = RET_YES == QueryBox( pParent, ResId( RID_SVXQBX_DELETE_HEADFOOT,
1914*b1cdbd2cSJim Jagielski                                         DIALOG_MGR() ) ).Execute();
1915*b1cdbd2cSJim Jagielski                 bExecute = bRet;
1916*b1cdbd2cSJim Jagielski                 rSh.StartAllAction();
1917*b1cdbd2cSJim Jagielski             }
1918*b1cdbd2cSJim Jagielski             if( bExecute )
1919*b1cdbd2cSJim Jagielski             {
1920*b1cdbd2cSJim Jagielski                 bChgd = sal_True;
1921*b1cdbd2cSJim Jagielski                 SwFrmFmt &rMaster = aDesc.GetMaster();
1922*b1cdbd2cSJim Jagielski                 if(bHeader)
1923*b1cdbd2cSJim Jagielski                     rMaster.SetFmtAttr( SwFmtHeader( bOn ));
1924*b1cdbd2cSJim Jagielski                 else
1925*b1cdbd2cSJim Jagielski                     rMaster.SetFmtAttr( SwFmtFooter( bOn ));
1926*b1cdbd2cSJim Jagielski                 if( bOn )
1927*b1cdbd2cSJim Jagielski                 {
1928*b1cdbd2cSJim Jagielski                     SvxULSpaceItem aUL(bHeader ? 0 : MM50, bHeader ? MM50 : 0, RES_UL_SPACE );
1929*b1cdbd2cSJim Jagielski                     SwFrmFmt* pFmt = bHeader ?
1930*b1cdbd2cSJim Jagielski                         (SwFrmFmt*)rMaster.GetHeader().GetHeaderFmt() :
1931*b1cdbd2cSJim Jagielski                         (SwFrmFmt*)rMaster.GetFooter().GetFooterFmt();
1932*b1cdbd2cSJim Jagielski                     pFmt->SetFmtAttr( aUL );
1933*b1cdbd2cSJim Jagielski                 }
1934*b1cdbd2cSJim Jagielski             }
1935*b1cdbd2cSJim Jagielski             if( bChgd )
1936*b1cdbd2cSJim Jagielski             {
1937*b1cdbd2cSJim Jagielski                 rSh.ChgPageDesc( nFrom, aDesc );
1938*b1cdbd2cSJim Jagielski 
1939*b1cdbd2cSJim Jagielski                 if( !bCrsrSet && bOn )
1940*b1cdbd2cSJim Jagielski                     bCrsrSet = rSh.SetCrsrInHdFt(
1941*b1cdbd2cSJim Jagielski                             !rStyleName.Len() ? (sal_uInt16)0xFFFF : nFrom,
1942*b1cdbd2cSJim Jagielski                             bHeader );
1943*b1cdbd2cSJim Jagielski             }
1944*b1cdbd2cSJim Jagielski         }
1945*b1cdbd2cSJim Jagielski     }
1946*b1cdbd2cSJim Jagielski     rSh.EndUndo( UNDO_HEADER_FOOTER ); // #i7983#
1947*b1cdbd2cSJim Jagielski     rSh.EndAllAction();
1948*b1cdbd2cSJim Jagielski }
1949*b1cdbd2cSJim Jagielski 
1950