xref: /trunk/main/svx/source/sidebar/paragraph/ParaPropertyPanel.cxx (revision 1ff378ef29d061c5ebed689ca488bcdadd10692f)
1766ce4d0SZheng Fan /**************************************************************
2766ce4d0SZheng Fan  *
3766ce4d0SZheng Fan  * Licensed to the Apache Software Foundation (ASF) under one
4766ce4d0SZheng Fan  * or more contributor license agreements.  See the NOTICE file
5766ce4d0SZheng Fan  * distributed with this work for additional information
6766ce4d0SZheng Fan  * regarding copyright ownership.  The ASF licenses this file
7766ce4d0SZheng Fan  * to you under the Apache License, Version 2.0 (the
8766ce4d0SZheng Fan  * "License"); you may not use this file except in compliance
9766ce4d0SZheng Fan  * with the License.  You may obtain a copy of the License at
10766ce4d0SZheng Fan  *
11766ce4d0SZheng Fan  *   http://www.apache.org/licenses/LICENSE-2.0
12766ce4d0SZheng Fan  *
13766ce4d0SZheng Fan  * Unless required by applicable law or agreed to in writing,
14766ce4d0SZheng Fan  * software distributed under the License is distributed on an
15766ce4d0SZheng Fan  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16766ce4d0SZheng Fan  * KIND, either express or implied.  See the License for the
17766ce4d0SZheng Fan  * specific language governing permissions and limitations
18766ce4d0SZheng Fan  * under the License.
19766ce4d0SZheng Fan  *
20766ce4d0SZheng Fan  *************************************************************/
21766ce4d0SZheng Fan 
22766ce4d0SZheng Fan #include "precompiled_svx.hxx"
23766ce4d0SZheng Fan #include <svx/sidebar/ColorControl.hxx>
24766ce4d0SZheng Fan 
25766ce4d0SZheng Fan #include "ParaPropertyPanel.hxx"
26766ce4d0SZheng Fan #include "ParaPropertyPanel.hrc"
27766ce4d0SZheng Fan 
28766ce4d0SZheng Fan #include "ParaLineSpacingPopup.hxx"
29766ce4d0SZheng Fan #include "ParaLineSpacingControl.hxx"
30766ce4d0SZheng Fan #include "ParaBulletsPopup.hxx"
31766ce4d0SZheng Fan #include "ParaBulletsControl.hxx"
32766ce4d0SZheng Fan #include "ParaNumberingPopup.hxx"
33766ce4d0SZheng Fan #include "ParaNumberingControl.hxx"
34766ce4d0SZheng Fan #include <sfx2/sidebar/Theme.hxx>
35766ce4d0SZheng Fan #include <sfx2/sidebar/propertypanel.hrc>
36766ce4d0SZheng Fan #include <sfx2/sidebar/ControlFactory.hxx>
37766ce4d0SZheng Fan #include <svx/sidebar/PopupContainer.hxx>
38766ce4d0SZheng Fan #include <sfx2/dispatch.hxx>
39766ce4d0SZheng Fan #include <editeng/colritem.hxx>
40766ce4d0SZheng Fan #include <editeng/brshitem.hxx>
41766ce4d0SZheng Fan #include <editeng/lrspitem.hxx>
42766ce4d0SZheng Fan #include <editeng/ulspitem.hxx>
43766ce4d0SZheng Fan #include <vcl/toolbox.hxx>
44766ce4d0SZheng Fan #include <vcl/fixed.hxx>
45766ce4d0SZheng Fan #include <vcl/svapp.hxx>
46766ce4d0SZheng Fan #include <svx/svxids.hrc>
47766ce4d0SZheng Fan #include <svl/intitem.hxx>
48766ce4d0SZheng Fan #include "svx/dialmgr.hxx"
49766ce4d0SZheng Fan #include <sfx2/objsh.hxx>
50766ce4d0SZheng Fan #include <svtools/unitconv.hxx>
51766ce4d0SZheng Fan #include <boost/bind.hpp>
52766ce4d0SZheng Fan using namespace css;
53766ce4d0SZheng Fan using namespace cssu;
54766ce4d0SZheng Fan using ::sfx2::sidebar::Theme;
55766ce4d0SZheng Fan using ::sfx2::sidebar::ControlFactory;
56766ce4d0SZheng Fan 
57766ce4d0SZheng Fan #define A2S(pString) (::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(pString)))
58766ce4d0SZheng Fan 
59766ce4d0SZheng Fan 
60766ce4d0SZheng Fan namespace svx {namespace sidebar {
61766ce4d0SZheng Fan #define DEFAULT_VALUE          0
62766ce4d0SZheng Fan #define TOOLBOX_ITEM1          1
63766ce4d0SZheng Fan #define TOOLBOX_ITEM2          2
64766ce4d0SZheng Fan #define TOOLBOX_ITEM3          3
65766ce4d0SZheng Fan #define TOOLBOX_ITEM4          4
66766ce4d0SZheng Fan 
67766ce4d0SZheng Fan #define MAX_DURCH             5670
68766ce4d0SZheng Fan 
69766ce4d0SZheng Fan #define INDENT_INCREMENT       1
70766ce4d0SZheng Fan #define INDENT_DECREMENT       2
71766ce4d0SZheng Fan #define INDENT_STEP            706
72766ce4d0SZheng Fan #define UL_STEP                58
73766ce4d0SZheng Fan #define UL_INCREMENT           1
74766ce4d0SZheng Fan #define UL_DECREMENT           2
75766ce4d0SZheng Fan 
76766ce4d0SZheng Fan #define NEGATIVE_MAX_VALUE              -9999
77766ce4d0SZheng Fan #define BEGIN_VALUE            28
78766ce4d0SZheng Fan #define MAX_SW                  1709400
79766ce4d0SZheng Fan #define MAX_SC_SD               116220200
80766ce4d0SZheng Fan #define NEGA_MAXVALUE          -10000000
81766ce4d0SZheng Fan 
82766ce4d0SZheng Fan #define POS_FT_PARA_SPACE                               Point(LogicToPixel(Point(FT_PARA_SPACE_X,FT_PARA_SPACE_Y), MAP_APPFONT))
83766ce4d0SZheng Fan #define POS_FT_PARA_SPACE2                              Point(LogicToPixel(Point(FT_PARA_SPACE_X,FT_PARA_SPACE_Y2), MAP_APPFONT))
84766ce4d0SZheng Fan #define POS_TBX_PARA_SPACE_INC_DEC                      Point(LogicToPixel(Point(TBX_PARA_SPACE_INC_DEC_X,TBX_PARA_SPACE_INC_DEC_Y), MAP_APPFONT))
85766ce4d0SZheng Fan #define POS_TBX_PARA_SPACE_INC_DEC2                     Point(LogicToPixel(Point(TBX_PARA_SPACE_INC_DEC_X,TBX_PARA_SPACE_INC_DEC_Y2), MAP_APPFONT))
86766ce4d0SZheng Fan #define POS_FT_PARA_INDENT                              Point(LogicToPixel(Point(FT_PARA_INDENT_X,FT_PARA_INDENT_Y), MAP_APPFONT))
87766ce4d0SZheng Fan #define POS_FT_PARA_INDENT2                             Point(LogicToPixel(Point(FT_PARA_INDENT_X,FT_PARA_INDENT_Y2), MAP_APPFONT))
88766ce4d0SZheng Fan #define POS_TBX_PARA_INDENT_INC_DEC                     Point(LogicToPixel(Point(TBX_PARA_INDENT_INC_DEC_X,TBX_PARA_INDENT_INC_DEC_Y), MAP_APPFONT))
89766ce4d0SZheng Fan #define POS_TBX_PARA_INDENT_INC_DEC2                    Point(LogicToPixel(Point(TBX_PARA_INDENT_INC_DEC_X,TBX_PARA_INDENT_INC_DEC_Y2), MAP_APPFONT))
90766ce4d0SZheng Fan #define POS_MBX_TOP_DIST                                Point(LogicToPixel(Point(MBX_TOP_DIST_X,MBX_TOP_DIST_Y), MAP_APPFONT))
91766ce4d0SZheng Fan #define POS_MBX_TOP_DIST2                               Point(LogicToPixel(Point(MBX_TOP_DIST_X,MBX_TOP_DIST_Y2), MAP_APPFONT))
92766ce4d0SZheng Fan #define POS_MBX_BOT_DIST                                Point(LogicToPixel(Point(MBX_BOT_DIST_X,MBX_BOT_DIST_Y), MAP_APPFONT))
93766ce4d0SZheng Fan #define POS_MBX_BOT_DIST2                               Point(LogicToPixel(Point(MBX_BOT_DIST_X,MBX_BOT_DIST_Y2), MAP_APPFONT))
94766ce4d0SZheng Fan #define POS_MBX_LEFT_DIST                               Point(LogicToPixel(Point(MBX_LEFT_DIST_X,MBX_LEFT_DIST_Y), MAP_APPFONT))
95766ce4d0SZheng Fan #define POS_MBX_LEFT_DIST2                              Point(LogicToPixel(Point(MBX_LEFT_DIST_X,MBX_LEFT_DIST_Y2), MAP_APPFONT))
96766ce4d0SZheng Fan #define POS_MBX_RIGHT_DIST                              Point(LogicToPixel(Point(MBX_RIGHT_DIST_X,MBX_RIGHT_DIST_Y), MAP_APPFONT))
97766ce4d0SZheng Fan #define POS_MBX_RIGHT_DIST2                             Point(LogicToPixel(Point(MBX_RIGHT_DIST_X,MBX_RIGHT_DIST_Y2), MAP_APPFONT))
98766ce4d0SZheng Fan #define POS_MBX_FLINE_DIST                              Point(LogicToPixel(Point(MBX_FLINE_DIST_X,MBX_FLINE_DIST_Y), MAP_APPFONT))
99766ce4d0SZheng Fan #define POS_MBX_FLINE_DIST2                             Point(LogicToPixel(Point(MBX_FLINE_DIST_X,MBX_FLINE_DIST_Y2), MAP_APPFONT))
100766ce4d0SZheng Fan #define POS_IMG_SPACE1                                  Point(LogicToPixel(Point(IMG_SPACE_X,IMG_SPACE1_Y), MAP_APPFONT))
101766ce4d0SZheng Fan #define POS_IMG_SPACE12                                 Point(LogicToPixel(Point(IMG_SPACE_X,IMG_SPACE1_Y2), MAP_APPFONT))
102766ce4d0SZheng Fan #define POS_IMG_SPACE2                                  Point(LogicToPixel(Point(IMG_SPACE_X,IMG_SPACE2_Y), MAP_APPFONT))
103766ce4d0SZheng Fan #define POS_IMG_SPACE22                                 Point(LogicToPixel(Point(IMG_SPACE_X,IMG_SPACE2_Y2), MAP_APPFONT))
104766ce4d0SZheng Fan #define POS_IMG_INDENT1                                 Point(LogicToPixel(Point(IMG_INDENT_X,IMG_INDENT1_Y), MAP_APPFONT))
105766ce4d0SZheng Fan #define POS_IMG_INDENT12                                Point(LogicToPixel(Point(IMG_INDENT_X,IMG_INDENT1_Y2), MAP_APPFONT))
106766ce4d0SZheng Fan #define POS_IMG_INDENT2                                 Point(LogicToPixel(Point(IMG_INDENT_X,IMG_INDENT2_Y), MAP_APPFONT))
107766ce4d0SZheng Fan #define POS_IMG_INDENT22                                Point(LogicToPixel(Point(IMG_INDENT_X,IMG_INDENT2_Y2), MAP_APPFONT))
108766ce4d0SZheng Fan #define POS_IMG_INDENT3                                 Point(LogicToPixel(Point(IMG_INDENT_X,IMG_INDENT3_Y), MAP_APPFONT))
109766ce4d0SZheng Fan #define POS_IMG_INDENT32                                Point(LogicToPixel(Point(IMG_INDENT_X,IMG_INDENT3_Y2), MAP_APPFONT))
110766ce4d0SZheng Fan #define TBX_LINE_SPACE                                  Point(LogicToPixel(Point(TBX_LINE_SPACE_X,TBX_LINE_SPACE_Y), MAP_APPFONT))
111766ce4d0SZheng Fan #define TBX_LINE_SPACE2                                 Point(LogicToPixel(Point(TBX_LINE_SPACE_X,TBX_LINE_SPACE_Y2), MAP_APPFONT))
112766ce4d0SZheng Fan 
113766ce4d0SZheng Fan #define LINE_POINT1_WHITE                               Point(LogicToPixel(Point(LINE_X_WHITE,LINE_TOP_Y), MAP_APPFONT))
114766ce4d0SZheng Fan #define LINE_POINT2_WHITE                               Point(LogicToPixel(Point(LINE_X_WHITE,LINE_BOT_Y), MAP_APPFONT))
115766ce4d0SZheng Fan #define LINE_POINT3_WHITE                               Point(LogicToPixel(Point(LINE_X_WHITE,LINE_TOP_Y2), MAP_APPFONT))
116766ce4d0SZheng Fan #define LINE_POINT4_WHITE                               Point(LogicToPixel(Point(LINE_X_WHITE,LINE_BOT_Y2), MAP_APPFONT))
117766ce4d0SZheng Fan 
118766ce4d0SZheng Fan ParaPropertyPanel* ParaPropertyPanel::Create (
119766ce4d0SZheng Fan     Window* pParent,
120766ce4d0SZheng Fan     const cssu::Reference<css::frame::XFrame>& rxFrame,
121766ce4d0SZheng Fan     SfxBindings* pBindings)
122766ce4d0SZheng Fan {
123766ce4d0SZheng Fan     if (pParent == NULL)
124766ce4d0SZheng Fan         throw lang::IllegalArgumentException(A2S("no parent Window given to ParaPropertyPanel::Create"), NULL, 0);
125766ce4d0SZheng Fan     if ( ! rxFrame.is())
126766ce4d0SZheng Fan         throw lang::IllegalArgumentException(A2S("no XFrame given to ParaPropertyPanel::Create"), NULL, 1);
127766ce4d0SZheng Fan     if (pBindings == NULL)
128766ce4d0SZheng Fan         throw lang::IllegalArgumentException(A2S("no SfxBindings given to ParaPropertyPanel::Create"), NULL, 2);
129766ce4d0SZheng Fan 
130766ce4d0SZheng Fan     return new ParaPropertyPanel(
131766ce4d0SZheng Fan         pParent,
132766ce4d0SZheng Fan         rxFrame,
133766ce4d0SZheng Fan         pBindings);
134766ce4d0SZheng Fan }
135766ce4d0SZheng Fan 
136766ce4d0SZheng Fan void ParaPropertyPanel::HandleContextChange (
137766ce4d0SZheng Fan     const ::sfx2::sidebar::EnumContext aContext)
138766ce4d0SZheng Fan {
139766ce4d0SZheng Fan     if (maContext == aContext)
140766ce4d0SZheng Fan     {
141766ce4d0SZheng Fan         // Nothing to do.
142766ce4d0SZheng Fan         return;
143766ce4d0SZheng Fan     }
144766ce4d0SZheng Fan 
145766ce4d0SZheng Fan     maContext = aContext;
146766ce4d0SZheng Fan     switch (maContext.GetCombinedContext())
147766ce4d0SZheng Fan     {
148766ce4d0SZheng Fan         case CombinedEnumContext(Application_Calc, Context_DrawText):
149766ce4d0SZheng Fan     {
150766ce4d0SZheng Fan         maTBxVertAlign->Show();
151766ce4d0SZheng Fan         maTBxVertAlignBackground->Show();
152766ce4d0SZheng Fan         maTBxBackColor->Hide();
153766ce4d0SZheng Fan         maTBxBackColorBackground->Hide();
154766ce4d0SZheng Fan         maTBxNumBullet->Hide();
155766ce4d0SZheng Fan         maTBxNumBulletBackground->Hide();
156766ce4d0SZheng Fan         ReSize(0);
157766ce4d0SZheng Fan         maTbxIndent_IncDec->Show();
158766ce4d0SZheng Fan         maTbxIndent_IncDecBackground->Show();
159766ce4d0SZheng Fan         maTbxProDemote->Hide();
160766ce4d0SZheng Fan         maTbxProDemoteBackground->Hide();
161766ce4d0SZheng Fan     }
162766ce4d0SZheng Fan     break;
163766ce4d0SZheng Fan         case CombinedEnumContext(Application_Draw, Context_Draw):
164766ce4d0SZheng Fan         case CombinedEnumContext(Application_Draw, Context_TextObject):
165766ce4d0SZheng Fan         case CombinedEnumContext(Application_Draw, Context_Graphic):
166766ce4d0SZheng Fan         case CombinedEnumContext(Application_Impress, Context_Draw):
167766ce4d0SZheng Fan         case CombinedEnumContext(Application_Impress, Context_TextObject):
168766ce4d0SZheng Fan         case CombinedEnumContext(Application_Impress, Context_Graphic):
169766ce4d0SZheng Fan     {
170766ce4d0SZheng Fan         maTBxVertAlign->Hide();
171766ce4d0SZheng Fan         maTBxVertAlignBackground->Hide();
172766ce4d0SZheng Fan         maTBxBackColor->Hide();
173766ce4d0SZheng Fan         maTBxBackColorBackground->Hide();
174766ce4d0SZheng Fan         maTBxNumBullet->Show();
175766ce4d0SZheng Fan         maTBxNumBulletBackground->Show();
176766ce4d0SZheng Fan         ReSize(1);
177766ce4d0SZheng Fan         maTbxIndent_IncDec->Hide();
178766ce4d0SZheng Fan         maTbxIndent_IncDecBackground->Hide();
179766ce4d0SZheng Fan         maTbxProDemote->Show();
180766ce4d0SZheng Fan         maTbxProDemoteBackground->Show();
181766ce4d0SZheng Fan     }
182766ce4d0SZheng Fan     break;
183766ce4d0SZheng Fan         case CombinedEnumContext(Application_Draw, Context_DrawText):
184766ce4d0SZheng Fan         case CombinedEnumContext(Application_Impress, Context_DrawText):
185766ce4d0SZheng Fan     {
186766ce4d0SZheng Fan         maTBxVertAlign->Show();
187766ce4d0SZheng Fan         maTBxVertAlignBackground->Show();
188766ce4d0SZheng Fan         maTBxBackColor->Hide();
189766ce4d0SZheng Fan         maTBxBackColorBackground->Hide();
190766ce4d0SZheng Fan         maTBxNumBullet->Show();
191766ce4d0SZheng Fan         maTBxNumBulletBackground->Show();
192766ce4d0SZheng Fan         ReSize(1);
193766ce4d0SZheng Fan         maTbxIndent_IncDec->Hide();
194766ce4d0SZheng Fan         maTbxIndent_IncDecBackground->Hide();
195766ce4d0SZheng Fan         maTbxProDemote->Show();
196766ce4d0SZheng Fan         maTbxProDemoteBackground->Show();
197766ce4d0SZheng Fan     }
198766ce4d0SZheng Fan     break;
199766ce4d0SZheng Fan         case CombinedEnumContext(Application_Impress, Context_Table):
200766ce4d0SZheng Fan         case CombinedEnumContext(Application_Draw, Context_Table):
201766ce4d0SZheng Fan     {
202766ce4d0SZheng Fan         maTBxVertAlign->Show();
203766ce4d0SZheng Fan         maTBxVertAlignBackground->Show();
204766ce4d0SZheng Fan         maTBxBackColor->Hide();
205766ce4d0SZheng Fan         maTBxBackColorBackground->Hide();
206766ce4d0SZheng Fan         maTBxNumBullet->Show();
207766ce4d0SZheng Fan         maTBxNumBulletBackground->Show();
208766ce4d0SZheng Fan         ReSize(1);
209766ce4d0SZheng Fan         maTbxIndent_IncDec->Hide();
210766ce4d0SZheng Fan         maTbxIndent_IncDecBackground->Hide();
211766ce4d0SZheng Fan         maTbxProDemote->Show();
212766ce4d0SZheng Fan         maTbxProDemoteBackground->Show();
213766ce4d0SZheng Fan     }
214766ce4d0SZheng Fan     break;
215766ce4d0SZheng Fan     case CombinedEnumContext(Application_Writer, Context_Default):
216766ce4d0SZheng Fan         case CombinedEnumContext(Application_Writer, Context_Text):
217766ce4d0SZheng Fan     {
218766ce4d0SZheng Fan         maTBxVertAlign->Hide();
219766ce4d0SZheng Fan         maTBxVertAlignBackground->Hide();
220766ce4d0SZheng Fan         maTBxBackColor->Show();
221766ce4d0SZheng Fan         maTBxBackColorBackground->Show();
222766ce4d0SZheng Fan         maTBxNumBullet->Show();
223766ce4d0SZheng Fan 
224766ce4d0SZheng Fan         maTBxNumBulletBackground->Show();
225766ce4d0SZheng Fan         ReSize(1);
226766ce4d0SZheng Fan         maTbxIndent_IncDec->Show();
227766ce4d0SZheng Fan         maTbxIndent_IncDecBackground->Show();
228766ce4d0SZheng Fan         maTbxProDemote->Hide();
229766ce4d0SZheng Fan         maTbxProDemoteBackground->Hide();
230766ce4d0SZheng Fan     }
231766ce4d0SZheng Fan     break;
232766ce4d0SZheng Fan         case CombinedEnumContext(Application_Writer, Context_Table):
233766ce4d0SZheng Fan         {
234766ce4d0SZheng Fan         maTBxVertAlign->Show();
235766ce4d0SZheng Fan         maTBxVertAlignBackground->Show();
236766ce4d0SZheng Fan         maTBxBackColor->Show();
237766ce4d0SZheng Fan         maTBxBackColorBackground->Show();
238766ce4d0SZheng Fan         maTBxNumBullet->Show();
239766ce4d0SZheng Fan         maTBxNumBulletBackground->Show();
240766ce4d0SZheng Fan         ReSize(1);
241766ce4d0SZheng Fan         maTbxIndent_IncDec->Show();
242766ce4d0SZheng Fan         maTbxIndent_IncDecBackground->Show();
243766ce4d0SZheng Fan         maTbxProDemote->Hide();
244766ce4d0SZheng Fan         maTbxProDemoteBackground->Hide();
245766ce4d0SZheng Fan         }
246766ce4d0SZheng Fan     break;
247766ce4d0SZheng Fan         case CombinedEnumContext(Application_Writer, Context_DrawText):
248766ce4d0SZheng Fan     {
249766ce4d0SZheng Fan         maTBxVertAlign->Show();
250766ce4d0SZheng Fan         maTBxVertAlignBackground->Show();
251766ce4d0SZheng Fan         maTBxBackColor->Hide();
252766ce4d0SZheng Fan         maTBxBackColorBackground->Hide();
253766ce4d0SZheng Fan         maTBxNumBullet->Hide();
254766ce4d0SZheng Fan         maTBxNumBulletBackground->Hide();
255766ce4d0SZheng Fan         ReSize(0);
256766ce4d0SZheng Fan         maTbxIndent_IncDec->Show();
257766ce4d0SZheng Fan         maTbxIndent_IncDecBackground->Show();
258766ce4d0SZheng Fan         maTbxProDemote->Hide();
259766ce4d0SZheng Fan         maTbxProDemoteBackground->Hide();
260766ce4d0SZheng Fan     }
261766ce4d0SZheng Fan     break;
262766ce4d0SZheng Fan         case CombinedEnumContext(Application_Writer, Context_Annotation):
263766ce4d0SZheng Fan         {
264766ce4d0SZheng Fan         maTBxVertAlign->Hide();
265766ce4d0SZheng Fan         maTBxVertAlignBackground->Hide();
266766ce4d0SZheng Fan         maTBxBackColor->Hide();
267766ce4d0SZheng Fan         maTBxBackColorBackground->Hide();
268766ce4d0SZheng Fan         maTBxNumBullet->Hide();
269766ce4d0SZheng Fan         maTBxNumBulletBackground->Hide();
270766ce4d0SZheng Fan         ReSize(0);
271766ce4d0SZheng Fan         maTbxIndent_IncDec->Show();
272766ce4d0SZheng Fan         maTbxIndent_IncDecBackground->Show();
273766ce4d0SZheng Fan         maTbxProDemote->Hide();
274766ce4d0SZheng Fan         maTbxProDemoteBackground->Hide();
275766ce4d0SZheng Fan         }
276766ce4d0SZheng Fan     break;
277766ce4d0SZheng Fan         case CombinedEnumContext(Application_Calc, Context_EditCell):
278766ce4d0SZheng Fan         case CombinedEnumContext(Application_Draw, Context_Text):
279766ce4d0SZheng Fan         case CombinedEnumContext(Application_Draw, Context_OutlineText):
280766ce4d0SZheng Fan         case CombinedEnumContext(Application_Calc, Context_Cell):
281766ce4d0SZheng Fan         case CombinedEnumContext(Application_Calc, Context_Pivot):
282766ce4d0SZheng Fan         case CombinedEnumContext(Application_Impress, Context_Text):
283766ce4d0SZheng Fan         case CombinedEnumContext(Application_Impress, Context_OutlineText):
284766ce4d0SZheng Fan         /*{
285766ce4d0SZheng Fan             mpToolBoxScriptSw->Hide();
286766ce4d0SZheng Fan             mpToolBoxScript->Show();
287766ce4d0SZheng Fan             mpToolBoxSpacing->Show();
288766ce4d0SZheng Fan             mpToolBoxHighlight->Hide();
289766ce4d0SZheng Fan 
290766ce4d0SZheng Fan             Size aSize(PROPERTYPAGE_WIDTH,TEXT_SECTIONPAGE_HEIGHT);
291766ce4d0SZheng Fan             aSize = LogicToPixel( aSize,MapMode(MAP_APPFONT) );
292766ce4d0SZheng Fan             aSize.setWidth(GetOutputSizePixel().Width());
293766ce4d0SZheng Fan             SetSizePixel(aSize);
294766ce4d0SZheng Fan             break;
295766ce4d0SZheng Fan         }*/
296766ce4d0SZheng Fan 
297766ce4d0SZheng Fan         default:
298766ce4d0SZheng Fan             break;
299766ce4d0SZheng Fan     }
300766ce4d0SZheng Fan }
301766ce4d0SZheng Fan 
302766ce4d0SZheng Fan SfxBindings* ParaPropertyPanel::GetBindings()
303766ce4d0SZheng Fan {
304766ce4d0SZheng Fan     return mpBindings;
305766ce4d0SZheng Fan }
306766ce4d0SZheng Fan 
307766ce4d0SZheng Fan void ParaPropertyPanel::SetupIcons (void)
308766ce4d0SZheng Fan {
309766ce4d0SZheng Fan     if (Theme::GetBoolean(Theme::Bool_UseSymphonyIcons))
310766ce4d0SZheng Fan     {
311766ce4d0SZheng Fan     }
312766ce4d0SZheng Fan     else
313766ce4d0SZheng Fan     {
314766ce4d0SZheng Fan     }
315766ce4d0SZheng Fan }
316766ce4d0SZheng Fan 
317766ce4d0SZheng Fan void ParaPropertyPanel::DataChanged (const DataChangedEvent& rEvent)
318766ce4d0SZheng Fan {
319766ce4d0SZheng Fan     (void)rEvent;
320766ce4d0SZheng Fan 
321766ce4d0SZheng Fan     SetupIcons();
322766ce4d0SZheng Fan }
323766ce4d0SZheng Fan 
324766ce4d0SZheng Fan ParaPropertyPanel::~ParaPropertyPanel()
325766ce4d0SZheng Fan {
326766ce4d0SZheng Fan     delete mpLnSPItem;
327766ce4d0SZheng Fan }
328766ce4d0SZheng Fan 
329766ce4d0SZheng Fan void ParaPropertyPanel::ReSize(bool bSize)
330766ce4d0SZheng Fan {
331766ce4d0SZheng Fan     if(bSize)
332766ce4d0SZheng Fan     {
333766ce4d0SZheng Fan         //Paragraph spacing
334766ce4d0SZheng Fan         maFTUL->SetPosPixel(POS_FT_PARA_SPACE);
335766ce4d0SZheng Fan         maTbxUL_IncDec->SetPosPixel(POS_TBX_PARA_SPACE_INC_DEC);
336766ce4d0SZheng Fan         maTopDist->SetPosPixel(POS_MBX_TOP_DIST);
337766ce4d0SZheng Fan         maBottomDist->SetPosPixel(POS_MBX_BOT_DIST);
338766ce4d0SZheng Fan         //Indent
339766ce4d0SZheng Fan         maFTIndent->SetPosPixel(POS_FT_PARA_INDENT);
340766ce4d0SZheng Fan         maTbxIndent_IncDec->SetPosPixel(POS_TBX_PARA_INDENT_INC_DEC);
341766ce4d0SZheng Fan         maTbxProDemote->SetPosPixel(POS_TBX_PARA_INDENT_INC_DEC);
342766ce4d0SZheng Fan         maLeftIndent->SetPosPixel(POS_MBX_LEFT_DIST);
343766ce4d0SZheng Fan         maRightIndent->SetPosPixel(POS_MBX_RIGHT_DIST);
344766ce4d0SZheng Fan         maFLineIndent->SetPosPixel(POS_MBX_FLINE_DIST);
345766ce4d0SZheng Fan         //Line spacing
346766ce4d0SZheng Fan         maLineSPTbx->SetPosPixel(TBX_LINE_SPACE);
347766ce4d0SZheng Fan         //image
348766ce4d0SZheng Fan         maFISpace1.SetPosPixel(POS_IMG_SPACE1);
349766ce4d0SZheng Fan         maFISpace2.SetPosPixel(POS_IMG_SPACE2);
350766ce4d0SZheng Fan         maFIndent1.SetPosPixel(POS_IMG_INDENT1);
351766ce4d0SZheng Fan         maFIndent2.SetPosPixel(POS_IMG_INDENT2);
352766ce4d0SZheng Fan         maFIndent3.SetPosPixel(POS_IMG_INDENT3);
353766ce4d0SZheng Fan         Size aSize(GetOutputSizePixel().Width(),PARA_SECTIONPAGE_HEIGHT);
354766ce4d0SZheng Fan         aSize = LogicToPixel( aSize, MapMode(MAP_APPFONT) );
355766ce4d0SZheng Fan         aSize.setWidth(GetOutputSizePixel().Width());
356766ce4d0SZheng Fan         SetSizePixel(aSize);
357766ce4d0SZheng Fan     }
358766ce4d0SZheng Fan     else
359766ce4d0SZheng Fan     {
360766ce4d0SZheng Fan         //Paragraph spacing
361766ce4d0SZheng Fan         maFTUL->SetPosPixel(POS_FT_PARA_SPACE2);
362766ce4d0SZheng Fan         maTbxUL_IncDec->SetPosPixel(POS_TBX_PARA_SPACE_INC_DEC2);
363766ce4d0SZheng Fan         maTopDist->SetPosPixel(POS_MBX_TOP_DIST2);
364766ce4d0SZheng Fan         maBottomDist->SetPosPixel(POS_MBX_BOT_DIST2);
365766ce4d0SZheng Fan         //Indent
366766ce4d0SZheng Fan         maFTIndent->SetPosPixel(POS_FT_PARA_INDENT2);
367766ce4d0SZheng Fan         maTbxIndent_IncDec->SetPosPixel(POS_TBX_PARA_INDENT_INC_DEC2);
368766ce4d0SZheng Fan         maTbxProDemote->SetPosPixel(POS_TBX_PARA_INDENT_INC_DEC2);
369766ce4d0SZheng Fan         maLeftIndent->SetPosPixel(POS_MBX_LEFT_DIST2);
370766ce4d0SZheng Fan         maRightIndent->SetPosPixel(POS_MBX_RIGHT_DIST2);
371766ce4d0SZheng Fan         maFLineIndent->SetPosPixel(POS_MBX_FLINE_DIST2);
372766ce4d0SZheng Fan         //Line spacing
373766ce4d0SZheng Fan         maLineSPTbx->SetPosPixel(TBX_LINE_SPACE2);
374766ce4d0SZheng Fan         //image
375766ce4d0SZheng Fan         maFISpace1.SetPosPixel(POS_IMG_SPACE12);
376766ce4d0SZheng Fan         maFISpace2.SetPosPixel(POS_IMG_SPACE22);
377766ce4d0SZheng Fan         maFIndent1.SetPosPixel(POS_IMG_INDENT12);
378766ce4d0SZheng Fan         maFIndent2.SetPosPixel(POS_IMG_INDENT22);
379766ce4d0SZheng Fan         maFIndent3.SetPosPixel(POS_IMG_INDENT32);
380766ce4d0SZheng Fan         Size aSize(GetOutputSizePixel().Width(),PARA_SECTIONPAGE_HEIGHT_2);
381766ce4d0SZheng Fan         aSize = LogicToPixel( aSize, MapMode(MAP_APPFONT) );
382766ce4d0SZheng Fan         aSize.setWidth(GetOutputSizePixel().Width());
383766ce4d0SZheng Fan         SetSizePixel(aSize);
384766ce4d0SZheng Fan     }
385766ce4d0SZheng Fan }
386766ce4d0SZheng Fan 
387766ce4d0SZheng Fan void ParaPropertyPanel::EndSpacingPopupMode (void)
388766ce4d0SZheng Fan {
389766ce4d0SZheng Fan     maLineSpacePopup.Hide();
390766ce4d0SZheng Fan }
391766ce4d0SZheng Fan 
392766ce4d0SZheng Fan void ParaPropertyPanel::EndBulletsPopupMode (void)
393766ce4d0SZheng Fan {
394766ce4d0SZheng Fan     //maUnderlinePopup.Hide();
395766ce4d0SZheng Fan }
396766ce4d0SZheng Fan 
397766ce4d0SZheng Fan void ParaPropertyPanel::EndNumberingPopupMode (void)
398766ce4d0SZheng Fan {
399766ce4d0SZheng Fan     //maUnderlinePopup.Hide();
400766ce4d0SZheng Fan }
401766ce4d0SZheng Fan 
402766ce4d0SZheng Fan 
403766ce4d0SZheng Fan void ParaPropertyPanel::InitToolBoxAlign()
404766ce4d0SZheng Fan {
405766ce4d0SZheng Fan     maAlignToolBox->SetItemImage(TOOLBOX_ITEM1,maLeftPara);
406766ce4d0SZheng Fan     maAlignToolBox->SetItemImage(TOOLBOX_ITEM2,maCentPara);
407766ce4d0SZheng Fan     maAlignToolBox->SetItemImage(TOOLBOX_ITEM3,maRightPara);
408766ce4d0SZheng Fan     maAlignToolBox->SetItemImage(TOOLBOX_ITEM4,maJusPara);
409766ce4d0SZheng Fan     Link aLink = LINK( this, ParaPropertyPanel, AlignStyleModifyHdl_Impl );
410766ce4d0SZheng Fan     maAlignToolBox->SetSelectHdl( aLink );
411766ce4d0SZheng Fan     Size aTbxSize (maAlignToolBox->CalcWindowSizePixel());
412766ce4d0SZheng Fan     maAlignToolBox->SetOutputSizePixel( aTbxSize );
413766ce4d0SZheng Fan }
414766ce4d0SZheng Fan 
415766ce4d0SZheng Fan void ParaPropertyPanel::InitToolBoxVertAlign()
416766ce4d0SZheng Fan {
417766ce4d0SZheng Fan     InitImageList(maTBxVertAlign, maVertImageList, maVertImageListH);
418766ce4d0SZheng Fan     maTBxVertAlign->SetSelectHdl(LINK(this,ParaPropertyPanel,VertTbxSelectHandler));
419766ce4d0SZheng Fan     Size aTbxSize (maTBxVertAlign->CalcWindowSizePixel());
420766ce4d0SZheng Fan     maTBxVertAlign->SetOutputSizePixel( aTbxSize );
421766ce4d0SZheng Fan }
422766ce4d0SZheng Fan 
423766ce4d0SZheng Fan 
424766ce4d0SZheng Fan void ParaPropertyPanel::InitToolBoxIndent()
425766ce4d0SZheng Fan {
426766ce4d0SZheng Fan     Link aLink = LINK( this, ParaPropertyPanel, ModifyIndentHdl_Impl );
427766ce4d0SZheng Fan     maLeftIndent->SetModifyHdl( aLink );
428766ce4d0SZheng Fan     maRightIndent->SetModifyHdl( aLink );
429766ce4d0SZheng Fan     maFLineIndent->SetModifyHdl( aLink );
430766ce4d0SZheng Fan 
431766ce4d0SZheng Fan     if( Application::GetSettings().GetLayoutRTL())
432766ce4d0SZheng Fan     {
433766ce4d0SZheng Fan         maTbxIndent_IncDec->SetItemImage(TOOLBOX_ITEM1,maIndInc_BD);
434766ce4d0SZheng Fan         maTbxIndent_IncDec->SetItemImage(TOOLBOX_ITEM2,maIndDec_BD);
435766ce4d0SZheng Fan     }
436766ce4d0SZheng Fan     else
437766ce4d0SZheng Fan     {
438766ce4d0SZheng Fan         maTbxIndent_IncDec->SetItemImage(TOOLBOX_ITEM1,maIndInc);
439766ce4d0SZheng Fan         maTbxIndent_IncDec->SetItemImage(TOOLBOX_ITEM2,maIndDec);
440766ce4d0SZheng Fan     }
441766ce4d0SZheng Fan     maTbxIndent_IncDec->SetItemImage(TOOLBOX_ITEM3,maIndHang);
442766ce4d0SZheng Fan     aLink = LINK( this, ParaPropertyPanel, ClickIndent_IncDec_Hdl_Impl );
443766ce4d0SZheng Fan     maTbxIndent_IncDec->SetSelectHdl(aLink);
444766ce4d0SZheng Fan     m_eLRSpaceUnit = maLRSpaceControl.GetCoreMetric();
445766ce4d0SZheng Fan     Size aTbxSize = maTbxIndent_IncDec->CalcWindowSizePixel();
446766ce4d0SZheng Fan     maTbxIndent_IncDec->SetOutputSizePixel( aTbxSize );
447766ce4d0SZheng Fan 
448766ce4d0SZheng Fan     if( Application::GetSettings().GetLayoutRTL())
449766ce4d0SZheng Fan     {
450766ce4d0SZheng Fan         maTbxProDemote->SetItemImage(TOOLBOX_ITEM1,maIndInc_BD);
451766ce4d0SZheng Fan         maTbxProDemote->SetItemImage(TOOLBOX_ITEM2,maIndDec_BD);
452766ce4d0SZheng Fan     }
453766ce4d0SZheng Fan     else
454766ce4d0SZheng Fan     {
455766ce4d0SZheng Fan         maTbxProDemote->SetItemImage(TOOLBOX_ITEM1,maIndInc);
456766ce4d0SZheng Fan         maTbxProDemote->SetItemImage(TOOLBOX_ITEM2,maIndDec);
457766ce4d0SZheng Fan     }
458766ce4d0SZheng Fan     maTbxProDemote->SetItemImage(TOOLBOX_ITEM3,maIndHang);
459766ce4d0SZheng Fan     aLink = LINK( this, ParaPropertyPanel, ClickProDemote_Hdl_Impl );
460766ce4d0SZheng Fan     maTbxProDemote->SetSelectHdl(aLink);
461766ce4d0SZheng Fan     m_eLRSpaceUnit = maLRSpaceControl.GetCoreMetric();
462766ce4d0SZheng Fan     aTbxSize = maTbxProDemote->CalcWindowSizePixel();
463766ce4d0SZheng Fan     maTbxProDemote->SetOutputSizePixel( aTbxSize );
464766ce4d0SZheng Fan }
465766ce4d0SZheng Fan 
466766ce4d0SZheng Fan void ParaPropertyPanel::InitToolBoxBGColor()
467766ce4d0SZheng Fan {
468766ce4d0SZheng Fan     mpColorUpdater.reset(new ::svx::ToolboxButtonColorUpdater(SID_BACKGROUND_COLOR, TBI_BACK_COLOR, maTBxBackColor.get(), TBX_UPDATER_MODE_CHAR_COLOR_NEW ));
469766ce4d0SZheng Fan 
470766ce4d0SZheng Fan     maTBxBackColor->SetItemImage(TBI_BACK_COLOR, GetDisplayBackground().GetColor().IsDark()? maImgBackColorHigh : maImgBackColor);
471766ce4d0SZheng Fan     maTBxBackColor->SetItemBits( TBI_BACK_COLOR, maTBxBackColor->GetItemBits( TBI_BACK_COLOR ) | TIB_DROPDOWNONLY );
472766ce4d0SZheng Fan 
473766ce4d0SZheng Fan     Link aLink = LINK(this, ParaPropertyPanel, ToolBoxBackColorDDHandler);
474766ce4d0SZheng Fan     maTBxBackColor->SetDropdownClickHdl ( aLink );
475766ce4d0SZheng Fan     maTBxBackColor->SetSelectHdl ( aLink );
476766ce4d0SZheng Fan     Size aTbxSize (maTBxBackColor->CalcWindowSizePixel());
477766ce4d0SZheng Fan     maTBxBackColor->SetOutputSizePixel( aTbxSize );
478766ce4d0SZheng Fan }
479766ce4d0SZheng Fan 
480766ce4d0SZheng Fan void ParaPropertyPanel::InitToolBoxBulletsNumbering()
481766ce4d0SZheng Fan {
482766ce4d0SZheng Fan     if( Application::GetSettings().GetLayoutRTL())//sym2_7380
483766ce4d0SZheng Fan     {
484766ce4d0SZheng Fan         maTBxNumBullet->SetItemImage( IID_BULLET, maNumBImageListRTL.GetImage( IID_BULLET ) );
485766ce4d0SZheng Fan         maTBxNumBullet->SetItemImage( IID_NUMBER, maNumBImageListRTL.GetImage( IID_NUMBER ) );
486766ce4d0SZheng Fan     }
487766ce4d0SZheng Fan     else
488766ce4d0SZheng Fan         InitImageList(maTBxNumBullet, maNumBImageList, maNumBImageListH);
489766ce4d0SZheng Fan 
490766ce4d0SZheng Fan     maTBxNumBullet->SetDropdownClickHdl(LINK(this,ParaPropertyPanel,NumBTbxDDHandler));
491766ce4d0SZheng Fan     maTBxNumBullet->SetSelectHdl(LINK(this,ParaPropertyPanel,NumBTbxSelectHandler));
492766ce4d0SZheng Fan     Size aTbxSize (maTBxNumBullet->CalcWindowSizePixel());
493766ce4d0SZheng Fan     maTBxNumBullet->SetOutputSizePixel( aTbxSize );
494766ce4d0SZheng Fan }
495766ce4d0SZheng Fan void ParaPropertyPanel::InitToolBoxSpacing()
496766ce4d0SZheng Fan {
497766ce4d0SZheng Fan     Link aLink = LINK( this, ParaPropertyPanel, ULSpaceHdl_Impl );
498766ce4d0SZheng Fan     maTopDist->SetModifyHdl(aLink);
499766ce4d0SZheng Fan     maBottomDist->SetModifyHdl( aLink );
500766ce4d0SZheng Fan 
501766ce4d0SZheng Fan     maTbxUL_IncDec->SetItemImage(TOOLBOX_ITEM1,maParInc);
502766ce4d0SZheng Fan     maTbxUL_IncDec->SetItemImage(TOOLBOX_ITEM2,maParDec);
503766ce4d0SZheng Fan     aLink = LINK( this, ParaPropertyPanel, ClickUL_IncDec_Hdl_Impl );
504766ce4d0SZheng Fan     maTbxUL_IncDec->SetSelectHdl(aLink);
505766ce4d0SZheng Fan     m_eULSpaceUnit = maULSpaceControl.GetCoreMetric();
506766ce4d0SZheng Fan     Size aTbxSize = maTbxUL_IncDec->CalcWindowSizePixel();
507766ce4d0SZheng Fan     maTbxUL_IncDec->SetOutputSizePixel( aTbxSize );
508766ce4d0SZheng Fan }
509766ce4d0SZheng Fan void ParaPropertyPanel::InitToolBoxLineSpacing()
510766ce4d0SZheng Fan {
511766ce4d0SZheng Fan     Link aLink = LINK( this, ParaPropertyPanel, ClickLineSPDropDownHdl_Impl );
512766ce4d0SZheng Fan     maLineSPTbx->SetDropdownClickHdl( aLink );
513766ce4d0SZheng Fan     maLineSPTbx->SetSelectHdl( aLink );     //support keyinput "ENTER"
514766ce4d0SZheng Fan     maLineSPTbx->SetItemBits( TOOLBOX_ITEM1, maLineSPTbx->GetItemBits( TOOLBOX_ITEM1 ) | TIB_DROPDOWNONLY );
515766ce4d0SZheng Fan     maLineSPTbx->SetItemImage(TOOLBOX_ITEM1,maSpace3);
516766ce4d0SZheng Fan     Size aTbxSize = maLineSPTbx->CalcWindowSizePixel();
517766ce4d0SZheng Fan     maLineSPTbx->SetOutputSizePixel( aTbxSize );
518766ce4d0SZheng Fan }
519766ce4d0SZheng Fan 
520766ce4d0SZheng Fan void ParaPropertyPanel::initial()
521766ce4d0SZheng Fan {
522766ce4d0SZheng Fan     maFISpace1.SetImage(maSpace1);
523766ce4d0SZheng Fan     maFISpace2.SetImage(maSpace2);
524766ce4d0SZheng Fan     maFIndent1.SetImage(maIndent3);
525766ce4d0SZheng Fan     maFIndent2.SetImage(maIndent2);
526766ce4d0SZheng Fan     maFIndent3.SetImage(maIndent1);
527766ce4d0SZheng Fan 
528766ce4d0SZheng Fan     GetBindings()->Invalidate(SID_ATTR_PARA_ADJUST_LEFT,sal_True,sal_False);
529766ce4d0SZheng Fan     GetBindings()->Invalidate(SID_ATTR_PARA_ADJUST_CENTER,sal_True,sal_False);
530766ce4d0SZheng Fan     GetBindings()->Invalidate(SID_ATTR_PARA_ADJUST_RIGHT,sal_True,sal_False);
531766ce4d0SZheng Fan     GetBindings()->Invalidate(SID_ATTR_PARA_ADJUST_BLOCK,sal_True,sal_False);
532766ce4d0SZheng Fan 
533766ce4d0SZheng Fan     //toolbox
534766ce4d0SZheng Fan     SetupIcons();
535766ce4d0SZheng Fan     InitToolBoxAlign();
536766ce4d0SZheng Fan     InitToolBoxVertAlign();
537766ce4d0SZheng Fan     InitToolBoxIndent();
538766ce4d0SZheng Fan     InitToolBoxBGColor();
539766ce4d0SZheng Fan     InitToolBoxBulletsNumbering();
540766ce4d0SZheng Fan     InitToolBoxSpacing();
541766ce4d0SZheng Fan     InitToolBoxLineSpacing();
542766ce4d0SZheng Fan 
543766ce4d0SZheng Fan #ifdef HAS_IA2
544766ce4d0SZheng Fan     maAlignToolBox->SetAccRelationLabeledBy(&maAlignToolBox);
545766ce4d0SZheng Fan     maTBxVertAlign->SetMpSubEditAccLableBy(&maTBxVertAlign);
546766ce4d0SZheng Fan     maTBxNumBullet->SetAccRelationLabeledBy(&maTBxNumBullet);
547766ce4d0SZheng Fan     maTBxBackColor->SetMpSubEditAccLableBy(&maTBxBackColor);
548766ce4d0SZheng Fan     maFTUL->SetAccRelationLabeledBy(&maFTUL);
549766ce4d0SZheng Fan     maTbxUL_IncDec->SetAccRelationLabeledBy(&maTbxUL_IncDec);
550766ce4d0SZheng Fan     maTopDist->SetAccRelationLabeledBy(&maTopDist);
551766ce4d0SZheng Fan     maBottomDist->SetAccRelationLabeledBy(&maBottomDist);
552766ce4d0SZheng Fan     maLineSPTbx->SetAccRelationLabeledBy(&maLineSPTbx);
553766ce4d0SZheng Fan     maFTIndent->SetAccRelationLabeledBy(&maFTIndent);
554766ce4d0SZheng Fan     maTbxIndent_IncDec->SetAccRelationLabeledBy(&maTbxIndent_IncDec);
555766ce4d0SZheng Fan     maTbxProDemote->SetAccRelationLabeledBy(&maTbxProDemote);
556766ce4d0SZheng Fan     maLeftIndent->SetAccRelationLabeledBy(&maLeftIndent);
557766ce4d0SZheng Fan     maRightIndent->SetAccRelationLabeledBy(&maRightIndent);
558766ce4d0SZheng Fan     maFLineIndent->SetAccRelationLabeledBy(&maFLineIndent);
559766ce4d0SZheng Fan     mpColorUpdater->SetAccRelationLabeledBy(&mpColorUpdater);
560766ce4d0SZheng Fan #endif
561766ce4d0SZheng Fan }
562766ce4d0SZheng Fan 
563766ce4d0SZheng Fan void ParaPropertyPanel::InitImageList(::boost::scoped_ptr<ToolBox>& rTbx, ImageList& rImglst, ImageList& rImgHlst)
564766ce4d0SZheng Fan {
565766ce4d0SZheng Fan     sal_Bool bHighContrast = GetDisplayBackground().GetColor().IsDark();
566766ce4d0SZheng Fan 
567766ce4d0SZheng Fan     ImageList& rImgLst = bHighContrast ? rImgHlst : rImglst;
568766ce4d0SZheng Fan 
569766ce4d0SZheng Fan     sal_uInt16 nCount = rTbx->GetItemCount();
570766ce4d0SZheng Fan     for (sal_uInt16 i = 0; i < nCount; i++)
571766ce4d0SZheng Fan     {
572766ce4d0SZheng Fan         sal_uInt16 nId = rTbx->GetItemId(i);
573766ce4d0SZheng Fan         rTbx->SetItemImage( nId, rImgLst.GetImage( nId ) );
574766ce4d0SZheng Fan     }
575766ce4d0SZheng Fan }
576766ce4d0SZheng Fan 
577766ce4d0SZheng Fan //===========================for Numbering & Bullet================================================
578766ce4d0SZheng Fan 
579766ce4d0SZheng Fan 
580766ce4d0SZheng Fan 
581766ce4d0SZheng Fan IMPL_LINK(ParaPropertyPanel, NumBTbxDDHandler, ToolBox*, pToolBox)
582766ce4d0SZheng Fan {
583766ce4d0SZheng Fan     sal_uInt16 nId = pToolBox->GetCurItemId();
584766ce4d0SZheng Fan 
585766ce4d0SZheng Fan     EndTracking();
586766ce4d0SZheng Fan     pToolBox->SetItemDown( nId, sal_True );
587766ce4d0SZheng Fan 
588766ce4d0SZheng Fan     if (nId == 1)
589766ce4d0SZheng Fan     {
590766ce4d0SZheng Fan         maBulletsPopup.UpdateValueSet();
591766ce4d0SZheng Fan         maBulletsPopup.Show(*pToolBox);
592766ce4d0SZheng Fan     }
593766ce4d0SZheng Fan     else if (nId == 2)
594766ce4d0SZheng Fan     {
595766ce4d0SZheng Fan         maNumberingPopup.UpdateValueSet();
596766ce4d0SZheng Fan         maNumberingPopup.Show(*pToolBox);
597766ce4d0SZheng Fan     }
598766ce4d0SZheng Fan     pToolBox->SetItemDown( nId, sal_False );
599766ce4d0SZheng Fan     return 0;
600766ce4d0SZheng Fan }
601766ce4d0SZheng Fan 
602766ce4d0SZheng Fan IMPL_LINK(ParaPropertyPanel, NumBTbxSelectHandler, ToolBox*, pToolBox)
603766ce4d0SZheng Fan {
604766ce4d0SZheng Fan     sal_uInt16 nId = pToolBox->GetCurItemId();
605766ce4d0SZheng Fan     sal_uInt16 nSID = SID_TABLE_VERT_NONE;
606766ce4d0SZheng Fan 
607766ce4d0SZheng Fan     EndTracking();
608766ce4d0SZheng Fan     if (nId == 1)
609766ce4d0SZheng Fan     {
610766ce4d0SZheng Fan         nSID = FN_NUM_BULLET_ON;
611766ce4d0SZheng Fan     }
612766ce4d0SZheng Fan     else if ( nId == 2)
613766ce4d0SZheng Fan     {
614766ce4d0SZheng Fan         nSID = FN_NUM_NUMBERING_ON;
615766ce4d0SZheng Fan     }
616766ce4d0SZheng Fan     SfxBoolItem aBoolItem(nSID, sal_True);
617766ce4d0SZheng Fan     GetBindings()->GetDispatcher()->Execute(nSID, SFX_CALLMODE_RECORD, &aBoolItem, 0L);
618766ce4d0SZheng Fan 
619766ce4d0SZheng Fan     return 0;
620766ce4d0SZheng Fan }
621766ce4d0SZheng Fan 
622766ce4d0SZheng Fan 
623766ce4d0SZheng Fan //================================for Vertical Alignment========================================
624766ce4d0SZheng Fan 
625766ce4d0SZheng Fan 
626766ce4d0SZheng Fan 
627766ce4d0SZheng Fan IMPL_LINK(ParaPropertyPanel, VertTbxSelectHandler, ToolBox*, pToolBox)
628766ce4d0SZheng Fan {
629766ce4d0SZheng Fan     sal_uInt16 nId = pToolBox->GetCurItemId();
630766ce4d0SZheng Fan     sal_uInt16 nSID = SID_TABLE_VERT_NONE;
631766ce4d0SZheng Fan     EndTracking();
632766ce4d0SZheng Fan     if (nId == 1)
633766ce4d0SZheng Fan     {
634766ce4d0SZheng Fan         nSID = SID_TABLE_VERT_NONE;
635766ce4d0SZheng Fan         maTBxVertAlign->SetItemState(1, STATE_CHECK);
636766ce4d0SZheng Fan         maTBxVertAlign->SetItemState(2, STATE_NOCHECK);
637766ce4d0SZheng Fan         maTBxVertAlign->SetItemState(3, STATE_NOCHECK);
638766ce4d0SZheng Fan     }
639766ce4d0SZheng Fan     else if (nId == 2)
640766ce4d0SZheng Fan     {
641766ce4d0SZheng Fan         nSID = SID_TABLE_VERT_CENTER;
642766ce4d0SZheng Fan         maTBxVertAlign->SetItemState(1, STATE_NOCHECK);
643766ce4d0SZheng Fan         maTBxVertAlign->SetItemState(2, STATE_CHECK);
644766ce4d0SZheng Fan         maTBxVertAlign->SetItemState(3, STATE_NOCHECK);
645766ce4d0SZheng Fan     }
646766ce4d0SZheng Fan     else if (nId == 3)
647766ce4d0SZheng Fan     {
648766ce4d0SZheng Fan         nSID = SID_TABLE_VERT_BOTTOM;
649766ce4d0SZheng Fan         maTBxVertAlign->SetItemState(1, STATE_NOCHECK);
650766ce4d0SZheng Fan         maTBxVertAlign->SetItemState(2, STATE_NOCHECK);
651766ce4d0SZheng Fan         maTBxVertAlign->SetItemState(3, STATE_CHECK);
652766ce4d0SZheng Fan     }
653766ce4d0SZheng Fan     SfxBoolItem aBoolItem(nSID, sal_True);
654766ce4d0SZheng Fan     GetBindings()->GetDispatcher()->Execute(nSID, SFX_CALLMODE_RECORD, &aBoolItem, 0L);
655766ce4d0SZheng Fan 
656766ce4d0SZheng Fan     return 0;
657766ce4d0SZheng Fan }
658766ce4d0SZheng Fan 
659766ce4d0SZheng Fan void ParaPropertyPanel::VertStateChanged(sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState)
660766ce4d0SZheng Fan {
661766ce4d0SZheng Fan     if (eState < SFX_ITEM_DONTCARE)
662766ce4d0SZheng Fan     {
663766ce4d0SZheng Fan         maTBxVertAlign->SetItemState(1, STATE_NOCHECK);
664766ce4d0SZheng Fan         maTBxVertAlign->SetItemState(2, STATE_NOCHECK);
665766ce4d0SZheng Fan         maTBxVertAlign->SetItemState(3, STATE_NOCHECK);
666766ce4d0SZheng Fan         maTBxVertAlign->EnableItem(1, sal_False);
667766ce4d0SZheng Fan         maTBxVertAlign->EnableItem(2, sal_False);
668766ce4d0SZheng Fan         maTBxVertAlign->EnableItem(3, sal_False);
669766ce4d0SZheng Fan     }
670766ce4d0SZheng Fan     else
671766ce4d0SZheng Fan     {
672766ce4d0SZheng Fan         maTBxVertAlign->EnableItem(1, sal_True);
673766ce4d0SZheng Fan         maTBxVertAlign->EnableItem(2, sal_True);
674766ce4d0SZheng Fan         maTBxVertAlign->EnableItem(3, sal_True);
675766ce4d0SZheng Fan         if ( (eState >= SFX_ITEM_DEFAULT) && (pState->ISA(SfxBoolItem)))
676766ce4d0SZheng Fan         {
677766ce4d0SZheng Fan             const SfxBoolItem* pItem= (const SfxBoolItem*)pState;
678766ce4d0SZheng Fan             sal_Bool aBool = (sal_Bool)pItem->GetValue();
679766ce4d0SZheng Fan 
680766ce4d0SZheng Fan             if (aBool)
681766ce4d0SZheng Fan             {
682766ce4d0SZheng Fan                 if (nSID == SID_TABLE_VERT_NONE)
683766ce4d0SZheng Fan                 {
684766ce4d0SZheng Fan                     maTBxVertAlign->SetItemState(1, STATE_CHECK);
685766ce4d0SZheng Fan                     maTBxVertAlign->SetItemState(2, STATE_NOCHECK);
686766ce4d0SZheng Fan                     maTBxVertAlign->SetItemState(3, STATE_NOCHECK);
687766ce4d0SZheng Fan                 }
688766ce4d0SZheng Fan                 else if (nSID == SID_TABLE_VERT_CENTER)
689766ce4d0SZheng Fan                 {
690766ce4d0SZheng Fan                     maTBxVertAlign->SetItemState(1, STATE_NOCHECK);
691766ce4d0SZheng Fan                     maTBxVertAlign->SetItemState(2, STATE_CHECK);
692766ce4d0SZheng Fan                     maTBxVertAlign->SetItemState(3, STATE_NOCHECK);
693766ce4d0SZheng Fan                 }
694766ce4d0SZheng Fan                 else if (nSID == SID_TABLE_VERT_BOTTOM)
695766ce4d0SZheng Fan                 {
696766ce4d0SZheng Fan                     maTBxVertAlign->SetItemState(1, STATE_NOCHECK);
697766ce4d0SZheng Fan                     maTBxVertAlign->SetItemState(2, STATE_NOCHECK);
698766ce4d0SZheng Fan                     maTBxVertAlign->SetItemState(3, STATE_CHECK);
699766ce4d0SZheng Fan                 }
700766ce4d0SZheng Fan             }
701766ce4d0SZheng Fan             else
702766ce4d0SZheng Fan             {
703766ce4d0SZheng Fan                 if (nSID == SID_TABLE_VERT_NONE)
704766ce4d0SZheng Fan                 {
705766ce4d0SZheng Fan                     maTBxVertAlign->SetItemState(1, STATE_NOCHECK);
706766ce4d0SZheng Fan                 }
707766ce4d0SZheng Fan                 else if (nSID == SID_TABLE_VERT_CENTER)
708766ce4d0SZheng Fan                 {
709766ce4d0SZheng Fan                     maTBxVertAlign->SetItemState(2, STATE_NOCHECK);
710766ce4d0SZheng Fan                 }
711766ce4d0SZheng Fan                 else if (nSID == SID_TABLE_VERT_BOTTOM)
712766ce4d0SZheng Fan                 {
713766ce4d0SZheng Fan                     maTBxVertAlign->SetItemState(3, STATE_NOCHECK);
714766ce4d0SZheng Fan                 }
715766ce4d0SZheng Fan             }
716766ce4d0SZheng Fan         }
717766ce4d0SZheng Fan         else
718766ce4d0SZheng Fan         {
719766ce4d0SZheng Fan             maTBxVertAlign->SetItemState(1, STATE_NOCHECK);
720766ce4d0SZheng Fan             maTBxVertAlign->SetItemState(2, STATE_NOCHECK);
721766ce4d0SZheng Fan             maTBxVertAlign->SetItemState(3, STATE_NOCHECK);
722766ce4d0SZheng Fan         }
723766ce4d0SZheng Fan     }
724766ce4d0SZheng Fan }
725766ce4d0SZheng Fan //==================================for Background color=====================
726766ce4d0SZheng Fan 
727766ce4d0SZheng Fan IMPL_LINK(ParaPropertyPanel, ToolBoxBackColorDDHandler,ToolBox*, pToolBox)
728766ce4d0SZheng Fan {
729766ce4d0SZheng Fan     sal_uInt16 nId = pToolBox->GetCurItemId();
730766ce4d0SZheng Fan     OSL_ASSERT(nId == TBI_BACK_COLOR);
731766ce4d0SZheng Fan     if(nId == TBI_BACK_COLOR)
732766ce4d0SZheng Fan     {
733766ce4d0SZheng Fan         pToolBox->SetItemDown( nId, true );
734766ce4d0SZheng Fan         maBGColorPopup.Show(*pToolBox);
735766ce4d0SZheng Fan         maBGColorPopup.SetCurrentColor(maColor, mbColorAvailable);
736766ce4d0SZheng Fan     }
737766ce4d0SZheng Fan     return 0;
738766ce4d0SZheng Fan }
739766ce4d0SZheng Fan 
740766ce4d0SZheng Fan IMPL_LINK( ParaPropertyPanel, ImplPopupModeEndHdl, FloatingWindow*, EMPTYARG )
741766ce4d0SZheng Fan {
742766ce4d0SZheng Fan     return 0;
743766ce4d0SZheng Fan }
744766ce4d0SZheng Fan 
745766ce4d0SZheng Fan void ParaPropertyPanel::ShowMenu (void)
746766ce4d0SZheng Fan {
747766ce4d0SZheng Fan     if (mpBindings != NULL)
748766ce4d0SZheng Fan     {
749766ce4d0SZheng Fan         SfxDispatcher* pDispatcher = mpBindings->GetDispatcher();
750766ce4d0SZheng Fan         if (pDispatcher != NULL)
751766ce4d0SZheng Fan             pDispatcher->Execute(SID_PARA_DLG, SFX_CALLMODE_ASYNCHRON);
752766ce4d0SZheng Fan     }
753766ce4d0SZheng Fan }
754766ce4d0SZheng Fan 
755766ce4d0SZheng Fan void ParaPropertyPanel::ParaBKGStateChanged(sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState)
756766ce4d0SZheng Fan {
757766ce4d0SZheng Fan     if( eState >= SFX_ITEM_DEFAULT && pState->ISA(SvxBrushItem))
758766ce4d0SZheng Fan     {
759766ce4d0SZheng Fan         const SvxBrushItem* pItem =  (const SvxBrushItem*)pState;
760766ce4d0SZheng Fan         maColor = pItem->GetColor();
761766ce4d0SZheng Fan         mbColorAvailable = sal_True;
762766ce4d0SZheng Fan         mpColorUpdater->Update(maColor);
763766ce4d0SZheng Fan     }
764766ce4d0SZheng Fan     else
765766ce4d0SZheng Fan     {
766766ce4d0SZheng Fan         mbColorAvailable = sal_False;
767766ce4d0SZheng Fan         maColor.SetColor(COL_AUTO);
768766ce4d0SZheng Fan         mpColorUpdater->Update(maColor);
769766ce4d0SZheng Fan     }
770766ce4d0SZheng Fan }
771766ce4d0SZheng Fan 
772766ce4d0SZheng Fan Color ParaPropertyPanel::GetBGColor (void) const
773766ce4d0SZheng Fan {
774766ce4d0SZheng Fan     return maColor;
775766ce4d0SZheng Fan }
776766ce4d0SZheng Fan 
777766ce4d0SZheng Fan void ParaPropertyPanel::SetBGColor (
778766ce4d0SZheng Fan     const String& rsColorName,
779766ce4d0SZheng Fan     const Color aColor)
780766ce4d0SZheng Fan {
781766ce4d0SZheng Fan     SvxColorItem aColorItem(aColor, SID_BACKGROUND_COLOR);
782766ce4d0SZheng Fan     mpBindings->GetDispatcher()->Execute(SID_BACKGROUND_COLOR, SFX_CALLMODE_RECORD, &aColorItem, 0L);
783766ce4d0SZheng Fan     maColor = aColor;
784766ce4d0SZheng Fan }
785766ce4d0SZheng Fan 
786766ce4d0SZheng Fan //==================================for Paragraph Alignment=====================
787766ce4d0SZheng Fan IMPL_LINK( ParaPropertyPanel, AlignStyleModifyHdl_Impl, ToolBox*, pBox )
788766ce4d0SZheng Fan {
789766ce4d0SZheng Fan     switch (pBox->GetCurItemId())
790766ce4d0SZheng Fan     {
791766ce4d0SZheng Fan     case BT_SUBSTLEFT:
792766ce4d0SZheng Fan         {
793766ce4d0SZheng Fan             pBox->SetItemState(BT_SUBSTLEFT,STATE_CHECK);
794766ce4d0SZheng Fan             pBox->SetItemState(BT_SUBSTCENTER,STATE_NOCHECK);
795766ce4d0SZheng Fan             pBox->SetItemState(BT_SUBSTRIGHT,STATE_NOCHECK);
796766ce4d0SZheng Fan             pBox->SetItemState(BT_SUBSTJUSTIFY,STATE_NOCHECK);
797766ce4d0SZheng Fan             SfxBoolItem aBoolItem( SID_ATTR_PARA_ADJUST_LEFT,  sal_True );
798766ce4d0SZheng Fan             GetBindings()->GetDispatcher()->Execute(SID_ATTR_PARA_ADJUST_LEFT, SFX_CALLMODE_RECORD, &aBoolItem, 0L);
799766ce4d0SZheng Fan         }
800766ce4d0SZheng Fan         break;
801766ce4d0SZheng Fan     case BT_SUBSTCENTER:
802766ce4d0SZheng Fan         {
803766ce4d0SZheng Fan             pBox->SetItemState(BT_SUBSTCENTER,STATE_CHECK);
804766ce4d0SZheng Fan             pBox->SetItemState(BT_SUBSTLEFT,STATE_NOCHECK);
805766ce4d0SZheng Fan             pBox->SetItemState(BT_SUBSTRIGHT,STATE_NOCHECK);
806766ce4d0SZheng Fan             pBox->SetItemState(BT_SUBSTJUSTIFY,STATE_NOCHECK);
807766ce4d0SZheng Fan             SfxBoolItem aBoolItem( SID_ATTR_PARA_ADJUST_CENTER, sal_True );
808766ce4d0SZheng Fan             GetBindings()->GetDispatcher()->Execute(SID_ATTR_PARA_ADJUST_CENTER, SFX_CALLMODE_RECORD, &aBoolItem, 0L);
809766ce4d0SZheng Fan         }
810766ce4d0SZheng Fan         break;
811766ce4d0SZheng Fan     case BT_SUBSTRIGHT:
812766ce4d0SZheng Fan         {
813766ce4d0SZheng Fan             pBox->SetItemState(BT_SUBSTRIGHT,STATE_CHECK);
814766ce4d0SZheng Fan             pBox->SetItemState(BT_SUBSTLEFT,STATE_NOCHECK);
815766ce4d0SZheng Fan             pBox->SetItemState(BT_SUBSTCENTER,STATE_NOCHECK);
816766ce4d0SZheng Fan             pBox->SetItemState(BT_SUBSTJUSTIFY,STATE_NOCHECK);
817766ce4d0SZheng Fan             SfxBoolItem aBoolItem( SID_ATTR_PARA_ADJUST_RIGHT, sal_True );
818766ce4d0SZheng Fan             GetBindings()->GetDispatcher()->Execute(SID_ATTR_PARA_ADJUST_RIGHT, SFX_CALLMODE_RECORD, &aBoolItem, 0L);
819766ce4d0SZheng Fan         }
820766ce4d0SZheng Fan         break;
821766ce4d0SZheng Fan     case BT_SUBSTJUSTIFY:
822766ce4d0SZheng Fan         {
823766ce4d0SZheng Fan             pBox->SetItemState(BT_SUBSTJUSTIFY,STATE_CHECK);
824766ce4d0SZheng Fan             pBox->SetItemState(BT_SUBSTLEFT,STATE_NOCHECK);
825766ce4d0SZheng Fan             pBox->SetItemState(BT_SUBSTRIGHT,STATE_NOCHECK);
826766ce4d0SZheng Fan             pBox->SetItemState(BT_SUBSTCENTER,STATE_NOCHECK);
827766ce4d0SZheng Fan             SfxBoolItem aBoolItem( SID_ATTR_PARA_ADJUST_BLOCK, sal_True );
828766ce4d0SZheng Fan             GetBindings()->GetDispatcher()->Execute(SID_ATTR_PARA_ADJUST_BLOCK, SFX_CALLMODE_RECORD, &aBoolItem, 0L);
829766ce4d0SZheng Fan         }
830766ce4d0SZheng Fan         break;
831766ce4d0SZheng Fan     }
832766ce4d0SZheng Fan 
833766ce4d0SZheng Fan     return 0;
834766ce4d0SZheng Fan }
835766ce4d0SZheng Fan //==================================for Paragraph Indent=====================
836766ce4d0SZheng Fan IMPL_LINK( ParaPropertyPanel, ModifyIndentHdl_Impl, SvxRelativeField*, pBox )
837766ce4d0SZheng Fan {
838766ce4d0SZheng Fan     SvxLRSpaceItem aMargin( SID_ATTR_LRSPACE );
839766ce4d0SZheng Fan     aMargin.SetTxtLeft( (const long)GetCoreValue( *maLeftIndent.get(), m_eLRSpaceUnit ) );
840766ce4d0SZheng Fan     aMargin.SetRight( (const long)GetCoreValue( *maRightIndent.get(), m_eLRSpaceUnit ) );
841766ce4d0SZheng Fan     aMargin.SetTxtFirstLineOfst( (const short)GetCoreValue( *maFLineIndent.get(), m_eLRSpaceUnit ) );
842766ce4d0SZheng Fan 
843766ce4d0SZheng Fan     GetBindings()->GetDispatcher()->Execute(
844766ce4d0SZheng Fan         SID_ATTR_LRSPACE, SFX_CALLMODE_RECORD, &aMargin, 0L);
845766ce4d0SZheng Fan     return 0;
846766ce4d0SZheng Fan }
847766ce4d0SZheng Fan 
848766ce4d0SZheng Fan IMPL_LINK(ParaPropertyPanel, ClickIndent_IncDec_Hdl_Impl, ToolBox *, pControl)
849766ce4d0SZheng Fan {
850766ce4d0SZheng Fan     switch (pControl->GetCurItemId())
851766ce4d0SZheng Fan     {
852766ce4d0SZheng Fan         case INDENT_INCREMENT:
853766ce4d0SZheng Fan         {
854766ce4d0SZheng Fan             switch (maContext.GetCombinedContext())
855766ce4d0SZheng Fan             {
856766ce4d0SZheng Fan                 case CombinedEnumContext(Application_Writer, Context_Default):
857766ce4d0SZheng Fan                 case CombinedEnumContext(Application_Writer, Context_Text):
858766ce4d0SZheng Fan                 case CombinedEnumContext(Application_Writer, Context_Table):
859766ce4d0SZheng Fan                 {
860766ce4d0SZheng Fan                     SfxBoolItem aMargin( SID_INC_INDENT, sal_True );
861766ce4d0SZheng Fan                     GetBindings()->GetDispatcher()->Execute(
862766ce4d0SZheng Fan                         SID_INC_INDENT, SFX_CALLMODE_RECORD, &aMargin, 0L);
863766ce4d0SZheng Fan                 }
864766ce4d0SZheng Fan                 break;
865766ce4d0SZheng Fan                 default:
866766ce4d0SZheng Fan                 {
867766ce4d0SZheng Fan                     SvxLRSpaceItem aMargin( SID_ATTR_LRSPACE );
868766ce4d0SZheng Fan 
869766ce4d0SZheng Fan                     maTxtLeft += INDENT_STEP;
870766ce4d0SZheng Fan                     sal_Int64 nVal = OutputDevice::LogicToLogic( maTxtLeft, (MapUnit)(SFX_MAPUNIT_TWIP), MAP_100TH_MM );
871766ce4d0SZheng Fan                     nVal = OutputDevice::LogicToLogic( (long)nVal, MAP_100TH_MM, (MapUnit)m_eLRSpaceUnit );
872766ce4d0SZheng Fan                     aMargin.SetTxtLeft( (const long)nVal );
873766ce4d0SZheng Fan                     aMargin.SetRight( (const long)GetCoreValue( *maRightIndent.get(), m_eLRSpaceUnit ) );
874766ce4d0SZheng Fan                     aMargin.SetTxtFirstLineOfst( (const short)GetCoreValue( *maFLineIndent.get(), m_eLRSpaceUnit ) );
875766ce4d0SZheng Fan 
876766ce4d0SZheng Fan                     GetBindings()->GetDispatcher()->Execute(
877766ce4d0SZheng Fan                         SID_ATTR_LRSPACE, SFX_CALLMODE_RECORD, &aMargin, 0L);
878766ce4d0SZheng Fan                 }
879766ce4d0SZheng Fan             }
880766ce4d0SZheng Fan         }
881766ce4d0SZheng Fan         break;
882766ce4d0SZheng Fan         case INDENT_DECREMENT:
883766ce4d0SZheng Fan         {
884766ce4d0SZheng Fan             switch (maContext.GetCombinedContext())
885766ce4d0SZheng Fan             {
886766ce4d0SZheng Fan                 case CombinedEnumContext(Application_Writer, Context_Default):
887766ce4d0SZheng Fan                 case CombinedEnumContext(Application_Writer, Context_Text):
888766ce4d0SZheng Fan                 case CombinedEnumContext(Application_Writer, Context_Table):
889766ce4d0SZheng Fan                 {
890766ce4d0SZheng Fan                     SfxBoolItem aMargin( SID_DEC_INDENT, sal_True );
891766ce4d0SZheng Fan                     GetBindings()->GetDispatcher()->Execute(
892766ce4d0SZheng Fan                         SID_DEC_INDENT, SFX_CALLMODE_RECORD, &aMargin, 0L);
893766ce4d0SZheng Fan                 }
894766ce4d0SZheng Fan                 break;
895766ce4d0SZheng Fan                 default:
896766ce4d0SZheng Fan                 {
897766ce4d0SZheng Fan                     if((maTxtLeft - INDENT_STEP) < 0)
898766ce4d0SZheng Fan                         maTxtLeft = DEFAULT_VALUE;
899766ce4d0SZheng Fan                     else
900766ce4d0SZheng Fan                         maTxtLeft -= INDENT_STEP;
901766ce4d0SZheng Fan 
902766ce4d0SZheng Fan                     SvxLRSpaceItem aMargin( SID_ATTR_LRSPACE );
903766ce4d0SZheng Fan 
904766ce4d0SZheng Fan                     sal_Int64 nVal = OutputDevice::LogicToLogic( maTxtLeft, (MapUnit)(SFX_MAPUNIT_TWIP), MAP_100TH_MM );
905766ce4d0SZheng Fan                     nVal = OutputDevice::LogicToLogic( (long)nVal, MAP_100TH_MM, (MapUnit)m_eLRSpaceUnit );
906766ce4d0SZheng Fan 
907766ce4d0SZheng Fan                     aMargin.SetTxtLeft( (const long)nVal );
908766ce4d0SZheng Fan                     aMargin.SetRight( (const long)GetCoreValue( *maRightIndent.get(), m_eLRSpaceUnit ) );
909766ce4d0SZheng Fan                     aMargin.SetTxtFirstLineOfst( (const short)GetCoreValue( *maFLineIndent.get(), m_eLRSpaceUnit ) );
910766ce4d0SZheng Fan 
911766ce4d0SZheng Fan                     GetBindings()->GetDispatcher()->Execute(
912766ce4d0SZheng Fan                         SID_ATTR_LRSPACE, SFX_CALLMODE_RECORD, &aMargin, 0L);
913766ce4d0SZheng Fan                 }
914766ce4d0SZheng Fan             }
915766ce4d0SZheng Fan         }
916766ce4d0SZheng Fan         break;
917766ce4d0SZheng Fan         case ID_HANGING_INDENT:
918766ce4d0SZheng Fan         {
919766ce4d0SZheng Fan             SvxLRSpaceItem aMargin( SID_ATTR_LRSPACE );
920766ce4d0SZheng Fan             aMargin.SetTxtLeft( (const long)GetCoreValue( *maLeftIndent.get(), m_eLRSpaceUnit ) + (const short)GetCoreValue( *maFLineIndent.get(), m_eLRSpaceUnit ) );
921766ce4d0SZheng Fan             aMargin.SetRight( (const long)GetCoreValue( *maRightIndent.get(), m_eLRSpaceUnit ) );
922766ce4d0SZheng Fan             aMargin.SetTxtFirstLineOfst( ((const short)GetCoreValue( *maFLineIndent.get(), m_eLRSpaceUnit ))*(-1) );
923766ce4d0SZheng Fan 
924766ce4d0SZheng Fan             GetBindings()->GetDispatcher()->Execute(
925766ce4d0SZheng Fan                 SID_ATTR_LRSPACE, SFX_CALLMODE_RECORD, &aMargin, 0L);
926766ce4d0SZheng Fan         }
927766ce4d0SZheng Fan         break;
928766ce4d0SZheng Fan     }
929766ce4d0SZheng Fan     return( 0L );
930766ce4d0SZheng Fan }
931766ce4d0SZheng Fan 
932766ce4d0SZheng Fan IMPL_LINK(ParaPropertyPanel, ClickProDemote_Hdl_Impl, ToolBox *, pControl)
933766ce4d0SZheng Fan {
934766ce4d0SZheng Fan     switch (pControl->GetCurItemId())
935766ce4d0SZheng Fan     {
936766ce4d0SZheng Fan         case BT_TBX_INDENT_PROMOTE:
937766ce4d0SZheng Fan         {
938766ce4d0SZheng Fan             SvxLRSpaceItem aMargin( SID_ATTR_PARA_RIGHT );
939766ce4d0SZheng Fan 
940766ce4d0SZheng Fan             maTxtLeft += INDENT_STEP;
941766ce4d0SZheng Fan             sal_Int64 nVal = OutputDevice::LogicToLogic( maTxtLeft, (MapUnit)(SFX_MAPUNIT_TWIP), MAP_100TH_MM );
942766ce4d0SZheng Fan             nVal = OutputDevice::LogicToLogic( (long)nVal, MAP_100TH_MM, (MapUnit)m_eLRSpaceUnit );
943766ce4d0SZheng Fan             aMargin.SetTxtLeft( (const long)nVal );
944766ce4d0SZheng Fan             aMargin.SetRight( (const long)GetCoreValue( *maRightIndent.get(), m_eLRSpaceUnit ) );
945766ce4d0SZheng Fan             aMargin.SetTxtFirstLineOfst( (const short)GetCoreValue( *maFLineIndent.get(), m_eLRSpaceUnit ) );
946766ce4d0SZheng Fan 
947766ce4d0SZheng Fan             GetBindings()->GetDispatcher()->Execute(
948766ce4d0SZheng Fan                 SID_ATTR_PARA_RIGHT, SFX_CALLMODE_RECORD, &aMargin, 0L);
949766ce4d0SZheng Fan         }
950766ce4d0SZheng Fan         break;
951766ce4d0SZheng Fan         case BT_TBX_INDENT_DEMOTE:
952766ce4d0SZheng Fan         {
953766ce4d0SZheng Fan             if((maTxtLeft - INDENT_STEP) < 0)
954766ce4d0SZheng Fan                 maTxtLeft = DEFAULT_VALUE;
955766ce4d0SZheng Fan             else
956766ce4d0SZheng Fan                 maTxtLeft -= INDENT_STEP;
957766ce4d0SZheng Fan 
958766ce4d0SZheng Fan             SvxLRSpaceItem aMargin( SID_ATTR_PARA_LEFT );
959766ce4d0SZheng Fan 
960766ce4d0SZheng Fan             sal_Int64 nVal = OutputDevice::LogicToLogic( maTxtLeft, (MapUnit)(SFX_MAPUNIT_TWIP), MAP_100TH_MM );
961766ce4d0SZheng Fan             nVal = OutputDevice::LogicToLogic( (long)nVal, MAP_100TH_MM, (MapUnit)m_eLRSpaceUnit );
962766ce4d0SZheng Fan 
963766ce4d0SZheng Fan             aMargin.SetTxtLeft( (const long)nVal );
964766ce4d0SZheng Fan             aMargin.SetRight( (const long)GetCoreValue( *maRightIndent.get(), m_eLRSpaceUnit ) );
965766ce4d0SZheng Fan             aMargin.SetTxtFirstLineOfst( (const short)GetCoreValue( *maFLineIndent.get(), m_eLRSpaceUnit ) );
966766ce4d0SZheng Fan 
967766ce4d0SZheng Fan             GetBindings()->GetDispatcher()->Execute(
968766ce4d0SZheng Fan                 SID_ATTR_PARA_LEFT, SFX_CALLMODE_RECORD, &aMargin, 0L);
969766ce4d0SZheng Fan         }
970766ce4d0SZheng Fan         break;
971766ce4d0SZheng Fan         case SD_HANGING_INDENT:
972766ce4d0SZheng Fan         {
973766ce4d0SZheng Fan             SvxLRSpaceItem aMargin( SID_ATTR_LRSPACE );
974766ce4d0SZheng Fan             aMargin.SetTxtLeft( (const long)GetCoreValue( *maLeftIndent.get(), m_eLRSpaceUnit ) + (const short)GetCoreValue( *maFLineIndent.get(), m_eLRSpaceUnit ) );
975766ce4d0SZheng Fan             aMargin.SetRight( (const long)GetCoreValue( *maRightIndent.get(), m_eLRSpaceUnit ) );
976766ce4d0SZheng Fan             aMargin.SetTxtFirstLineOfst( ((const short)GetCoreValue( *maFLineIndent.get(), m_eLRSpaceUnit ))*(-1) );
977766ce4d0SZheng Fan 
978766ce4d0SZheng Fan             GetBindings()->GetDispatcher()->Execute(
979766ce4d0SZheng Fan                 SID_ATTR_LRSPACE, SFX_CALLMODE_RECORD, &aMargin, 0L);
980766ce4d0SZheng Fan         }
981766ce4d0SZheng Fan         break;
982766ce4d0SZheng Fan     }
983766ce4d0SZheng Fan     return( 0L );
984766ce4d0SZheng Fan }
985766ce4d0SZheng Fan //==================================for Paragraph Line Spacing=====================
986766ce4d0SZheng Fan 
987766ce4d0SZheng Fan IMPL_LINK( ParaPropertyPanel, ClickLineSPDropDownHdl_Impl, ToolBox*, pBox )
988766ce4d0SZheng Fan {
989766ce4d0SZheng Fan 
990766ce4d0SZheng Fan     const sal_uInt16 nId = pBox->GetCurItemId();
991766ce4d0SZheng Fan     OSL_ASSERT(nId == TOOLBOX_ITEM1);
992766ce4d0SZheng Fan     if(nId == TOOLBOX_ITEM1)
993766ce4d0SZheng Fan     {
994766ce4d0SZheng Fan         pBox->SetItemDown( nId, true );
995766ce4d0SZheng Fan         maLineSpacePopup.Rearrange(meLnSpState,m_eMetricUnit,mpLnSPItem,maContext);
996766ce4d0SZheng Fan         maLineSpacePopup.Show(*pBox);
997766ce4d0SZheng Fan 
998766ce4d0SZheng Fan     }
999766ce4d0SZheng Fan     return (0L);
1000766ce4d0SZheng Fan }
1001766ce4d0SZheng Fan 
1002766ce4d0SZheng Fan //==================================for Paragraph Spacing=====================
1003766ce4d0SZheng Fan IMPL_LINK( ParaPropertyPanel, ULSpaceHdl_Impl, SvxRelativeField*, pBox )
1004766ce4d0SZheng Fan {
1005766ce4d0SZheng Fan     SvxULSpaceItem aMargin( SID_ATTR_ULSPACE );
1006766ce4d0SZheng Fan     aMargin.SetUpper( (sal_uInt16)GetCoreValue( *maTopDist.get(), m_eULSpaceUnit ) );
1007766ce4d0SZheng Fan     aMargin.SetLower( (sal_uInt16)GetCoreValue( *maBottomDist.get(), m_eULSpaceUnit ) );
1008766ce4d0SZheng Fan 
1009766ce4d0SZheng Fan     GetBindings()->GetDispatcher()->Execute(
1010766ce4d0SZheng Fan         SID_ATTR_ULSPACE, SFX_CALLMODE_RECORD, &aMargin, 0L);
1011766ce4d0SZheng Fan     return 0L;
1012766ce4d0SZheng Fan }
1013766ce4d0SZheng Fan 
1014766ce4d0SZheng Fan IMPL_LINK(ParaPropertyPanel, ClickUL_IncDec_Hdl_Impl, ToolBox *, pControl)
1015766ce4d0SZheng Fan {
1016766ce4d0SZheng Fan     switch (pControl->GetCurItemId())
1017766ce4d0SZheng Fan         {
1018766ce4d0SZheng Fan         case UL_INCREMENT:
1019766ce4d0SZheng Fan              {
1020766ce4d0SZheng Fan                  SvxULSpaceItem aMargin( SID_ATTR_ULSPACE );
1021766ce4d0SZheng Fan 
1022766ce4d0SZheng Fan                  maUpper += UL_STEP;
1023766ce4d0SZheng Fan                  sal_Int64 nVal = OutputDevice::LogicToLogic( maUpper, (MapUnit)(SFX_MAPUNIT_TWIP), MAP_100TH_MM );
1024766ce4d0SZheng Fan                  nVal = OutputDevice::LogicToLogic( (long)nVal, MAP_100TH_MM, (MapUnit)m_eLRSpaceUnit );
1025766ce4d0SZheng Fan                  aMargin.SetUpper( (const sal_uInt16)nVal );
1026766ce4d0SZheng Fan 
1027766ce4d0SZheng Fan                  maLower += UL_STEP;
1028766ce4d0SZheng Fan                  nVal = OutputDevice::LogicToLogic( maLower, (MapUnit)(SFX_MAPUNIT_TWIP), MAP_100TH_MM );
1029766ce4d0SZheng Fan                  nVal = OutputDevice::LogicToLogic( (long)nVal, MAP_100TH_MM, (MapUnit)m_eLRSpaceUnit );
1030766ce4d0SZheng Fan                  aMargin.SetLower( (const sal_uInt16)nVal );
1031766ce4d0SZheng Fan 
1032766ce4d0SZheng Fan                  GetBindings()->GetDispatcher()->Execute(
1033766ce4d0SZheng Fan                      SID_ATTR_ULSPACE, SFX_CALLMODE_RECORD, &aMargin, 0L);
1034766ce4d0SZheng Fan              }
1035766ce4d0SZheng Fan              break;
1036766ce4d0SZheng Fan         case UL_DECREMENT:
1037766ce4d0SZheng Fan             {
1038766ce4d0SZheng Fan                  SvxULSpaceItem aMargin( SID_ATTR_ULSPACE );
1039766ce4d0SZheng Fan 
1040766ce4d0SZheng Fan                  if( maUpper >= UL_STEP )
1041766ce4d0SZheng Fan                  {
1042766ce4d0SZheng Fan                     maUpper -= UL_STEP;
1043766ce4d0SZheng Fan                     sal_Int64   nVal = OutputDevice::LogicToLogic( maUpper, (MapUnit)(SFX_MAPUNIT_TWIP), MAP_100TH_MM );
1044766ce4d0SZheng Fan                     nVal = OutputDevice::LogicToLogic( (long)nVal, MAP_100TH_MM, (MapUnit)m_eLRSpaceUnit );
1045766ce4d0SZheng Fan                     aMargin.SetUpper( (const sal_uInt16)nVal );
1046766ce4d0SZheng Fan                  }
1047766ce4d0SZheng Fan                  else
1048766ce4d0SZheng Fan                     aMargin.SetUpper( DEFAULT_VALUE );
1049766ce4d0SZheng Fan                  if( maLower >= UL_STEP )
1050766ce4d0SZheng Fan                  {
1051766ce4d0SZheng Fan                     maLower -= UL_STEP;
1052766ce4d0SZheng Fan                     sal_Int64   nVal = OutputDevice::LogicToLogic( maLower, (MapUnit)(SFX_MAPUNIT_TWIP), MAP_100TH_MM );
1053766ce4d0SZheng Fan                     nVal = OutputDevice::LogicToLogic( (long)nVal, MAP_100TH_MM, (MapUnit)m_eLRSpaceUnit );
1054766ce4d0SZheng Fan                     aMargin.SetLower( (const sal_uInt16)nVal );
1055766ce4d0SZheng Fan                  }
1056766ce4d0SZheng Fan                  else
1057766ce4d0SZheng Fan                     aMargin.SetLower( DEFAULT_VALUE );
1058766ce4d0SZheng Fan 
1059766ce4d0SZheng Fan                  GetBindings()->GetDispatcher()->Execute(
1060766ce4d0SZheng Fan                      SID_ATTR_ULSPACE, SFX_CALLMODE_RECORD, &aMargin, 0L);
1061766ce4d0SZheng Fan             }
1062766ce4d0SZheng Fan             break;
1063766ce4d0SZheng Fan         }
1064766ce4d0SZheng Fan     return( 0L );
1065766ce4d0SZheng Fan }
1066766ce4d0SZheng Fan 
1067766ce4d0SZheng Fan //==================================for Paragraph State change=====================
1068766ce4d0SZheng Fan void ParaPropertyPanel::NotifyItemUpdate( sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState )
1069766ce4d0SZheng Fan {
1070766ce4d0SZheng Fan     if( nSID == SID_ATTR_METRIC )
1071766ce4d0SZheng Fan     {
1072766ce4d0SZheng Fan         m_eMetricUnit = GetCurrentUnit(eState,pState);
1073766ce4d0SZheng Fan         if( m_eMetricUnit!=m_last_eMetricUnit )
1074766ce4d0SZheng Fan         {
1075766ce4d0SZheng Fan             SetFieldUnit( *maLeftIndent.get(), m_eMetricUnit );
1076766ce4d0SZheng Fan             SetFieldUnit( *maRightIndent.get(), m_eMetricUnit );
1077766ce4d0SZheng Fan             SetFieldUnit( *maFLineIndent.get(), m_eMetricUnit );
1078766ce4d0SZheng Fan             SetFieldUnit( *maTopDist.get(), m_eMetricUnit );
1079766ce4d0SZheng Fan             SetFieldUnit( *maBottomDist.get(), m_eMetricUnit );
1080766ce4d0SZheng Fan         }
1081766ce4d0SZheng Fan         m_last_eMetricUnit = m_eMetricUnit;
1082766ce4d0SZheng Fan     }
1083766ce4d0SZheng Fan 
1084766ce4d0SZheng Fan     if( nSID == SID_ATTR_PARA_LRSPACE )
1085766ce4d0SZheng Fan         StateChangedIndentImpl( nSID, eState, pState );
1086766ce4d0SZheng Fan 
1087766ce4d0SZheng Fan     if( nSID == SID_ATTR_PARA_LINESPACE )
1088766ce4d0SZheng Fan         StateChangedLnSPImpl( nSID, eState, pState );
1089766ce4d0SZheng Fan 
1090766ce4d0SZheng Fan     if( nSID == SID_ATTR_PARA_ULSPACE)
1091766ce4d0SZheng Fan         StateChangedULImpl( nSID, eState, pState );
1092766ce4d0SZheng Fan 
1093766ce4d0SZheng Fan     if (nSID==SID_ATTR_PARA_ADJUST_LEFT || nSID==SID_ATTR_PARA_ADJUST_CENTER || nSID==SID_ATTR_PARA_ADJUST_RIGHT || nSID==SID_ATTR_PARA_ADJUST_BLOCK)
1094766ce4d0SZheng Fan         StateChangedAlignmentImpl( nSID, eState, pState );
1095766ce4d0SZheng Fan 
1096766ce4d0SZheng Fan     if (nSID==SID_OUTLINE_LEFT || nSID==SID_OUTLINE_RIGHT)
1097766ce4d0SZheng Fan         StateChangeOutLineImpl( nSID, eState, pState );
1098766ce4d0SZheng Fan 
1099766ce4d0SZheng Fan     if (nSID==SID_INC_INDENT || nSID==SID_DEC_INDENT)
1100766ce4d0SZheng Fan         StateChangeIncDecImpl( nSID, eState, pState );
1101766ce4d0SZheng Fan     //Sym3_1093. Add toggle state for numbering and bullet icons
1102766ce4d0SZheng Fan     if (nSID==FN_NUM_NUMBERING_ON || nSID==FN_NUM_BULLET_ON)
1103766ce4d0SZheng Fan         StateChangeBulletNumImpl( nSID, eState, pState );
1104766ce4d0SZheng Fan 
1105766ce4d0SZheng Fan     //Modified for Numbering&Bullets Dialog UX Enh(Story 992) by chengjh,2011.7.5
1106766ce4d0SZheng Fan     //Get the num rule index data of the current selection
1107766ce4d0SZheng Fan     if ( nSID == FN_BUL_NUM_RULE_INDEX ||nSID == FN_NUM_NUM_RULE_INDEX)
1108766ce4d0SZheng Fan         StateChangeBulletNumRuleImpl( nSID, eState, pState );
1109766ce4d0SZheng Fan     //End
1110766ce4d0SZheng Fan 
1111766ce4d0SZheng Fan     if ((nSID == SID_TABLE_VERT_NONE)||(nSID == SID_TABLE_VERT_CENTER)||(nSID == SID_TABLE_VERT_BOTTOM))
1112766ce4d0SZheng Fan     {
1113766ce4d0SZheng Fan         VertStateChanged( nSID, eState, pState);
1114766ce4d0SZheng Fan     }
1115766ce4d0SZheng Fan     else if (nSID == SID_BACKGROUND_COLOR)
1116766ce4d0SZheng Fan     {
1117766ce4d0SZheng Fan         ParaBKGStateChanged(nSID, eState, pState);
1118766ce4d0SZheng Fan     }
1119766ce4d0SZheng Fan }
1120766ce4d0SZheng Fan 
1121766ce4d0SZheng Fan void ParaPropertyPanel::StateChangedAlignmentImpl( sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState )
1122766ce4d0SZheng Fan {
1123766ce4d0SZheng Fan     if( eState >= SFX_ITEM_AVAILABLE )
1124766ce4d0SZheng Fan     {
1125766ce4d0SZheng Fan         const SfxBoolItem* pItem = (const SfxBoolItem*)pState;
1126766ce4d0SZheng Fan         bool IsChecked = (bool)pItem->GetValue();
1127766ce4d0SZheng Fan         switch (nSID)
1128766ce4d0SZheng Fan         {
1129766ce4d0SZheng Fan         case SID_ATTR_PARA_ADJUST_LEFT:
1130766ce4d0SZheng Fan             {
1131766ce4d0SZheng Fan                 if(IsChecked)
1132766ce4d0SZheng Fan                 {
1133766ce4d0SZheng Fan                     maAlignToolBox->SetItemState(BT_SUBSTLEFT,STATE_CHECK);
1134766ce4d0SZheng Fan                     maAlignToolBox->SetItemState(BT_SUBSTCENTER,STATE_NOCHECK);
1135766ce4d0SZheng Fan                     maAlignToolBox->SetItemState(BT_SUBSTRIGHT,STATE_NOCHECK);
1136766ce4d0SZheng Fan                     maAlignToolBox->SetItemState(BT_SUBSTJUSTIFY,STATE_NOCHECK);
1137766ce4d0SZheng Fan                 }
1138766ce4d0SZheng Fan                 else
1139766ce4d0SZheng Fan                     maAlignToolBox->SetItemState(BT_SUBSTLEFT,STATE_NOCHECK);
1140766ce4d0SZheng Fan             }
1141766ce4d0SZheng Fan             break;
1142766ce4d0SZheng Fan         case SID_ATTR_PARA_ADJUST_CENTER:
1143766ce4d0SZheng Fan             {
1144766ce4d0SZheng Fan                 if(IsChecked)
1145766ce4d0SZheng Fan                 {
1146766ce4d0SZheng Fan                     maAlignToolBox->SetItemState(BT_SUBSTCENTER,STATE_CHECK);
1147766ce4d0SZheng Fan                     maAlignToolBox->SetItemState(BT_SUBSTLEFT,STATE_NOCHECK);
1148766ce4d0SZheng Fan                     maAlignToolBox->SetItemState(BT_SUBSTRIGHT,STATE_NOCHECK);
1149766ce4d0SZheng Fan                     maAlignToolBox->SetItemState(BT_SUBSTJUSTIFY,STATE_NOCHECK);
1150766ce4d0SZheng Fan                 }
1151766ce4d0SZheng Fan                 else
1152766ce4d0SZheng Fan                     maAlignToolBox->SetItemState(BT_SUBSTCENTER,STATE_NOCHECK);
1153766ce4d0SZheng Fan             }
1154766ce4d0SZheng Fan             break;
1155766ce4d0SZheng Fan         case SID_ATTR_PARA_ADJUST_RIGHT:
1156766ce4d0SZheng Fan             {
1157766ce4d0SZheng Fan                 if(IsChecked)
1158766ce4d0SZheng Fan                 {
1159766ce4d0SZheng Fan                     maAlignToolBox->SetItemState(BT_SUBSTRIGHT,STATE_CHECK);
1160766ce4d0SZheng Fan                     maAlignToolBox->SetItemState(BT_SUBSTLEFT,STATE_NOCHECK);
1161766ce4d0SZheng Fan                     maAlignToolBox->SetItemState(BT_SUBSTCENTER,STATE_NOCHECK);
1162766ce4d0SZheng Fan                     maAlignToolBox->SetItemState(BT_SUBSTJUSTIFY,STATE_NOCHECK);
1163766ce4d0SZheng Fan                 }
1164766ce4d0SZheng Fan                 else
1165766ce4d0SZheng Fan                     maAlignToolBox->SetItemState(BT_SUBSTRIGHT,STATE_NOCHECK);
1166766ce4d0SZheng Fan             }
1167766ce4d0SZheng Fan             break;
1168766ce4d0SZheng Fan         case SID_ATTR_PARA_ADJUST_BLOCK:
1169766ce4d0SZheng Fan             {
1170766ce4d0SZheng Fan                 if(IsChecked)
1171766ce4d0SZheng Fan                 {
1172766ce4d0SZheng Fan                     maAlignToolBox->SetItemState(BT_SUBSTJUSTIFY,STATE_CHECK);
1173766ce4d0SZheng Fan                     maAlignToolBox->SetItemState(BT_SUBSTLEFT,STATE_NOCHECK);
1174766ce4d0SZheng Fan                     maAlignToolBox->SetItemState(BT_SUBSTCENTER,STATE_NOCHECK);
1175766ce4d0SZheng Fan                     maAlignToolBox->SetItemState(BT_SUBSTRIGHT,STATE_NOCHECK);
1176766ce4d0SZheng Fan                 }
1177766ce4d0SZheng Fan                 else
1178766ce4d0SZheng Fan                     maAlignToolBox->SetItemState(BT_SUBSTJUSTIFY,STATE_NOCHECK);
1179766ce4d0SZheng Fan             }
1180766ce4d0SZheng Fan             break;
1181766ce4d0SZheng Fan         }
1182766ce4d0SZheng Fan     }
1183766ce4d0SZheng Fan     else if( eState == SFX_ITEM_DISABLED )
1184766ce4d0SZheng Fan     {
1185766ce4d0SZheng Fan     }
1186766ce4d0SZheng Fan     else if ( eState == SFX_ITEM_DONTCARE )
1187766ce4d0SZheng Fan     {
1188766ce4d0SZheng Fan         switch (nSID)
1189766ce4d0SZheng Fan         {
1190766ce4d0SZheng Fan         case SID_ATTR_PARA_ADJUST_LEFT:
1191766ce4d0SZheng Fan             maAlignToolBox->SetItemState(BT_SUBSTLEFT,STATE_NOCHECK);
1192766ce4d0SZheng Fan             break;
1193766ce4d0SZheng Fan         case SID_ATTR_PARA_ADJUST_CENTER:
1194766ce4d0SZheng Fan             maAlignToolBox->SetItemState(BT_SUBSTCENTER,STATE_NOCHECK);
1195766ce4d0SZheng Fan             break;
1196766ce4d0SZheng Fan         case SID_ATTR_PARA_ADJUST_RIGHT:
1197766ce4d0SZheng Fan             maAlignToolBox->SetItemState(BT_SUBSTRIGHT,STATE_NOCHECK);
1198766ce4d0SZheng Fan             break;
1199766ce4d0SZheng Fan         case SID_ATTR_PARA_ADJUST_BLOCK:
1200766ce4d0SZheng Fan             maAlignToolBox->SetItemState(BT_SUBSTJUSTIFY,STATE_NOCHECK);
1201766ce4d0SZheng Fan             break;
1202766ce4d0SZheng Fan         }
1203766ce4d0SZheng Fan     }
1204766ce4d0SZheng Fan }
1205766ce4d0SZheng Fan 
1206766ce4d0SZheng Fan void ParaPropertyPanel::StateChangedIndentImpl( sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState )
1207766ce4d0SZheng Fan {
1208766ce4d0SZheng Fan     switch (maContext.GetCombinedContext())
1209766ce4d0SZheng Fan     {
1210766ce4d0SZheng Fan 
1211766ce4d0SZheng Fan         case CombinedEnumContext(Application_Writer, Context_DrawText):
1212766ce4d0SZheng Fan         case CombinedEnumContext(Application_Calc, Context_DrawText):
1213766ce4d0SZheng Fan         case CombinedEnumContext(Application_Writer, Context_Annotation):
1214766ce4d0SZheng Fan         {
1215766ce4d0SZheng Fan             maLeftIndent->SetMin( DEFAULT_VALUE );
1216766ce4d0SZheng Fan             maRightIndent->SetMin( DEFAULT_VALUE );
1217766ce4d0SZheng Fan             maFLineIndent->SetMin( DEFAULT_VALUE );
1218766ce4d0SZheng Fan             maTbxIndent_IncDec->Show();
1219766ce4d0SZheng Fan             maTbxProDemote->Hide();
1220766ce4d0SZheng Fan         }
1221766ce4d0SZheng Fan         break;
1222766ce4d0SZheng Fan         case CombinedEnumContext(Application_Draw, Context_DrawText):
1223766ce4d0SZheng Fan             case CombinedEnumContext(Application_Impress, Context_DrawText):
1224766ce4d0SZheng Fan         case CombinedEnumContext(Application_Draw, Context_Draw):
1225766ce4d0SZheng Fan         case CombinedEnumContext(Application_Draw, Context_TextObject):
1226766ce4d0SZheng Fan         case CombinedEnumContext(Application_Draw, Context_Graphic):
1227766ce4d0SZheng Fan         case CombinedEnumContext(Application_Impress, Context_Draw):
1228766ce4d0SZheng Fan         case CombinedEnumContext(Application_Impress, Context_TextObject):
1229766ce4d0SZheng Fan         case CombinedEnumContext(Application_Impress, Context_Graphic):
1230766ce4d0SZheng Fan         case CombinedEnumContext(Application_Impress, Context_Table):
1231766ce4d0SZheng Fan             case CombinedEnumContext(Application_Draw, Context_Table):
1232766ce4d0SZheng Fan         {
1233766ce4d0SZheng Fan             maLeftIndent->SetMin( DEFAULT_VALUE );
1234766ce4d0SZheng Fan             maRightIndent->SetMin( DEFAULT_VALUE );
1235766ce4d0SZheng Fan             maFLineIndent->SetMin( DEFAULT_VALUE );
1236766ce4d0SZheng Fan             maTbxIndent_IncDec->Hide();
1237766ce4d0SZheng Fan             maTbxProDemote->Show();
1238766ce4d0SZheng Fan         }
1239766ce4d0SZheng Fan         break;
1240766ce4d0SZheng Fan         case CombinedEnumContext(Application_Writer, Context_Default):
1241766ce4d0SZheng Fan         case CombinedEnumContext(Application_Writer, Context_Text):
1242766ce4d0SZheng Fan         case CombinedEnumContext(Application_Writer, Context_Table):
1243766ce4d0SZheng Fan         {
1244766ce4d0SZheng Fan             maLeftIndent->SetMin( NEGA_MAXVALUE, FUNIT_100TH_MM );
1245766ce4d0SZheng Fan             maRightIndent->SetMin( NEGA_MAXVALUE, FUNIT_100TH_MM );
1246766ce4d0SZheng Fan             maFLineIndent->SetMin( NEGA_MAXVALUE, FUNIT_100TH_MM );
1247766ce4d0SZheng Fan             maTbxIndent_IncDec->Show();
1248766ce4d0SZheng Fan             maTbxProDemote->Hide();
1249766ce4d0SZheng Fan         }
1250766ce4d0SZheng Fan         break;
1251766ce4d0SZheng Fan     }
1252766ce4d0SZheng Fan 
1253766ce4d0SZheng Fan     if( pState && eState >= SFX_ITEM_AVAILABLE )
1254766ce4d0SZheng Fan     {
1255766ce4d0SZheng Fan         SvxLRSpaceItem* pSpace = ( SvxLRSpaceItem*)pState;
1256766ce4d0SZheng Fan         maTxtLeft = pSpace->GetTxtLeft();
1257766ce4d0SZheng Fan         maTxtLeft = OutputDevice::LogicToLogic( maTxtLeft, (MapUnit)m_eLRSpaceUnit, MAP_100TH_MM );
1258766ce4d0SZheng Fan         maTxtLeft = OutputDevice::LogicToLogic( maTxtLeft, MAP_100TH_MM, (MapUnit)(SFX_MAPUNIT_TWIP) );
1259766ce4d0SZheng Fan 
1260766ce4d0SZheng Fan         long aTxtRight = pSpace->GetRight();
1261766ce4d0SZheng Fan         aTxtRight = OutputDevice::LogicToLogic( aTxtRight, (MapUnit)m_eLRSpaceUnit, MAP_100TH_MM );
1262766ce4d0SZheng Fan         aTxtRight = OutputDevice::LogicToLogic( aTxtRight, MAP_100TH_MM, (MapUnit)(SFX_MAPUNIT_TWIP) );
1263766ce4d0SZheng Fan 
1264766ce4d0SZheng Fan         long aTxtFirstLineOfst = pSpace->GetTxtFirstLineOfst();
1265766ce4d0SZheng Fan         aTxtFirstLineOfst = OutputDevice::LogicToLogic( aTxtFirstLineOfst, (MapUnit)m_eLRSpaceUnit, MAP_100TH_MM );
1266766ce4d0SZheng Fan         aTxtFirstLineOfst = OutputDevice::LogicToLogic( aTxtFirstLineOfst, MAP_100TH_MM, (MapUnit)(SFX_MAPUNIT_TWIP) );
1267766ce4d0SZheng Fan 
1268766ce4d0SZheng Fan         long nVal = OutputDevice::LogicToLogic( maTxtLeft, (MapUnit)(SFX_MAPUNIT_TWIP), MAP_100TH_MM );
1269766ce4d0SZheng Fan         nVal = (long)maLeftIndent->Normalize( (long)nVal );
1270766ce4d0SZheng Fan         maLeftIndent->SetValue( nVal, FUNIT_100TH_MM );
1271766ce4d0SZheng Fan 
1272766ce4d0SZheng Fan         if(maContext.GetCombinedContext() != CombinedEnumContext(Application_Writer, Context_Text) &&
1273766ce4d0SZheng Fan             maContext.GetCombinedContext() != CombinedEnumContext(Application_Writer, Context_Default) &&
1274766ce4d0SZheng Fan             maContext.GetCombinedContext() != CombinedEnumContext(Application_Writer, Context_Table))
1275766ce4d0SZheng Fan         {
1276766ce4d0SZheng Fan             maFLineIndent->SetMin( nVal*(-1), FUNIT_100TH_MM );
1277766ce4d0SZheng Fan         }
1278766ce4d0SZheng Fan 
1279766ce4d0SZheng Fan         long nrVal = OutputDevice::LogicToLogic( aTxtRight, (MapUnit)(SFX_MAPUNIT_TWIP), MAP_100TH_MM );
1280766ce4d0SZheng Fan         nrVal = (long)maRightIndent->Normalize( (long)nrVal );
1281766ce4d0SZheng Fan         maRightIndent->SetValue( nrVal, FUNIT_100TH_MM );
1282766ce4d0SZheng Fan 
1283766ce4d0SZheng Fan         long nfVal = OutputDevice::LogicToLogic( aTxtFirstLineOfst, (MapUnit)(SFX_MAPUNIT_TWIP), MAP_100TH_MM );
1284766ce4d0SZheng Fan         nfVal = (long)maFLineIndent->Normalize( (long)nfVal );
1285766ce4d0SZheng Fan         maFLineIndent->SetValue( nfVal, FUNIT_100TH_MM );
1286766ce4d0SZheng Fan 
1287766ce4d0SZheng Fan         switch (maContext.GetCombinedContext())
1288766ce4d0SZheng Fan         {
1289766ce4d0SZheng Fan             case CombinedEnumContext(Application_Writer, Context_DrawText):
1290766ce4d0SZheng Fan             case CombinedEnumContext(Application_Writer, Context_Text):
1291766ce4d0SZheng Fan             case CombinedEnumContext(Application_Writer, Context_Default):
1292766ce4d0SZheng Fan             case CombinedEnumContext(Application_Writer, Context_Table):
1293766ce4d0SZheng Fan             case CombinedEnumContext(Application_Writer, Context_Annotation):
1294766ce4d0SZheng Fan             {
1295766ce4d0SZheng Fan                 maLeftIndent->SetMax( MAX_SW - nrVal, FUNIT_100TH_MM );
1296766ce4d0SZheng Fan                 maRightIndent->SetMax( MAX_SW - nVal, FUNIT_100TH_MM );
1297766ce4d0SZheng Fan                 maFLineIndent->SetMax( MAX_SW - nVal - nrVal, FUNIT_100TH_MM );
1298766ce4d0SZheng Fan             }
1299766ce4d0SZheng Fan             break;
1300766ce4d0SZheng Fan             case CombinedEnumContext(Application_Draw, Context_DrawText):
1301766ce4d0SZheng Fan             case CombinedEnumContext(Application_Draw, Context_Draw):
1302766ce4d0SZheng Fan                 case CombinedEnumContext(Application_Draw, Context_Table):
1303766ce4d0SZheng Fan             case CombinedEnumContext(Application_Draw, Context_TextObject):
1304766ce4d0SZheng Fan             case CombinedEnumContext(Application_Draw, Context_Graphic):
1305766ce4d0SZheng Fan             case CombinedEnumContext(Application_Impress, Context_TextObject):
1306766ce4d0SZheng Fan                 case CombinedEnumContext(Application_Impress, Context_DrawText):
1307766ce4d0SZheng Fan             case CombinedEnumContext(Application_Impress, Context_Table):
1308766ce4d0SZheng Fan             case CombinedEnumContext(Application_Impress, Context_Draw):
1309766ce4d0SZheng Fan             case CombinedEnumContext(Application_Impress, Context_Graphic):
1310766ce4d0SZheng Fan             {
1311766ce4d0SZheng Fan                 maLeftIndent->SetMax( MAX_SC_SD - nrVal, FUNIT_100TH_MM );
1312766ce4d0SZheng Fan                 maRightIndent->SetMax( MAX_SC_SD - nVal, FUNIT_100TH_MM );
1313766ce4d0SZheng Fan                 maFLineIndent->SetMax( MAX_SC_SD - nVal - nrVal, FUNIT_100TH_MM );
1314766ce4d0SZheng Fan             }
1315766ce4d0SZheng Fan         }
1316766ce4d0SZheng Fan 
1317766ce4d0SZheng Fan         maTbxIndent_IncDec->Enable();
1318766ce4d0SZheng Fan         maTbxIndent_IncDec->EnableItem(ID_HANGING_INDENT, sal_True);
1319766ce4d0SZheng Fan         if(maContext.GetCombinedContext() != CombinedEnumContext(Application_Writer, Context_Text)
1320766ce4d0SZheng Fan             && maContext.GetCombinedContext() != CombinedEnumContext(Application_Writer, Context_Default)
1321766ce4d0SZheng Fan             && maContext.GetCombinedContext() != CombinedEnumContext(Application_Writer, Context_Table))
1322766ce4d0SZheng Fan         {
1323766ce4d0SZheng Fan             maTbxIndent_IncDec->EnableItem(BT_TBX_INDENT_INC, sal_True);
1324766ce4d0SZheng Fan             maTbxIndent_IncDec->EnableItem(BT_TBX_INDENT_DEC, sal_True);
1325766ce4d0SZheng Fan         }
1326766ce4d0SZheng Fan 
1327*1ff378efSZheng Fan //      maTbxProDemote->Enable();
1328*1ff378efSZheng Fan //      if( !mbOutLineRight && !mbOutLineLeft )
1329*1ff378efSZheng Fan //          maTbxProDemote->EnableItem(SD_HANGING_INDENT, sal_True);
1330766ce4d0SZheng Fan         maTbxProDemote->EnableItem(SD_HANGING_INDENT, sal_True);
1331766ce4d0SZheng Fan     }
1332766ce4d0SZheng Fan     else if( eState == SFX_ITEM_DISABLED )
1333766ce4d0SZheng Fan     {
1334766ce4d0SZheng Fan         maLeftIndent-> Disable();
1335766ce4d0SZheng Fan         maRightIndent->Disable();
1336766ce4d0SZheng Fan         maFLineIndent->Disable();
1337766ce4d0SZheng Fan         maTbxIndent_IncDec->Disable();
1338766ce4d0SZheng Fan         if( maContext.GetCombinedContext() != CombinedEnumContext(Application_Writer, Context_Text)  &&
1339766ce4d0SZheng Fan             maContext.GetCombinedContext() != CombinedEnumContext(Application_Writer, Context_Default) &&
1340766ce4d0SZheng Fan             maContext.GetCombinedContext() !=  CombinedEnumContext(Application_Writer, Context_Table) )
1341766ce4d0SZheng Fan             maTbxIndent_IncDec->Disable();
1342766ce4d0SZheng Fan         else
1343766ce4d0SZheng Fan             maTbxIndent_IncDec->EnableItem(ID_HANGING_INDENT, sal_False);
1344766ce4d0SZheng Fan 
1345*1ff378efSZheng Fan //      maTbxProDemote->Disable();
1346766ce4d0SZheng Fan         maTbxProDemote->EnableItem(SD_HANGING_INDENT, sal_False);
1347766ce4d0SZheng Fan     }
1348766ce4d0SZheng Fan     else
1349766ce4d0SZheng Fan     {
1350766ce4d0SZheng Fan         maLeftIndent->SetEmptyFieldValue();
1351766ce4d0SZheng Fan         maRightIndent->SetEmptyFieldValue();
1352766ce4d0SZheng Fan         maFLineIndent->SetEmptyFieldValue();
1353766ce4d0SZheng Fan         if( maContext.GetCombinedContext() != CombinedEnumContext(Application_Writer, Context_Text)  &&
1354766ce4d0SZheng Fan             maContext.GetCombinedContext() != CombinedEnumContext(Application_Writer, Context_Default) &&
1355766ce4d0SZheng Fan             maContext.GetCombinedContext() !=  CombinedEnumContext(Application_Writer, Context_Table) )
1356766ce4d0SZheng Fan             maTbxIndent_IncDec->Disable();
1357766ce4d0SZheng Fan         else
1358766ce4d0SZheng Fan             maTbxIndent_IncDec->EnableItem(ID_HANGING_INDENT, sal_False);
1359*1ff378efSZheng Fan //      maTbxProDemote->Disable();
1360766ce4d0SZheng Fan         maTbxProDemote->EnableItem(SD_HANGING_INDENT, sal_False);
1361766ce4d0SZheng Fan     }
1362766ce4d0SZheng Fan }
1363766ce4d0SZheng Fan 
1364766ce4d0SZheng Fan void ParaPropertyPanel::StateChangedLnSPImpl( sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState )
1365766ce4d0SZheng Fan {
1366766ce4d0SZheng Fan     meLnSpState = eState;
1367766ce4d0SZheng Fan 
1368766ce4d0SZheng Fan     if( pState && eState >= SFX_ITEM_AVAILABLE )
1369766ce4d0SZheng Fan     {
1370766ce4d0SZheng Fan         if(mpLnSPItem)
1371766ce4d0SZheng Fan             delete mpLnSPItem;
1372766ce4d0SZheng Fan         mpLnSPItem = ( SvxLineSpacingItem *)pState->Clone();
1373766ce4d0SZheng Fan     }
1374766ce4d0SZheng Fan }
1375766ce4d0SZheng Fan 
1376766ce4d0SZheng Fan void ParaPropertyPanel::StateChangedULImpl( sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState )
1377766ce4d0SZheng Fan {
1378766ce4d0SZheng Fan     maTopDist->SetMax( maTopDist->Normalize( MAX_DURCH ), MapToFieldUnit(m_eULSpaceUnit) );
1379766ce4d0SZheng Fan     maBottomDist->SetMax( maBottomDist->Normalize( MAX_DURCH ), MapToFieldUnit(m_eULSpaceUnit) );
1380766ce4d0SZheng Fan 
1381766ce4d0SZheng Fan     if( pState && eState >= SFX_ITEM_AVAILABLE )
1382766ce4d0SZheng Fan     {
1383766ce4d0SZheng Fan         SvxULSpaceItem* pOldItem = (SvxULSpaceItem*)pState;
1384766ce4d0SZheng Fan 
1385766ce4d0SZheng Fan         maUpper = pOldItem->GetUpper();
1386766ce4d0SZheng Fan         maUpper = OutputDevice::LogicToLogic( maUpper, (MapUnit)m_eULSpaceUnit, MAP_100TH_MM );
1387766ce4d0SZheng Fan         maUpper = OutputDevice::LogicToLogic( maUpper, MAP_100TH_MM, (MapUnit)(SFX_MAPUNIT_TWIP) );
1388766ce4d0SZheng Fan 
1389766ce4d0SZheng Fan         maLower = pOldItem->GetLower();
1390766ce4d0SZheng Fan         maLower = OutputDevice::LogicToLogic( maLower, (MapUnit)m_eULSpaceUnit, MAP_100TH_MM );
1391766ce4d0SZheng Fan         maLower = OutputDevice::LogicToLogic( maLower, MAP_100TH_MM, (MapUnit)(SFX_MAPUNIT_TWIP) );
1392766ce4d0SZheng Fan 
1393766ce4d0SZheng Fan         sal_Int64 nVal = OutputDevice::LogicToLogic( maUpper, (MapUnit)(SFX_MAPUNIT_TWIP), MAP_100TH_MM );
1394766ce4d0SZheng Fan         nVal = maTopDist->Normalize( nVal );
1395766ce4d0SZheng Fan         maTopDist->SetValue( nVal, FUNIT_100TH_MM );
1396766ce4d0SZheng Fan 
1397766ce4d0SZheng Fan         nVal = OutputDevice::LogicToLogic( maLower, (MapUnit)(SFX_MAPUNIT_TWIP), MAP_100TH_MM );
1398766ce4d0SZheng Fan         nVal = maBottomDist->Normalize( nVal );
1399766ce4d0SZheng Fan         maBottomDist->SetValue( nVal, FUNIT_100TH_MM );
1400766ce4d0SZheng Fan         maTbxUL_IncDec->Enable();
1401766ce4d0SZheng Fan     }
1402766ce4d0SZheng Fan     else if(nSID == SID_ATTR_ULSPACE && eState == SFX_ITEM_DISABLED )
1403766ce4d0SZheng Fan     {
1404766ce4d0SZheng Fan         maTopDist->Disable();
1405766ce4d0SZheng Fan         maBottomDist->Disable();
1406766ce4d0SZheng Fan         maTbxUL_IncDec->Disable();
1407766ce4d0SZheng Fan     }
1408766ce4d0SZheng Fan     else if (nSID == SID_ATTR_ULSPACE)
1409766ce4d0SZheng Fan     {
1410766ce4d0SZheng Fan         maTopDist->SetEmptyFieldValue();
1411766ce4d0SZheng Fan         maBottomDist->SetEmptyFieldValue();
1412766ce4d0SZheng Fan         maTbxUL_IncDec->Disable();
1413766ce4d0SZheng Fan     }
1414766ce4d0SZheng Fan }
1415766ce4d0SZheng Fan 
1416766ce4d0SZheng Fan void ParaPropertyPanel::StateChangeOutLineImpl( sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState )
1417766ce4d0SZheng Fan {
1418766ce4d0SZheng Fan     if (nSID==SID_OUTLINE_LEFT)
1419766ce4d0SZheng Fan     {
1420766ce4d0SZheng Fan         if( pState && eState == SFX_ITEM_UNKNOWN )
1421766ce4d0SZheng Fan             mbOutLineLeft = 1;
1422766ce4d0SZheng Fan         else
1423766ce4d0SZheng Fan             mbOutLineLeft = 0;
1424766ce4d0SZheng Fan     }
1425766ce4d0SZheng Fan     if (nSID==SID_OUTLINE_RIGHT)
1426766ce4d0SZheng Fan     {
1427766ce4d0SZheng Fan         if( pState && eState == SFX_ITEM_UNKNOWN )
1428766ce4d0SZheng Fan             mbOutLineRight = 1;
1429766ce4d0SZheng Fan         else
1430766ce4d0SZheng Fan             mbOutLineRight = 0;
1431766ce4d0SZheng Fan     }
1432766ce4d0SZheng Fan     if(mbOutLineLeft)
1433766ce4d0SZheng Fan         maTbxProDemote->EnableItem(BT_TBX_INDENT_DEMOTE, sal_True);
1434766ce4d0SZheng Fan     else
1435766ce4d0SZheng Fan         maTbxProDemote->EnableItem(BT_TBX_INDENT_DEMOTE, sal_False);
1436766ce4d0SZheng Fan 
1437766ce4d0SZheng Fan     if(mbOutLineRight)
1438766ce4d0SZheng Fan         maTbxProDemote->EnableItem(BT_TBX_INDENT_PROMOTE, sal_True);
1439766ce4d0SZheng Fan     else
1440766ce4d0SZheng Fan         maTbxProDemote->EnableItem(BT_TBX_INDENT_PROMOTE, sal_False);
1441766ce4d0SZheng Fan 
1442*1ff378efSZheng Fan //  if( !mbOutLineRight && !mbOutLineLeft )
1443*1ff378efSZheng Fan //  {
1444*1ff378efSZheng Fan //      maTbxProDemote->EnableItem(BT_TBX_INDENT_PROMOTE, sal_True);
1445*1ff378efSZheng Fan //      maTbxProDemote->EnableItem(BT_TBX_INDENT_DEMOTE, sal_True);
1446*1ff378efSZheng Fan //      maTbxProDemote->EnableItem(SD_HANGING_INDENT, sal_True);
1447*1ff378efSZheng Fan //  }
1448*1ff378efSZheng Fan //  else
1449*1ff378efSZheng Fan //      maTbxProDemote->EnableItem(SD_HANGING_INDENT, sal_False);
1450766ce4d0SZheng Fan }
1451766ce4d0SZheng Fan 
1452766ce4d0SZheng Fan void ParaPropertyPanel::StateChangeIncDecImpl( sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState )
1453766ce4d0SZheng Fan {
1454766ce4d0SZheng Fan     if (nSID==SID_INC_INDENT)
1455766ce4d0SZheng Fan     {
1456766ce4d0SZheng Fan         if( pState && eState == SFX_ITEM_UNKNOWN )
1457766ce4d0SZheng Fan             maTbxIndent_IncDec->EnableItem(BT_TBX_INDENT_INC, sal_True);
1458766ce4d0SZheng Fan         else
1459766ce4d0SZheng Fan             if( maContext.GetCombinedContext() != CombinedEnumContext(Application_Writer, Context_Text)  &&
1460766ce4d0SZheng Fan                 maContext.GetCombinedContext() != CombinedEnumContext(Application_Writer, Context_Default) &&
1461766ce4d0SZheng Fan             maContext.GetCombinedContext() !=  CombinedEnumContext(Application_Writer, Context_Table) )
1462766ce4d0SZheng Fan                 maTbxIndent_IncDec->EnableItem(BT_TBX_INDENT_INC, sal_False);
1463766ce4d0SZheng Fan     }
1464766ce4d0SZheng Fan     if (nSID==SID_DEC_INDENT)
1465766ce4d0SZheng Fan     {
1466766ce4d0SZheng Fan         if( pState && eState == SFX_ITEM_UNKNOWN )
1467766ce4d0SZheng Fan             maTbxIndent_IncDec->EnableItem(BT_TBX_INDENT_DEC, sal_True);
1468766ce4d0SZheng Fan         else
1469766ce4d0SZheng Fan             if( maContext.GetCombinedContext() != CombinedEnumContext(Application_Writer, Context_Text)  &&
1470766ce4d0SZheng Fan                 maContext.GetCombinedContext() != CombinedEnumContext(Application_Writer, Context_Default) &&
1471766ce4d0SZheng Fan             maContext.GetCombinedContext() !=  CombinedEnumContext(Application_Writer, Context_Table) )
1472766ce4d0SZheng Fan                 maTbxIndent_IncDec->EnableItem(BT_TBX_INDENT_DEC, sal_False);
1473766ce4d0SZheng Fan     }
1474766ce4d0SZheng Fan }
1475766ce4d0SZheng Fan //Sym3_1093. Add toggle state for numbering and bullet icons
1476766ce4d0SZheng Fan void ParaPropertyPanel::StateChangeBulletNumImpl( sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState )
1477766ce4d0SZheng Fan {
1478766ce4d0SZheng Fan     if (nSID==FN_NUM_NUMBERING_ON)
1479766ce4d0SZheng Fan     {
1480766ce4d0SZheng Fan         if ( (eState >= SFX_ITEM_DEFAULT) && (pState->ISA(SfxBoolItem)))
1481766ce4d0SZheng Fan         {
1482766ce4d0SZheng Fan             const SfxBoolItem* pItem= (const SfxBoolItem*)pState;
1483766ce4d0SZheng Fan             sal_Bool aBool = (sal_Bool)pItem->GetValue();
1484766ce4d0SZheng Fan             if (aBool) {
1485766ce4d0SZheng Fan                 maTBxNumBullet->SetItemState(IID_NUMBER,    STATE_CHECK);
1486766ce4d0SZheng Fan             } else {
1487766ce4d0SZheng Fan                 maTBxNumBullet->SetItemState(IID_NUMBER,    STATE_NOCHECK);
1488766ce4d0SZheng Fan             }
1489766ce4d0SZheng Fan         }
1490766ce4d0SZheng Fan     }
1491766ce4d0SZheng Fan     if (nSID==FN_NUM_BULLET_ON)
1492766ce4d0SZheng Fan     {
1493766ce4d0SZheng Fan         if ( (eState >= SFX_ITEM_DEFAULT) && (pState->ISA(SfxBoolItem)))
1494766ce4d0SZheng Fan         {
1495766ce4d0SZheng Fan             const SfxBoolItem* pItem= (const SfxBoolItem*)pState;
1496766ce4d0SZheng Fan             sal_Bool aBool = (sal_Bool)pItem->GetValue();
1497766ce4d0SZheng Fan             if (aBool) {
1498766ce4d0SZheng Fan                 maTBxNumBullet->SetItemState(IID_BULLET,    STATE_CHECK);
1499766ce4d0SZheng Fan             } else {
1500766ce4d0SZheng Fan                 maTBxNumBullet->SetItemState(IID_BULLET,    STATE_NOCHECK);
1501766ce4d0SZheng Fan             }
1502766ce4d0SZheng Fan         }
1503766ce4d0SZheng Fan     }
1504766ce4d0SZheng Fan }
1505766ce4d0SZheng Fan //Modified for Numbering&Bullets Dialog UX Enh(Story 992) by chengjh,2011.7.5
1506766ce4d0SZheng Fan //Handing the transferred the num rule index data of the current selection
1507766ce4d0SZheng Fan void ParaPropertyPanel::StateChangeBulletNumRuleImpl( sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState )
1508766ce4d0SZheng Fan {
1509766ce4d0SZheng Fan 
1510766ce4d0SZheng Fan     const SfxUInt16Item* pIt = (const SfxUInt16Item*)pState;
1511766ce4d0SZheng Fan     sal_uInt16 nValue = (sal_uInt16)0xFFFF;
1512766ce4d0SZheng Fan     if ( pIt )
1513766ce4d0SZheng Fan         nValue = pIt->GetValue();
1514766ce4d0SZheng Fan 
1515766ce4d0SZheng Fan     if ( nSID == FN_BUL_NUM_RULE_INDEX )
1516766ce4d0SZheng Fan     {
1517766ce4d0SZheng Fan         nBulletTypeIndex = nValue;
1518766ce4d0SZheng Fan     }else if ( nSID == FN_NUM_NUM_RULE_INDEX )
1519766ce4d0SZheng Fan     {
1520766ce4d0SZheng Fan         nNumTypeIndex = nValue;
1521766ce4d0SZheng Fan     }
1522766ce4d0SZheng Fan }
1523766ce4d0SZheng Fan //End
1524766ce4d0SZheng Fan FieldUnit ParaPropertyPanel::GetCurrentUnit( SfxItemState eState, const SfxPoolItem* pState )
1525766ce4d0SZheng Fan {
1526766ce4d0SZheng Fan     FieldUnit eUnit = FUNIT_NONE;
1527766ce4d0SZheng Fan 
1528766ce4d0SZheng Fan     if ( pState && eState >= SFX_ITEM_DEFAULT )
1529766ce4d0SZheng Fan         eUnit = (FieldUnit)( (const SfxUInt16Item*)pState )->GetValue();
1530766ce4d0SZheng Fan     else
1531766ce4d0SZheng Fan     {
1532766ce4d0SZheng Fan         SfxViewFrame* pFrame = SfxViewFrame::Current();
1533766ce4d0SZheng Fan         SfxObjectShell* pSh = NULL;
1534766ce4d0SZheng Fan         if ( pFrame )
1535766ce4d0SZheng Fan             pSh = pFrame->GetObjectShell();
1536766ce4d0SZheng Fan         if ( pSh )  //the object shell is not always available during reload
1537766ce4d0SZheng Fan         {
1538766ce4d0SZheng Fan             SfxModule* pModule = pSh->GetModule();
1539766ce4d0SZheng Fan             if ( pModule )
1540766ce4d0SZheng Fan             {
1541766ce4d0SZheng Fan                 const SfxPoolItem* pItem = pModule->GetItem( SID_ATTR_METRIC );
1542766ce4d0SZheng Fan                 if ( pItem )
1543766ce4d0SZheng Fan                     eUnit = (FieldUnit)( (SfxUInt16Item*)pItem )->GetValue();
1544766ce4d0SZheng Fan             }
1545766ce4d0SZheng Fan             else
1546766ce4d0SZheng Fan             {
1547766ce4d0SZheng Fan                 DBG_ERRORFILE( "GetModuleFieldUnit(): no module found" );
1548766ce4d0SZheng Fan             }
1549766ce4d0SZheng Fan         }
1550766ce4d0SZheng Fan     }
1551766ce4d0SZheng Fan 
1552766ce4d0SZheng Fan     return eUnit;
1553766ce4d0SZheng Fan }
1554766ce4d0SZheng Fan //new FixedText(this, SVX_RES(FT_COLOR))
1555766ce4d0SZheng Fan 
1556766ce4d0SZheng Fan PopupControl* ParaPropertyPanel::CreateLineSpacingControl (PopupContainer* pParent)
1557766ce4d0SZheng Fan {
1558766ce4d0SZheng Fan     return new ParaLineSpacingControl(pParent, *this);
1559766ce4d0SZheng Fan }
1560766ce4d0SZheng Fan 
1561766ce4d0SZheng Fan PopupControl* ParaPropertyPanel::CreateBulletsPopupControl (PopupContainer* pParent)
1562766ce4d0SZheng Fan {
1563766ce4d0SZheng Fan     return new ParaBulletsControl(pParent, *this);
1564766ce4d0SZheng Fan }
1565766ce4d0SZheng Fan 
1566766ce4d0SZheng Fan PopupControl* ParaPropertyPanel::CreateNumberingPopupControl (PopupContainer* pParent)
1567766ce4d0SZheng Fan {
1568766ce4d0SZheng Fan     return new ParaNumberingControl(pParent, *this);
1569766ce4d0SZheng Fan }
1570766ce4d0SZheng Fan 
1571766ce4d0SZheng Fan PopupControl* ParaPropertyPanel::CreateBGColorPopupControl (PopupContainer* pParent)
1572766ce4d0SZheng Fan {
1573766ce4d0SZheng Fan     return new ColorControl(
1574766ce4d0SZheng Fan         pParent,
1575766ce4d0SZheng Fan         mpBindings,
1576766ce4d0SZheng Fan         SVX_RES(RID_POPUPPANEL_TEXTPAGE_FONT_COLOR),
1577766ce4d0SZheng Fan         SVX_RES(VS_FONT_COLOR),
1578766ce4d0SZheng Fan         ::boost::bind(&ParaPropertyPanel::GetBGColor, this),
1579766ce4d0SZheng Fan         ::boost::bind(&ParaPropertyPanel::SetBGColor, this, _1,_2),
1580766ce4d0SZheng Fan         pParent,
1581766ce4d0SZheng Fan         0);
1582766ce4d0SZheng Fan }
1583766ce4d0SZheng Fan 
1584766ce4d0SZheng Fan 
1585766ce4d0SZheng Fan ParaPropertyPanel::ParaPropertyPanel(Window* pParent,
1586766ce4d0SZheng Fan     const cssu::Reference<css::frame::XFrame>& rxFrame,
1587766ce4d0SZheng Fan     SfxBindings* pBindings)
1588766ce4d0SZheng Fan :   Control(pParent, SVX_RES(RID_SIDEBAR_PARA_PANEL))
1589766ce4d0SZheng Fan //, mnContextId         (PROPERTY_CONTEXT_NOT_SUPPORT)
1590766ce4d0SZheng Fan //Alignment
1591766ce4d0SZheng Fan ,maAlignToolBoxBackground(ControlFactory::CreateToolBoxBackground(this))
1592766ce4d0SZheng Fan , maAlignToolBox          (ControlFactory::CreateToolBox(maAlignToolBoxBackground.get(),SVX_RES(TBX_HORIZONTALALIGNMENT)))
1593766ce4d0SZheng Fan ,maTBxVertAlignBackground(ControlFactory::CreateToolBoxBackground(this))
1594766ce4d0SZheng Fan , maTBxVertAlign    (ControlFactory::CreateToolBox(maTBxVertAlignBackground.get(),SVX_RES(TBX_VERT_ALIGN)))
1595766ce4d0SZheng Fan , maLeftPara              (SVX_RES(IMG_LEFT_PARA))
1596766ce4d0SZheng Fan , maCentPara              (SVX_RES(IMG_CENTER_PARA))
1597766ce4d0SZheng Fan , maRightPara             (SVX_RES(IMG_RIGHT_PARA))
1598766ce4d0SZheng Fan , maJusPara               (SVX_RES(IMG_JUSTIFY_PARA))
1599766ce4d0SZheng Fan , maVertImageList         (SVX_RES(IL_VERT_ALIGN))
1600766ce4d0SZheng Fan , maVertImageListH        (SVX_RES(IL_VERT_ALIGN))
1601766ce4d0SZheng Fan //Num&Backcolor
1602766ce4d0SZheng Fan ,maTBxNumBulletBackground(ControlFactory::CreateToolBoxBackground(this))
1603766ce4d0SZheng Fan , maTBxNumBullet          (ControlFactory::CreateToolBox(maTBxNumBulletBackground.get(),SVX_RES(TBX_NUM_BULLET)))
1604766ce4d0SZheng Fan ,maTBxBackColorBackground(ControlFactory::CreateToolBoxBackground(this))
1605766ce4d0SZheng Fan , maTBxBackColor          (ControlFactory::CreateToolBox(maTBxBackColorBackground.get(),SVX_RES(TBX_BACK_COLOR)))
1606766ce4d0SZheng Fan , maNumBImageList         (SVX_RES(IL_NUM_BULLET))
1607766ce4d0SZheng Fan , maNumBImageListH        (SVX_RES(ILH_NUM_BULLET))
1608766ce4d0SZheng Fan , maNumBImageListRTL      (SVX_RES(IL_NUM_BULLET_RTL))  //wj sym2_7380
1609766ce4d0SZheng Fan , maImgBackColorHigh      (SVX_RES(IMG_BACK_COLOR_H))
1610766ce4d0SZheng Fan , maImgBackColor          (SVX_RES(IMG_BACK_COLOR))
1611766ce4d0SZheng Fan , mpColorUpdater          ()
1612766ce4d0SZheng Fan , maColor                 (COL_AUTO)
1613766ce4d0SZheng Fan , mbColorAvailable        (sal_True)
1614766ce4d0SZheng Fan //Paragraph spacing
1615766ce4d0SZheng Fan , maFTUL                  (new FixedText(this, SVX_RES(FT_SPACING)))
1616766ce4d0SZheng Fan ,maTbxUL_IncDecBackground(ControlFactory::CreateToolBoxBackground(this))
1617766ce4d0SZheng Fan , maTbxUL_IncDec          (ControlFactory::CreateToolBox(maTbxUL_IncDecBackground.get(),SVX_RES(TBX_UL_INC_DEC)))
1618766ce4d0SZheng Fan , maParInc                (SVX_RES(IMG_PARA_INC))
1619766ce4d0SZheng Fan , maParDec                (SVX_RES(IMG_PARA_DEC))
1620766ce4d0SZheng Fan , maTopDist               (new SvxRelativeField(this, SVX_RES(MF_ABOVE_PARASPACING)))
1621766ce4d0SZheng Fan , maBottomDist            (new SvxRelativeField(this, SVX_RES(MF_BELOW_PARASPACING)))
1622766ce4d0SZheng Fan //Indent
1623766ce4d0SZheng Fan , maFTIndent              (new FixedText(this, SVX_RES(FT_INDENT)))
1624766ce4d0SZheng Fan ,maTbxIndent_IncDecBackground(ControlFactory::CreateToolBoxBackground(this))
1625766ce4d0SZheng Fan , maTbxIndent_IncDec      (ControlFactory::CreateToolBox(maTbxIndent_IncDecBackground.get(),SVX_RES(TBX_INDENT_INC_DEC)))
1626766ce4d0SZheng Fan ,maTbxProDemoteBackground(ControlFactory::CreateToolBoxBackground(this))
1627766ce4d0SZheng Fan , maTbxProDemote          (ControlFactory::CreateToolBox(maTbxProDemoteBackground.get(),SVX_RES(TBX_INDENT_PRO_DEMOTE)))
1628766ce4d0SZheng Fan , maLeftIndent            (new SvxRelativeField(this, SVX_RES(MF_BEFORE_INDENT)))
1629766ce4d0SZheng Fan , maRightIndent           (new SvxRelativeField(this, SVX_RES(MF_AFTER_INDENT)))
1630766ce4d0SZheng Fan , maFLineIndent           (new SvxRelativeField(this, SVX_RES(MF_FL_INDENT)))
1631766ce4d0SZheng Fan , maIndInc                (SVX_RES(IMG_INDENT_INC))
1632766ce4d0SZheng Fan , maIndDec                (SVX_RES(IMG_INDENT_DEC))
1633766ce4d0SZheng Fan , maIndInc_BD             (SVX_RES(IMG_INDENT_INC_BD))
1634766ce4d0SZheng Fan , maIndDec_BD             (SVX_RES(IMG_INDENT_DEC_BD))
1635766ce4d0SZheng Fan , maIndHang               (SVX_RES(IMG_INDENT_HANG))
1636766ce4d0SZheng Fan , maTxtLeft               (0)
1637766ce4d0SZheng Fan //Line spacing
1638766ce4d0SZheng Fan ,maLineSPTbxBackground(ControlFactory::CreateToolBoxBackground(this))
1639766ce4d0SZheng Fan , maLineSPTbx             (ControlFactory::CreateToolBox(maLineSPTbxBackground.get(),SVX_RES(TBX_LINESP)))
1640766ce4d0SZheng Fan , maSpace1                (SVX_RES(IMG_SPACE1))
1641766ce4d0SZheng Fan , maSpace2                (SVX_RES(IMG_SPACE2))
1642766ce4d0SZheng Fan , maSpace3                (SVX_RES(IMG_SPACE3))
1643766ce4d0SZheng Fan , maIndent1               (SVX_RES(IMG_INDENT1))
1644766ce4d0SZheng Fan , maIndent2               (SVX_RES(IMG_INDENT2))
1645766ce4d0SZheng Fan , maIndent3               (SVX_RES(IMG_INDENT3))
1646766ce4d0SZheng Fan , maLineSpacePopup(this, ::boost::bind(&ParaPropertyPanel::CreateLineSpacingControl, this, _1))
1647766ce4d0SZheng Fan , maBulletsPopup(this, ::boost::bind(&ParaPropertyPanel::CreateBulletsPopupControl, this, _1))
1648766ce4d0SZheng Fan , maNumberingPopup(this, ::boost::bind(&ParaPropertyPanel::CreateNumberingPopupControl, this, _1))
1649766ce4d0SZheng Fan , maBGColorPopup(this, ::boost::bind(&ParaPropertyPanel::CreateBGColorPopupControl, this, _1))
1650766ce4d0SZheng Fan //Controller
1651766ce4d0SZheng Fan , maLeftAlignControl      (SID_ATTR_PARA_ADJUST_LEFT, *pBindings,*this)
1652766ce4d0SZheng Fan , maCenterAlignControl    (SID_ATTR_PARA_ADJUST_CENTER, *pBindings,*this)
1653766ce4d0SZheng Fan , maRightAlignControl     (SID_ATTR_PARA_ADJUST_RIGHT, *pBindings,*this)
1654766ce4d0SZheng Fan , maJustifyAlignControl   (SID_ATTR_PARA_ADJUST_BLOCK, *pBindings,*this)
1655766ce4d0SZheng Fan , maLRSpaceControl        (SID_ATTR_PARA_LRSPACE,*pBindings,*this)
1656766ce4d0SZheng Fan , maLNSpaceControl        (SID_ATTR_PARA_LINESPACE, *pBindings,*this)
1657766ce4d0SZheng Fan , maULSpaceControl        (SID_ATTR_PARA_ULSPACE, *pBindings,*this)
1658766ce4d0SZheng Fan , maOutLineLeftControl    (SID_OUTLINE_LEFT, *pBindings,*this)
1659766ce4d0SZheng Fan , maOutLineRightControl   (SID_OUTLINE_RIGHT, *pBindings,*this)
1660766ce4d0SZheng Fan , maIncIndentControl      (SID_INC_INDENT, *pBindings,*this)
1661766ce4d0SZheng Fan , maDecIndentControl      (SID_DEC_INDENT, *pBindings,*this)
1662766ce4d0SZheng Fan , maVertTop               (SID_TABLE_VERT_NONE, *pBindings,*this)
1663766ce4d0SZheng Fan , maVertCenter            (SID_TABLE_VERT_CENTER, *pBindings,*this)
1664766ce4d0SZheng Fan , maVertBottom            (SID_TABLE_VERT_BOTTOM,*pBindings,*this)
1665766ce4d0SZheng Fan , maBulletOnOff           (FN_NUM_BULLET_ON, *pBindings,*this)
1666766ce4d0SZheng Fan , maNumberOnOff           (FN_NUM_NUMBERING_ON, *pBindings,*this)
1667766ce4d0SZheng Fan //Modified for Numbering&Bullets Dialog UX Enh(Story 992) by chengjh,2011.7.5
1668766ce4d0SZheng Fan //Add entry to transfer number rule index data
1669766ce4d0SZheng Fan ,maBulletNumRuleIndex       (FN_BUL_NUM_RULE_INDEX, *pBindings,*this)
1670766ce4d0SZheng Fan ,maNumNumRuleIndex      (FN_NUM_NUM_RULE_INDEX, *pBindings,*this)
1671766ce4d0SZheng Fan //End
1672766ce4d0SZheng Fan , maBackColorControl      (SID_BACKGROUND_COLOR,    *pBindings,*this)
1673766ce4d0SZheng Fan , m_aMetricCtl            (SID_ATTR_METRIC, *pBindings,*this)
1674766ce4d0SZheng Fan //, m_eMetricUnit             (FUNIT_INCH)
1675766ce4d0SZheng Fan //, m_last_eMetricUnit      (FUNIT_INCH)
1676766ce4d0SZheng Fan //internal var
1677766ce4d0SZheng Fan , maUpper                       (0)
1678766ce4d0SZheng Fan , maLower                       (0)
1679766ce4d0SZheng Fan , mpLnSPItem                    (NULL)
1680766ce4d0SZheng Fan , meLnSpState                   (SFX_ITEM_DONTCARE)
1681766ce4d0SZheng Fan , maFISpace1                    ( this, SVX_RES( FI_SPACE1))
1682766ce4d0SZheng Fan , maFISpace2                    ( this, SVX_RES( FI_SPACE2))
1683766ce4d0SZheng Fan , maFIndent1                    ( this, SVX_RES( FI_INDENT1))
1684766ce4d0SZheng Fan , maFIndent2                    ( this, SVX_RES( FI_INDENT2))
1685766ce4d0SZheng Fan , maFIndent3                    ( this, SVX_RES( FI_INDENT3))
1686766ce4d0SZheng Fan , mbOutLineRight                (0)
1687766ce4d0SZheng Fan , mbOutLineLeft                 (0)
1688766ce4d0SZheng Fan ,nBulletTypeIndex ((sal_uInt16)0xFFFF)
1689766ce4d0SZheng Fan ,nNumTypeIndex ((sal_uInt16)0xFFFF)
1690766ce4d0SZheng Fan //End
1691766ce4d0SZheng Fan ,mpBindings(pBindings)
1692766ce4d0SZheng Fan {
1693766ce4d0SZheng Fan     initial();
1694766ce4d0SZheng Fan     FreeResource();
1695766ce4d0SZheng Fan }
1696766ce4d0SZheng Fan 
1697766ce4d0SZheng Fan }}
1698