xref: /aoo4110/main/sw/source/ui/shells/annotsh.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 <hintids.hxx>
28*b1cdbd2cSJim Jagielski 
29*b1cdbd2cSJim Jagielski #include <com/sun/star/i18n/TransliterationModules.hpp>
30*b1cdbd2cSJim Jagielski #include <com/sun/star/i18n/TransliterationModulesExtra.hpp>
31*b1cdbd2cSJim Jagielski #include <com/sun/star/i18n/TextConversionOption.hpp>
32*b1cdbd2cSJim Jagielski #include <com/sun/star/ui/dialogs/XExecutableDialog.hpp>
33*b1cdbd2cSJim Jagielski #include <com/sun/star/lang/XInitialization.hpp>
34*b1cdbd2cSJim Jagielski 
35*b1cdbd2cSJim Jagielski #include <tools/shl.hxx>
36*b1cdbd2cSJim Jagielski #include <i18npool/mslangid.hxx>
37*b1cdbd2cSJim Jagielski #include <sfx2/objface.hxx>
38*b1cdbd2cSJim Jagielski #include <sfx2/viewfrm.hxx>
39*b1cdbd2cSJim Jagielski #include <sfx2/bindings.hxx>
40*b1cdbd2cSJim Jagielski #include <sfx2/dispatch.hxx>
41*b1cdbd2cSJim Jagielski #include <sfx2/request.hxx>
42*b1cdbd2cSJim Jagielski #include <editeng/spltitem.hxx>
43*b1cdbd2cSJim Jagielski #include <editeng/lrspitem.hxx>
44*b1cdbd2cSJim Jagielski #include <editeng/ulspitem.hxx>
45*b1cdbd2cSJim Jagielski #include <editeng/orphitem.hxx>
46*b1cdbd2cSJim Jagielski #include <editeng/brkitem.hxx>
47*b1cdbd2cSJim Jagielski #include <editeng/widwitem.hxx>
48*b1cdbd2cSJim Jagielski #include <editeng/kernitem.hxx>
49*b1cdbd2cSJim Jagielski #include <editeng/escpitem.hxx>
50*b1cdbd2cSJim Jagielski #include <editeng/lspcitem.hxx>
51*b1cdbd2cSJim Jagielski #include <editeng/adjitem.hxx>
52*b1cdbd2cSJim Jagielski #include <editeng/crsditem.hxx>
53*b1cdbd2cSJim Jagielski #include <editeng/shdditem.hxx>
54*b1cdbd2cSJim Jagielski #include <editeng/hyznitem.hxx>
55*b1cdbd2cSJim Jagielski #include <editeng/udlnitem.hxx>
56*b1cdbd2cSJim Jagielski #include <editeng/fontitem.hxx>
57*b1cdbd2cSJim Jagielski #include <editeng/fhgtitem.hxx>
58*b1cdbd2cSJim Jagielski #include <svx/clipfmtitem.hxx>
59*b1cdbd2cSJim Jagielski #include <svl/stritem.hxx>
60*b1cdbd2cSJim Jagielski #include <svl/slstitm.hxx>
61*b1cdbd2cSJim Jagielski #include <editeng/colritem.hxx>
62*b1cdbd2cSJim Jagielski #include <editeng/wghtitem.hxx>
63*b1cdbd2cSJim Jagielski #include <editeng/cntritem.hxx>
64*b1cdbd2cSJim Jagielski #include <editeng/postitem.hxx>
65*b1cdbd2cSJim Jagielski #include <editeng/frmdiritem.hxx>
66*b1cdbd2cSJim Jagielski #include <svx/svdoutl.hxx>
67*b1cdbd2cSJim Jagielski #include <svl/whiter.hxx>
68*b1cdbd2cSJim Jagielski #include <svl/cjkoptions.hxx>
69*b1cdbd2cSJim Jagielski #include <svl/ctloptions.hxx>
70*b1cdbd2cSJim Jagielski #include <unotools/useroptions.hxx>
71*b1cdbd2cSJim Jagielski #include <vcl/msgbox.hxx>
72*b1cdbd2cSJim Jagielski #include <editeng/flditem.hxx>
73*b1cdbd2cSJim Jagielski #include <editeng/editstat.hxx>
74*b1cdbd2cSJim Jagielski #include <svx/hlnkitem.hxx>
75*b1cdbd2cSJim Jagielski #include <svx/htmlmode.hxx>
76*b1cdbd2cSJim Jagielski #include <editeng/langitem.hxx>
77*b1cdbd2cSJim Jagielski #include <editeng/unolingu.hxx>
78*b1cdbd2cSJim Jagielski #include <editeng/scripttypeitem.hxx>
79*b1cdbd2cSJim Jagielski #include <editeng/writingmodeitem.hxx>
80*b1cdbd2cSJim Jagielski #include <swundo.hxx>
81*b1cdbd2cSJim Jagielski #include <doc.hxx>
82*b1cdbd2cSJim Jagielski #include <viewopt.hxx>
83*b1cdbd2cSJim Jagielski #include <wrtsh.hxx>
84*b1cdbd2cSJim Jagielski #include <uitool.hxx>
85*b1cdbd2cSJim Jagielski #include <popup.hrc>
86*b1cdbd2cSJim Jagielski #include <pardlg.hxx>
87*b1cdbd2cSJim Jagielski #include <swdtflvr.hxx>
88*b1cdbd2cSJim Jagielski #include <drwtxtsh.hxx>
89*b1cdbd2cSJim Jagielski #include <swmodule.hxx>
90*b1cdbd2cSJim Jagielski #include <initui.hxx>
91*b1cdbd2cSJim Jagielski #include <edtwin.hxx>
92*b1cdbd2cSJim Jagielski #include <swwait.hxx>
93*b1cdbd2cSJim Jagielski #include <docstat.hxx>
94*b1cdbd2cSJim Jagielski 
95*b1cdbd2cSJim Jagielski #include <cmdid.h>
96*b1cdbd2cSJim Jagielski #include <globals.hrc>
97*b1cdbd2cSJim Jagielski #include <shells.hrc>
98*b1cdbd2cSJim Jagielski #include <breakit.hxx>
99*b1cdbd2cSJim Jagielski #include "annotsh.hxx"
100*b1cdbd2cSJim Jagielski #include "view.hxx"
101*b1cdbd2cSJim Jagielski #include <PostItMgr.hxx>
102*b1cdbd2cSJim Jagielski #include <SidebarWin.hxx>
103*b1cdbd2cSJim Jagielski 
104*b1cdbd2cSJim Jagielski #include "swtypes.hxx"
105*b1cdbd2cSJim Jagielski 
106*b1cdbd2cSJim Jagielski #include <svx/svxdlg.hxx>
107*b1cdbd2cSJim Jagielski #include <svx/dialogs.hrc>
108*b1cdbd2cSJim Jagielski 
109*b1cdbd2cSJim Jagielski #include <svx/svxids.hrc>
110*b1cdbd2cSJim Jagielski #include <sfx2/sidebar/EnumContext.hxx>
111*b1cdbd2cSJim Jagielski #include <svl/itempool.hxx>
112*b1cdbd2cSJim Jagielski #include <editeng/outliner.hxx>
113*b1cdbd2cSJim Jagielski #include <editeng/editeng.hxx>
114*b1cdbd2cSJim Jagielski #include <editeng/editview.hxx>
115*b1cdbd2cSJim Jagielski 
116*b1cdbd2cSJim Jagielski #include <svl/languageoptions.hxx>
117*b1cdbd2cSJim Jagielski #include <editeng/langitem.hxx>
118*b1cdbd2cSJim Jagielski #include <svtools/langtab.hxx>
119*b1cdbd2cSJim Jagielski #include <svl/slstitm.hxx>
120*b1cdbd2cSJim Jagielski 
121*b1cdbd2cSJim Jagielski #include <docsh.hxx>
122*b1cdbd2cSJim Jagielski #include <svl/undo.hxx>
123*b1cdbd2cSJim Jagielski #include "swabstdlg.hxx"
124*b1cdbd2cSJim Jagielski #include "chrdlg.hrc"
125*b1cdbd2cSJim Jagielski #include "misc.hrc"
126*b1cdbd2cSJim Jagielski #include <app.hrc>
127*b1cdbd2cSJim Jagielski 
128*b1cdbd2cSJim Jagielski #include <comphelper/processfactory.hxx>
129*b1cdbd2cSJim Jagielski 
130*b1cdbd2cSJim Jagielski #include <cppuhelper/bootstrap.hxx>
131*b1cdbd2cSJim Jagielski 
132*b1cdbd2cSJim Jagielski #include <langhelper.hxx>
133*b1cdbd2cSJim Jagielski 
134*b1cdbd2cSJim Jagielski using namespace ::com::sun::star;
135*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::uno;
136*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::beans;
137*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::i18n;
138*b1cdbd2cSJim Jagielski 
139*b1cdbd2cSJim Jagielski #define SwAnnotationShell
140*b1cdbd2cSJim Jagielski 
141*b1cdbd2cSJim Jagielski #include <sfx2/msg.hxx>
142*b1cdbd2cSJim Jagielski #include <swslots.hxx>
143*b1cdbd2cSJim Jagielski 
SFX_IMPL_INTERFACE(SwAnnotationShell,SfxShell,SW_RES (STR_SHELLNAME_DRAW_TEXT))144*b1cdbd2cSJim Jagielski SFX_IMPL_INTERFACE(SwAnnotationShell, SfxShell, SW_RES(STR_SHELLNAME_DRAW_TEXT))
145*b1cdbd2cSJim Jagielski {
146*b1cdbd2cSJim Jagielski 	SFX_OBJECTBAR_REGISTRATION(SFX_OBJECTBAR_OBJECT, SW_RES(RID_TEXT_TOOLBOX));
147*b1cdbd2cSJim Jagielski 	SFX_POPUPMENU_REGISTRATION(SW_RES(MN_ANNOTATION_POPUPMENU));
148*b1cdbd2cSJim Jagielski }
149*b1cdbd2cSJim Jagielski 
TYPEINIT1(SwAnnotationShell,SfxShell)150*b1cdbd2cSJim Jagielski TYPEINIT1(SwAnnotationShell,SfxShell)
151*b1cdbd2cSJim Jagielski 
152*b1cdbd2cSJim Jagielski SwAnnotationShell::SwAnnotationShell( SwView& r )
153*b1cdbd2cSJim Jagielski : rView(r)
154*b1cdbd2cSJim Jagielski {
155*b1cdbd2cSJim Jagielski 	SwWrtShell &rSh = rView.GetWrtShell();
156*b1cdbd2cSJim Jagielski 	SetPool(rSh.GetAttrPool().GetSecondaryPool());
157*b1cdbd2cSJim Jagielski     SfxShell::SetContextName(sfx2::sidebar::EnumContext::GetContextName(sfx2::sidebar::EnumContext::Context_Annotation));
158*b1cdbd2cSJim Jagielski }
159*b1cdbd2cSJim Jagielski 
~SwAnnotationShell()160*b1cdbd2cSJim Jagielski SwAnnotationShell::~SwAnnotationShell()
161*b1cdbd2cSJim Jagielski {
162*b1cdbd2cSJim Jagielski }
163*b1cdbd2cSJim Jagielski 
GetUndoManager()164*b1cdbd2cSJim Jagielski ::svl::IUndoManager* SwAnnotationShell::GetUndoManager()
165*b1cdbd2cSJim Jagielski {
166*b1cdbd2cSJim Jagielski 	SwPostItMgr* pPostItMgr = rView.GetPostItMgr();
167*b1cdbd2cSJim Jagielski     if ( !pPostItMgr ||
168*b1cdbd2cSJim Jagielski          !pPostItMgr->HasActiveSidebarWin() )
169*b1cdbd2cSJim Jagielski 	{
170*b1cdbd2cSJim Jagielski 		DBG_ASSERT(pPostItMgr,"PostItMgr::Layout(): We are looping forever");
171*b1cdbd2cSJim Jagielski 		return 0;
172*b1cdbd2cSJim Jagielski 	}
173*b1cdbd2cSJim Jagielski     return &pPostItMgr->GetActiveSidebarWin()->GetOutlinerView()->GetOutliner()->GetUndoManager();
174*b1cdbd2cSJim Jagielski }
175*b1cdbd2cSJim Jagielski 
Exec(SfxRequest & rReq)176*b1cdbd2cSJim Jagielski void SwAnnotationShell::Exec( SfxRequest &rReq )
177*b1cdbd2cSJim Jagielski {
178*b1cdbd2cSJim Jagielski 	//TODO: clean this up!!!!
179*b1cdbd2cSJim Jagielski 	SwPostItMgr* pPostItMgr = rView.GetPostItMgr();
180*b1cdbd2cSJim Jagielski     if ( !pPostItMgr || !pPostItMgr->HasActiveSidebarWin() )
181*b1cdbd2cSJim Jagielski 		return;
182*b1cdbd2cSJim Jagielski 
183*b1cdbd2cSJim Jagielski     OutlinerView* pOLV = pPostItMgr->GetActiveSidebarWin()->GetOutlinerView();
184*b1cdbd2cSJim Jagielski     SfxItemSet aEditAttr(pOLV->GetAttribs());
185*b1cdbd2cSJim Jagielski 	SfxItemSet aNewAttr(*aEditAttr.GetPool(), aEditAttr.GetRanges());
186*b1cdbd2cSJim Jagielski 
187*b1cdbd2cSJim Jagielski 	sal_uInt16 nSlot = rReq.GetSlot();
188*b1cdbd2cSJim Jagielski 	sal_uInt16 nWhich = GetPool().GetWhich(nSlot);
189*b1cdbd2cSJim Jagielski 	const SfxItemSet *pNewAttrs = rReq.GetArgs();
190*b1cdbd2cSJim Jagielski     sal_uInt16 nEEWhich = 0;
191*b1cdbd2cSJim Jagielski 	switch (nSlot)
192*b1cdbd2cSJim Jagielski 	{
193*b1cdbd2cSJim Jagielski 		case SID_ATTR_PARA_LRSPACE:
194*b1cdbd2cSJim Jagielski 			{
195*b1cdbd2cSJim Jagielski 				SvxLRSpaceItem aParaMargin((const SvxLRSpaceItem&)rReq.
196*b1cdbd2cSJim Jagielski 										GetArgs()->Get(nSlot));
197*b1cdbd2cSJim Jagielski 				aParaMargin.SetWhich( EE_PARA_LRSPACE );
198*b1cdbd2cSJim Jagielski 
199*b1cdbd2cSJim Jagielski 				aNewAttr.Put(aParaMargin);
200*b1cdbd2cSJim Jagielski 				rReq.Done();
201*b1cdbd2cSJim Jagielski 				break;
202*b1cdbd2cSJim Jagielski 			}
203*b1cdbd2cSJim Jagielski 		case SID_ATTR_PARA_LINESPACE:
204*b1cdbd2cSJim Jagielski 			{
205*b1cdbd2cSJim Jagielski 				SvxLineSpacingItem aParaMargin = (const SvxLineSpacingItem&)pNewAttrs->Get(
206*b1cdbd2cSJim Jagielski 															GetPool().GetWhich(nSlot));
207*b1cdbd2cSJim Jagielski 				aParaMargin.SetWhich( EE_PARA_SBL );
208*b1cdbd2cSJim Jagielski 
209*b1cdbd2cSJim Jagielski 				aNewAttr.Put(aParaMargin);
210*b1cdbd2cSJim Jagielski 				rReq.Done();
211*b1cdbd2cSJim Jagielski 				break;
212*b1cdbd2cSJim Jagielski 			}
213*b1cdbd2cSJim Jagielski 		case SID_ATTR_PARA_ULSPACE:
214*b1cdbd2cSJim Jagielski 			{
215*b1cdbd2cSJim Jagielski 				SvxULSpaceItem aULSpace = (const SvxULSpaceItem&)pNewAttrs->Get(
216*b1cdbd2cSJim Jagielski 					GetPool().GetWhich(nSlot));
217*b1cdbd2cSJim Jagielski 				aULSpace.SetWhich( EE_PARA_ULSPACE );
218*b1cdbd2cSJim Jagielski 				aNewAttr.Put( aULSpace );
219*b1cdbd2cSJim Jagielski 				rReq.Done();
220*b1cdbd2cSJim Jagielski 			}
221*b1cdbd2cSJim Jagielski 			break;
222*b1cdbd2cSJim Jagielski 		case SID_ATTR_CHAR_FONT:
223*b1cdbd2cSJim Jagielski 		case SID_ATTR_CHAR_FONTHEIGHT:
224*b1cdbd2cSJim Jagielski 		case SID_ATTR_CHAR_WEIGHT:
225*b1cdbd2cSJim Jagielski 		case SID_ATTR_CHAR_POSTURE:
226*b1cdbd2cSJim Jagielski 			{
227*b1cdbd2cSJim Jagielski 				SfxItemPool* pSecondPool = aEditAttr.GetPool()->GetSecondaryPool();
228*b1cdbd2cSJim Jagielski 				if( !pSecondPool )
229*b1cdbd2cSJim Jagielski 					pSecondPool = aEditAttr.GetPool();
230*b1cdbd2cSJim Jagielski 				SvxScriptSetItem aSetItem( nSlot, *pSecondPool );
231*b1cdbd2cSJim Jagielski 				aSetItem.PutItemForScriptType( pOLV->GetSelectedScriptType(), pNewAttrs->Get( nWhich ));
232*b1cdbd2cSJim Jagielski 				aNewAttr.Put( aSetItem.GetItemSet() );
233*b1cdbd2cSJim Jagielski 				rReq.Done();
234*b1cdbd2cSJim Jagielski 				break;
235*b1cdbd2cSJim Jagielski 			}
236*b1cdbd2cSJim Jagielski 		case SID_ATTR_CHAR_COLOR: nEEWhich = EE_CHAR_COLOR; break;
237*b1cdbd2cSJim Jagielski 		case SID_ATTR_CHAR_UNDERLINE:
238*b1cdbd2cSJim Jagielski 		{
239*b1cdbd2cSJim Jagielski 			if( rReq.GetArgs() )
240*b1cdbd2cSJim Jagielski 			{
241*b1cdbd2cSJim Jagielski 				SFX_REQUEST_ARG( rReq, pItem, SvxUnderlineItem, SID_ATTR_CHAR_UNDERLINE , sal_False );
242*b1cdbd2cSJim Jagielski 				if (pItem)
243*b1cdbd2cSJim Jagielski 				{
244*b1cdbd2cSJim Jagielski 					aNewAttr.Put(*pItem);
245*b1cdbd2cSJim Jagielski 				}
246*b1cdbd2cSJim Jagielski 				else
247*b1cdbd2cSJim Jagielski 				{
248*b1cdbd2cSJim Jagielski 					FontUnderline eFU = ( (const SvxUnderlineItem&) aEditAttr.Get( EE_CHAR_UNDERLINE ) ).GetLineStyle();
249*b1cdbd2cSJim Jagielski 					aNewAttr.Put( SvxUnderlineItem( eFU != UNDERLINE_NONE ?UNDERLINE_NONE : UNDERLINE_SINGLE,  EE_CHAR_UNDERLINE ) );
250*b1cdbd2cSJim Jagielski 				}
251*b1cdbd2cSJim Jagielski 			}
252*b1cdbd2cSJim Jagielski 			break;
253*b1cdbd2cSJim Jagielski 		}
254*b1cdbd2cSJim Jagielski 		case SID_ATTR_CHAR_OVERLINE:
255*b1cdbd2cSJim Jagielski 		{
256*b1cdbd2cSJim Jagielski 		 	FontUnderline eFO = ((const SvxOverlineItem&)aEditAttr.Get(EE_CHAR_OVERLINE)).GetLineStyle();
257*b1cdbd2cSJim Jagielski 			aNewAttr.Put(SvxOverlineItem(eFO == UNDERLINE_SINGLE ? UNDERLINE_NONE : UNDERLINE_SINGLE, EE_CHAR_OVERLINE));
258*b1cdbd2cSJim Jagielski 			break;
259*b1cdbd2cSJim Jagielski 		}
260*b1cdbd2cSJim Jagielski 		case SID_ATTR_CHAR_CONTOUR:     nEEWhich = EE_CHAR_OUTLINE; break;
261*b1cdbd2cSJim Jagielski         case SID_ATTR_CHAR_SHADOWED:    nEEWhich = EE_CHAR_SHADOW; break;
262*b1cdbd2cSJim Jagielski         case SID_ATTR_CHAR_STRIKEOUT:   nEEWhich = EE_CHAR_STRIKEOUT; break;
263*b1cdbd2cSJim Jagielski 		case SID_ATTR_CHAR_WORDLINEMODE: nEEWhich = EE_CHAR_WLM; break;
264*b1cdbd2cSJim Jagielski         case SID_ATTR_CHAR_RELIEF      : nEEWhich = EE_CHAR_RELIEF;  break;
265*b1cdbd2cSJim Jagielski         case SID_ATTR_CHAR_LANGUAGE    : nEEWhich = EE_CHAR_LANGUAGE;break;
266*b1cdbd2cSJim Jagielski         case SID_ATTR_CHAR_KERNING     : nEEWhich = EE_CHAR_KERNING; break;
267*b1cdbd2cSJim Jagielski         case SID_ATTR_CHAR_SCALEWIDTH:   nEEWhich = EE_CHAR_FONTWIDTH; break;
268*b1cdbd2cSJim Jagielski         case SID_ATTR_CHAR_AUTOKERN  :   nEEWhich = EE_CHAR_PAIRKERNING; break;
269*b1cdbd2cSJim Jagielski         case SID_ATTR_CHAR_ESCAPEMENT:   nEEWhich = EE_CHAR_ESCAPEMENT; break;
270*b1cdbd2cSJim Jagielski         case SID_ATTR_PARA_ADJUST_LEFT:
271*b1cdbd2cSJim Jagielski 			aNewAttr.Put(SvxAdjustItem(SVX_ADJUST_LEFT, EE_PARA_JUST));
272*b1cdbd2cSJim Jagielski         break;
273*b1cdbd2cSJim Jagielski 		case SID_ATTR_PARA_ADJUST_CENTER:
274*b1cdbd2cSJim Jagielski 			aNewAttr.Put(SvxAdjustItem(SVX_ADJUST_CENTER, EE_PARA_JUST));
275*b1cdbd2cSJim Jagielski         break;
276*b1cdbd2cSJim Jagielski 		case SID_ATTR_PARA_ADJUST_RIGHT:
277*b1cdbd2cSJim Jagielski 			aNewAttr.Put(SvxAdjustItem(SVX_ADJUST_RIGHT, EE_PARA_JUST));
278*b1cdbd2cSJim Jagielski         break;
279*b1cdbd2cSJim Jagielski 		case SID_ATTR_PARA_ADJUST_BLOCK:
280*b1cdbd2cSJim Jagielski 			aNewAttr.Put(SvxAdjustItem(SVX_ADJUST_BLOCK, EE_PARA_JUST));
281*b1cdbd2cSJim Jagielski         break;
282*b1cdbd2cSJim Jagielski 
283*b1cdbd2cSJim Jagielski 		case SID_ATTR_PARA_LINESPACE_10:
284*b1cdbd2cSJim Jagielski 		{
285*b1cdbd2cSJim Jagielski 			SvxLineSpacingItem aItem(SVX_LINESPACE_ONE_LINE, EE_PARA_SBL);
286*b1cdbd2cSJim Jagielski 			aItem.SetPropLineSpace(100);
287*b1cdbd2cSJim Jagielski 			aNewAttr.Put(aItem);
288*b1cdbd2cSJim Jagielski 		}
289*b1cdbd2cSJim Jagielski 		break;
290*b1cdbd2cSJim Jagielski 		case SID_ATTR_PARA_LINESPACE_15:
291*b1cdbd2cSJim Jagielski 		{
292*b1cdbd2cSJim Jagielski 			SvxLineSpacingItem aItem(SVX_LINESPACE_ONE_POINT_FIVE_LINES, EE_PARA_SBL);
293*b1cdbd2cSJim Jagielski 			aItem.SetPropLineSpace(150);
294*b1cdbd2cSJim Jagielski 			aNewAttr.Put(aItem);
295*b1cdbd2cSJim Jagielski 		}
296*b1cdbd2cSJim Jagielski 		break;
297*b1cdbd2cSJim Jagielski 		case SID_ATTR_PARA_LINESPACE_20:
298*b1cdbd2cSJim Jagielski 		{
299*b1cdbd2cSJim Jagielski 			SvxLineSpacingItem aItem(SVX_LINESPACE_TWO_LINES, EE_PARA_SBL);
300*b1cdbd2cSJim Jagielski 			aItem.SetPropLineSpace(200);
301*b1cdbd2cSJim Jagielski 			aNewAttr.Put(aItem);
302*b1cdbd2cSJim Jagielski 		}
303*b1cdbd2cSJim Jagielski 		break;
304*b1cdbd2cSJim Jagielski 		case SID_SELECTALL:
305*b1cdbd2cSJim Jagielski 		{
306*b1cdbd2cSJim Jagielski             Outliner * pOutliner = pOLV->GetOutliner();
307*b1cdbd2cSJim Jagielski             if(pOutliner)
308*b1cdbd2cSJim Jagielski             {
309*b1cdbd2cSJim Jagielski                 sal_uLong nParaCount = pOutliner->GetParagraphCount();
310*b1cdbd2cSJim Jagielski                 if (nParaCount > 0)
311*b1cdbd2cSJim Jagielski                     pOLV->SelectRange(0L, sal_uInt16(nParaCount) );
312*b1cdbd2cSJim Jagielski             }
313*b1cdbd2cSJim Jagielski 			break;
314*b1cdbd2cSJim Jagielski 		}
315*b1cdbd2cSJim Jagielski 		case FN_FORMAT_RESET:
316*b1cdbd2cSJim Jagielski 		{
317*b1cdbd2cSJim Jagielski             pPostItMgr->GetActiveSidebarWin()->ResetAttributes();
318*b1cdbd2cSJim Jagielski 			rReq.Done();
319*b1cdbd2cSJim Jagielski 			break;
320*b1cdbd2cSJim Jagielski 		}
321*b1cdbd2cSJim Jagielski 		case FN_SET_SUPER_SCRIPT:
322*b1cdbd2cSJim Jagielski 		{
323*b1cdbd2cSJim Jagielski 			SvxEscapementItem aItem(EE_CHAR_ESCAPEMENT);
324*b1cdbd2cSJim Jagielski 			SvxEscapement eEsc = (SvxEscapement ) ( (const SvxEscapementItem&)
325*b1cdbd2cSJim Jagielski 							aEditAttr.Get( EE_CHAR_ESCAPEMENT ) ).GetEnumValue();
326*b1cdbd2cSJim Jagielski 
327*b1cdbd2cSJim Jagielski 			if( eEsc == SVX_ESCAPEMENT_SUPERSCRIPT )
328*b1cdbd2cSJim Jagielski 				aItem.SetEscapement( SVX_ESCAPEMENT_OFF );
329*b1cdbd2cSJim Jagielski 			else
330*b1cdbd2cSJim Jagielski 				aItem.SetEscapement( SVX_ESCAPEMENT_SUPERSCRIPT );
331*b1cdbd2cSJim Jagielski 			aNewAttr.Put( aItem, EE_CHAR_ESCAPEMENT );
332*b1cdbd2cSJim Jagielski 		}
333*b1cdbd2cSJim Jagielski 		break;
334*b1cdbd2cSJim Jagielski 		case FN_SET_SUB_SCRIPT:
335*b1cdbd2cSJim Jagielski 		{
336*b1cdbd2cSJim Jagielski 			SvxEscapementItem aItem(EE_CHAR_ESCAPEMENT);
337*b1cdbd2cSJim Jagielski 			SvxEscapement eEsc = (SvxEscapement ) ( (const SvxEscapementItem&)
338*b1cdbd2cSJim Jagielski 							aEditAttr.Get( EE_CHAR_ESCAPEMENT ) ).GetEnumValue();
339*b1cdbd2cSJim Jagielski 
340*b1cdbd2cSJim Jagielski 			if( eEsc == SVX_ESCAPEMENT_SUBSCRIPT )
341*b1cdbd2cSJim Jagielski 				aItem.SetEscapement( SVX_ESCAPEMENT_OFF );
342*b1cdbd2cSJim Jagielski 			else
343*b1cdbd2cSJim Jagielski 				aItem.SetEscapement( SVX_ESCAPEMENT_SUBSCRIPT );
344*b1cdbd2cSJim Jagielski 			aNewAttr.Put( aItem, EE_CHAR_ESCAPEMENT );
345*b1cdbd2cSJim Jagielski 		}
346*b1cdbd2cSJim Jagielski 		break;
347*b1cdbd2cSJim Jagielski 		case SID_HYPERLINK_SETLINK:
348*b1cdbd2cSJim Jagielski 		{
349*b1cdbd2cSJim Jagielski 			const SfxPoolItem* pItem = 0;
350*b1cdbd2cSJim Jagielski 			if(pNewAttrs)
351*b1cdbd2cSJim Jagielski 				pNewAttrs->GetItemState(nSlot, sal_False, &pItem);
352*b1cdbd2cSJim Jagielski 
353*b1cdbd2cSJim Jagielski 			if(pItem)
354*b1cdbd2cSJim Jagielski 			{
355*b1cdbd2cSJim Jagielski 				const SvxHyperlinkItem& rHLinkItem = *(const SvxHyperlinkItem *)pItem;
356*b1cdbd2cSJim Jagielski 				SvxURLField aFld(rHLinkItem.GetURL(), rHLinkItem.GetName(), SVXURLFORMAT_APPDEFAULT);
357*b1cdbd2cSJim Jagielski 				aFld.SetTargetFrame(rHLinkItem.GetTargetFrame());
358*b1cdbd2cSJim Jagielski 
359*b1cdbd2cSJim Jagielski 				const SvxFieldItem* pFieldItem = pOLV->GetFieldAtSelection();
360*b1cdbd2cSJim Jagielski 
361*b1cdbd2cSJim Jagielski 				if (pFieldItem && pFieldItem->GetField()->ISA(SvxURLField))
362*b1cdbd2cSJim Jagielski 				{
363*b1cdbd2cSJim Jagielski 					// Feld selektieren, so dass es beim Insert geloescht wird
364*b1cdbd2cSJim Jagielski 					ESelection aSel = pOLV->GetSelection();
365*b1cdbd2cSJim Jagielski 					aSel.nEndPos++;
366*b1cdbd2cSJim Jagielski 					pOLV->SetSelection(aSel);
367*b1cdbd2cSJim Jagielski 				}
368*b1cdbd2cSJim Jagielski                 if (pPostItMgr->GetActiveSidebarWin()->GetLayoutStatus()!=SwPostItHelper::DELETED)
369*b1cdbd2cSJim Jagielski 					pOLV->InsertField(SvxFieldItem(aFld, EE_FEATURE_FIELD));
370*b1cdbd2cSJim Jagielski 			}
371*b1cdbd2cSJim Jagielski 			break;
372*b1cdbd2cSJim Jagielski 		}
373*b1cdbd2cSJim Jagielski 		case FN_INSERT_SOFT_HYPHEN:
374*b1cdbd2cSJim Jagielski         case FN_INSERT_HARDHYPHEN:
375*b1cdbd2cSJim Jagielski         case FN_INSERT_HARD_SPACE:
376*b1cdbd2cSJim Jagielski         case SID_INSERT_RLM :
377*b1cdbd2cSJim Jagielski         case SID_INSERT_LRM :
378*b1cdbd2cSJim Jagielski         case SID_INSERT_ZWNBSP :
379*b1cdbd2cSJim Jagielski         case SID_INSERT_ZWSP:
380*b1cdbd2cSJim Jagielski         {
381*b1cdbd2cSJim Jagielski             sal_Unicode cIns = 0;
382*b1cdbd2cSJim Jagielski             switch(rReq.GetSlot())
383*b1cdbd2cSJim Jagielski             {
384*b1cdbd2cSJim Jagielski                 case FN_INSERT_SOFT_HYPHEN: cIns = CHAR_SOFTHYPHEN; break;
385*b1cdbd2cSJim Jagielski                 case FN_INSERT_HARDHYPHEN: cIns = CHAR_HARDHYPHEN; break;
386*b1cdbd2cSJim Jagielski                 case FN_INSERT_HARD_SPACE: cIns = CHAR_HARDBLANK; break;
387*b1cdbd2cSJim Jagielski                 case SID_INSERT_RLM : cIns = CHAR_RLM ; break;
388*b1cdbd2cSJim Jagielski                 case SID_INSERT_LRM : cIns = CHAR_LRM ; break;
389*b1cdbd2cSJim Jagielski                 case SID_INSERT_ZWSP : cIns = CHAR_ZWSP ; break;
390*b1cdbd2cSJim Jagielski                 case SID_INSERT_ZWNBSP: cIns = CHAR_ZWNBSP; break;
391*b1cdbd2cSJim Jagielski             }
392*b1cdbd2cSJim Jagielski             pOLV->InsertText( String(cIns));
393*b1cdbd2cSJim Jagielski             rReq.Done();
394*b1cdbd2cSJim Jagielski 			break;
395*b1cdbd2cSJim Jagielski         }
396*b1cdbd2cSJim Jagielski 		case SID_CHARMAP:
397*b1cdbd2cSJim Jagielski 		{
398*b1cdbd2cSJim Jagielski             if (pPostItMgr->GetActiveSidebarWin()->GetLayoutStatus()!=SwPostItHelper::DELETED)
399*b1cdbd2cSJim Jagielski 				InsertSymbol(rReq);
400*b1cdbd2cSJim Jagielski 			break;
401*b1cdbd2cSJim Jagielski 		}
402*b1cdbd2cSJim Jagielski 	        case FN_INSERT_STRING:
403*b1cdbd2cSJim Jagielski                 {
404*b1cdbd2cSJim Jagielski 			const SfxPoolItem* pItem = 0;
405*b1cdbd2cSJim Jagielski 			if(pNewAttrs)
406*b1cdbd2cSJim Jagielski 				pNewAttrs->GetItemState(nSlot, sal_False, &pItem );
407*b1cdbd2cSJim Jagielski                         if (pPostItMgr->GetActiveSidebarWin()->GetLayoutStatus()!=SwPostItHelper::DELETED)
408*b1cdbd2cSJim Jagielski                                 pOLV->InsertText(((const SfxStringItem *)pItem)->GetValue());
409*b1cdbd2cSJim Jagielski                         break;
410*b1cdbd2cSJim Jagielski                 }
411*b1cdbd2cSJim Jagielski 
412*b1cdbd2cSJim Jagielski 		case FN_FORMAT_FOOTNOTE_DLG:
413*b1cdbd2cSJim Jagielski 		{
414*b1cdbd2cSJim Jagielski             SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
415*b1cdbd2cSJim Jagielski             DBG_ASSERT(pFact, "SwAbstractDialogFactory fail!");
416*b1cdbd2cSJim Jagielski 
417*b1cdbd2cSJim Jagielski             VclAbstractDialog* pDlg = pFact->CreateSwFootNoteOptionDlg( rView.GetWindow(), rView.GetWrtShell(), DLG_DOC_FOOTNOTE );
418*b1cdbd2cSJim Jagielski             DBG_ASSERT(pDlg, "Dialogdiet fail!");
419*b1cdbd2cSJim Jagielski 			pDlg->Execute();
420*b1cdbd2cSJim Jagielski 			delete pDlg;
421*b1cdbd2cSJim Jagielski 			break;
422*b1cdbd2cSJim Jagielski 		}
423*b1cdbd2cSJim Jagielski 		case FN_NUMBERING_OUTLINE_DLG:
424*b1cdbd2cSJim Jagielski 		{
425*b1cdbd2cSJim Jagielski 			SfxItemSet aTmp(GetPool(), FN_PARAM_1, FN_PARAM_1);
426*b1cdbd2cSJim Jagielski 			SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
427*b1cdbd2cSJim Jagielski             DBG_ASSERT(pFact, "Dialogdiet fail!");
428*b1cdbd2cSJim Jagielski             SfxAbstractTabDialog* pDlg = pFact->CreateSwTabDialog( DLG_TAB_OUTLINE,
429*b1cdbd2cSJim Jagielski 														rView.GetWindow(), &aTmp, rView.GetWrtShell());
430*b1cdbd2cSJim Jagielski             DBG_ASSERT(pDlg, "Dialogdiet fail!");
431*b1cdbd2cSJim Jagielski 			pDlg->Execute();
432*b1cdbd2cSJim Jagielski 			delete pDlg;
433*b1cdbd2cSJim Jagielski 			rReq.Done();
434*b1cdbd2cSJim Jagielski 		}
435*b1cdbd2cSJim Jagielski 		break;
436*b1cdbd2cSJim Jagielski 		case SID_OPEN_XML_FILTERSETTINGS:
437*b1cdbd2cSJim Jagielski 		{
438*b1cdbd2cSJim Jagielski 			try
439*b1cdbd2cSJim Jagielski 			{
440*b1cdbd2cSJim Jagielski 				uno::Reference < ui::dialogs::XExecutableDialog > xDialog(::comphelper::getProcessServiceFactory()->createInstance(rtl::OUString::createFromAscii("com.sun.star.comp.ui.XSLTFilterDialog")), uno::UNO_QUERY);
441*b1cdbd2cSJim Jagielski 				if( xDialog.is() )
442*b1cdbd2cSJim Jagielski 				{
443*b1cdbd2cSJim Jagielski 					xDialog->execute();
444*b1cdbd2cSJim Jagielski 				}
445*b1cdbd2cSJim Jagielski 			}
446*b1cdbd2cSJim Jagielski 			catch( uno::Exception& )
447*b1cdbd2cSJim Jagielski 			{
448*b1cdbd2cSJim Jagielski 			}
449*b1cdbd2cSJim Jagielski 			rReq.Ignore ();
450*b1cdbd2cSJim Jagielski 		}
451*b1cdbd2cSJim Jagielski 		break;
452*b1cdbd2cSJim Jagielski 		case FN_WORDCOUNT_DIALOG:
453*b1cdbd2cSJim Jagielski 		{
454*b1cdbd2cSJim Jagielski 			SwWrtShell &rSh = rView.GetWrtShell();
455*b1cdbd2cSJim Jagielski 			SwDocStat aCurr;
456*b1cdbd2cSJim Jagielski 			SwDocStat aDocStat( rSh.getIDocumentStatistics()->GetDocStat() );
457*b1cdbd2cSJim Jagielski 			{
458*b1cdbd2cSJim Jagielski 				SwWait aWait( *rView.GetDocShell(), true );
459*b1cdbd2cSJim Jagielski 				rSh.StartAction();
460*b1cdbd2cSJim Jagielski 				rSh.CountWords( aCurr );
461*b1cdbd2cSJim Jagielski 				rSh.UpdateDocStat( aDocStat );
462*b1cdbd2cSJim Jagielski 				rSh.EndAction();
463*b1cdbd2cSJim Jagielski 			}
464*b1cdbd2cSJim Jagielski 
465*b1cdbd2cSJim Jagielski 			SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
466*b1cdbd2cSJim Jagielski 			DBG_ASSERT(pFact, "Dialogdiet fail!");
467*b1cdbd2cSJim Jagielski 			AbstractSwWordCountDialog* pDialog = pFact->CreateSwWordCountDialog( rView.GetWindow() );
468*b1cdbd2cSJim Jagielski 			pDialog->SetValues(aCurr, aDocStat );
469*b1cdbd2cSJim Jagielski 			pDialog->Execute();
470*b1cdbd2cSJim Jagielski 			delete pDialog;
471*b1cdbd2cSJim Jagielski 		}
472*b1cdbd2cSJim Jagielski 		break;
473*b1cdbd2cSJim Jagielski 		case SID_CHAR_DLG_EFFECT:
474*b1cdbd2cSJim Jagielski 		case SID_CHAR_DLG:
475*b1cdbd2cSJim Jagielski 		{
476*b1cdbd2cSJim Jagielski 			const SfxItemSet* pArgs = rReq.GetArgs();
477*b1cdbd2cSJim Jagielski 
478*b1cdbd2cSJim Jagielski 			if( !pArgs )
479*b1cdbd2cSJim Jagielski 			{
480*b1cdbd2cSJim Jagielski 				/* mod
481*b1cdbd2cSJim Jagielski 				SwView* pView = &GetView();
482*b1cdbd2cSJim Jagielski 				FieldUnit eMetric = ::GetDfltMetric(0 != PTR_CAST(SwWebView, pView));
483*b1cdbd2cSJim Jagielski 				SW_MOD()->PutItem(SfxUInt16Item(SID_ATTR_METRIC, eMetric));
484*b1cdbd2cSJim Jagielski 				*/
485*b1cdbd2cSJim Jagielski 				SfxItemSet aDlgAttr(GetPool(), EE_ITEMS_START, EE_ITEMS_END);
486*b1cdbd2cSJim Jagielski 
487*b1cdbd2cSJim Jagielski 				// util::Language gibts an der EditEngine nicht! Daher nicht im Set.
488*b1cdbd2cSJim Jagielski 
489*b1cdbd2cSJim Jagielski 				aDlgAttr.Put( aEditAttr );
490*b1cdbd2cSJim Jagielski                 aDlgAttr.Put( SvxKerningItem(0, RES_CHRATR_KERNING) );
491*b1cdbd2cSJim Jagielski 
492*b1cdbd2cSJim Jagielski 				//CHINA001 SwCharDlg* pDlg = new SwCharDlg(pView->GetWindow(), *pView, aDlgAttr, 0, sal_True);
493*b1cdbd2cSJim Jagielski 				SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();//CHINA001
494*b1cdbd2cSJim Jagielski 				DBG_ASSERT(pFact, "SwAbstractDialogFactory fail!");//CHINA001
495*b1cdbd2cSJim Jagielski 
496*b1cdbd2cSJim Jagielski 				SfxAbstractTabDialog* pDlg = pFact->CreateSwCharDlg( rView.GetWindow(), rView, aDlgAttr, DLG_CHAR,0, sal_True );
497*b1cdbd2cSJim Jagielski 				DBG_ASSERT(pDlg, "Dialogdiet fail!");//CHINA001
498*b1cdbd2cSJim Jagielski 				if (nSlot == SID_CHAR_DLG_EFFECT)
499*b1cdbd2cSJim Jagielski 				{
500*b1cdbd2cSJim Jagielski 					pDlg->SetCurPageId(TP_CHAR_EXT);
501*b1cdbd2cSJim Jagielski 				}
502*b1cdbd2cSJim Jagielski 				sal_uInt16 nRet = pDlg->Execute();
503*b1cdbd2cSJim Jagielski 				if(RET_OK == nRet )
504*b1cdbd2cSJim Jagielski                 {
505*b1cdbd2cSJim Jagielski                     rReq.Done( *( pDlg->GetOutputItemSet() ) );
506*b1cdbd2cSJim Jagielski                     aNewAttr.Put(*pDlg->GetOutputItemSet());
507*b1cdbd2cSJim Jagielski                 }
508*b1cdbd2cSJim Jagielski 				delete( pDlg );
509*b1cdbd2cSJim Jagielski 				if(RET_OK != nRet)
510*b1cdbd2cSJim Jagielski 					return ;
511*b1cdbd2cSJim Jagielski 			}
512*b1cdbd2cSJim Jagielski 			else
513*b1cdbd2cSJim Jagielski 				aNewAttr.Put(*pArgs);
514*b1cdbd2cSJim Jagielski 		break;
515*b1cdbd2cSJim Jagielski 		}
516*b1cdbd2cSJim Jagielski 		case SID_PARA_DLG:
517*b1cdbd2cSJim Jagielski 		{
518*b1cdbd2cSJim Jagielski 			const SfxItemSet* pArgs = rReq.GetArgs();
519*b1cdbd2cSJim Jagielski 
520*b1cdbd2cSJim Jagielski 			if (!pArgs)
521*b1cdbd2cSJim Jagielski 			{
522*b1cdbd2cSJim Jagielski 				/* mod todo ???
523*b1cdbd2cSJim Jagielski 				SwView* pView = &GetView();
524*b1cdbd2cSJim Jagielski 				FieldUnit eMetric = ::GetDfltMetric(0 != PTR_CAST(SwWebView, pView));
525*b1cdbd2cSJim Jagielski 				SW_MOD()->PutItem(SfxUInt16Item(SID_ATTR_METRIC, eMetric));
526*b1cdbd2cSJim Jagielski 				*/
527*b1cdbd2cSJim Jagielski 				SfxItemSet aDlgAttr(GetPool(),
528*b1cdbd2cSJim Jagielski 									EE_ITEMS_START, EE_ITEMS_END,
529*b1cdbd2cSJim Jagielski 									SID_ATTR_PARA_HYPHENZONE, SID_ATTR_PARA_HYPHENZONE,
530*b1cdbd2cSJim Jagielski 									SID_ATTR_PARA_SPLIT, SID_ATTR_PARA_SPLIT,
531*b1cdbd2cSJim Jagielski 									SID_ATTR_PARA_WIDOWS, SID_ATTR_PARA_WIDOWS,
532*b1cdbd2cSJim Jagielski 									SID_ATTR_PARA_ORPHANS, SID_ATTR_PARA_ORPHANS,
533*b1cdbd2cSJim Jagielski 									0);
534*b1cdbd2cSJim Jagielski 
535*b1cdbd2cSJim Jagielski 				aDlgAttr.Put(aEditAttr);
536*b1cdbd2cSJim Jagielski 
537*b1cdbd2cSJim Jagielski 
538*b1cdbd2cSJim Jagielski                 aDlgAttr.Put( SvxHyphenZoneItem( sal_False, RES_PARATR_HYPHENZONE) );
539*b1cdbd2cSJim Jagielski                 aDlgAttr.Put( SvxFmtBreakItem( SVX_BREAK_NONE, RES_BREAK ) );
540*b1cdbd2cSJim Jagielski                 aDlgAttr.Put( SvxFmtSplitItem( sal_True, RES_PARATR_SPLIT ) );
541*b1cdbd2cSJim Jagielski                 aDlgAttr.Put( SvxWidowsItem( 0, RES_PARATR_WIDOWS ) );
542*b1cdbd2cSJim Jagielski                 aDlgAttr.Put( SvxOrphansItem( 0, RES_PARATR_ORPHANS ) );
543*b1cdbd2cSJim Jagielski 
544*b1cdbd2cSJim Jagielski 				//CHINA001 SwParaDlg* pDlg = new SwParaDlg(GetView().GetWindow(), GetView(), aDlgAttr, DLG_STD, 0, sal_True);
545*b1cdbd2cSJim Jagielski 
546*b1cdbd2cSJim Jagielski 				SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();//CHINA001
547*b1cdbd2cSJim Jagielski 				DBG_ASSERT(pFact, "SwAbstractDialogFactory fail!");//CHINA001
548*b1cdbd2cSJim Jagielski 
549*b1cdbd2cSJim Jagielski 				SfxAbstractTabDialog* pDlg = pFact->CreateSwParaDlg( rView.GetWindow(), rView, aDlgAttr,DLG_STD, DLG_PARA, 0, sal_True );
550*b1cdbd2cSJim Jagielski 				DBG_ASSERT(pDlg, "Dialogdiet fail!");//CHINA001
551*b1cdbd2cSJim Jagielski 				sal_uInt16 nRet = pDlg->Execute();
552*b1cdbd2cSJim Jagielski 				if(RET_OK == nRet)
553*b1cdbd2cSJim Jagielski                 {
554*b1cdbd2cSJim Jagielski                     rReq.Done( *( pDlg->GetOutputItemSet() ) );
555*b1cdbd2cSJim Jagielski                     aNewAttr.Put(*pDlg->GetOutputItemSet());
556*b1cdbd2cSJim Jagielski                 }
557*b1cdbd2cSJim Jagielski 				delete( pDlg );
558*b1cdbd2cSJim Jagielski 				if(RET_OK != nRet)
559*b1cdbd2cSJim Jagielski 					return;
560*b1cdbd2cSJim Jagielski 			}
561*b1cdbd2cSJim Jagielski 			else
562*b1cdbd2cSJim Jagielski 				aNewAttr.Put(*pArgs);
563*b1cdbd2cSJim Jagielski 			break;
564*b1cdbd2cSJim Jagielski 		}
565*b1cdbd2cSJim Jagielski 
566*b1cdbd2cSJim Jagielski 		case SID_AUTOSPELL_CHECK:
567*b1cdbd2cSJim Jagielski 		{
568*b1cdbd2cSJim Jagielski 			rView.ExecuteSlot(rReq);
569*b1cdbd2cSJim Jagielski 			break;
570*b1cdbd2cSJim Jagielski 		}
571*b1cdbd2cSJim Jagielski 		case SID_ATTR_PARA_LEFT_TO_RIGHT:
572*b1cdbd2cSJim Jagielski         case SID_ATTR_PARA_RIGHT_TO_LEFT:
573*b1cdbd2cSJim Jagielski         {
574*b1cdbd2cSJim Jagielski             sal_Bool bLeftToRight = nSlot == SID_ATTR_PARA_LEFT_TO_RIGHT;
575*b1cdbd2cSJim Jagielski 
576*b1cdbd2cSJim Jagielski             const SfxPoolItem* pPoolItem;
577*b1cdbd2cSJim Jagielski             if( pNewAttrs && SFX_ITEM_SET == pNewAttrs->GetItemState( nSlot, sal_True, &pPoolItem ) )
578*b1cdbd2cSJim Jagielski             {
579*b1cdbd2cSJim Jagielski                 if( !( (SfxBoolItem*)pPoolItem)->GetValue() )
580*b1cdbd2cSJim Jagielski                     bLeftToRight = !bLeftToRight;
581*b1cdbd2cSJim Jagielski             }
582*b1cdbd2cSJim Jagielski             SfxItemSet aAttr( *aNewAttr.GetPool(),
583*b1cdbd2cSJim Jagielski                         EE_PARA_JUST, EE_PARA_JUST,
584*b1cdbd2cSJim Jagielski                         EE_PARA_WRITINGDIR, EE_PARA_WRITINGDIR,
585*b1cdbd2cSJim Jagielski                         0 );
586*b1cdbd2cSJim Jagielski 
587*b1cdbd2cSJim Jagielski             sal_uInt16 nAdjust = SVX_ADJUST_LEFT;
588*b1cdbd2cSJim Jagielski             if( SFX_ITEM_ON == aEditAttr.GetItemState(EE_PARA_JUST, sal_True, &pPoolItem ) )
589*b1cdbd2cSJim Jagielski                 nAdjust = ( (SvxAdjustItem*)pPoolItem)->GetEnumValue();
590*b1cdbd2cSJim Jagielski 
591*b1cdbd2cSJim Jagielski             if( bLeftToRight )
592*b1cdbd2cSJim Jagielski             {
593*b1cdbd2cSJim Jagielski                 aAttr.Put( SvxFrameDirectionItem( FRMDIR_HORI_LEFT_TOP, EE_PARA_WRITINGDIR ) );
594*b1cdbd2cSJim Jagielski                 if( nAdjust == SVX_ADJUST_RIGHT )
595*b1cdbd2cSJim Jagielski                     aAttr.Put( SvxAdjustItem( SVX_ADJUST_LEFT, EE_PARA_JUST ) );
596*b1cdbd2cSJim Jagielski             }
597*b1cdbd2cSJim Jagielski             else
598*b1cdbd2cSJim Jagielski             {
599*b1cdbd2cSJim Jagielski                 aAttr.Put( SvxFrameDirectionItem( FRMDIR_HORI_RIGHT_TOP, EE_PARA_WRITINGDIR ) );
600*b1cdbd2cSJim Jagielski                 if( nAdjust == SVX_ADJUST_LEFT )
601*b1cdbd2cSJim Jagielski                     aAttr.Put( SvxAdjustItem( SVX_ADJUST_RIGHT, EE_PARA_JUST ) );
602*b1cdbd2cSJim Jagielski             }
603*b1cdbd2cSJim Jagielski             pOLV->SetAttribs(aAttr);
604*b1cdbd2cSJim Jagielski 			break;
605*b1cdbd2cSJim Jagielski         }
606*b1cdbd2cSJim Jagielski 	}
607*b1cdbd2cSJim Jagielski 
608*b1cdbd2cSJim Jagielski     if(nEEWhich && pNewAttrs)
609*b1cdbd2cSJim Jagielski         aNewAttr.Put(pNewAttrs->Get(nWhich), nEEWhich);
610*b1cdbd2cSJim Jagielski 
611*b1cdbd2cSJim Jagielski 	Rectangle aNullRect;
612*b1cdbd2cSJim Jagielski     Rectangle aOutRect = pOLV->GetOutputArea();
613*b1cdbd2cSJim Jagielski 	if (aNullRect != aOutRect)
614*b1cdbd2cSJim Jagielski 		pOLV->SetAttribs(aNewAttr);
615*b1cdbd2cSJim Jagielski 
616*b1cdbd2cSJim Jagielski 	rView.GetViewFrame()->GetBindings().InvalidateAll(sal_False);
617*b1cdbd2cSJim Jagielski 	if ( pOLV->GetOutliner()->IsModified() )
618*b1cdbd2cSJim Jagielski 		rView.GetWrtShell().SetModified();
619*b1cdbd2cSJim Jagielski 
620*b1cdbd2cSJim Jagielski }
621*b1cdbd2cSJim Jagielski 
GetState(SfxItemSet & rSet)622*b1cdbd2cSJim Jagielski void SwAnnotationShell::GetState(SfxItemSet& rSet)
623*b1cdbd2cSJim Jagielski {
624*b1cdbd2cSJim Jagielski 	//TODO: clean this up!!!
625*b1cdbd2cSJim Jagielski 	// FN_SET_SUPER_SCRIPT
626*b1cdbd2cSJim Jagielski 	//SID_ATTR_PARA_ADJUST
627*b1cdbd2cSJim Jagielski 	//SID_ATTR_PARA_ADJUST_BLOCK
628*b1cdbd2cSJim Jagielski 
629*b1cdbd2cSJim Jagielski 	SwPostItMgr* pPostItMgr = rView.GetPostItMgr();
630*b1cdbd2cSJim Jagielski     if ( !pPostItMgr || !pPostItMgr->HasActiveSidebarWin() )
631*b1cdbd2cSJim Jagielski 		return;
632*b1cdbd2cSJim Jagielski 
633*b1cdbd2cSJim Jagielski     OutlinerView* pOLV = pPostItMgr->GetActiveSidebarWin()->GetOutlinerView();
634*b1cdbd2cSJim Jagielski 	SfxItemSet aEditAttr(pOLV->GetAttribs());
635*b1cdbd2cSJim Jagielski 
636*b1cdbd2cSJim Jagielski 	SfxWhichIter aIter(rSet);
637*b1cdbd2cSJim Jagielski 	sal_uInt16 nWhich = aIter.FirstWhich();
638*b1cdbd2cSJim Jagielski     while(nWhich)
639*b1cdbd2cSJim Jagielski 	{
640*b1cdbd2cSJim Jagielski         sal_uInt16 nEEWhich = 0;
641*b1cdbd2cSJim Jagielski         sal_uInt16 nSlotId = GetPool().GetSlotId( nWhich );
642*b1cdbd2cSJim Jagielski 		switch( nSlotId )
643*b1cdbd2cSJim Jagielski 		{
644*b1cdbd2cSJim Jagielski 			case SID_ATTR_PARA_LRSPACE:
645*b1cdbd2cSJim Jagielski 			{
646*b1cdbd2cSJim Jagielski 				SfxItemState eState = aEditAttr.GetItemState( EE_PARA_LRSPACE );
647*b1cdbd2cSJim Jagielski 				if( eState >= SFX_ITEM_DEFAULT )
648*b1cdbd2cSJim Jagielski 				{
649*b1cdbd2cSJim Jagielski 					SvxLRSpaceItem aLR = ( (const SvxLRSpaceItem&) aEditAttr.Get( EE_PARA_LRSPACE ) );
650*b1cdbd2cSJim Jagielski 					aLR.SetWhich(SID_ATTR_PARA_LRSPACE);
651*b1cdbd2cSJim Jagielski 					rSet.Put(aLR);
652*b1cdbd2cSJim Jagielski 				}
653*b1cdbd2cSJim Jagielski 				else
654*b1cdbd2cSJim Jagielski 					rSet.InvalidateItem(nSlotId);
655*b1cdbd2cSJim Jagielski 			}
656*b1cdbd2cSJim Jagielski 			break;
657*b1cdbd2cSJim Jagielski 			case SID_ATTR_PARA_LINESPACE:
658*b1cdbd2cSJim Jagielski 			{
659*b1cdbd2cSJim Jagielski 				SfxItemState eState = aEditAttr.GetItemState( EE_PARA_SBL );
660*b1cdbd2cSJim Jagielski 				if( eState >= SFX_ITEM_DEFAULT )
661*b1cdbd2cSJim Jagielski 				{
662*b1cdbd2cSJim Jagielski 					SvxLineSpacingItem aLR = ( (const SvxLineSpacingItem&) aEditAttr.Get( EE_PARA_SBL ) );
663*b1cdbd2cSJim Jagielski 					rSet.Put(aLR);
664*b1cdbd2cSJim Jagielski 				}
665*b1cdbd2cSJim Jagielski 				else
666*b1cdbd2cSJim Jagielski 					rSet.InvalidateItem(nSlotId);
667*b1cdbd2cSJim Jagielski 			}
668*b1cdbd2cSJim Jagielski 			break;
669*b1cdbd2cSJim Jagielski 			case SID_ATTR_PARA_ULSPACE:
670*b1cdbd2cSJim Jagielski 				{
671*b1cdbd2cSJim Jagielski 					SfxItemState eState = aEditAttr.GetItemState( EE_PARA_ULSPACE );
672*b1cdbd2cSJim Jagielski 					if( eState >= SFX_ITEM_DEFAULT )
673*b1cdbd2cSJim Jagielski 					{
674*b1cdbd2cSJim Jagielski 						SvxULSpaceItem aULSpace = (const SvxULSpaceItem&) aEditAttr.Get( EE_PARA_ULSPACE );
675*b1cdbd2cSJim Jagielski 						aULSpace.SetWhich(SID_ATTR_PARA_ULSPACE);
676*b1cdbd2cSJim Jagielski 						rSet.Put(aULSpace);
677*b1cdbd2cSJim Jagielski 					}
678*b1cdbd2cSJim Jagielski 					else
679*b1cdbd2cSJim Jagielski 						rSet.InvalidateItem(nSlotId);
680*b1cdbd2cSJim Jagielski 				}
681*b1cdbd2cSJim Jagielski             		break;
682*b1cdbd2cSJim Jagielski 			case SID_ATTR_CHAR_FONT:
683*b1cdbd2cSJim Jagielski 			case SID_ATTR_CHAR_FONTHEIGHT:
684*b1cdbd2cSJim Jagielski 			case SID_ATTR_CHAR_WEIGHT:
685*b1cdbd2cSJim Jagielski 			case SID_ATTR_CHAR_POSTURE:
686*b1cdbd2cSJim Jagielski 				{
687*b1cdbd2cSJim Jagielski 					if ( pOLV )
688*b1cdbd2cSJim Jagielski 					{
689*b1cdbd2cSJim Jagielski 						sal_uInt16 nScriptType = pOLV->GetSelectedScriptType();
690*b1cdbd2cSJim Jagielski 						SfxItemPool* pSecondPool = aEditAttr.GetPool()->GetSecondaryPool();
691*b1cdbd2cSJim Jagielski 						if( !pSecondPool )
692*b1cdbd2cSJim Jagielski 							pSecondPool = aEditAttr.GetPool();
693*b1cdbd2cSJim Jagielski 						SvxScriptSetItem aSetItem( nSlotId, *pSecondPool );
694*b1cdbd2cSJim Jagielski 						aSetItem.GetItemSet().Put( aEditAttr, sal_False );
695*b1cdbd2cSJim Jagielski 						const SfxPoolItem* pI = aSetItem.GetItemOfScript( nScriptType );
696*b1cdbd2cSJim Jagielski 						if( pI )
697*b1cdbd2cSJim Jagielski 							rSet.Put( *pI, nWhich );
698*b1cdbd2cSJim Jagielski 						else
699*b1cdbd2cSJim Jagielski 							rSet.InvalidateItem( nWhich );
700*b1cdbd2cSJim Jagielski 					}
701*b1cdbd2cSJim Jagielski 					else
702*b1cdbd2cSJim Jagielski 						rSet.InvalidateItem( nWhich );
703*b1cdbd2cSJim Jagielski 				}
704*b1cdbd2cSJim Jagielski 				break;
705*b1cdbd2cSJim Jagielski             case SID_ATTR_CHAR_COLOR: nEEWhich = EE_CHAR_COLOR; break;
706*b1cdbd2cSJim Jagielski             case SID_ATTR_CHAR_UNDERLINE: nEEWhich = EE_CHAR_UNDERLINE;break;
707*b1cdbd2cSJim Jagielski             case SID_ATTR_CHAR_OVERLINE: nEEWhich = EE_CHAR_OVERLINE;break;
708*b1cdbd2cSJim Jagielski             case SID_ATTR_CHAR_CONTOUR:	nEEWhich = EE_CHAR_OUTLINE; break;
709*b1cdbd2cSJim Jagielski             case SID_ATTR_CHAR_SHADOWED:  nEEWhich = EE_CHAR_SHADOW;break;
710*b1cdbd2cSJim Jagielski             case SID_ATTR_CHAR_STRIKEOUT: nEEWhich = EE_CHAR_STRIKEOUT;break;
711*b1cdbd2cSJim Jagielski 			case SID_ATTR_CHAR_LANGUAGE    : nEEWhich = EE_CHAR_LANGUAGE;break;
712*b1cdbd2cSJim Jagielski 			case SID_ATTR_CHAR_ESCAPEMENT: nEEWhich = EE_CHAR_ESCAPEMENT;break;
713*b1cdbd2cSJim Jagielski 			case SID_ATTR_CHAR_KERNING:	 nEEWhich = EE_CHAR_KERNING;break;
714*b1cdbd2cSJim Jagielski 			case FN_SET_SUPER_SCRIPT:
715*b1cdbd2cSJim Jagielski 			case FN_SET_SUB_SCRIPT:
716*b1cdbd2cSJim Jagielski 			{
717*b1cdbd2cSJim Jagielski 				sal_uInt16 nEsc = 0;
718*b1cdbd2cSJim Jagielski 				const SfxPoolItem *pEscItem = 0;
719*b1cdbd2cSJim Jagielski 				if (nWhich==FN_SET_SUPER_SCRIPT)
720*b1cdbd2cSJim Jagielski 					nEsc = SVX_ESCAPEMENT_SUPERSCRIPT;
721*b1cdbd2cSJim Jagielski 				else
722*b1cdbd2cSJim Jagielski 					nEsc = SVX_ESCAPEMENT_SUBSCRIPT;
723*b1cdbd2cSJim Jagielski 
724*b1cdbd2cSJim Jagielski 				if( !pEscItem )
725*b1cdbd2cSJim Jagielski 					pEscItem = &aEditAttr.Get( EE_CHAR_ESCAPEMENT );
726*b1cdbd2cSJim Jagielski 
727*b1cdbd2cSJim Jagielski 				if( nEsc == ((const SvxEscapementItem*)pEscItem)->GetEnumValue() )
728*b1cdbd2cSJim Jagielski 					rSet.Put( SfxBoolItem( nWhich, sal_True ));
729*b1cdbd2cSJim Jagielski 				else
730*b1cdbd2cSJim Jagielski 					rSet.InvalidateItem( nWhich );
731*b1cdbd2cSJim Jagielski 				break;
732*b1cdbd2cSJim Jagielski 			}
733*b1cdbd2cSJim Jagielski 			case SID_ATTR_PARA_ADJUST_LEFT:
734*b1cdbd2cSJim Jagielski 			case SID_ATTR_PARA_ADJUST_RIGHT:
735*b1cdbd2cSJim Jagielski 			case SID_ATTR_PARA_ADJUST_CENTER:
736*b1cdbd2cSJim Jagielski 			case SID_ATTR_PARA_ADJUST_BLOCK:
737*b1cdbd2cSJim Jagielski 				{
738*b1cdbd2cSJim Jagielski 					const SfxPoolItem *pAdjust = 0;
739*b1cdbd2cSJim Jagielski 					int eAdjust = 0;
740*b1cdbd2cSJim Jagielski 
741*b1cdbd2cSJim Jagielski 					if (nWhich==SID_ATTR_PARA_ADJUST_LEFT)
742*b1cdbd2cSJim Jagielski 						eAdjust = SVX_ADJUST_LEFT;
743*b1cdbd2cSJim Jagielski 					else
744*b1cdbd2cSJim Jagielski 					if (nWhich==SID_ATTR_PARA_ADJUST_RIGHT)
745*b1cdbd2cSJim Jagielski 						eAdjust = SVX_ADJUST_RIGHT;
746*b1cdbd2cSJim Jagielski 					else
747*b1cdbd2cSJim Jagielski 					if (nWhich==SID_ATTR_PARA_ADJUST_CENTER)
748*b1cdbd2cSJim Jagielski 						eAdjust = SVX_ADJUST_CENTER;
749*b1cdbd2cSJim Jagielski 					else
750*b1cdbd2cSJim Jagielski 					if (nWhich==SID_ATTR_PARA_ADJUST_BLOCK)
751*b1cdbd2cSJim Jagielski 						eAdjust = SVX_ADJUST_BLOCK;
752*b1cdbd2cSJim Jagielski 
753*b1cdbd2cSJim Jagielski 					if( !pAdjust )
754*b1cdbd2cSJim Jagielski 						aEditAttr.GetItemState( EE_PARA_JUST, sal_False, &pAdjust);
755*b1cdbd2cSJim Jagielski 
756*b1cdbd2cSJim Jagielski 					if( !pAdjust || IsInvalidItem( pAdjust ))
757*b1cdbd2cSJim Jagielski 						rSet.InvalidateItem( nSlotId ), nSlotId = 0;
758*b1cdbd2cSJim Jagielski 					else
759*b1cdbd2cSJim Jagielski 					{
760*b1cdbd2cSJim Jagielski 						if ( eAdjust == ((const SvxAdjustItem*)pAdjust)->GetAdjust())
761*b1cdbd2cSJim Jagielski 							rSet.Put( SfxBoolItem( nWhich, sal_True ));
762*b1cdbd2cSJim Jagielski 						else
763*b1cdbd2cSJim Jagielski 							rSet.InvalidateItem( nWhich );
764*b1cdbd2cSJim Jagielski 					}
765*b1cdbd2cSJim Jagielski 					break;
766*b1cdbd2cSJim Jagielski 				}
767*b1cdbd2cSJim Jagielski 			case SID_ATTR_PARA_LINESPACE_10:
768*b1cdbd2cSJim Jagielski 			case SID_ATTR_PARA_LINESPACE_15:
769*b1cdbd2cSJim Jagielski 			case SID_ATTR_PARA_LINESPACE_20:
770*b1cdbd2cSJim Jagielski 				{
771*b1cdbd2cSJim Jagielski 					const SfxPoolItem *pLSpace = 0;
772*b1cdbd2cSJim Jagielski 					int nLSpace = 0;
773*b1cdbd2cSJim Jagielski 
774*b1cdbd2cSJim Jagielski 					if (nWhich==SID_ATTR_PARA_LINESPACE_10)
775*b1cdbd2cSJim Jagielski 						nLSpace = 100;
776*b1cdbd2cSJim Jagielski 					else
777*b1cdbd2cSJim Jagielski 					if (nWhich==SID_ATTR_PARA_LINESPACE_15)
778*b1cdbd2cSJim Jagielski 						nLSpace = 150;
779*b1cdbd2cSJim Jagielski 					else
780*b1cdbd2cSJim Jagielski 					if (nWhich==SID_ATTR_PARA_LINESPACE_20)
781*b1cdbd2cSJim Jagielski 						nLSpace = 200;
782*b1cdbd2cSJim Jagielski 
783*b1cdbd2cSJim Jagielski 					if( !pLSpace )
784*b1cdbd2cSJim Jagielski 						aEditAttr.GetItemState( EE_PARA_SBL, sal_False, &pLSpace );
785*b1cdbd2cSJim Jagielski 
786*b1cdbd2cSJim Jagielski 					if( !pLSpace || IsInvalidItem( pLSpace ))
787*b1cdbd2cSJim Jagielski 						rSet.InvalidateItem( nSlotId ), nSlotId = 0;
788*b1cdbd2cSJim Jagielski 					else
789*b1cdbd2cSJim Jagielski 					{
790*b1cdbd2cSJim Jagielski 						if( nLSpace == ((const SvxLineSpacingItem*)pLSpace)->GetPropLineSpace() )
791*b1cdbd2cSJim Jagielski 							rSet.Put( SfxBoolItem( nWhich, sal_True ));
792*b1cdbd2cSJim Jagielski 						else
793*b1cdbd2cSJim Jagielski 							rSet.InvalidateItem( nWhich );
794*b1cdbd2cSJim Jagielski 					}
795*b1cdbd2cSJim Jagielski 					break;
796*b1cdbd2cSJim Jagielski 				}
797*b1cdbd2cSJim Jagielski             case SID_AUTOSPELL_CHECK:
798*b1cdbd2cSJim Jagielski             {
799*b1cdbd2cSJim Jagielski 				const SfxPoolItem* pState = rView.GetSlotState(nWhich);
800*b1cdbd2cSJim Jagielski                 if (pState)
801*b1cdbd2cSJim Jagielski                     rSet.Put(SfxBoolItem(nWhich, ((const SfxBoolItem*)pState)->GetValue()));
802*b1cdbd2cSJim Jagielski                 else
803*b1cdbd2cSJim Jagielski                     rSet.DisableItem( nWhich );
804*b1cdbd2cSJim Jagielski                 break;
805*b1cdbd2cSJim Jagielski             }
806*b1cdbd2cSJim Jagielski 			case SID_ATTR_PARA_LEFT_TO_RIGHT:
807*b1cdbd2cSJim Jagielski 			case SID_ATTR_PARA_RIGHT_TO_LEFT:
808*b1cdbd2cSJim Jagielski 			{
809*b1cdbd2cSJim Jagielski 				if ( !SvtLanguageOptions().IsCTLFontEnabled() )
810*b1cdbd2cSJim Jagielski 					rSet.DisableItem( nWhich );
811*b1cdbd2cSJim Jagielski 				else
812*b1cdbd2cSJim Jagielski 				{
813*b1cdbd2cSJim Jagielski 					if(pOLV->GetOutliner() && pOLV->GetOutliner()->IsVertical())
814*b1cdbd2cSJim Jagielski 						rSet.DisableItem( nWhich );
815*b1cdbd2cSJim Jagielski 					else
816*b1cdbd2cSJim Jagielski 					{
817*b1cdbd2cSJim Jagielski 						sal_Bool bFlag = sal_False;
818*b1cdbd2cSJim Jagielski 						switch( ( ( (SvxFrameDirectionItem&) aEditAttr.Get( EE_PARA_WRITINGDIR ) ) ).GetValue() )
819*b1cdbd2cSJim Jagielski 						{
820*b1cdbd2cSJim Jagielski 							case FRMDIR_HORI_LEFT_TOP:
821*b1cdbd2cSJim Jagielski 							{
822*b1cdbd2cSJim Jagielski 								bFlag = nWhich == SID_ATTR_PARA_LEFT_TO_RIGHT;
823*b1cdbd2cSJim Jagielski 								rSet.Put( SfxBoolItem( nWhich, bFlag ));
824*b1cdbd2cSJim Jagielski 								break;
825*b1cdbd2cSJim Jagielski 							}
826*b1cdbd2cSJim Jagielski 							case FRMDIR_HORI_RIGHT_TOP:
827*b1cdbd2cSJim Jagielski 							{
828*b1cdbd2cSJim Jagielski 								bFlag = nWhich != SID_ATTR_PARA_LEFT_TO_RIGHT;
829*b1cdbd2cSJim Jagielski 								rSet.Put( SfxBoolItem( nWhich, bFlag ));
830*b1cdbd2cSJim Jagielski 								break;
831*b1cdbd2cSJim Jagielski 							}
832*b1cdbd2cSJim Jagielski 						}
833*b1cdbd2cSJim Jagielski 					}
834*b1cdbd2cSJim Jagielski 				}
835*b1cdbd2cSJim Jagielski 			}
836*b1cdbd2cSJim Jagielski 			break;
837*b1cdbd2cSJim Jagielski 			case SID_INSERT_RLM :
838*b1cdbd2cSJim Jagielski             case SID_INSERT_LRM :
839*b1cdbd2cSJim Jagielski             case SID_INSERT_ZWNBSP :
840*b1cdbd2cSJim Jagielski             case SID_INSERT_ZWSP:
841*b1cdbd2cSJim Jagielski             {
842*b1cdbd2cSJim Jagielski                 SvtCTLOptions aCTLOptions;
843*b1cdbd2cSJim Jagielski                 sal_Bool bEnabled = aCTLOptions.IsCTLFontEnabled();
844*b1cdbd2cSJim Jagielski                 rView.GetViewFrame()->GetBindings().SetVisibleState( nWhich, bEnabled );
845*b1cdbd2cSJim Jagielski                 if(!bEnabled)
846*b1cdbd2cSJim Jagielski                     rSet.DisableItem(nWhich);
847*b1cdbd2cSJim Jagielski             }
848*b1cdbd2cSJim Jagielski             break;
849*b1cdbd2cSJim Jagielski 			default:
850*b1cdbd2cSJim Jagielski 				rSet.InvalidateItem( nWhich );
851*b1cdbd2cSJim Jagielski 				break;
852*b1cdbd2cSJim Jagielski 		}
853*b1cdbd2cSJim Jagielski 
854*b1cdbd2cSJim Jagielski         if(nEEWhich)
855*b1cdbd2cSJim Jagielski         {
856*b1cdbd2cSJim Jagielski             rSet.Put(aEditAttr.Get(nEEWhich, sal_True), nWhich);
857*b1cdbd2cSJim Jagielski 		if(nEEWhich == EE_CHAR_KERNING)
858*b1cdbd2cSJim Jagielski 		{
859*b1cdbd2cSJim Jagielski 			SfxItemState eState = aEditAttr.GetItemState( EE_CHAR_KERNING, sal_True );
860*b1cdbd2cSJim Jagielski 			if ( eState == SFX_ITEM_DONTCARE )
861*b1cdbd2cSJim Jagielski 			{
862*b1cdbd2cSJim Jagielski 				rSet.InvalidateItem(EE_CHAR_KERNING);
863*b1cdbd2cSJim Jagielski 			}
864*b1cdbd2cSJim Jagielski 		}
865*b1cdbd2cSJim Jagielski         }
866*b1cdbd2cSJim Jagielski 
867*b1cdbd2cSJim Jagielski         if (pPostItMgr->GetActiveSidebarWin()->GetLayoutStatus()==SwPostItHelper::DELETED)
868*b1cdbd2cSJim Jagielski 			rSet.DisableItem( nWhich );
869*b1cdbd2cSJim Jagielski 
870*b1cdbd2cSJim Jagielski 		nWhich = aIter.NextWhich();
871*b1cdbd2cSJim Jagielski 	}
872*b1cdbd2cSJim Jagielski }
873*b1cdbd2cSJim Jagielski 
ExecSearch(SfxRequest & rReq,sal_Bool bNoMessage)874*b1cdbd2cSJim Jagielski void SwAnnotationShell::ExecSearch(SfxRequest& rReq, sal_Bool bNoMessage)
875*b1cdbd2cSJim Jagielski {
876*b1cdbd2cSJim Jagielski 	rView.ExecSearch(rReq,bNoMessage);
877*b1cdbd2cSJim Jagielski }
878*b1cdbd2cSJim Jagielski 
StateSearch(SfxItemSet & rSet)879*b1cdbd2cSJim Jagielski void SwAnnotationShell::StateSearch(SfxItemSet &rSet)
880*b1cdbd2cSJim Jagielski {
881*b1cdbd2cSJim Jagielski 	rView.StateSearch(rSet);
882*b1cdbd2cSJim Jagielski }
883*b1cdbd2cSJim Jagielski 
ExecClpbrd(SfxRequest & rReq)884*b1cdbd2cSJim Jagielski void SwAnnotationShell::ExecClpbrd(SfxRequest &rReq)
885*b1cdbd2cSJim Jagielski {
886*b1cdbd2cSJim Jagielski 	SwPostItMgr* pPostItMgr = rView.GetPostItMgr();
887*b1cdbd2cSJim Jagielski     if ( !pPostItMgr || !pPostItMgr->HasActiveSidebarWin() )
888*b1cdbd2cSJim Jagielski 		return;
889*b1cdbd2cSJim Jagielski 
890*b1cdbd2cSJim Jagielski     OutlinerView* pOLV = pPostItMgr->GetActiveSidebarWin()->GetOutlinerView();
891*b1cdbd2cSJim Jagielski     SfxItemSet aEditAttr(pOLV->GetAttribs());
892*b1cdbd2cSJim Jagielski 	SfxItemSet aNewAttr(*aEditAttr.GetPool(), aEditAttr.GetRanges());
893*b1cdbd2cSJim Jagielski 
894*b1cdbd2cSJim Jagielski     long aOldHeight = pPostItMgr->GetActiveSidebarWin()->GetPostItTextHeight();
895*b1cdbd2cSJim Jagielski 	sal_uInt16 nSlot = rReq.GetSlot();
896*b1cdbd2cSJim Jagielski 	switch (nSlot)
897*b1cdbd2cSJim Jagielski 	{
898*b1cdbd2cSJim Jagielski 		case SID_CUT:
899*b1cdbd2cSJim Jagielski             if ( (pPostItMgr->GetActiveSidebarWin()->GetLayoutStatus()!=SwPostItHelper::DELETED) && pOLV->HasSelection() )
900*b1cdbd2cSJim Jagielski 				pOLV->Cut();
901*b1cdbd2cSJim Jagielski 			break;
902*b1cdbd2cSJim Jagielski 		case SID_COPY:
903*b1cdbd2cSJim Jagielski 			if( pOLV->HasSelection() )
904*b1cdbd2cSJim Jagielski 				pOLV->Copy();
905*b1cdbd2cSJim Jagielski 			break;
906*b1cdbd2cSJim Jagielski 		case SID_PASTE:
907*b1cdbd2cSJim Jagielski             if (pPostItMgr->GetActiveSidebarWin()->GetLayoutStatus()!=SwPostItHelper::DELETED)
908*b1cdbd2cSJim Jagielski 				pOLV->Paste();
909*b1cdbd2cSJim Jagielski 			break;
910*b1cdbd2cSJim Jagielski         case SID_PASTE_SPECIAL:
911*b1cdbd2cSJim Jagielski 		{
912*b1cdbd2cSJim Jagielski             if (pPostItMgr->GetActiveSidebarWin()->GetLayoutStatus()!=SwPostItHelper::DELETED)
913*b1cdbd2cSJim Jagielski 			{
914*b1cdbd2cSJim Jagielski 				SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
915*b1cdbd2cSJim Jagielski 				SfxAbstractPasteDialog* pDlg = pFact->CreatePasteDialog( &rView.GetEditWin() );
916*b1cdbd2cSJim Jagielski 
917*b1cdbd2cSJim Jagielski 				pDlg->Insert( SOT_FORMAT_STRING, aEmptyStr );
918*b1cdbd2cSJim Jagielski 				pDlg->Insert( SOT_FORMAT_RTF,	 aEmptyStr );
919*b1cdbd2cSJim Jagielski 
920*b1cdbd2cSJim Jagielski 				TransferableDataHelper aDataHelper( TransferableDataHelper::CreateFromSystemClipboard( &rView.GetEditWin() ) );
921*b1cdbd2cSJim Jagielski 
922*b1cdbd2cSJim Jagielski 				sal_uLong nFormat = pDlg->GetFormat( aDataHelper.GetTransferable() );
923*b1cdbd2cSJim Jagielski 
924*b1cdbd2cSJim Jagielski 				if (nFormat > 0)
925*b1cdbd2cSJim Jagielski 				{
926*b1cdbd2cSJim Jagielski 					if (nFormat == SOT_FORMAT_STRING)
927*b1cdbd2cSJim Jagielski 						pOLV->Paste();
928*b1cdbd2cSJim Jagielski 					else
929*b1cdbd2cSJim Jagielski 						pOLV->PasteSpecial();
930*b1cdbd2cSJim Jagielski 				}
931*b1cdbd2cSJim Jagielski 				delete pDlg;
932*b1cdbd2cSJim Jagielski 			}
933*b1cdbd2cSJim Jagielski 			break;
934*b1cdbd2cSJim Jagielski 		}
935*b1cdbd2cSJim Jagielski 		case SID_CLIPBOARD_FORMAT_ITEMS:
936*b1cdbd2cSJim Jagielski 		{
937*b1cdbd2cSJim Jagielski 			sal_uLong nFormat = 0;
938*b1cdbd2cSJim Jagielski 			const SfxPoolItem* pItem;
939*b1cdbd2cSJim Jagielski 			if ( rReq.GetArgs() && rReq.GetArgs()->GetItemState(nSlot, sal_True, &pItem) == SFX_ITEM_SET &&
940*b1cdbd2cSJim Jagielski 									pItem->ISA(SfxUInt32Item) )
941*b1cdbd2cSJim Jagielski 			{
942*b1cdbd2cSJim Jagielski 				nFormat = ((const SfxUInt32Item*)pItem)->GetValue();
943*b1cdbd2cSJim Jagielski 			}
944*b1cdbd2cSJim Jagielski 
945*b1cdbd2cSJim Jagielski 			if ( nFormat )
946*b1cdbd2cSJim Jagielski 			{
947*b1cdbd2cSJim Jagielski 				if (SOT_FORMAT_STRING == nFormat)
948*b1cdbd2cSJim Jagielski 					pOLV->Paste();
949*b1cdbd2cSJim Jagielski 				else
950*b1cdbd2cSJim Jagielski 					pOLV->PasteSpecial();
951*b1cdbd2cSJim Jagielski 			}
952*b1cdbd2cSJim Jagielski 			break;
953*b1cdbd2cSJim Jagielski 		}
954*b1cdbd2cSJim Jagielski 	}
955*b1cdbd2cSJim Jagielski     pPostItMgr->GetActiveSidebarWin()->ResizeIfNeccessary(aOldHeight,pPostItMgr->GetActiveSidebarWin()->GetPostItTextHeight());
956*b1cdbd2cSJim Jagielski }
957*b1cdbd2cSJim Jagielski 
StateClpbrd(SfxItemSet & rSet)958*b1cdbd2cSJim Jagielski void SwAnnotationShell::StateClpbrd(SfxItemSet &rSet)
959*b1cdbd2cSJim Jagielski {
960*b1cdbd2cSJim Jagielski 	SwPostItMgr* pPostItMgr = rView.GetPostItMgr();
961*b1cdbd2cSJim Jagielski     if ( !pPostItMgr || !pPostItMgr->HasActiveSidebarWin() )
962*b1cdbd2cSJim Jagielski 		return;
963*b1cdbd2cSJim Jagielski     OutlinerView* pOLV = pPostItMgr->GetActiveSidebarWin()->GetOutlinerView();
964*b1cdbd2cSJim Jagielski 
965*b1cdbd2cSJim Jagielski 	TransferableDataHelper aDataHelper( TransferableDataHelper::CreateFromSystemClipboard( &rView.GetEditWin() ) );
966*b1cdbd2cSJim Jagielski 	bool bPastePossible = ( aDataHelper.HasFormat( SOT_FORMAT_STRING ) || aDataHelper.HasFormat( SOT_FORMAT_RTF ) );
967*b1cdbd2cSJim Jagielski     bPastePossible = bPastePossible &&  (pPostItMgr->GetActiveSidebarWin()->GetLayoutStatus()!=SwPostItHelper::DELETED);
968*b1cdbd2cSJim Jagielski 
969*b1cdbd2cSJim Jagielski 	SfxWhichIter aIter(rSet);
970*b1cdbd2cSJim Jagielski 	sal_uInt16 nWhich = aIter.FirstWhich();
971*b1cdbd2cSJim Jagielski 
972*b1cdbd2cSJim Jagielski 	while(nWhich)
973*b1cdbd2cSJim Jagielski 	{
974*b1cdbd2cSJim Jagielski 		switch(nWhich)
975*b1cdbd2cSJim Jagielski 		{
976*b1cdbd2cSJim Jagielski 			case SID_CUT:
977*b1cdbd2cSJim Jagielski 			{
978*b1cdbd2cSJim Jagielski                 if ( (pPostItMgr->GetActiveSidebarWin()->GetLayoutStatus()==SwPostItHelper::DELETED) || !pOLV->HasSelection() )
979*b1cdbd2cSJim Jagielski 					rSet.DisableItem( nWhich );
980*b1cdbd2cSJim Jagielski 			}
981*b1cdbd2cSJim Jagielski 			case SID_COPY:
982*b1cdbd2cSJim Jagielski 			{
983*b1cdbd2cSJim Jagielski 				if( !pOLV->HasSelection() )
984*b1cdbd2cSJim Jagielski 					rSet.DisableItem( nWhich );
985*b1cdbd2cSJim Jagielski 				break;
986*b1cdbd2cSJim Jagielski 			}
987*b1cdbd2cSJim Jagielski 			case SID_PASTE:
988*b1cdbd2cSJim Jagielski             case SID_PASTE_SPECIAL:
989*b1cdbd2cSJim Jagielski 				{
990*b1cdbd2cSJim Jagielski 					if( !bPastePossible )
991*b1cdbd2cSJim Jagielski 						rSet.DisableItem( nWhich );
992*b1cdbd2cSJim Jagielski 					break;
993*b1cdbd2cSJim Jagielski 				}
994*b1cdbd2cSJim Jagielski 			case SID_CLIPBOARD_FORMAT_ITEMS:
995*b1cdbd2cSJim Jagielski 				{
996*b1cdbd2cSJim Jagielski 					if ( bPastePossible )
997*b1cdbd2cSJim Jagielski 					{
998*b1cdbd2cSJim Jagielski 						SvxClipboardFmtItem aFormats( SID_CLIPBOARD_FORMAT_ITEMS );
999*b1cdbd2cSJim Jagielski 						if ( aDataHelper.HasFormat( SOT_FORMAT_RTF ) )
1000*b1cdbd2cSJim Jagielski 							aFormats.AddClipbrdFormat( SOT_FORMAT_RTF );
1001*b1cdbd2cSJim Jagielski 						//if ( aDataHelper.HasFormat( SOT_FORMAT_STRING ) )
1002*b1cdbd2cSJim Jagielski 							aFormats.AddClipbrdFormat( SOT_FORMAT_STRING );
1003*b1cdbd2cSJim Jagielski 						rSet.Put( aFormats );
1004*b1cdbd2cSJim Jagielski 					}
1005*b1cdbd2cSJim Jagielski 					else
1006*b1cdbd2cSJim Jagielski 						rSet.DisableItem( nWhich );
1007*b1cdbd2cSJim Jagielski 					break;
1008*b1cdbd2cSJim Jagielski 				}
1009*b1cdbd2cSJim Jagielski 		}
1010*b1cdbd2cSJim Jagielski 		nWhich = aIter.NextWhich();
1011*b1cdbd2cSJim Jagielski 	}
1012*b1cdbd2cSJim Jagielski }
1013*b1cdbd2cSJim Jagielski 
StateStatusLine(SfxItemSet & rSet)1014*b1cdbd2cSJim Jagielski void SwAnnotationShell::StateStatusLine(SfxItemSet &rSet)
1015*b1cdbd2cSJim Jagielski {
1016*b1cdbd2cSJim Jagielski 	SfxWhichIter aIter( rSet );
1017*b1cdbd2cSJim Jagielski 	sal_uInt16 nWhich = aIter.FirstWhich();
1018*b1cdbd2cSJim Jagielski 
1019*b1cdbd2cSJim Jagielski 	while( nWhich )
1020*b1cdbd2cSJim Jagielski 	{
1021*b1cdbd2cSJim Jagielski 		switch( nWhich )
1022*b1cdbd2cSJim Jagielski 		{
1023*b1cdbd2cSJim Jagielski 			case FN_STAT_SELMODE:
1024*b1cdbd2cSJim Jagielski 			{
1025*b1cdbd2cSJim Jagielski 				rSet.Put(SfxUInt16Item(FN_STAT_SELMODE, 0));
1026*b1cdbd2cSJim Jagielski 				rSet.DisableItem( nWhich );
1027*b1cdbd2cSJim Jagielski 				break;
1028*b1cdbd2cSJim Jagielski 			}
1029*b1cdbd2cSJim Jagielski 			case FN_STAT_TEMPLATE:
1030*b1cdbd2cSJim Jagielski 			{
1031*b1cdbd2cSJim Jagielski 				rSet.DisableItem( nWhich );
1032*b1cdbd2cSJim Jagielski 				break;
1033*b1cdbd2cSJim Jagielski 			}
1034*b1cdbd2cSJim Jagielski 		}
1035*b1cdbd2cSJim Jagielski 		nWhich = aIter.NextWhich();
1036*b1cdbd2cSJim Jagielski 	}
1037*b1cdbd2cSJim Jagielski }
1038*b1cdbd2cSJim Jagielski 
StateInsert(SfxItemSet & rSet)1039*b1cdbd2cSJim Jagielski void SwAnnotationShell::StateInsert(SfxItemSet &rSet)
1040*b1cdbd2cSJim Jagielski {
1041*b1cdbd2cSJim Jagielski 	SwPostItMgr* pPostItMgr = rView.GetPostItMgr();
1042*b1cdbd2cSJim Jagielski     if ( !pPostItMgr || !pPostItMgr->HasActiveSidebarWin() )
1043*b1cdbd2cSJim Jagielski 		return;
1044*b1cdbd2cSJim Jagielski 
1045*b1cdbd2cSJim Jagielski     OutlinerView* pOLV = pPostItMgr->GetActiveSidebarWin()->GetOutlinerView();
1046*b1cdbd2cSJim Jagielski     SfxWhichIter aIter(rSet);
1047*b1cdbd2cSJim Jagielski 	sal_uInt16 nWhich = aIter.FirstWhich();
1048*b1cdbd2cSJim Jagielski 
1049*b1cdbd2cSJim Jagielski 	while(nWhich)
1050*b1cdbd2cSJim Jagielski 	{
1051*b1cdbd2cSJim Jagielski 		switch(nWhich)
1052*b1cdbd2cSJim Jagielski 		{
1053*b1cdbd2cSJim Jagielski 			case SID_HYPERLINK_GETLINK:
1054*b1cdbd2cSJim Jagielski 				{
1055*b1cdbd2cSJim Jagielski 					SvxHyperlinkItem aHLinkItem;
1056*b1cdbd2cSJim Jagielski 					aHLinkItem.SetInsertMode(HLINK_FIELD);
1057*b1cdbd2cSJim Jagielski 
1058*b1cdbd2cSJim Jagielski 					const SvxFieldItem* pFieldItem = pOLV->GetFieldAtSelection();
1059*b1cdbd2cSJim Jagielski 
1060*b1cdbd2cSJim Jagielski 					if (pFieldItem)
1061*b1cdbd2cSJim Jagielski 					{
1062*b1cdbd2cSJim Jagielski 						const SvxFieldData* pField = pFieldItem->GetField();
1063*b1cdbd2cSJim Jagielski 
1064*b1cdbd2cSJim Jagielski 						if (pField->ISA(SvxURLField))
1065*b1cdbd2cSJim Jagielski 						{
1066*b1cdbd2cSJim Jagielski 							aHLinkItem.SetName(((const SvxURLField*) pField)->GetRepresentation());
1067*b1cdbd2cSJim Jagielski 							aHLinkItem.SetURL(((const SvxURLField*) pField)->GetURL());
1068*b1cdbd2cSJim Jagielski 							aHLinkItem.SetTargetFrame(((const SvxURLField*) pField)->GetTargetFrame());
1069*b1cdbd2cSJim Jagielski 						}
1070*b1cdbd2cSJim Jagielski 					}
1071*b1cdbd2cSJim Jagielski 					else
1072*b1cdbd2cSJim Jagielski 					{
1073*b1cdbd2cSJim Jagielski 						String sSel(pOLV->GetSelected());
1074*b1cdbd2cSJim Jagielski 						sSel.Erase(255);
1075*b1cdbd2cSJim Jagielski 						sSel.EraseTrailingChars();
1076*b1cdbd2cSJim Jagielski 						aHLinkItem.SetName(sSel);
1077*b1cdbd2cSJim Jagielski 					}
1078*b1cdbd2cSJim Jagielski 
1079*b1cdbd2cSJim Jagielski 					sal_uInt16 nHtmlMode = ::GetHtmlMode(rView.GetDocShell());
1080*b1cdbd2cSJim Jagielski 					aHLinkItem.SetInsertMode((SvxLinkInsertMode)(aHLinkItem.GetInsertMode() |
1081*b1cdbd2cSJim Jagielski 						((nHtmlMode & HTMLMODE_ON) != 0 ? HLINK_HTMLMODE : 0)));
1082*b1cdbd2cSJim Jagielski 
1083*b1cdbd2cSJim Jagielski 					rSet.Put(aHLinkItem);
1084*b1cdbd2cSJim Jagielski 				}
1085*b1cdbd2cSJim Jagielski 				break;
1086*b1cdbd2cSJim Jagielski 		}
1087*b1cdbd2cSJim Jagielski 
1088*b1cdbd2cSJim Jagielski         if (pPostItMgr->GetActiveSidebarWin()->GetLayoutStatus()==SwPostItHelper::DELETED)
1089*b1cdbd2cSJim Jagielski 			rSet.DisableItem( nWhich );
1090*b1cdbd2cSJim Jagielski 
1091*b1cdbd2cSJim Jagielski 		nWhich = aIter.NextWhich();
1092*b1cdbd2cSJim Jagielski 	}
1093*b1cdbd2cSJim Jagielski }
1094*b1cdbd2cSJim Jagielski 
1095*b1cdbd2cSJim Jagielski 
NoteExec(SfxRequest & rReq)1096*b1cdbd2cSJim Jagielski void SwAnnotationShell::NoteExec(SfxRequest &rReq)
1097*b1cdbd2cSJim Jagielski {
1098*b1cdbd2cSJim Jagielski     SwPostItMgr* pPostItMgr = rView.GetPostItMgr();
1099*b1cdbd2cSJim Jagielski     if ( !pPostItMgr )
1100*b1cdbd2cSJim Jagielski         return;
1101*b1cdbd2cSJim Jagielski 
1102*b1cdbd2cSJim Jagielski     sal_uInt16 nSlot = rReq.GetSlot();
1103*b1cdbd2cSJim Jagielski     switch (nSlot)
1104*b1cdbd2cSJim Jagielski     {
1105*b1cdbd2cSJim Jagielski     case FN_REPLY:
1106*b1cdbd2cSJim Jagielski     case FN_POSTIT:
1107*b1cdbd2cSJim Jagielski     case FN_DELETE_COMMENT:
1108*b1cdbd2cSJim Jagielski         if ( pPostItMgr->HasActiveSidebarWin() )
1109*b1cdbd2cSJim Jagielski             pPostItMgr->GetActiveSidebarWin()->ExecuteCommand(nSlot);
1110*b1cdbd2cSJim Jagielski         break;
1111*b1cdbd2cSJim Jagielski 
1112*b1cdbd2cSJim Jagielski     case FN_DELETE_ALL_NOTES:
1113*b1cdbd2cSJim Jagielski 			pPostItMgr->Delete();
1114*b1cdbd2cSJim Jagielski 			break;
1115*b1cdbd2cSJim Jagielski 		case FN_DELETE_NOTE_AUTHOR:
1116*b1cdbd2cSJim Jagielski 		{
1117*b1cdbd2cSJim Jagielski 			SFX_REQUEST_ARG( rReq, pItem, SfxStringItem, nSlot, sal_False);
1118*b1cdbd2cSJim Jagielski 			if ( pItem )
1119*b1cdbd2cSJim Jagielski 				pPostItMgr->Delete( pItem->GetValue() );
1120*b1cdbd2cSJim Jagielski 			break;
1121*b1cdbd2cSJim Jagielski 		}
1122*b1cdbd2cSJim Jagielski 		case FN_HIDE_NOTE:
1123*b1cdbd2cSJim Jagielski 			/*
1124*b1cdbd2cSJim Jagielski             if ( Mgr()->GetActiveSidebarWin() == this )
1125*b1cdbd2cSJim Jagielski             {
1126*b1cdbd2cSJim Jagielski                 Mgr()->SetActivePostIt(0);
1127*b1cdbd2cSJim Jagielski                 // put the cursor back into the document
1128*b1cdbd2cSJim Jagielski                 SwitchToFieldPos();
1129*b1cdbd2cSJim Jagielski             }
1130*b1cdbd2cSJim Jagielski             Mgr()->Hide(mpFld);
1131*b1cdbd2cSJim Jagielski 			*/
1132*b1cdbd2cSJim Jagielski 			break;
1133*b1cdbd2cSJim Jagielski 		case FN_HIDE_ALL_NOTES:
1134*b1cdbd2cSJim Jagielski 			pPostItMgr->Hide();
1135*b1cdbd2cSJim Jagielski 			break;
1136*b1cdbd2cSJim Jagielski 		case FN_HIDE_NOTE_AUTHOR:
1137*b1cdbd2cSJim Jagielski 		{
1138*b1cdbd2cSJim Jagielski 			SFX_REQUEST_ARG( rReq, pItem, SfxStringItem, nSlot, sal_False);
1139*b1cdbd2cSJim Jagielski 			if ( pItem )
1140*b1cdbd2cSJim Jagielski 				pPostItMgr->Hide( pItem->GetValue() );
1141*b1cdbd2cSJim Jagielski 		}
1142*b1cdbd2cSJim Jagielski 	}
1143*b1cdbd2cSJim Jagielski }
1144*b1cdbd2cSJim Jagielski 
GetNoteState(SfxItemSet & rSet)1145*b1cdbd2cSJim Jagielski void SwAnnotationShell::GetNoteState(SfxItemSet &rSet)
1146*b1cdbd2cSJim Jagielski {
1147*b1cdbd2cSJim Jagielski     SwPostItMgr* pPostItMgr = rView.GetPostItMgr();
1148*b1cdbd2cSJim Jagielski     SfxWhichIter aIter(rSet);
1149*b1cdbd2cSJim Jagielski     sal_uInt16 nWhich = aIter.FirstWhich();
1150*b1cdbd2cSJim Jagielski     while(nWhich)
1151*b1cdbd2cSJim Jagielski     {
1152*b1cdbd2cSJim Jagielski         sal_uInt16 nSlotId = GetPool().GetSlotId( nWhich );
1153*b1cdbd2cSJim Jagielski         switch( nSlotId )
1154*b1cdbd2cSJim Jagielski         {
1155*b1cdbd2cSJim Jagielski         case FN_POSTIT:
1156*b1cdbd2cSJim Jagielski         case FN_DELETE_NOTE_AUTHOR:
1157*b1cdbd2cSJim Jagielski         case FN_DELETE_ALL_NOTES:
1158*b1cdbd2cSJim Jagielski         case FN_HIDE_NOTE:
1159*b1cdbd2cSJim Jagielski         case FN_HIDE_NOTE_AUTHOR:
1160*b1cdbd2cSJim Jagielski         case FN_HIDE_ALL_NOTES:
1161*b1cdbd2cSJim Jagielski         case FN_DELETE_COMMENT:
1162*b1cdbd2cSJim Jagielski             {
1163*b1cdbd2cSJim Jagielski                 if( !pPostItMgr
1164*b1cdbd2cSJim Jagielski                     || !pPostItMgr->HasActiveAnnotationWin() )
1165*b1cdbd2cSJim Jagielski                 {
1166*b1cdbd2cSJim Jagielski                     rSet.DisableItem(nWhich);
1167*b1cdbd2cSJim Jagielski                 }
1168*b1cdbd2cSJim Jagielski                 break;
1169*b1cdbd2cSJim Jagielski             }
1170*b1cdbd2cSJim Jagielski 
1171*b1cdbd2cSJim Jagielski         case FN_REPLY:
1172*b1cdbd2cSJim Jagielski             {
1173*b1cdbd2cSJim Jagielski                 if ( !pPostItMgr ||
1174*b1cdbd2cSJim Jagielski                      !pPostItMgr->HasActiveAnnotationWin() )
1175*b1cdbd2cSJim Jagielski                 {
1176*b1cdbd2cSJim Jagielski 					rSet.DisableItem(nWhich);
1177*b1cdbd2cSJim Jagielski                 }
1178*b1cdbd2cSJim Jagielski 				else
1179*b1cdbd2cSJim Jagielski 				{
1180*b1cdbd2cSJim Jagielski 					SvtUserOptions aUserOpt;
1181*b1cdbd2cSJim Jagielski 					String sAuthor;
1182*b1cdbd2cSJim Jagielski 					if( !(sAuthor = aUserOpt.GetFullName()).Len())
1183*b1cdbd2cSJim Jagielski 							if( !(sAuthor = aUserOpt.GetID()).Len() )
1184*b1cdbd2cSJim Jagielski 						sAuthor = String( SW_RES( STR_REDLINE_UNKNOWN_AUTHOR ));
1185*b1cdbd2cSJim Jagielski                     if (sAuthor == pPostItMgr->GetActiveSidebarWin()->GetAuthor())
1186*b1cdbd2cSJim Jagielski 						rSet.DisableItem(nWhich);
1187*b1cdbd2cSJim Jagielski 				}
1188*b1cdbd2cSJim Jagielski 				break;
1189*b1cdbd2cSJim Jagielski 			}
1190*b1cdbd2cSJim Jagielski 			default:
1191*b1cdbd2cSJim Jagielski 				rSet.InvalidateItem( nWhich );
1192*b1cdbd2cSJim Jagielski 				break;
1193*b1cdbd2cSJim Jagielski 		}
1194*b1cdbd2cSJim Jagielski 
1195*b1cdbd2cSJim Jagielski         if (pPostItMgr->HasActiveSidebarWin())
1196*b1cdbd2cSJim Jagielski 		{
1197*b1cdbd2cSJim Jagielski             if ( (pPostItMgr->GetActiveSidebarWin()->IsProtected()) &&
1198*b1cdbd2cSJim Jagielski                     ( (nSlotId==FN_DELETE_COMMENT) || (nSlotId==FN_REPLY) ) )
1199*b1cdbd2cSJim Jagielski 				rSet.DisableItem( nWhich );
1200*b1cdbd2cSJim Jagielski 		}
1201*b1cdbd2cSJim Jagielski 		nWhich = aIter.NextWhich();
1202*b1cdbd2cSJim Jagielski 	}
1203*b1cdbd2cSJim Jagielski }
1204*b1cdbd2cSJim Jagielski 
ExecLingu(SfxRequest & rReq)1205*b1cdbd2cSJim Jagielski void SwAnnotationShell::ExecLingu(SfxRequest &rReq)
1206*b1cdbd2cSJim Jagielski {
1207*b1cdbd2cSJim Jagielski 	SwPostItMgr* pPostItMgr = rView.GetPostItMgr();
1208*b1cdbd2cSJim Jagielski     if ( !pPostItMgr || !pPostItMgr->HasActiveSidebarWin() )
1209*b1cdbd2cSJim Jagielski 		return;
1210*b1cdbd2cSJim Jagielski 
1211*b1cdbd2cSJim Jagielski     OutlinerView* pOLV = pPostItMgr->GetActiveSidebarWin()->GetOutlinerView();
1212*b1cdbd2cSJim Jagielski 	SfxItemSet aEditAttr(pOLV->GetAttribs());
1213*b1cdbd2cSJim Jagielski 	sal_uInt16 nSlot = rReq.GetSlot();
1214*b1cdbd2cSJim Jagielski 	SwWrtShell &rSh = rView.GetWrtShell();
1215*b1cdbd2cSJim Jagielski 	bool bRestoreSelection = false;
1216*b1cdbd2cSJim Jagielski 	ESelection aOldSelection;
1217*b1cdbd2cSJim Jagielski 
1218*b1cdbd2cSJim Jagielski 	switch (nSlot)
1219*b1cdbd2cSJim Jagielski 	{
1220*b1cdbd2cSJim Jagielski 		case SID_LANGUAGE_STATUS:
1221*b1cdbd2cSJim Jagielski         {
1222*b1cdbd2cSJim Jagielski 			aOldSelection = pOLV->GetSelection();
1223*b1cdbd2cSJim Jagielski 			if (!pOLV->GetEditView().HasSelection())
1224*b1cdbd2cSJim Jagielski 			{
1225*b1cdbd2cSJim Jagielski 				bRestoreSelection	= true;
1226*b1cdbd2cSJim Jagielski 				pOLV->GetEditView().SelectCurrentWord();
1227*b1cdbd2cSJim Jagielski 			}
1228*b1cdbd2cSJim Jagielski 
1229*b1cdbd2cSJim Jagielski 			bRestoreSelection = SwLangHelper::SetLanguageStatus(pOLV,rReq,rView,rSh);
1230*b1cdbd2cSJim Jagielski 			break;
1231*b1cdbd2cSJim Jagielski 		}
1232*b1cdbd2cSJim Jagielski         case SID_THES:
1233*b1cdbd2cSJim Jagielski         {
1234*b1cdbd2cSJim Jagielski             String aReplaceText;
1235*b1cdbd2cSJim Jagielski             SFX_REQUEST_ARG( rReq, pItem2, SfxStringItem, SID_THES, sal_False );
1236*b1cdbd2cSJim Jagielski             if (pItem2)
1237*b1cdbd2cSJim Jagielski                 aReplaceText = pItem2->GetValue();
1238*b1cdbd2cSJim Jagielski             if (aReplaceText.Len() > 0)
1239*b1cdbd2cSJim Jagielski                 ReplaceTextWithSynonym( pOLV->GetEditView(), aReplaceText );
1240*b1cdbd2cSJim Jagielski             break;
1241*b1cdbd2cSJim Jagielski         }
1242*b1cdbd2cSJim Jagielski         case SID_THESAURUS:
1243*b1cdbd2cSJim Jagielski 		{
1244*b1cdbd2cSJim Jagielski             pOLV->StartThesaurus();
1245*b1cdbd2cSJim Jagielski 			break;
1246*b1cdbd2cSJim Jagielski 		}
1247*b1cdbd2cSJim Jagielski 		case SID_HANGUL_HANJA_CONVERSION:
1248*b1cdbd2cSJim Jagielski             pOLV->StartTextConversion( LANGUAGE_KOREAN, LANGUAGE_KOREAN, NULL,
1249*b1cdbd2cSJim Jagielski                     i18n::TextConversionOption::CHARACTER_BY_CHARACTER, sal_True, sal_False );
1250*b1cdbd2cSJim Jagielski             break;
1251*b1cdbd2cSJim Jagielski 
1252*b1cdbd2cSJim Jagielski         case SID_CHINESE_CONVERSION:
1253*b1cdbd2cSJim Jagielski 		{
1254*b1cdbd2cSJim Jagielski                 //open ChineseTranslationDialog
1255*b1cdbd2cSJim Jagielski                 Reference< XComponentContext > xContext(
1256*b1cdbd2cSJim Jagielski                     ::cppu::defaultBootstrap_InitialComponentContext() ); //@todo get context from calc if that has one
1257*b1cdbd2cSJim Jagielski                 if(xContext.is())
1258*b1cdbd2cSJim Jagielski                 {
1259*b1cdbd2cSJim Jagielski                     Reference< lang::XMultiComponentFactory > xMCF( xContext->getServiceManager() );
1260*b1cdbd2cSJim Jagielski                     if(xMCF.is())
1261*b1cdbd2cSJim Jagielski                     {
1262*b1cdbd2cSJim Jagielski                         Reference< ui::dialogs::XExecutableDialog > xDialog(
1263*b1cdbd2cSJim Jagielski                                 xMCF->createInstanceWithContext(
1264*b1cdbd2cSJim Jagielski                                     rtl::OUString::createFromAscii("com.sun.star.linguistic2.ChineseTranslationDialog")
1265*b1cdbd2cSJim Jagielski                                     , xContext), UNO_QUERY);
1266*b1cdbd2cSJim Jagielski                         Reference< lang::XInitialization > xInit( xDialog, UNO_QUERY );
1267*b1cdbd2cSJim Jagielski                         if( xInit.is() )
1268*b1cdbd2cSJim Jagielski                         {
1269*b1cdbd2cSJim Jagielski                             //  initialize dialog
1270*b1cdbd2cSJim Jagielski                             Reference< awt::XWindow > xDialogParentWindow(0);
1271*b1cdbd2cSJim Jagielski                             Sequence<Any> aSeq(1);
1272*b1cdbd2cSJim Jagielski                             Any* pArray = aSeq.getArray();
1273*b1cdbd2cSJim Jagielski                             PropertyValue aParam;
1274*b1cdbd2cSJim Jagielski                             aParam.Name = rtl::OUString::createFromAscii("ParentWindow");
1275*b1cdbd2cSJim Jagielski                             aParam.Value <<= makeAny(xDialogParentWindow);
1276*b1cdbd2cSJim Jagielski                             pArray[0] <<= makeAny(aParam);
1277*b1cdbd2cSJim Jagielski                             xInit->initialize( aSeq );
1278*b1cdbd2cSJim Jagielski 
1279*b1cdbd2cSJim Jagielski                             //execute dialog
1280*b1cdbd2cSJim Jagielski                             sal_Int16 nDialogRet = xDialog->execute();
1281*b1cdbd2cSJim Jagielski                             if( RET_OK == nDialogRet )
1282*b1cdbd2cSJim Jagielski                             {
1283*b1cdbd2cSJim Jagielski                                 //get some parameters from the dialog
1284*b1cdbd2cSJim Jagielski                                 sal_Bool bToSimplified = sal_True;
1285*b1cdbd2cSJim Jagielski                                 sal_Bool bUseVariants = sal_True;
1286*b1cdbd2cSJim Jagielski                                 sal_Bool bCommonTerms = sal_True;
1287*b1cdbd2cSJim Jagielski                                 Reference< beans::XPropertySet >  xProp( xDialog, UNO_QUERY );
1288*b1cdbd2cSJim Jagielski                                 if( xProp.is() )
1289*b1cdbd2cSJim Jagielski                                 {
1290*b1cdbd2cSJim Jagielski                                     try
1291*b1cdbd2cSJim Jagielski                                     {
1292*b1cdbd2cSJim Jagielski                                         xProp->getPropertyValue( C2U("IsDirectionToSimplified") ) >>= bToSimplified;
1293*b1cdbd2cSJim Jagielski                                         xProp->getPropertyValue( C2U("IsUseCharacterVariants") ) >>= bUseVariants;
1294*b1cdbd2cSJim Jagielski                                         xProp->getPropertyValue( C2U("IsTranslateCommonTerms") ) >>= bCommonTerms;
1295*b1cdbd2cSJim Jagielski                                     }
1296*b1cdbd2cSJim Jagielski                                     catch( Exception& )
1297*b1cdbd2cSJim Jagielski                                     {
1298*b1cdbd2cSJim Jagielski                                     }
1299*b1cdbd2cSJim Jagielski                                 }
1300*b1cdbd2cSJim Jagielski 
1301*b1cdbd2cSJim Jagielski                                 //execute translation
1302*b1cdbd2cSJim Jagielski                                 sal_Int16 nSourceLang = bToSimplified ? LANGUAGE_CHINESE_TRADITIONAL : LANGUAGE_CHINESE_SIMPLIFIED;
1303*b1cdbd2cSJim Jagielski                                 sal_Int16 nTargetLang = bToSimplified ? LANGUAGE_CHINESE_SIMPLIFIED : LANGUAGE_CHINESE_TRADITIONAL;
1304*b1cdbd2cSJim Jagielski                                 sal_Int32 nOptions    = bUseVariants ? i18n::TextConversionOption::USE_CHARACTER_VARIANTS : 0;
1305*b1cdbd2cSJim Jagielski                                 if( !bCommonTerms )
1306*b1cdbd2cSJim Jagielski                                     nOptions = nOptions | i18n::TextConversionOption::CHARACTER_BY_CHARACTER;
1307*b1cdbd2cSJim Jagielski 
1308*b1cdbd2cSJim Jagielski                                 Font aTargetFont = pOLV->GetWindow()->GetDefaultFont( DEFAULTFONT_CJK_TEXT,
1309*b1cdbd2cSJim Jagielski                                             nTargetLang, DEFAULTFONT_FLAGS_ONLYONE );
1310*b1cdbd2cSJim Jagielski 
1311*b1cdbd2cSJim Jagielski                                 pOLV->StartTextConversion( nSourceLang, nTargetLang, &aTargetFont, nOptions, sal_False, sal_False );
1312*b1cdbd2cSJim Jagielski                             }
1313*b1cdbd2cSJim Jagielski                         }
1314*b1cdbd2cSJim Jagielski                         Reference< lang::XComponent > xComponent( xDialog, UNO_QUERY );
1315*b1cdbd2cSJim Jagielski                         if( xComponent.is() )
1316*b1cdbd2cSJim Jagielski                             xComponent->dispose();
1317*b1cdbd2cSJim Jagielski                     }
1318*b1cdbd2cSJim Jagielski                 }
1319*b1cdbd2cSJim Jagielski             }
1320*b1cdbd2cSJim Jagielski             break;
1321*b1cdbd2cSJim Jagielski 	}
1322*b1cdbd2cSJim Jagielski 
1323*b1cdbd2cSJim Jagielski 	if (bRestoreSelection)
1324*b1cdbd2cSJim Jagielski 	{
1325*b1cdbd2cSJim Jagielski 		// restore selection
1326*b1cdbd2cSJim Jagielski 		pOLV->GetEditView().SetSelection( aOldSelection );
1327*b1cdbd2cSJim Jagielski 	}
1328*b1cdbd2cSJim Jagielski }
1329*b1cdbd2cSJim Jagielski 
GetLinguState(SfxItemSet & rSet)1330*b1cdbd2cSJim Jagielski void SwAnnotationShell::GetLinguState(SfxItemSet &rSet)
1331*b1cdbd2cSJim Jagielski {
1332*b1cdbd2cSJim Jagielski 	SwPostItMgr* pPostItMgr = rView.GetPostItMgr();
1333*b1cdbd2cSJim Jagielski     if ( !pPostItMgr || !pPostItMgr->HasActiveSidebarWin() )
1334*b1cdbd2cSJim Jagielski 		return;
1335*b1cdbd2cSJim Jagielski 
1336*b1cdbd2cSJim Jagielski     OutlinerView* pOLV = pPostItMgr->GetActiveSidebarWin()->GetOutlinerView();
1337*b1cdbd2cSJim Jagielski 	SfxItemSet aEditAttr(pOLV->GetAttribs());
1338*b1cdbd2cSJim Jagielski 
1339*b1cdbd2cSJim Jagielski 	SfxWhichIter aIter(rSet);
1340*b1cdbd2cSJim Jagielski 	sal_uInt16 nWhich = aIter.FirstWhich();
1341*b1cdbd2cSJim Jagielski     while(nWhich)
1342*b1cdbd2cSJim Jagielski 	{
1343*b1cdbd2cSJim Jagielski 		switch (nWhich)
1344*b1cdbd2cSJim Jagielski 		{
1345*b1cdbd2cSJim Jagielski 			case SID_LANGUAGE_STATUS:
1346*b1cdbd2cSJim Jagielski             {
1347*b1cdbd2cSJim Jagielski 				SwLangHelper::GetLanguageStatus(pOLV,rSet);
1348*b1cdbd2cSJim Jagielski 				break;
1349*b1cdbd2cSJim Jagielski 			}
1350*b1cdbd2cSJim Jagielski 
1351*b1cdbd2cSJim Jagielski             case SID_THES:
1352*b1cdbd2cSJim Jagielski             {
1353*b1cdbd2cSJim Jagielski                 String          aStatusVal;
1354*b1cdbd2cSJim Jagielski                 LanguageType    nLang = LANGUAGE_NONE;
1355*b1cdbd2cSJim Jagielski                 bool bIsLookUpWord = GetStatusValueForThesaurusFromContext( aStatusVal, nLang, pOLV->GetEditView() );
1356*b1cdbd2cSJim Jagielski                 rSet.Put( SfxStringItem( SID_THES, aStatusVal ) );
1357*b1cdbd2cSJim Jagielski 
1358*b1cdbd2cSJim Jagielski                 // disable "Thesaurus" context menu entry if there is nothing to look up
1359*b1cdbd2cSJim Jagielski                 uno::Reference< linguistic2::XThesaurus >  xThes( ::GetThesaurus() );
1360*b1cdbd2cSJim Jagielski                 lang::Locale aLocale( SvxCreateLocale( nLang ) );
1361*b1cdbd2cSJim Jagielski                 if (!bIsLookUpWord ||
1362*b1cdbd2cSJim Jagielski                     !xThes.is() || nLang == LANGUAGE_NONE || !xThes->hasLocale( aLocale ))
1363*b1cdbd2cSJim Jagielski                     rSet.DisableItem( SID_THES );
1364*b1cdbd2cSJim Jagielski                 break;
1365*b1cdbd2cSJim Jagielski             }
1366*b1cdbd2cSJim Jagielski 
1367*b1cdbd2cSJim Jagielski             // disable "Thesaurus" if the language is not supported
1368*b1cdbd2cSJim Jagielski             case SID_THESAURUS:
1369*b1cdbd2cSJim Jagielski 			{
1370*b1cdbd2cSJim Jagielski 				const SfxPoolItem &rItem = rView.GetWrtShell().GetDoc()->GetDefault(
1371*b1cdbd2cSJim Jagielski                             GetWhichOfScript( RES_CHRATR_LANGUAGE,
1372*b1cdbd2cSJim Jagielski                             GetI18NScriptTypeOfLanguage( (sal_uInt16)GetAppLanguage())) );
1373*b1cdbd2cSJim Jagielski 				LanguageType nLang = ((const SvxLanguageItem &)
1374*b1cdbd2cSJim Jagielski 														rItem).GetLanguage();
1375*b1cdbd2cSJim Jagielski 				uno::Reference< linguistic2::XThesaurus >  xThes( ::GetThesaurus() );
1376*b1cdbd2cSJim Jagielski 				if (!xThes.is() || nLang == LANGUAGE_NONE ||
1377*b1cdbd2cSJim Jagielski 					!xThes->hasLocale( SvxCreateLocale( nLang ) ))
1378*b1cdbd2cSJim Jagielski                     rSet.DisableItem( SID_THESAURUS );
1379*b1cdbd2cSJim Jagielski 			}
1380*b1cdbd2cSJim Jagielski 			break;
1381*b1cdbd2cSJim Jagielski 			case SID_HANGUL_HANJA_CONVERSION:
1382*b1cdbd2cSJim Jagielski 			case SID_CHINESE_CONVERSION:
1383*b1cdbd2cSJim Jagielski 			{
1384*b1cdbd2cSJim Jagielski 				if (!SvtCJKOptions().IsAnyEnabled())
1385*b1cdbd2cSJim Jagielski 				{
1386*b1cdbd2cSJim Jagielski 					rView.GetViewFrame()->GetBindings().SetVisibleState( nWhich, sal_False );
1387*b1cdbd2cSJim Jagielski 					rSet.DisableItem(nWhich);
1388*b1cdbd2cSJim Jagielski 				}
1389*b1cdbd2cSJim Jagielski 				else
1390*b1cdbd2cSJim Jagielski 					rView.GetViewFrame()->GetBindings().SetVisibleState( nWhich, sal_True );
1391*b1cdbd2cSJim Jagielski 			}
1392*b1cdbd2cSJim Jagielski 			break;
1393*b1cdbd2cSJim Jagielski 		}
1394*b1cdbd2cSJim Jagielski 
1395*b1cdbd2cSJim Jagielski         if (pPostItMgr->GetActiveSidebarWin()->GetLayoutStatus()==SwPostItHelper::DELETED)
1396*b1cdbd2cSJim Jagielski 			rSet.DisableItem( nWhich );
1397*b1cdbd2cSJim Jagielski 
1398*b1cdbd2cSJim Jagielski 		nWhich = aIter.NextWhich();
1399*b1cdbd2cSJim Jagielski 	}
1400*b1cdbd2cSJim Jagielski }
1401*b1cdbd2cSJim Jagielski 
ExecTransliteration(SfxRequest & rReq)1402*b1cdbd2cSJim Jagielski void SwAnnotationShell::ExecTransliteration(SfxRequest &rReq)
1403*b1cdbd2cSJim Jagielski {
1404*b1cdbd2cSJim Jagielski 	SwPostItMgr* pPostItMgr = rView.GetPostItMgr();
1405*b1cdbd2cSJim Jagielski     if ( !pPostItMgr || !pPostItMgr->HasActiveSidebarWin() )
1406*b1cdbd2cSJim Jagielski 		return;
1407*b1cdbd2cSJim Jagielski 
1408*b1cdbd2cSJim Jagielski     OutlinerView* pOLV = pPostItMgr->GetActiveSidebarWin()->GetOutlinerView();
1409*b1cdbd2cSJim Jagielski 
1410*b1cdbd2cSJim Jagielski 	using namespace ::com::sun::star::i18n;
1411*b1cdbd2cSJim Jagielski 	{
1412*b1cdbd2cSJim Jagielski 		sal_uInt32 nMode = 0;
1413*b1cdbd2cSJim Jagielski 
1414*b1cdbd2cSJim Jagielski 		switch( rReq.GetSlot() )
1415*b1cdbd2cSJim Jagielski 		{
1416*b1cdbd2cSJim Jagielski             case SID_TRANSLITERATE_SENTENCE_CASE:
1417*b1cdbd2cSJim Jagielski                 nMode = TransliterationModulesExtra::SENTENCE_CASE;
1418*b1cdbd2cSJim Jagielski                 break;
1419*b1cdbd2cSJim Jagielski             case SID_TRANSLITERATE_TITLE_CASE:
1420*b1cdbd2cSJim Jagielski                 nMode = TransliterationModulesExtra::TITLE_CASE;
1421*b1cdbd2cSJim Jagielski                 break;
1422*b1cdbd2cSJim Jagielski             case SID_TRANSLITERATE_TOGGLE_CASE:
1423*b1cdbd2cSJim Jagielski                 nMode = TransliterationModulesExtra::TOGGLE_CASE;
1424*b1cdbd2cSJim Jagielski                 break;
1425*b1cdbd2cSJim Jagielski 			case SID_TRANSLITERATE_UPPER:
1426*b1cdbd2cSJim Jagielski 				nMode = TransliterationModules_LOWERCASE_UPPERCASE;
1427*b1cdbd2cSJim Jagielski 				break;
1428*b1cdbd2cSJim Jagielski 			case SID_TRANSLITERATE_LOWER:
1429*b1cdbd2cSJim Jagielski 				nMode = TransliterationModules_UPPERCASE_LOWERCASE;
1430*b1cdbd2cSJim Jagielski 				break;
1431*b1cdbd2cSJim Jagielski 			case SID_TRANSLITERATE_HALFWIDTH:
1432*b1cdbd2cSJim Jagielski 				nMode = TransliterationModules_FULLWIDTH_HALFWIDTH;
1433*b1cdbd2cSJim Jagielski 				break;
1434*b1cdbd2cSJim Jagielski 			case SID_TRANSLITERATE_FULLWIDTH:
1435*b1cdbd2cSJim Jagielski 				nMode = TransliterationModules_HALFWIDTH_FULLWIDTH;
1436*b1cdbd2cSJim Jagielski 				break;
1437*b1cdbd2cSJim Jagielski 			case SID_TRANSLITERATE_HIRAGANA:
1438*b1cdbd2cSJim Jagielski 				nMode = TransliterationModules_KATAKANA_HIRAGANA;
1439*b1cdbd2cSJim Jagielski 				break;
1440*b1cdbd2cSJim Jagielski 			case SID_TRANSLITERATE_KATAGANA:
1441*b1cdbd2cSJim Jagielski 				nMode = TransliterationModules_HIRAGANA_KATAKANA;
1442*b1cdbd2cSJim Jagielski 				break;
1443*b1cdbd2cSJim Jagielski 
1444*b1cdbd2cSJim Jagielski 			default:
1445*b1cdbd2cSJim Jagielski 				ASSERT(!this, "falscher Dispatcher");
1446*b1cdbd2cSJim Jagielski 		}
1447*b1cdbd2cSJim Jagielski 
1448*b1cdbd2cSJim Jagielski 		if( nMode )
1449*b1cdbd2cSJim Jagielski         {
1450*b1cdbd2cSJim Jagielski             pOLV->TransliterateText( nMode );
1451*b1cdbd2cSJim Jagielski         }
1452*b1cdbd2cSJim Jagielski 	}
1453*b1cdbd2cSJim Jagielski }
1454*b1cdbd2cSJim Jagielski 
ExecUndo(SfxRequest & rReq)1455*b1cdbd2cSJim Jagielski void SwAnnotationShell::ExecUndo(SfxRequest &rReq)
1456*b1cdbd2cSJim Jagielski {
1457*b1cdbd2cSJim Jagielski 	const SfxItemSet* pArgs = rReq.GetArgs();
1458*b1cdbd2cSJim Jagielski 	::svl::IUndoManager* pUndoManager = GetUndoManager();
1459*b1cdbd2cSJim Jagielski 	SwWrtShell &rSh = rView.GetWrtShell();
1460*b1cdbd2cSJim Jagielski 
1461*b1cdbd2cSJim Jagielski     long aOldHeight = rView.GetPostItMgr()->HasActiveSidebarWin()
1462*b1cdbd2cSJim Jagielski                       ? rView.GetPostItMgr()->GetActiveSidebarWin()->GetPostItTextHeight()
1463*b1cdbd2cSJim Jagielski                       : 0;
1464*b1cdbd2cSJim Jagielski 
1465*b1cdbd2cSJim Jagielski 	sal_uInt16 nId = rReq.GetSlot();
1466*b1cdbd2cSJim Jagielski 	sal_uInt16 nCnt = 1;
1467*b1cdbd2cSJim Jagielski 	const SfxPoolItem* pItem=0;
1468*b1cdbd2cSJim Jagielski 	if( pArgs && SFX_ITEM_SET == pArgs->GetItemState( nId, sal_False, &pItem ) )
1469*b1cdbd2cSJim Jagielski 		nCnt = ((SfxUInt16Item*)pItem)->GetValue();
1470*b1cdbd2cSJim Jagielski 	switch( nId )
1471*b1cdbd2cSJim Jagielski 	{
1472*b1cdbd2cSJim Jagielski 		case SID_UNDO:
1473*b1cdbd2cSJim Jagielski 		{
1474*b1cdbd2cSJim Jagielski 			if ( pUndoManager )
1475*b1cdbd2cSJim Jagielski 			{
1476*b1cdbd2cSJim Jagielski 				sal_uInt16 nCount = pUndoManager->GetUndoActionCount();
1477*b1cdbd2cSJim Jagielski 				sal_uInt16 nSteps = nCnt;
1478*b1cdbd2cSJim Jagielski 				if ( nCount < nCnt )
1479*b1cdbd2cSJim Jagielski 				{
1480*b1cdbd2cSJim Jagielski 					nCnt = nCnt - nCount;
1481*b1cdbd2cSJim Jagielski 					nSteps = nCount;
1482*b1cdbd2cSJim Jagielski 				}
1483*b1cdbd2cSJim Jagielski 				else
1484*b1cdbd2cSJim Jagielski 					nCnt = 0;
1485*b1cdbd2cSJim Jagielski 
1486*b1cdbd2cSJim Jagielski 				while( nSteps-- )
1487*b1cdbd2cSJim Jagielski 					pUndoManager->Undo();
1488*b1cdbd2cSJim Jagielski 			}
1489*b1cdbd2cSJim Jagielski 
1490*b1cdbd2cSJim Jagielski 			if ( nCnt )
1491*b1cdbd2cSJim Jagielski 				rSh.Do( SwWrtShell::UNDO, nCnt );
1492*b1cdbd2cSJim Jagielski 
1493*b1cdbd2cSJim Jagielski 			break;
1494*b1cdbd2cSJim Jagielski 		}
1495*b1cdbd2cSJim Jagielski 
1496*b1cdbd2cSJim Jagielski 		case SID_REDO:
1497*b1cdbd2cSJim Jagielski 		{
1498*b1cdbd2cSJim Jagielski 			if ( pUndoManager )
1499*b1cdbd2cSJim Jagielski 			{
1500*b1cdbd2cSJim Jagielski 				sal_uInt16 nCount = pUndoManager->GetRedoActionCount();
1501*b1cdbd2cSJim Jagielski 				sal_uInt16 nSteps = nCnt;
1502*b1cdbd2cSJim Jagielski 				if ( nCount < nCnt )
1503*b1cdbd2cSJim Jagielski 				{
1504*b1cdbd2cSJim Jagielski 					nCnt = nCnt - nCount;
1505*b1cdbd2cSJim Jagielski 					nSteps = nCount;
1506*b1cdbd2cSJim Jagielski 				}
1507*b1cdbd2cSJim Jagielski 				else
1508*b1cdbd2cSJim Jagielski 					nCnt = 0;
1509*b1cdbd2cSJim Jagielski 
1510*b1cdbd2cSJim Jagielski 				while( nSteps-- )
1511*b1cdbd2cSJim Jagielski                     pUndoManager->Redo();
1512*b1cdbd2cSJim Jagielski 			}
1513*b1cdbd2cSJim Jagielski 
1514*b1cdbd2cSJim Jagielski 			if ( nCnt )
1515*b1cdbd2cSJim Jagielski 				rSh.Do( SwWrtShell::REDO, nCnt );
1516*b1cdbd2cSJim Jagielski 
1517*b1cdbd2cSJim Jagielski 			break;
1518*b1cdbd2cSJim Jagielski 		}
1519*b1cdbd2cSJim Jagielski 	}
1520*b1cdbd2cSJim Jagielski 
1521*b1cdbd2cSJim Jagielski 	rView.GetViewFrame()->GetBindings().InvalidateAll(sal_False);
1522*b1cdbd2cSJim Jagielski 
1523*b1cdbd2cSJim Jagielski     if (rView.GetPostItMgr()->HasActiveSidebarWin())
1524*b1cdbd2cSJim Jagielski         rView.GetPostItMgr()->GetActiveSidebarWin()->ResizeIfNeccessary(aOldHeight,rView.GetPostItMgr()->GetActiveSidebarWin()->GetPostItTextHeight());
1525*b1cdbd2cSJim Jagielski }
1526*b1cdbd2cSJim Jagielski 
StateUndo(SfxItemSet & rSet)1527*b1cdbd2cSJim Jagielski void SwAnnotationShell::StateUndo(SfxItemSet &rSet)
1528*b1cdbd2cSJim Jagielski {
1529*b1cdbd2cSJim Jagielski 	SwPostItMgr* pPostItMgr = rView.GetPostItMgr();
1530*b1cdbd2cSJim Jagielski     if ( !pPostItMgr || !pPostItMgr->HasActiveSidebarWin() )
1531*b1cdbd2cSJim Jagielski 		return;
1532*b1cdbd2cSJim Jagielski 
1533*b1cdbd2cSJim Jagielski 	SfxWhichIter aIter(rSet);
1534*b1cdbd2cSJim Jagielski 	sal_uInt16 nWhich = aIter.FirstWhich();
1535*b1cdbd2cSJim Jagielski 	::svl::IUndoManager* pUndoManager = GetUndoManager();
1536*b1cdbd2cSJim Jagielski 	SfxViewFrame *pSfxViewFrame = rView.GetViewFrame();
1537*b1cdbd2cSJim Jagielski 	SwWrtShell &rSh = rView.GetWrtShell();
1538*b1cdbd2cSJim Jagielski 
1539*b1cdbd2cSJim Jagielski 	while( nWhich )
1540*b1cdbd2cSJim Jagielski 	{
1541*b1cdbd2cSJim Jagielski 		switch ( nWhich )
1542*b1cdbd2cSJim Jagielski 		{
1543*b1cdbd2cSJim Jagielski 		case SID_UNDO:
1544*b1cdbd2cSJim Jagielski 			{
1545*b1cdbd2cSJim Jagielski 				sal_uInt16 nCount = pUndoManager->GetUndoActionCount();
1546*b1cdbd2cSJim Jagielski 				if ( nCount )
1547*b1cdbd2cSJim Jagielski 					pSfxViewFrame->GetSlotState( nWhich, pSfxViewFrame->GetInterface(), &rSet );
1548*b1cdbd2cSJim Jagielski                 else if (rSh.GetLastUndoInfo(0, 0))
1549*b1cdbd2cSJim Jagielski                 {
1550*b1cdbd2cSJim Jagielski 					rSet.Put( SfxStringItem( nWhich, rSh.GetDoString(SwWrtShell::UNDO)) );
1551*b1cdbd2cSJim Jagielski                 }
1552*b1cdbd2cSJim Jagielski 				else
1553*b1cdbd2cSJim Jagielski 					rSet.DisableItem(nWhich);
1554*b1cdbd2cSJim Jagielski 				break;
1555*b1cdbd2cSJim Jagielski 			}
1556*b1cdbd2cSJim Jagielski 		case SID_REDO:
1557*b1cdbd2cSJim Jagielski 			{
1558*b1cdbd2cSJim Jagielski 				sal_uInt16 nCount = pUndoManager->GetRedoActionCount();
1559*b1cdbd2cSJim Jagielski 				if ( nCount )
1560*b1cdbd2cSJim Jagielski 					pSfxViewFrame->GetSlotState( nWhich, pSfxViewFrame->GetInterface(), &rSet );
1561*b1cdbd2cSJim Jagielski                 else if (rSh.GetFirstRedoInfo(0))
1562*b1cdbd2cSJim Jagielski                 {
1563*b1cdbd2cSJim Jagielski 					rSet.Put(SfxStringItem( nWhich, rSh.GetDoString(SwWrtShell::REDO)) );
1564*b1cdbd2cSJim Jagielski                 }
1565*b1cdbd2cSJim Jagielski 				else
1566*b1cdbd2cSJim Jagielski 					rSet.DisableItem(nWhich);
1567*b1cdbd2cSJim Jagielski 				break;
1568*b1cdbd2cSJim Jagielski 			}
1569*b1cdbd2cSJim Jagielski 		case SID_GETUNDOSTRINGS:
1570*b1cdbd2cSJim Jagielski 		case SID_GETREDOSTRINGS:
1571*b1cdbd2cSJim Jagielski 			{
1572*b1cdbd2cSJim Jagielski 				if( pUndoManager )
1573*b1cdbd2cSJim Jagielski 				{
1574*b1cdbd2cSJim Jagielski 					UniString (::svl::IUndoManager:: *fnGetComment)( size_t, bool const ) const;
1575*b1cdbd2cSJim Jagielski 
1576*b1cdbd2cSJim Jagielski 					sal_uInt16 nCount;
1577*b1cdbd2cSJim Jagielski 					if( SID_GETUNDOSTRINGS == nWhich )
1578*b1cdbd2cSJim Jagielski 					{
1579*b1cdbd2cSJim Jagielski 						nCount = pUndoManager->GetUndoActionCount();
1580*b1cdbd2cSJim Jagielski 						fnGetComment = &::svl::IUndoManager::GetUndoActionComment;
1581*b1cdbd2cSJim Jagielski 					}
1582*b1cdbd2cSJim Jagielski 					else
1583*b1cdbd2cSJim Jagielski 					{
1584*b1cdbd2cSJim Jagielski 						nCount = pUndoManager->GetRedoActionCount();
1585*b1cdbd2cSJim Jagielski 						fnGetComment = &::svl::IUndoManager::GetRedoActionComment;
1586*b1cdbd2cSJim Jagielski 					}
1587*b1cdbd2cSJim Jagielski 
1588*b1cdbd2cSJim Jagielski 					String sList;
1589*b1cdbd2cSJim Jagielski 					if( nCount )
1590*b1cdbd2cSJim Jagielski 					{
1591*b1cdbd2cSJim Jagielski 						for( sal_uInt16 n = 0; n < nCount; ++n )
1592*b1cdbd2cSJim Jagielski                             ( sList += (pUndoManager->*fnGetComment)( n, ::svl::IUndoManager::TopLevel ) )
1593*b1cdbd2cSJim Jagielski 									+= '\n';
1594*b1cdbd2cSJim Jagielski 					}
1595*b1cdbd2cSJim Jagielski 
1596*b1cdbd2cSJim Jagielski 					SfxStringListItem aItem( nWhich );
1597*b1cdbd2cSJim Jagielski                     if ((nWhich == SID_GETUNDOSTRINGS) &&
1598*b1cdbd2cSJim Jagielski                         rSh.GetLastUndoInfo(0, 0))
1599*b1cdbd2cSJim Jagielski                     {
1600*b1cdbd2cSJim Jagielski 						rSh.GetDoStrings( SwWrtShell::UNDO, aItem );
1601*b1cdbd2cSJim Jagielski                     }
1602*b1cdbd2cSJim Jagielski                     else if ((nWhich == SID_GETREDOSTRINGS) &&
1603*b1cdbd2cSJim Jagielski                              (rSh.GetFirstRedoInfo(0)))
1604*b1cdbd2cSJim Jagielski                     {
1605*b1cdbd2cSJim Jagielski 						rSh.GetDoStrings( SwWrtShell::UNDO, aItem );
1606*b1cdbd2cSJim Jagielski 					}
1607*b1cdbd2cSJim Jagielski 
1608*b1cdbd2cSJim Jagielski 					sList += aItem.GetString();
1609*b1cdbd2cSJim Jagielski 					aItem.SetString( sList );
1610*b1cdbd2cSJim Jagielski 					rSet.Put( aItem );
1611*b1cdbd2cSJim Jagielski 				}
1612*b1cdbd2cSJim Jagielski 				else
1613*b1cdbd2cSJim Jagielski 					rSet.DisableItem( nWhich );
1614*b1cdbd2cSJim Jagielski 			}
1615*b1cdbd2cSJim Jagielski 			break;
1616*b1cdbd2cSJim Jagielski 
1617*b1cdbd2cSJim Jagielski 		default:
1618*b1cdbd2cSJim Jagielski 			{
1619*b1cdbd2cSJim Jagielski 				pSfxViewFrame->GetSlotState( nWhich, pSfxViewFrame->GetInterface(), &rSet );
1620*b1cdbd2cSJim Jagielski 				break;
1621*b1cdbd2cSJim Jagielski 			}
1622*b1cdbd2cSJim Jagielski 
1623*b1cdbd2cSJim Jagielski 		}
1624*b1cdbd2cSJim Jagielski 
1625*b1cdbd2cSJim Jagielski         if (pPostItMgr->GetActiveSidebarWin()->GetLayoutStatus()==SwPostItHelper::DELETED)
1626*b1cdbd2cSJim Jagielski 			rSet.DisableItem( nWhich );
1627*b1cdbd2cSJim Jagielski 
1628*b1cdbd2cSJim Jagielski 		nWhich = aIter.NextWhich();
1629*b1cdbd2cSJim Jagielski 	}
1630*b1cdbd2cSJim Jagielski }
1631*b1cdbd2cSJim Jagielski 
StateDisableItems(SfxItemSet & rSet)1632*b1cdbd2cSJim Jagielski void SwAnnotationShell::StateDisableItems( SfxItemSet &rSet )
1633*b1cdbd2cSJim Jagielski {
1634*b1cdbd2cSJim Jagielski 	SfxWhichIter aIter(rSet);
1635*b1cdbd2cSJim Jagielski 	sal_uInt16 nWhich = aIter.FirstWhich();
1636*b1cdbd2cSJim Jagielski 	while (nWhich)
1637*b1cdbd2cSJim Jagielski 	{
1638*b1cdbd2cSJim Jagielski 		rSet.DisableItem( nWhich );
1639*b1cdbd2cSJim Jagielski 		nWhich = aIter.NextWhich();
1640*b1cdbd2cSJim Jagielski 	}
1641*b1cdbd2cSJim Jagielski }
1642*b1cdbd2cSJim Jagielski 
InsertSymbol(SfxRequest & rReq)1643*b1cdbd2cSJim Jagielski void SwAnnotationShell::InsertSymbol(SfxRequest& rReq)
1644*b1cdbd2cSJim Jagielski {
1645*b1cdbd2cSJim Jagielski     SwPostItMgr* pPostItMgr = rView.GetPostItMgr();
1646*b1cdbd2cSJim Jagielski     if ( !pPostItMgr || !pPostItMgr->HasActiveSidebarWin() )
1647*b1cdbd2cSJim Jagielski 		return;
1648*b1cdbd2cSJim Jagielski 
1649*b1cdbd2cSJim Jagielski     OutlinerView* pOLV = pPostItMgr->GetActiveSidebarWin()->GetOutlinerView();
1650*b1cdbd2cSJim Jagielski 
1651*b1cdbd2cSJim Jagielski     const SfxItemSet *pArgs = rReq.GetArgs();
1652*b1cdbd2cSJim Jagielski     const SfxPoolItem* pItem = 0;
1653*b1cdbd2cSJim Jagielski     if( pArgs )
1654*b1cdbd2cSJim Jagielski         pArgs->GetItemState(GetPool().GetWhich(SID_CHARMAP), sal_False, &pItem);
1655*b1cdbd2cSJim Jagielski 
1656*b1cdbd2cSJim Jagielski     String sSym;
1657*b1cdbd2cSJim Jagielski     String sFontName;
1658*b1cdbd2cSJim Jagielski     if ( pItem )
1659*b1cdbd2cSJim Jagielski     {
1660*b1cdbd2cSJim Jagielski         sSym = ((const SfxStringItem*)pItem)->GetValue();
1661*b1cdbd2cSJim Jagielski         const SfxPoolItem* pFtItem = NULL;
1662*b1cdbd2cSJim Jagielski         pArgs->GetItemState( GetPool().GetWhich(SID_ATTR_SPECIALCHAR), sal_False, &pFtItem);
1663*b1cdbd2cSJim Jagielski         const SfxStringItem* pFontItem = PTR_CAST( SfxStringItem, pFtItem );
1664*b1cdbd2cSJim Jagielski         if ( pFontItem )
1665*b1cdbd2cSJim Jagielski             sFontName = pFontItem->GetValue();
1666*b1cdbd2cSJim Jagielski     }
1667*b1cdbd2cSJim Jagielski 
1668*b1cdbd2cSJim Jagielski     SfxItemSet aSet(pOLV->GetAttribs());
1669*b1cdbd2cSJim Jagielski     sal_uInt16 nScript = pOLV->GetSelectedScriptType();
1670*b1cdbd2cSJim Jagielski     SvxFontItem aSetDlgFont( RES_CHRATR_FONT );
1671*b1cdbd2cSJim Jagielski     {
1672*b1cdbd2cSJim Jagielski         SvxScriptSetItem aSetItem( SID_ATTR_CHAR_FONT, *aSet.GetPool() );
1673*b1cdbd2cSJim Jagielski         aSetItem.GetItemSet().Put( aSet, sal_False );
1674*b1cdbd2cSJim Jagielski         const SfxPoolItem* pI = aSetItem.GetItemOfScript( nScript );
1675*b1cdbd2cSJim Jagielski         if( pI )
1676*b1cdbd2cSJim Jagielski             aSetDlgFont = *(SvxFontItem*)pI;
1677*b1cdbd2cSJim Jagielski         else
1678*b1cdbd2cSJim Jagielski             aSetDlgFont = (SvxFontItem&)aSet.Get( GetWhichOfScript(
1679*b1cdbd2cSJim Jagielski                         SID_ATTR_CHAR_FONT,
1680*b1cdbd2cSJim Jagielski                         GetI18NScriptTypeOfLanguage( (sal_uInt16)GetAppLanguage() ) ));
1681*b1cdbd2cSJim Jagielski 		if (!sFontName.Len())
1682*b1cdbd2cSJim Jagielski 			sFontName = aSetDlgFont.GetFamilyName();
1683*b1cdbd2cSJim Jagielski     }
1684*b1cdbd2cSJim Jagielski 
1685*b1cdbd2cSJim Jagielski 	Font aFont(sFontName, Size(1,1));
1686*b1cdbd2cSJim Jagielski     if( !sSym.Len() )
1687*b1cdbd2cSJim Jagielski     {
1688*b1cdbd2cSJim Jagielski 		SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
1689*b1cdbd2cSJim Jagielski 
1690*b1cdbd2cSJim Jagielski         SfxAllItemSet aAllSet( GetPool() );
1691*b1cdbd2cSJim Jagielski         aAllSet.Put( SfxBoolItem( FN_PARAM_1, sal_False ) );
1692*b1cdbd2cSJim Jagielski 
1693*b1cdbd2cSJim Jagielski         SwViewOption aOpt(*rView.GetWrtShell().GetViewOptions());
1694*b1cdbd2cSJim Jagielski         String sSymbolFont = aOpt.GetSymbolFont();
1695*b1cdbd2cSJim Jagielski         if( sSymbolFont.Len() )
1696*b1cdbd2cSJim Jagielski             aAllSet.Put( SfxStringItem( SID_FONT_NAME, sSymbolFont ) );
1697*b1cdbd2cSJim Jagielski         else
1698*b1cdbd2cSJim Jagielski             aAllSet.Put( SfxStringItem( SID_FONT_NAME, aSetDlgFont.GetFamilyName() ) );
1699*b1cdbd2cSJim Jagielski 
1700*b1cdbd2cSJim Jagielski         // Wenn Zeichen selektiert ist kann es angezeigt werden
1701*b1cdbd2cSJim Jagielski         SfxAbstractDialog* pDlg = pFact->CreateSfxDialog( rView.GetWindow(), aAllSet,
1702*b1cdbd2cSJim Jagielski 			rView.GetViewFrame()->GetFrame().GetFrameInterface(), RID_SVXDLG_CHARMAP );
1703*b1cdbd2cSJim Jagielski 
1704*b1cdbd2cSJim Jagielski         sal_uInt16 nResult = pDlg->Execute();
1705*b1cdbd2cSJim Jagielski         if( nResult == RET_OK )
1706*b1cdbd2cSJim Jagielski         {
1707*b1cdbd2cSJim Jagielski             SFX_ITEMSET_ARG( pDlg->GetOutputItemSet(), pCItem, SfxStringItem, SID_CHARMAP, sal_False );
1708*b1cdbd2cSJim Jagielski 			SFX_ITEMSET_ARG( pDlg->GetOutputItemSet(), pFontItem, SvxFontItem, SID_ATTR_CHAR_FONT, sal_False );
1709*b1cdbd2cSJim Jagielski 			if ( pFontItem )
1710*b1cdbd2cSJim Jagielski 			{
1711*b1cdbd2cSJim Jagielski 				aFont.SetName( pFontItem->GetFamilyName() );
1712*b1cdbd2cSJim Jagielski 				aFont.SetStyleName( pFontItem->GetStyleName() );
1713*b1cdbd2cSJim Jagielski 				aFont.SetCharSet( pFontItem->GetCharSet() );
1714*b1cdbd2cSJim Jagielski 				aFont.SetPitch( pFontItem->GetPitch() );
1715*b1cdbd2cSJim Jagielski 			}
1716*b1cdbd2cSJim Jagielski 
1717*b1cdbd2cSJim Jagielski             if ( pCItem )
1718*b1cdbd2cSJim Jagielski 			{
1719*b1cdbd2cSJim Jagielski                 sSym  = pCItem->GetValue();
1720*b1cdbd2cSJim Jagielski 				aOpt.SetSymbolFont(aFont.GetName());
1721*b1cdbd2cSJim Jagielski 				SW_MOD()->ApplyUsrPref(aOpt, &rView);
1722*b1cdbd2cSJim Jagielski 			}
1723*b1cdbd2cSJim Jagielski         }
1724*b1cdbd2cSJim Jagielski 
1725*b1cdbd2cSJim Jagielski 		delete( pDlg );
1726*b1cdbd2cSJim Jagielski     }
1727*b1cdbd2cSJim Jagielski 
1728*b1cdbd2cSJim Jagielski     if( sSym.Len() )
1729*b1cdbd2cSJim Jagielski 	{
1730*b1cdbd2cSJim Jagielski 		// nicht flackern
1731*b1cdbd2cSJim Jagielski 		pOLV->HideCursor();
1732*b1cdbd2cSJim Jagielski         Outliner * pOutliner = pOLV->GetOutliner();
1733*b1cdbd2cSJim Jagielski         pOutliner->SetUpdateMode(sal_False);
1734*b1cdbd2cSJim Jagielski 
1735*b1cdbd2cSJim Jagielski 		SfxItemSet aOldSet( pOLV->GetAttribs() );
1736*b1cdbd2cSJim Jagielski 		SfxItemSet aFontSet( *aOldSet.GetPool(),
1737*b1cdbd2cSJim Jagielski 							EE_CHAR_FONTINFO, EE_CHAR_FONTINFO,
1738*b1cdbd2cSJim Jagielski 							EE_CHAR_FONTINFO_CJK, EE_CHAR_FONTINFO_CJK,
1739*b1cdbd2cSJim Jagielski 							EE_CHAR_FONTINFO_CTL, EE_CHAR_FONTINFO_CTL,
1740*b1cdbd2cSJim Jagielski 							0 );
1741*b1cdbd2cSJim Jagielski 		aFontSet.Set( aOldSet );
1742*b1cdbd2cSJim Jagielski 
1743*b1cdbd2cSJim Jagielski 		// String einfuegen
1744*b1cdbd2cSJim Jagielski         pOLV->InsertText( sSym);
1745*b1cdbd2cSJim Jagielski 
1746*b1cdbd2cSJim Jagielski 		// attributieren (Font setzen)
1747*b1cdbd2cSJim Jagielski 		SfxItemSet aSetFont( *aFontSet.GetPool(), aFontSet.GetRanges() );
1748*b1cdbd2cSJim Jagielski 		SvxFontItem aFontItem (aFont.GetFamily(),	 aFont.GetName(),
1749*b1cdbd2cSJim Jagielski 								aFont.GetStyleName(), aFont.GetPitch(),
1750*b1cdbd2cSJim Jagielski 								aFont.GetCharSet(),
1751*b1cdbd2cSJim Jagielski 								EE_CHAR_FONTINFO );
1752*b1cdbd2cSJim Jagielski 		sal_uInt16 nScriptBreak = pBreakIt->GetAllScriptsOfText( sSym );
1753*b1cdbd2cSJim Jagielski 		if( SCRIPTTYPE_LATIN & nScriptBreak )
1754*b1cdbd2cSJim Jagielski 			aSetFont.Put( aFontItem, EE_CHAR_FONTINFO );
1755*b1cdbd2cSJim Jagielski 		if( SCRIPTTYPE_ASIAN & nScriptBreak )
1756*b1cdbd2cSJim Jagielski 			aSetFont.Put( aFontItem, EE_CHAR_FONTINFO_CJK );
1757*b1cdbd2cSJim Jagielski 		if( SCRIPTTYPE_COMPLEX & nScriptBreak )
1758*b1cdbd2cSJim Jagielski 			aSetFont.Put( aFontItem, EE_CHAR_FONTINFO_CTL );
1759*b1cdbd2cSJim Jagielski 		pOLV->SetAttribs(aSetFont);
1760*b1cdbd2cSJim Jagielski 
1761*b1cdbd2cSJim Jagielski 		// Selektion loeschen
1762*b1cdbd2cSJim Jagielski 		ESelection aSel(pOLV->GetSelection());
1763*b1cdbd2cSJim Jagielski 		aSel.nStartPara = aSel.nEndPara;
1764*b1cdbd2cSJim Jagielski 		aSel.nStartPos = aSel.nEndPos;
1765*b1cdbd2cSJim Jagielski 		pOLV->SetSelection(aSel);
1766*b1cdbd2cSJim Jagielski 
1767*b1cdbd2cSJim Jagielski 		// Alten Font restaurieren
1768*b1cdbd2cSJim Jagielski 		pOLV->SetAttribs( aFontSet );
1769*b1cdbd2cSJim Jagielski 
1770*b1cdbd2cSJim Jagielski 		// ab jetzt wieder anzeigen
1771*b1cdbd2cSJim Jagielski 		pOutliner->SetUpdateMode(sal_True);
1772*b1cdbd2cSJim Jagielski 		pOLV->ShowCursor();
1773*b1cdbd2cSJim Jagielski 
1774*b1cdbd2cSJim Jagielski 		rReq.AppendItem( SfxStringItem( GetPool().GetWhich(SID_CHARMAP), sSym ) );
1775*b1cdbd2cSJim Jagielski         if(aFont.GetName().Len())
1776*b1cdbd2cSJim Jagielski             rReq.AppendItem( SfxStringItem( SID_ATTR_SPECIALCHAR, aFont.GetName() ) );
1777*b1cdbd2cSJim Jagielski         rReq.Done();
1778*b1cdbd2cSJim Jagielski 	}
1779*b1cdbd2cSJim Jagielski }
1780