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>
35*d29c2fc2SAndre Fischer #include <sfx2/sidebar/ResourceDefinitions.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,
12137fee4fdSAndre Fischer     SfxBindings* pBindings,
12237fee4fdSAndre Fischer     const cssu::Reference<css::ui::XSidebar>& rxSidebar)
123766ce4d0SZheng Fan {
124766ce4d0SZheng Fan     if (pParent == NULL)
125766ce4d0SZheng Fan         throw lang::IllegalArgumentException(A2S("no parent Window given to ParaPropertyPanel::Create"), NULL, 0);
126766ce4d0SZheng Fan     if ( ! rxFrame.is())
127766ce4d0SZheng Fan         throw lang::IllegalArgumentException(A2S("no XFrame given to ParaPropertyPanel::Create"), NULL, 1);
128766ce4d0SZheng Fan     if (pBindings == NULL)
129766ce4d0SZheng Fan         throw lang::IllegalArgumentException(A2S("no SfxBindings given to ParaPropertyPanel::Create"), NULL, 2);
130766ce4d0SZheng Fan 
131766ce4d0SZheng Fan     return new ParaPropertyPanel(
132766ce4d0SZheng Fan         pParent,
133766ce4d0SZheng Fan         rxFrame,
13437fee4fdSAndre Fischer         pBindings,
13537fee4fdSAndre Fischer         rxSidebar);
136766ce4d0SZheng Fan }
137766ce4d0SZheng Fan 
138766ce4d0SZheng Fan void ParaPropertyPanel::HandleContextChange (
139766ce4d0SZheng Fan     const ::sfx2::sidebar::EnumContext aContext)
140766ce4d0SZheng Fan {
141766ce4d0SZheng Fan     if (maContext == aContext)
142766ce4d0SZheng Fan     {
143766ce4d0SZheng Fan         // Nothing to do.
144766ce4d0SZheng Fan         return;
145766ce4d0SZheng Fan     }
146766ce4d0SZheng Fan 
147766ce4d0SZheng Fan     maContext = aContext;
14837fee4fdSAndre Fischer     switch (maContext.GetCombinedContext_DI())
149766ce4d0SZheng Fan     {
150766ce4d0SZheng Fan         case CombinedEnumContext(Application_Calc, Context_DrawText):
15137fee4fdSAndre Fischer             maTBxVertAlign->Show();
15237fee4fdSAndre Fischer             maTBxVertAlignBackground->Show();
15337fee4fdSAndre Fischer             maTBxBackColor->Hide();
15437fee4fdSAndre Fischer             maTBxBackColorBackground->Hide();
15537fee4fdSAndre Fischer             maTBxNumBullet->Hide();
15637fee4fdSAndre Fischer             maTBxNumBulletBackground->Hide();
15737fee4fdSAndre Fischer             ReSize(false);
15837fee4fdSAndre Fischer             maTbxIndent_IncDec->Show();
15937fee4fdSAndre Fischer             maTbxIndent_IncDecBackground->Show();
16037fee4fdSAndre Fischer             maTbxProDemote->Hide();
16137fee4fdSAndre Fischer             maTbxProDemoteBackground->Hide();
16237fee4fdSAndre Fischer             break;
16337fee4fdSAndre Fischer 
16437fee4fdSAndre Fischer         case CombinedEnumContext(Application_DrawImpress, Context_Draw):
16537fee4fdSAndre Fischer         case CombinedEnumContext(Application_DrawImpress, Context_TextObject):
16637fee4fdSAndre Fischer         case CombinedEnumContext(Application_DrawImpress, Context_Graphic):
16737fee4fdSAndre Fischer             maTBxVertAlign->Hide();
16837fee4fdSAndre Fischer 		    maTBxVertAlignBackground->Hide();
16937fee4fdSAndre Fischer             maTBxBackColor->Hide();
17037fee4fdSAndre Fischer             maTBxBackColorBackground->Hide();
17137fee4fdSAndre Fischer             maTBxNumBullet->Show();
17237fee4fdSAndre Fischer             maTBxNumBulletBackground->Show();
17337fee4fdSAndre Fischer             ReSize(true);
17437fee4fdSAndre Fischer             maTbxIndent_IncDec->Hide();
17537fee4fdSAndre Fischer             maTbxIndent_IncDecBackground->Hide();
17637fee4fdSAndre Fischer             maTbxProDemote->Show();
17737fee4fdSAndre Fischer             maTbxProDemoteBackground->Show();
17837fee4fdSAndre Fischer             break;
17937fee4fdSAndre Fischer 
18037fee4fdSAndre Fischer         case CombinedEnumContext(Application_DrawImpress, Context_DrawText):
18137fee4fdSAndre Fischer             maTBxVertAlign->Show();
18237fee4fdSAndre Fischer             maTBxVertAlignBackground->Show();
18337fee4fdSAndre Fischer             maTBxBackColor->Hide();
18437fee4fdSAndre Fischer             maTBxBackColorBackground->Hide();
18537fee4fdSAndre Fischer             maTBxNumBullet->Show();
18637fee4fdSAndre Fischer             maTBxNumBulletBackground->Show();
18737fee4fdSAndre Fischer             ReSize(true);
18837fee4fdSAndre Fischer             maTbxIndent_IncDec->Hide();
18937fee4fdSAndre Fischer             maTbxIndent_IncDecBackground->Hide();
19037fee4fdSAndre Fischer             maTbxProDemote->Show();
19137fee4fdSAndre Fischer             maTbxProDemoteBackground->Show();
19237fee4fdSAndre Fischer             break;
19337fee4fdSAndre Fischer 
19437fee4fdSAndre Fischer         case CombinedEnumContext(Application_DrawImpress, Context_Table):
19537fee4fdSAndre Fischer             maTBxVertAlign->Show();
19637fee4fdSAndre Fischer             maTBxVertAlignBackground->Show();
19737fee4fdSAndre Fischer             maTBxBackColor->Hide();
19837fee4fdSAndre Fischer             maTBxBackColorBackground->Hide();
19937fee4fdSAndre Fischer             maTBxNumBullet->Show();
20037fee4fdSAndre Fischer             maTBxNumBulletBackground->Show();
20137fee4fdSAndre Fischer             ReSize(true);
20237fee4fdSAndre Fischer             maTbxIndent_IncDec->Hide();
20337fee4fdSAndre Fischer             maTbxIndent_IncDecBackground->Hide();
20437fee4fdSAndre Fischer             maTbxProDemote->Show();
20537fee4fdSAndre Fischer             maTbxProDemoteBackground->Show();
20637fee4fdSAndre Fischer             break;
20737fee4fdSAndre Fischer 
20885f1aca2SAndre Fischer         case CombinedEnumContext(Application_WriterVariants, Context_Default):
20985f1aca2SAndre Fischer         case CombinedEnumContext(Application_WriterVariants, Context_Text):
21037fee4fdSAndre Fischer             maTBxVertAlign->Hide();
21137fee4fdSAndre Fischer             maTBxVertAlignBackground->Hide();
21237fee4fdSAndre Fischer             maTBxBackColor->Show();
21337fee4fdSAndre Fischer             maTBxBackColorBackground->Show();
21437fee4fdSAndre Fischer             maTBxNumBullet->Show();
215766ce4d0SZheng Fan 
21637fee4fdSAndre Fischer             maTBxNumBulletBackground->Show();
21737fee4fdSAndre Fischer             ReSize(true);
21837fee4fdSAndre Fischer             maTbxIndent_IncDec->Show();
21937fee4fdSAndre Fischer             maTbxIndent_IncDecBackground->Show();
22037fee4fdSAndre Fischer             maTbxProDemote->Hide();
22137fee4fdSAndre Fischer             maTbxProDemoteBackground->Hide();
22237fee4fdSAndre Fischer             break;
22337fee4fdSAndre Fischer 
22485f1aca2SAndre Fischer         case CombinedEnumContext(Application_WriterVariants, Context_Table):
22537fee4fdSAndre Fischer             maTBxVertAlign->Show();
22637fee4fdSAndre Fischer             maTBxVertAlignBackground->Show();
22737fee4fdSAndre Fischer             maTBxBackColor->Show();
22837fee4fdSAndre Fischer             maTBxBackColorBackground->Show();
22937fee4fdSAndre Fischer             maTBxNumBullet->Show();
23037fee4fdSAndre Fischer             maTBxNumBulletBackground->Show();
23137fee4fdSAndre Fischer             ReSize(true);
23237fee4fdSAndre Fischer             maTbxIndent_IncDec->Show();
23337fee4fdSAndre Fischer             maTbxIndent_IncDecBackground->Show();
23437fee4fdSAndre Fischer             maTbxProDemote->Hide();
23537fee4fdSAndre Fischer             maTbxProDemoteBackground->Hide();
23637fee4fdSAndre Fischer             break;
23737fee4fdSAndre Fischer 
23885f1aca2SAndre Fischer         case CombinedEnumContext(Application_WriterVariants, Context_DrawText):
23937fee4fdSAndre Fischer             maTBxVertAlign->Show();
24037fee4fdSAndre Fischer             maTBxVertAlignBackground->Show();
24137fee4fdSAndre Fischer             maTBxBackColor->Hide();
24237fee4fdSAndre Fischer             maTBxBackColorBackground->Hide();
24337fee4fdSAndre Fischer             maTBxNumBullet->Hide();
24437fee4fdSAndre Fischer             maTBxNumBulletBackground->Hide();
24537fee4fdSAndre Fischer             ReSize(false);
24637fee4fdSAndre Fischer             maTbxIndent_IncDec->Show();
24737fee4fdSAndre Fischer             maTbxIndent_IncDecBackground->Show();
24837fee4fdSAndre Fischer             maTbxProDemote->Hide();
24937fee4fdSAndre Fischer             maTbxProDemoteBackground->Hide();
25037fee4fdSAndre Fischer             break;
25137fee4fdSAndre Fischer 
25285f1aca2SAndre Fischer         case CombinedEnumContext(Application_WriterVariants, Context_Annotation):
25337fee4fdSAndre Fischer             maTBxVertAlign->Hide();
25437fee4fdSAndre Fischer             maTBxVertAlignBackground->Hide();
25537fee4fdSAndre Fischer             maTBxBackColor->Hide();
25637fee4fdSAndre Fischer             maTBxBackColorBackground->Hide();
25737fee4fdSAndre Fischer             maTBxNumBullet->Hide();
25837fee4fdSAndre Fischer             maTBxNumBulletBackground->Hide();
25937fee4fdSAndre Fischer             ReSize(false);
26037fee4fdSAndre Fischer             maTbxIndent_IncDec->Show();
26137fee4fdSAndre Fischer             maTbxIndent_IncDecBackground->Show();
26237fee4fdSAndre Fischer             maTbxProDemote->Hide();
26337fee4fdSAndre Fischer             maTbxProDemoteBackground->Hide();
26437fee4fdSAndre Fischer             break;
26537fee4fdSAndre Fischer 
266766ce4d0SZheng Fan         case CombinedEnumContext(Application_Calc, Context_EditCell):
267766ce4d0SZheng Fan         case CombinedEnumContext(Application_Calc, Context_Cell):
268766ce4d0SZheng Fan         case CombinedEnumContext(Application_Calc, Context_Pivot):
26937fee4fdSAndre Fischer         case CombinedEnumContext(Application_DrawImpress, Context_Text):
27037fee4fdSAndre Fischer         case CombinedEnumContext(Application_DrawImpress, Context_OutlineText):
271766ce4d0SZheng Fan         /*{
272766ce4d0SZheng Fan             mpToolBoxScriptSw->Hide();
273766ce4d0SZheng Fan             mpToolBoxScript->Show();
274766ce4d0SZheng Fan             mpToolBoxSpacing->Show();
275766ce4d0SZheng Fan             mpToolBoxHighlight->Hide();
276766ce4d0SZheng Fan 
277766ce4d0SZheng Fan             Size aSize(PROPERTYPAGE_WIDTH,TEXT_SECTIONPAGE_HEIGHT);
278766ce4d0SZheng Fan             aSize = LogicToPixel( aSize,MapMode(MAP_APPFONT) );
279766ce4d0SZheng Fan             aSize.setWidth(GetOutputSizePixel().Width());
280766ce4d0SZheng Fan             SetSizePixel(aSize);
281766ce4d0SZheng Fan         }*/
28237fee4fdSAndre Fischer             break;
283766ce4d0SZheng Fan 
284766ce4d0SZheng Fan         default:
285766ce4d0SZheng Fan             break;
286766ce4d0SZheng Fan     }
287766ce4d0SZheng Fan }
288766ce4d0SZheng Fan 
289766ce4d0SZheng Fan SfxBindings* ParaPropertyPanel::GetBindings()
290766ce4d0SZheng Fan {
291766ce4d0SZheng Fan     return mpBindings;
292766ce4d0SZheng Fan }
293766ce4d0SZheng Fan 
2943cac12cfSAndre Fischer 
2953cac12cfSAndre Fischer 
296766ce4d0SZheng Fan 
297766ce4d0SZheng Fan void ParaPropertyPanel::DataChanged (const DataChangedEvent& rEvent)
298766ce4d0SZheng Fan {
299766ce4d0SZheng Fan     (void)rEvent;
300766ce4d0SZheng Fan }
301766ce4d0SZheng Fan 
302766ce4d0SZheng Fan ParaPropertyPanel::~ParaPropertyPanel()
303766ce4d0SZheng Fan {
304766ce4d0SZheng Fan 	delete mpLnSPItem;
305766ce4d0SZheng Fan }
306766ce4d0SZheng Fan 
307766ce4d0SZheng Fan void ParaPropertyPanel::ReSize(bool bSize)
308766ce4d0SZheng Fan {
309766ce4d0SZheng Fan 	if(bSize)
310766ce4d0SZheng Fan 	{
311766ce4d0SZheng Fan 		//Paragraph spacing
312766ce4d0SZheng Fan 		maFTUL->SetPosPixel(POS_FT_PARA_SPACE);
313766ce4d0SZheng Fan 		maTbxUL_IncDec->SetPosPixel(POS_TBX_PARA_SPACE_INC_DEC);
314766ce4d0SZheng Fan 		maTopDist->SetPosPixel(POS_MBX_TOP_DIST);
315766ce4d0SZheng Fan 		maBottomDist->SetPosPixel(POS_MBX_BOT_DIST);
316766ce4d0SZheng Fan 		//Indent
317766ce4d0SZheng Fan 		maFTIndent->SetPosPixel(POS_FT_PARA_INDENT);
318766ce4d0SZheng Fan 		maTbxIndent_IncDec->SetPosPixel(POS_TBX_PARA_INDENT_INC_DEC);
319766ce4d0SZheng Fan 		maTbxProDemote->SetPosPixel(POS_TBX_PARA_INDENT_INC_DEC);
320766ce4d0SZheng Fan 		maLeftIndent->SetPosPixel(POS_MBX_LEFT_DIST);
321766ce4d0SZheng Fan 		maRightIndent->SetPosPixel(POS_MBX_RIGHT_DIST);
322766ce4d0SZheng Fan 		maFLineIndent->SetPosPixel(POS_MBX_FLINE_DIST);
323766ce4d0SZheng Fan 		//Line spacing
324766ce4d0SZheng Fan 		maLineSPTbx->SetPosPixel(TBX_LINE_SPACE);
325766ce4d0SZheng Fan 		//image
326766ce4d0SZheng Fan 		maFISpace1.SetPosPixel(POS_IMG_SPACE1);
327766ce4d0SZheng Fan 		maFISpace2.SetPosPixel(POS_IMG_SPACE2);
328766ce4d0SZheng Fan 		maFIndent1.SetPosPixel(POS_IMG_INDENT1);
329766ce4d0SZheng Fan 		maFIndent2.SetPosPixel(POS_IMG_INDENT2);
330766ce4d0SZheng Fan 		maFIndent3.SetPosPixel(POS_IMG_INDENT3);
331766ce4d0SZheng Fan 		Size aSize(GetOutputSizePixel().Width(),PARA_SECTIONPAGE_HEIGHT);
332766ce4d0SZheng Fan 		aSize = LogicToPixel( aSize, MapMode(MAP_APPFONT) );
333766ce4d0SZheng Fan 		aSize.setWidth(GetOutputSizePixel().Width());
334766ce4d0SZheng Fan 		SetSizePixel(aSize);
335766ce4d0SZheng Fan 	}
336766ce4d0SZheng Fan 	else
337766ce4d0SZheng Fan 	{
338766ce4d0SZheng Fan 		//Paragraph spacing
339766ce4d0SZheng Fan 		maFTUL->SetPosPixel(POS_FT_PARA_SPACE2);
340766ce4d0SZheng Fan 		maTbxUL_IncDec->SetPosPixel(POS_TBX_PARA_SPACE_INC_DEC2);
341766ce4d0SZheng Fan 		maTopDist->SetPosPixel(POS_MBX_TOP_DIST2);
342766ce4d0SZheng Fan 		maBottomDist->SetPosPixel(POS_MBX_BOT_DIST2);
343766ce4d0SZheng Fan 		//Indent
344766ce4d0SZheng Fan 		maFTIndent->SetPosPixel(POS_FT_PARA_INDENT2);
345766ce4d0SZheng Fan 		maTbxIndent_IncDec->SetPosPixel(POS_TBX_PARA_INDENT_INC_DEC2);
346766ce4d0SZheng Fan 		maTbxProDemote->SetPosPixel(POS_TBX_PARA_INDENT_INC_DEC2);
347766ce4d0SZheng Fan 		maLeftIndent->SetPosPixel(POS_MBX_LEFT_DIST2);
348766ce4d0SZheng Fan 		maRightIndent->SetPosPixel(POS_MBX_RIGHT_DIST2);
349766ce4d0SZheng Fan 		maFLineIndent->SetPosPixel(POS_MBX_FLINE_DIST2);
350766ce4d0SZheng Fan 		//Line spacing
351766ce4d0SZheng Fan 		maLineSPTbx->SetPosPixel(TBX_LINE_SPACE2);
352766ce4d0SZheng Fan 		//image
353766ce4d0SZheng Fan 		maFISpace1.SetPosPixel(POS_IMG_SPACE12);
354766ce4d0SZheng Fan 		maFISpace2.SetPosPixel(POS_IMG_SPACE22);
355766ce4d0SZheng Fan 		maFIndent1.SetPosPixel(POS_IMG_INDENT12);
356766ce4d0SZheng Fan 		maFIndent2.SetPosPixel(POS_IMG_INDENT22);
357766ce4d0SZheng Fan 		maFIndent3.SetPosPixel(POS_IMG_INDENT32);
358766ce4d0SZheng Fan 		Size aSize(GetOutputSizePixel().Width(),PARA_SECTIONPAGE_HEIGHT_2);
359766ce4d0SZheng Fan 		aSize = LogicToPixel( aSize, MapMode(MAP_APPFONT) );
360766ce4d0SZheng Fan 		aSize.setWidth(GetOutputSizePixel().Width());
361766ce4d0SZheng Fan 		SetSizePixel(aSize);
362766ce4d0SZheng Fan 	}
36337fee4fdSAndre Fischer 
36437fee4fdSAndre Fischer     if (mxSidebar.is())
36537fee4fdSAndre Fischer         mxSidebar->requestLayout();
366766ce4d0SZheng Fan }
367766ce4d0SZheng Fan 
368766ce4d0SZheng Fan void ParaPropertyPanel::EndSpacingPopupMode (void)
369766ce4d0SZheng Fan {
370766ce4d0SZheng Fan     maLineSpacePopup.Hide();
371766ce4d0SZheng Fan }
372766ce4d0SZheng Fan 
373766ce4d0SZheng Fan void ParaPropertyPanel::EndBulletsPopupMode (void)
374766ce4d0SZheng Fan {
3758a9f1ce2SZheng Fan 	//i122054, Missed following line, for collapse the bullets popup
3768a9f1ce2SZheng Fan 	maBulletsPopup.Hide();
377766ce4d0SZheng Fan }
378766ce4d0SZheng Fan 
379766ce4d0SZheng Fan void ParaPropertyPanel::EndNumberingPopupMode (void)
380766ce4d0SZheng Fan {
3818a9f1ce2SZheng Fan 	//i122054, Missed following line, for collapse the numbering popup
3828a9f1ce2SZheng Fan 	maNumberingPopup.Hide();
383766ce4d0SZheng Fan }
384766ce4d0SZheng Fan 
385766ce4d0SZheng Fan 
386766ce4d0SZheng Fan void ParaPropertyPanel::InitToolBoxAlign()
387766ce4d0SZheng Fan {
3883cac12cfSAndre Fischer     const bool bIsHighContrastModeActive (Theme::IsHighContrastMode());
3893cac12cfSAndre Fischer 	maAlignToolBox->SetItemImage(TOOLBOX_ITEM1, maLeftAlignControl.GetIcon(bIsHighContrastModeActive));
3903cac12cfSAndre Fischer 	maAlignToolBox->SetItemImage(TOOLBOX_ITEM2, maCenterAlignControl.GetIcon(bIsHighContrastModeActive));
3913cac12cfSAndre Fischer 	maAlignToolBox->SetItemImage(TOOLBOX_ITEM3, maRightAlignControl.GetIcon(bIsHighContrastModeActive));
3923cac12cfSAndre Fischer 	maAlignToolBox->SetItemImage(TOOLBOX_ITEM4, maJustifyAlignControl.GetIcon(bIsHighContrastModeActive));
3933cac12cfSAndre Fischer 
394766ce4d0SZheng Fan 	Link aLink = LINK( this, ParaPropertyPanel, AlignStyleModifyHdl_Impl );
395766ce4d0SZheng Fan 	maAlignToolBox->SetSelectHdl( aLink );
396766ce4d0SZheng Fan 	Size aTbxSize (maAlignToolBox->CalcWindowSizePixel());
397766ce4d0SZheng Fan 	maAlignToolBox->SetOutputSizePixel( aTbxSize );
398766ce4d0SZheng Fan }
399766ce4d0SZheng Fan 
400766ce4d0SZheng Fan void ParaPropertyPanel::InitToolBoxVertAlign()
401766ce4d0SZheng Fan {
4023cac12cfSAndre Fischer     const bool bIsHighContrastModeActive (Theme::IsHighContrastMode());
4033cac12cfSAndre Fischer     maTBxVertAlign->SetItemImage(IID_VERT_TOP, maVertTop.GetIcon(bIsHighContrastModeActive));
4043cac12cfSAndre Fischer     maTBxVertAlign->SetItemImage(IID_VERT_CENTER, maVertCenter.GetIcon(bIsHighContrastModeActive));
4053cac12cfSAndre Fischer     maTBxVertAlign->SetItemImage(IID_VERT_BOTTOM, maVertBottom.GetIcon(bIsHighContrastModeActive));
406766ce4d0SZheng Fan 	maTBxVertAlign->SetSelectHdl(LINK(this,ParaPropertyPanel,VertTbxSelectHandler));
407766ce4d0SZheng Fan 	Size aTbxSize (maTBxVertAlign->CalcWindowSizePixel());
408766ce4d0SZheng Fan 	maTBxVertAlign->SetOutputSizePixel( aTbxSize );
409766ce4d0SZheng Fan }
410766ce4d0SZheng Fan 
411766ce4d0SZheng Fan 
412766ce4d0SZheng Fan void ParaPropertyPanel::InitToolBoxIndent()
413766ce4d0SZheng Fan {
414766ce4d0SZheng Fan 	Link aLink = LINK( this, ParaPropertyPanel, ModifyIndentHdl_Impl );
415766ce4d0SZheng Fan 	maLeftIndent->SetModifyHdl( aLink );
416766ce4d0SZheng Fan 	maRightIndent->SetModifyHdl( aLink );
417766ce4d0SZheng Fan 	maFLineIndent->SetModifyHdl( aLink );
418766ce4d0SZheng Fan 
4193cac12cfSAndre Fischer     const bool bIsHighContrastModeActive (Theme::IsHighContrastMode());
4203cac12cfSAndre Fischer 
421766ce4d0SZheng Fan 	if( Application::GetSettings().GetLayoutRTL())
422766ce4d0SZheng Fan 	{
4233cac12cfSAndre Fischer 		maTbxIndent_IncDec->SetItemImage(TOOLBOX_ITEM1, maIncIndentControl.GetIcon(bIsHighContrastModeActive));
4243cac12cfSAndre Fischer 		maTbxIndent_IncDec->SetItemImage(TOOLBOX_ITEM2, maDecIndentControl.GetIcon(bIsHighContrastModeActive));
425766ce4d0SZheng Fan 	}
426766ce4d0SZheng Fan 	else
427766ce4d0SZheng Fan 	{
4283cac12cfSAndre Fischer 		maTbxIndent_IncDec->SetItemImage(TOOLBOX_ITEM1, maIncIndentControl.GetIcon(bIsHighContrastModeActive));
4293cac12cfSAndre Fischer 		maTbxIndent_IncDec->SetItemImage(TOOLBOX_ITEM2, maDecIndentControl.GetIcon(bIsHighContrastModeActive));
430766ce4d0SZheng Fan 	}
431766ce4d0SZheng Fan 	maTbxIndent_IncDec->SetItemImage(TOOLBOX_ITEM3,maIndHang);
432766ce4d0SZheng Fan 	aLink = LINK( this, ParaPropertyPanel, ClickIndent_IncDec_Hdl_Impl );
433766ce4d0SZheng Fan 	maTbxIndent_IncDec->SetSelectHdl(aLink);
434766ce4d0SZheng Fan 	m_eLRSpaceUnit = maLRSpaceControl.GetCoreMetric();
435766ce4d0SZheng Fan 	Size aTbxSize = maTbxIndent_IncDec->CalcWindowSizePixel();
436766ce4d0SZheng Fan 	maTbxIndent_IncDec->SetOutputSizePixel( aTbxSize );
437766ce4d0SZheng Fan 
438766ce4d0SZheng Fan 	if( Application::GetSettings().GetLayoutRTL())
439766ce4d0SZheng Fan 	{
4403cac12cfSAndre Fischer 		maTbxProDemote->SetItemImage(TOOLBOX_ITEM1, maOutLineLeftControl.GetIcon(bIsHighContrastModeActive));
4413cac12cfSAndre Fischer 		maTbxProDemote->SetItemImage(TOOLBOX_ITEM2, maOutLineRightControl.GetIcon(bIsHighContrastModeActive));
442766ce4d0SZheng Fan 	}
443766ce4d0SZheng Fan 	else
444766ce4d0SZheng Fan 	{
4453cac12cfSAndre Fischer 		maTbxProDemote->SetItemImage(TOOLBOX_ITEM1, maOutLineLeftControl.GetIcon(bIsHighContrastModeActive));
4463cac12cfSAndre Fischer 		maTbxProDemote->SetItemImage(TOOLBOX_ITEM2, maOutLineRightControl.GetIcon(bIsHighContrastModeActive));
447766ce4d0SZheng Fan 	}
448766ce4d0SZheng Fan 	maTbxProDemote->SetItemImage(TOOLBOX_ITEM3,maIndHang);
449766ce4d0SZheng Fan 	aLink = LINK( this, ParaPropertyPanel, ClickProDemote_Hdl_Impl );
450766ce4d0SZheng Fan 	maTbxProDemote->SetSelectHdl(aLink);
451766ce4d0SZheng Fan 	m_eLRSpaceUnit = maLRSpaceControl.GetCoreMetric();
452766ce4d0SZheng Fan 	aTbxSize = maTbxProDemote->CalcWindowSizePixel();
453766ce4d0SZheng Fan 	maTbxProDemote->SetOutputSizePixel( aTbxSize );
454766ce4d0SZheng Fan }
455766ce4d0SZheng Fan 
456766ce4d0SZheng Fan void ParaPropertyPanel::InitToolBoxBGColor()
457766ce4d0SZheng Fan {
458766ce4d0SZheng Fan 	mpColorUpdater.reset(new ::svx::ToolboxButtonColorUpdater(SID_BACKGROUND_COLOR, TBI_BACK_COLOR, maTBxBackColor.get(), TBX_UPDATER_MODE_CHAR_COLOR_NEW ));
459766ce4d0SZheng Fan 
460766ce4d0SZheng Fan 	maTBxBackColor->SetItemImage(TBI_BACK_COLOR, GetDisplayBackground().GetColor().IsDark()? maImgBackColorHigh : maImgBackColor);
461766ce4d0SZheng Fan 	maTBxBackColor->SetItemBits( TBI_BACK_COLOR, maTBxBackColor->GetItemBits( TBI_BACK_COLOR ) | TIB_DROPDOWNONLY );
462766ce4d0SZheng Fan 
463766ce4d0SZheng Fan 	Link aLink = LINK(this, ParaPropertyPanel, ToolBoxBackColorDDHandler);
464766ce4d0SZheng Fan 	maTBxBackColor->SetDropdownClickHdl ( aLink );
465766ce4d0SZheng Fan 	maTBxBackColor->SetSelectHdl ( aLink );
466766ce4d0SZheng Fan 	Size aTbxSize (maTBxBackColor->CalcWindowSizePixel());
467766ce4d0SZheng Fan 	maTBxBackColor->SetOutputSizePixel( aTbxSize );
468766ce4d0SZheng Fan }
469766ce4d0SZheng Fan 
470766ce4d0SZheng Fan void ParaPropertyPanel::InitToolBoxBulletsNumbering()
471766ce4d0SZheng Fan {
4723cac12cfSAndre Fischer     const bool bIsHighContrastModeActive (Theme::IsHighContrastMode());
4733cac12cfSAndre Fischer     maTBxNumBullet->SetItemImage(IID_BULLET, maBulletOnOff.GetIcon(bIsHighContrastModeActive));
4743cac12cfSAndre Fischer     maTBxNumBullet->SetItemImage(IID_NUMBER, maNumberOnOff.GetIcon(bIsHighContrastModeActive));
475766ce4d0SZheng Fan 
476766ce4d0SZheng Fan 	maTBxNumBullet->SetDropdownClickHdl(LINK(this,ParaPropertyPanel,NumBTbxDDHandler));
477766ce4d0SZheng Fan 	maTBxNumBullet->SetSelectHdl(LINK(this,ParaPropertyPanel,NumBTbxSelectHandler));
478766ce4d0SZheng Fan 	Size aTbxSize (maTBxNumBullet->CalcWindowSizePixel());
479766ce4d0SZheng Fan 	maTBxNumBullet->SetOutputSizePixel( aTbxSize );
480766ce4d0SZheng Fan }
481766ce4d0SZheng Fan void ParaPropertyPanel::InitToolBoxSpacing()
482766ce4d0SZheng Fan {
483766ce4d0SZheng Fan 	Link aLink = LINK( this, ParaPropertyPanel, ULSpaceHdl_Impl );
484766ce4d0SZheng Fan 	maTopDist->SetModifyHdl(aLink);
485766ce4d0SZheng Fan 	maBottomDist->SetModifyHdl( aLink );
486766ce4d0SZheng Fan 
4873cac12cfSAndre Fischer 	maTbxUL_IncDec->SetItemImage(TOOLBOX_ITEM1, maParInc);
4883cac12cfSAndre Fischer 	maTbxUL_IncDec->SetItemImage(TOOLBOX_ITEM2, maParDec);
489766ce4d0SZheng Fan 	aLink = LINK( this, ParaPropertyPanel, ClickUL_IncDec_Hdl_Impl );
490766ce4d0SZheng Fan 	maTbxUL_IncDec->SetSelectHdl(aLink);
491766ce4d0SZheng Fan 	m_eULSpaceUnit = maULSpaceControl.GetCoreMetric();
492766ce4d0SZheng Fan 	Size aTbxSize = maTbxUL_IncDec->CalcWindowSizePixel();
493766ce4d0SZheng Fan 	maTbxUL_IncDec->SetOutputSizePixel( aTbxSize );
494766ce4d0SZheng Fan }
495766ce4d0SZheng Fan void ParaPropertyPanel::InitToolBoxLineSpacing()
496766ce4d0SZheng Fan {
497766ce4d0SZheng Fan 	Link aLink = LINK( this, ParaPropertyPanel, ClickLineSPDropDownHdl_Impl );
498766ce4d0SZheng Fan 	maLineSPTbx->SetDropdownClickHdl( aLink );
499766ce4d0SZheng Fan 	maLineSPTbx->SetSelectHdl( aLink );		//support keyinput "ENTER"
500766ce4d0SZheng Fan 	maLineSPTbx->SetItemBits( TOOLBOX_ITEM1, maLineSPTbx->GetItemBits( TOOLBOX_ITEM1 ) | TIB_DROPDOWNONLY );
501766ce4d0SZheng Fan 	maLineSPTbx->SetItemImage(TOOLBOX_ITEM1,maSpace3);
502766ce4d0SZheng Fan 	Size aTbxSize = maLineSPTbx->CalcWindowSizePixel();
503766ce4d0SZheng Fan 	maLineSPTbx->SetOutputSizePixel( aTbxSize );
504766ce4d0SZheng Fan }
505766ce4d0SZheng Fan 
506766ce4d0SZheng Fan void ParaPropertyPanel::initial()
507766ce4d0SZheng Fan {
50837fee4fdSAndre Fischer     maFTUL->SetBackground(Wallpaper());
50937fee4fdSAndre Fischer     maFTIndent->SetBackground(Wallpaper());
51037fee4fdSAndre Fischer     maFISpace1.SetBackground(Wallpaper());
51137fee4fdSAndre Fischer     maFISpace2.SetBackground(Wallpaper());
51237fee4fdSAndre Fischer     maFIndent1.SetBackground(Wallpaper());
51337fee4fdSAndre Fischer     maFIndent2.SetBackground(Wallpaper());
51437fee4fdSAndre Fischer     maFIndent3.SetBackground(Wallpaper());
51537fee4fdSAndre Fischer 
51637fee4fdSAndre Fischer     maFISpace1.SetImage(maSpace1);
517766ce4d0SZheng Fan 	maFISpace2.SetImage(maSpace2);
518766ce4d0SZheng Fan 	maFIndent1.SetImage(maIndent3);
519766ce4d0SZheng Fan 	maFIndent2.SetImage(maIndent2);
520766ce4d0SZheng Fan 	maFIndent3.SetImage(maIndent1);
521766ce4d0SZheng Fan 
522766ce4d0SZheng Fan 	GetBindings()->Invalidate(SID_ATTR_PARA_ADJUST_LEFT,sal_True,sal_False);
523766ce4d0SZheng Fan 	GetBindings()->Invalidate(SID_ATTR_PARA_ADJUST_CENTER,sal_True,sal_False);
524766ce4d0SZheng Fan 	GetBindings()->Invalidate(SID_ATTR_PARA_ADJUST_RIGHT,sal_True,sal_False);
525766ce4d0SZheng Fan 	GetBindings()->Invalidate(SID_ATTR_PARA_ADJUST_BLOCK,sal_True,sal_False);
526766ce4d0SZheng Fan 
527766ce4d0SZheng Fan 	//toolbox
528766ce4d0SZheng Fan 	InitToolBoxAlign();
529766ce4d0SZheng Fan 	InitToolBoxVertAlign();
530766ce4d0SZheng Fan 	InitToolBoxIndent();
531766ce4d0SZheng Fan 	InitToolBoxBGColor();
532766ce4d0SZheng Fan 	InitToolBoxBulletsNumbering();
533766ce4d0SZheng Fan 	InitToolBoxSpacing();
534766ce4d0SZheng Fan 	InitToolBoxLineSpacing();
535766ce4d0SZheng Fan 
536766ce4d0SZheng Fan #ifdef HAS_IA2
537766ce4d0SZheng Fan 	maAlignToolBox->SetAccRelationLabeledBy(&maAlignToolBox);
538766ce4d0SZheng Fan 	maTBxVertAlign->SetMpSubEditAccLableBy(&maTBxVertAlign);
539766ce4d0SZheng Fan 	maTBxNumBullet->SetAccRelationLabeledBy(&maTBxNumBullet);
540766ce4d0SZheng Fan 	maTBxBackColor->SetMpSubEditAccLableBy(&maTBxBackColor);
541766ce4d0SZheng Fan 	maFTUL->SetAccRelationLabeledBy(&maFTUL);
542766ce4d0SZheng Fan 	maTbxUL_IncDec->SetAccRelationLabeledBy(&maTbxUL_IncDec);
543766ce4d0SZheng Fan 	maTopDist->SetAccRelationLabeledBy(&maTopDist);
544766ce4d0SZheng Fan 	maBottomDist->SetAccRelationLabeledBy(&maBottomDist);
545766ce4d0SZheng Fan 	maLineSPTbx->SetAccRelationLabeledBy(&maLineSPTbx);
546766ce4d0SZheng Fan 	maFTIndent->SetAccRelationLabeledBy(&maFTIndent);
547766ce4d0SZheng Fan 	maTbxIndent_IncDec->SetAccRelationLabeledBy(&maTbxIndent_IncDec);
548766ce4d0SZheng Fan 	maTbxProDemote->SetAccRelationLabeledBy(&maTbxProDemote);
549766ce4d0SZheng Fan 	maLeftIndent->SetAccRelationLabeledBy(&maLeftIndent);
550766ce4d0SZheng Fan 	maRightIndent->SetAccRelationLabeledBy(&maRightIndent);
551766ce4d0SZheng Fan 	maFLineIndent->SetAccRelationLabeledBy(&maFLineIndent);
552766ce4d0SZheng Fan 	mpColorUpdater->SetAccRelationLabeledBy(&mpColorUpdater);
553766ce4d0SZheng Fan #endif
554766ce4d0SZheng Fan }
555766ce4d0SZheng Fan 
556766ce4d0SZheng Fan void ParaPropertyPanel::InitImageList(::boost::scoped_ptr<ToolBox>& rTbx, ImageList& rImglst, ImageList& rImgHlst)
557766ce4d0SZheng Fan {
558766ce4d0SZheng Fan 	sal_Bool bHighContrast = GetDisplayBackground().GetColor().IsDark();
559766ce4d0SZheng Fan 
560766ce4d0SZheng Fan     ImageList& rImgLst = bHighContrast ? rImgHlst : rImglst;
561766ce4d0SZheng Fan 
562766ce4d0SZheng Fan 	sal_uInt16 nCount = rTbx->GetItemCount();
563766ce4d0SZheng Fan     for (sal_uInt16 i = 0; i < nCount; i++)
564766ce4d0SZheng Fan     {
565766ce4d0SZheng Fan     	sal_uInt16 nId = rTbx->GetItemId(i);
566766ce4d0SZheng Fan 		rTbx->SetItemImage( nId, rImgLst.GetImage( nId ) );
567766ce4d0SZheng Fan     }
568766ce4d0SZheng Fan }
569766ce4d0SZheng Fan 
570766ce4d0SZheng Fan //===========================for Numbering & Bullet================================================
571766ce4d0SZheng Fan 
572766ce4d0SZheng Fan 
573766ce4d0SZheng Fan 
574766ce4d0SZheng Fan IMPL_LINK(ParaPropertyPanel, NumBTbxDDHandler, ToolBox*, pToolBox)
575766ce4d0SZheng Fan {
576766ce4d0SZheng Fan 	sal_uInt16 nId = pToolBox->GetCurItemId();
577766ce4d0SZheng Fan 
578766ce4d0SZheng Fan 	EndTracking();
579766ce4d0SZheng Fan 	pToolBox->SetItemDown( nId, sal_True );
580766ce4d0SZheng Fan 
581766ce4d0SZheng Fan 	if (nId == 1)
582766ce4d0SZheng Fan     {
583766ce4d0SZheng Fan 		maBulletsPopup.UpdateValueSet();
584766ce4d0SZheng Fan 		maBulletsPopup.Show(*pToolBox);
585766ce4d0SZheng Fan 	}
586766ce4d0SZheng Fan 	else if (nId == 2)
587766ce4d0SZheng Fan 	{
588766ce4d0SZheng Fan 		maNumberingPopup.UpdateValueSet();
589766ce4d0SZheng Fan 		maNumberingPopup.Show(*pToolBox);
590766ce4d0SZheng Fan 	}
591766ce4d0SZheng Fan 	pToolBox->SetItemDown( nId, sal_False );
592766ce4d0SZheng Fan 	return 0;
593766ce4d0SZheng Fan }
594766ce4d0SZheng Fan 
595766ce4d0SZheng Fan IMPL_LINK(ParaPropertyPanel, NumBTbxSelectHandler, ToolBox*, pToolBox)
596766ce4d0SZheng Fan {
597766ce4d0SZheng Fan 	sal_uInt16 nId = pToolBox->GetCurItemId();
598766ce4d0SZheng Fan 	sal_uInt16 nSID = SID_TABLE_VERT_NONE;
599766ce4d0SZheng Fan 
600766ce4d0SZheng Fan 	EndTracking();
601766ce4d0SZheng Fan 	if (nId == 1)
602766ce4d0SZheng Fan     {
603766ce4d0SZheng Fan 		nSID = FN_NUM_BULLET_ON;
604766ce4d0SZheng Fan 	}
605766ce4d0SZheng Fan 	else if ( nId == 2)
606766ce4d0SZheng Fan 	{
607766ce4d0SZheng Fan 		nSID = FN_NUM_NUMBERING_ON;
608766ce4d0SZheng Fan 	}
609766ce4d0SZheng Fan 	SfxBoolItem aBoolItem(nSID, sal_True);
610766ce4d0SZheng Fan 	GetBindings()->GetDispatcher()->Execute(nSID, SFX_CALLMODE_RECORD, &aBoolItem, 0L);
611766ce4d0SZheng Fan 
612766ce4d0SZheng Fan 	return 0;
613766ce4d0SZheng Fan }
614766ce4d0SZheng Fan 
615766ce4d0SZheng Fan 
616766ce4d0SZheng Fan //================================for Vertical Alignment========================================
617766ce4d0SZheng Fan 
618766ce4d0SZheng Fan 
619766ce4d0SZheng Fan 
620766ce4d0SZheng Fan IMPL_LINK(ParaPropertyPanel, VertTbxSelectHandler, ToolBox*, pToolBox)
621766ce4d0SZheng Fan {
622766ce4d0SZheng Fan 	sal_uInt16 nId = pToolBox->GetCurItemId();
623766ce4d0SZheng Fan 	sal_uInt16 nSID = SID_TABLE_VERT_NONE;
624766ce4d0SZheng Fan 	EndTracking();
625766ce4d0SZheng Fan 	if (nId == 1)
626766ce4d0SZheng Fan     {
627766ce4d0SZheng Fan         nSID = SID_TABLE_VERT_NONE;
6283cac12cfSAndre Fischer 		maTBxVertAlign->SetItemState(IID_VERT_TOP, STATE_CHECK);
6293cac12cfSAndre Fischer 		maTBxVertAlign->SetItemState(IID_VERT_CENTER, STATE_NOCHECK);
6303cac12cfSAndre Fischer 		maTBxVertAlign->SetItemState(IID_VERT_BOTTOM, STATE_NOCHECK);
631766ce4d0SZheng Fan 	}
632766ce4d0SZheng Fan 	else if (nId == 2)
633766ce4d0SZheng Fan 	{
634766ce4d0SZheng Fan 		nSID = SID_TABLE_VERT_CENTER;
6353cac12cfSAndre Fischer 		maTBxVertAlign->SetItemState(IID_VERT_TOP, STATE_NOCHECK);
6363cac12cfSAndre Fischer 		maTBxVertAlign->SetItemState(IID_VERT_CENTER, STATE_CHECK);
6373cac12cfSAndre Fischer 		maTBxVertAlign->SetItemState(IID_VERT_BOTTOM, STATE_NOCHECK);
638766ce4d0SZheng Fan 	}
639766ce4d0SZheng Fan 	else if (nId == 3)
640766ce4d0SZheng Fan 	{
641766ce4d0SZheng Fan 		nSID = SID_TABLE_VERT_BOTTOM;
6423cac12cfSAndre Fischer 		maTBxVertAlign->SetItemState(IID_VERT_TOP, STATE_NOCHECK);
6433cac12cfSAndre Fischer 		maTBxVertAlign->SetItemState(IID_VERT_CENTER, STATE_NOCHECK);
6443cac12cfSAndre Fischer 		maTBxVertAlign->SetItemState(IID_VERT_BOTTOM, STATE_CHECK);
645766ce4d0SZheng Fan 	}
646766ce4d0SZheng Fan 	SfxBoolItem aBoolItem(nSID, sal_True);
647766ce4d0SZheng Fan 	GetBindings()->GetDispatcher()->Execute(nSID, SFX_CALLMODE_RECORD, &aBoolItem, 0L);
648766ce4d0SZheng Fan 
649766ce4d0SZheng Fan 	return 0;
650766ce4d0SZheng Fan }
651766ce4d0SZheng Fan 
652766ce4d0SZheng Fan void ParaPropertyPanel::VertStateChanged(sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState)
653766ce4d0SZheng Fan {
654766ce4d0SZheng Fan 	if (eState < SFX_ITEM_DONTCARE)
655766ce4d0SZheng Fan 	{
6563cac12cfSAndre Fischer 		maTBxVertAlign->SetItemState(IID_VERT_TOP, STATE_NOCHECK);
6573cac12cfSAndre Fischer 		maTBxVertAlign->SetItemState(IID_VERT_CENTER, STATE_NOCHECK);
6583cac12cfSAndre Fischer 		maTBxVertAlign->SetItemState(IID_VERT_BOTTOM, STATE_NOCHECK);
6593cac12cfSAndre Fischer 		maTBxVertAlign->EnableItem(IID_VERT_TOP, sal_False);
6603cac12cfSAndre Fischer 		maTBxVertAlign->EnableItem(IID_VERT_CENTER, sal_False);
6613cac12cfSAndre Fischer 		maTBxVertAlign->EnableItem(IID_VERT_BOTTOM, sal_False);
662766ce4d0SZheng Fan 	}
663766ce4d0SZheng Fan 	else
664766ce4d0SZheng Fan 	{
6653cac12cfSAndre Fischer 		maTBxVertAlign->EnableItem(IID_VERT_TOP, sal_True);
6663cac12cfSAndre Fischer 		maTBxVertAlign->EnableItem(IID_VERT_CENTER, sal_True);
6673cac12cfSAndre Fischer 		maTBxVertAlign->EnableItem(IID_VERT_BOTTOM, sal_True);
668766ce4d0SZheng Fan 		if ( (eState >= SFX_ITEM_DEFAULT) && (pState->ISA(SfxBoolItem)))
669766ce4d0SZheng Fan 		{
670766ce4d0SZheng Fan 			const SfxBoolItem* pItem= (const SfxBoolItem*)pState;
671766ce4d0SZheng Fan 			sal_Bool aBool = (sal_Bool)pItem->GetValue();
672766ce4d0SZheng Fan 
673766ce4d0SZheng Fan 			if (aBool)
674766ce4d0SZheng Fan 			{
675766ce4d0SZheng Fan 				if (nSID == SID_TABLE_VERT_NONE)
676766ce4d0SZheng Fan 				{
6773cac12cfSAndre Fischer 					maTBxVertAlign->SetItemState(IID_VERT_TOP, STATE_CHECK);
6783cac12cfSAndre Fischer 					maTBxVertAlign->SetItemState(IID_VERT_CENTER, STATE_NOCHECK);
6793cac12cfSAndre Fischer 					maTBxVertAlign->SetItemState(IID_VERT_BOTTOM, STATE_NOCHECK);
680766ce4d0SZheng Fan 				}
681766ce4d0SZheng Fan 				else if (nSID == SID_TABLE_VERT_CENTER)
682766ce4d0SZheng Fan 				{
6833cac12cfSAndre Fischer 					maTBxVertAlign->SetItemState(IID_VERT_TOP, STATE_NOCHECK);
6843cac12cfSAndre Fischer 					maTBxVertAlign->SetItemState(IID_VERT_CENTER, STATE_CHECK);
6853cac12cfSAndre Fischer 					maTBxVertAlign->SetItemState(IID_VERT_BOTTOM, STATE_NOCHECK);
686766ce4d0SZheng Fan 				}
687766ce4d0SZheng Fan 				else if (nSID == SID_TABLE_VERT_BOTTOM)
688766ce4d0SZheng Fan 				{
6893cac12cfSAndre Fischer 					maTBxVertAlign->SetItemState(IID_VERT_TOP, STATE_NOCHECK);
6903cac12cfSAndre Fischer 					maTBxVertAlign->SetItemState(IID_VERT_CENTER, STATE_NOCHECK);
6913cac12cfSAndre Fischer 					maTBxVertAlign->SetItemState(IID_VERT_BOTTOM, STATE_CHECK);
692766ce4d0SZheng Fan 				}
693766ce4d0SZheng Fan 			}
694766ce4d0SZheng Fan 			else
695766ce4d0SZheng Fan 			{
696766ce4d0SZheng Fan 				if (nSID == SID_TABLE_VERT_NONE)
697766ce4d0SZheng Fan 				{
6983cac12cfSAndre Fischer 					maTBxVertAlign->SetItemState(IID_VERT_TOP, STATE_NOCHECK);
699766ce4d0SZheng Fan 				}
700766ce4d0SZheng Fan 				else if (nSID == SID_TABLE_VERT_CENTER)
701766ce4d0SZheng Fan 				{
7023cac12cfSAndre Fischer 					maTBxVertAlign->SetItemState(IID_VERT_CENTER, STATE_NOCHECK);
703766ce4d0SZheng Fan 				}
704766ce4d0SZheng Fan 				else if (nSID == SID_TABLE_VERT_BOTTOM)
705766ce4d0SZheng Fan 				{
7063cac12cfSAndre Fischer 					maTBxVertAlign->SetItemState(IID_VERT_BOTTOM, STATE_NOCHECK);
707766ce4d0SZheng Fan 				}
708766ce4d0SZheng Fan 			}
709766ce4d0SZheng Fan 		}
710766ce4d0SZheng Fan 		else
711766ce4d0SZheng Fan 		{
7123cac12cfSAndre Fischer 			maTBxVertAlign->SetItemState(IID_VERT_TOP, STATE_NOCHECK);
7133cac12cfSAndre Fischer 			maTBxVertAlign->SetItemState(IID_VERT_CENTER, STATE_NOCHECK);
7143cac12cfSAndre Fischer 			maTBxVertAlign->SetItemState(IID_VERT_BOTTOM, STATE_NOCHECK);
715766ce4d0SZheng Fan 		}
716766ce4d0SZheng Fan 	}
717766ce4d0SZheng Fan }
718766ce4d0SZheng Fan //==================================for Background color=====================
719766ce4d0SZheng Fan 
720766ce4d0SZheng Fan IMPL_LINK(ParaPropertyPanel, ToolBoxBackColorDDHandler,ToolBox*, pToolBox)
721766ce4d0SZheng Fan {
722766ce4d0SZheng Fan 	sal_uInt16 nId = pToolBox->GetCurItemId();
723766ce4d0SZheng Fan 	OSL_ASSERT(nId == TBI_BACK_COLOR);
724766ce4d0SZheng Fan 	if(nId == TBI_BACK_COLOR)
725766ce4d0SZheng Fan 	{
726766ce4d0SZheng Fan 		pToolBox->SetItemDown( nId, true );
727766ce4d0SZheng Fan 		maBGColorPopup.Show(*pToolBox);
728766ce4d0SZheng Fan 		maBGColorPopup.SetCurrentColor(maColor, mbColorAvailable);
729766ce4d0SZheng Fan 	}
730766ce4d0SZheng Fan 	return 0;
731766ce4d0SZheng Fan }
732766ce4d0SZheng Fan 
733766ce4d0SZheng Fan IMPL_LINK( ParaPropertyPanel, ImplPopupModeEndHdl, FloatingWindow*, EMPTYARG )
734766ce4d0SZheng Fan {
735766ce4d0SZheng Fan 	return 0;
736766ce4d0SZheng Fan }
737766ce4d0SZheng Fan 
738766ce4d0SZheng Fan void ParaPropertyPanel::ShowMenu (void)
739766ce4d0SZheng Fan {
740766ce4d0SZheng Fan     if (mpBindings != NULL)
741766ce4d0SZheng Fan     {
742766ce4d0SZheng Fan         SfxDispatcher* pDispatcher = mpBindings->GetDispatcher();
743766ce4d0SZheng Fan         if (pDispatcher != NULL)
744766ce4d0SZheng Fan             pDispatcher->Execute(SID_PARA_DLG, SFX_CALLMODE_ASYNCHRON);
745766ce4d0SZheng Fan     }
746766ce4d0SZheng Fan }
747766ce4d0SZheng Fan 
7481715803bSPavel Janík void ParaPropertyPanel::ParaBKGStateChanged(sal_uInt16 /* nSID */, SfxItemState eState, const SfxPoolItem* pState)
749766ce4d0SZheng Fan {
750445e496eSZheng Fan 	if( eState >= SFX_ITEM_DEFAULT && pState->ISA(SvxColorItem))
751766ce4d0SZheng Fan 	{
752445e496eSZheng Fan 		const SvxColorItem* pItem =  (const SvxColorItem*)pState;
753445e496eSZheng Fan 		maColor = pItem->GetValue();
754766ce4d0SZheng Fan 		mbColorAvailable = sal_True;
755766ce4d0SZheng Fan 		mpColorUpdater->Update(maColor);
756766ce4d0SZheng Fan 	}
757766ce4d0SZheng Fan 	else
758766ce4d0SZheng Fan 	{
759766ce4d0SZheng Fan 		mbColorAvailable = sal_False;
760766ce4d0SZheng Fan 		maColor.SetColor(COL_AUTO);
761766ce4d0SZheng Fan 		mpColorUpdater->Update(maColor);
762766ce4d0SZheng Fan 	}
763766ce4d0SZheng Fan }
764766ce4d0SZheng Fan 
765766ce4d0SZheng Fan void ParaPropertyPanel::SetBGColor (
7661715803bSPavel Janík     const String& /* rsColorName */,
767766ce4d0SZheng Fan     const Color aColor)
768766ce4d0SZheng Fan {
769766ce4d0SZheng Fan 	SvxColorItem aColorItem(aColor, SID_BACKGROUND_COLOR);
770766ce4d0SZheng Fan 	mpBindings->GetDispatcher()->Execute(SID_BACKGROUND_COLOR, SFX_CALLMODE_RECORD, &aColorItem, 0L);
771766ce4d0SZheng Fan 	maColor = aColor;
772766ce4d0SZheng Fan }
773766ce4d0SZheng Fan 
774766ce4d0SZheng Fan //==================================for Paragraph Alignment=====================
775766ce4d0SZheng Fan IMPL_LINK( ParaPropertyPanel, AlignStyleModifyHdl_Impl, ToolBox*, pBox )
776766ce4d0SZheng Fan {
777766ce4d0SZheng Fan 	switch (pBox->GetCurItemId())
778766ce4d0SZheng Fan 	{
779766ce4d0SZheng Fan 	case BT_SUBSTLEFT:
780766ce4d0SZheng Fan 		{
781766ce4d0SZheng Fan 			pBox->SetItemState(BT_SUBSTLEFT,STATE_CHECK);
782766ce4d0SZheng Fan 			pBox->SetItemState(BT_SUBSTCENTER,STATE_NOCHECK);
783766ce4d0SZheng Fan 			pBox->SetItemState(BT_SUBSTRIGHT,STATE_NOCHECK);
784766ce4d0SZheng Fan 			pBox->SetItemState(BT_SUBSTJUSTIFY,STATE_NOCHECK);
785766ce4d0SZheng Fan 			SfxBoolItem aBoolItem( SID_ATTR_PARA_ADJUST_LEFT,  sal_True );
786766ce4d0SZheng Fan 			GetBindings()->GetDispatcher()->Execute(SID_ATTR_PARA_ADJUST_LEFT, SFX_CALLMODE_RECORD, &aBoolItem, 0L);
787766ce4d0SZheng Fan 		}
788766ce4d0SZheng Fan 		break;
789766ce4d0SZheng Fan 	case BT_SUBSTCENTER:
790766ce4d0SZheng Fan 		{
791766ce4d0SZheng Fan 			pBox->SetItemState(BT_SUBSTCENTER,STATE_CHECK);
792766ce4d0SZheng Fan 			pBox->SetItemState(BT_SUBSTLEFT,STATE_NOCHECK);
793766ce4d0SZheng Fan 			pBox->SetItemState(BT_SUBSTRIGHT,STATE_NOCHECK);
794766ce4d0SZheng Fan 			pBox->SetItemState(BT_SUBSTJUSTIFY,STATE_NOCHECK);
795766ce4d0SZheng Fan 			SfxBoolItem aBoolItem( SID_ATTR_PARA_ADJUST_CENTER, sal_True );
796766ce4d0SZheng Fan 			GetBindings()->GetDispatcher()->Execute(SID_ATTR_PARA_ADJUST_CENTER, SFX_CALLMODE_RECORD, &aBoolItem, 0L);
797766ce4d0SZheng Fan 		}
798766ce4d0SZheng Fan 		break;
799766ce4d0SZheng Fan 	case BT_SUBSTRIGHT:
800766ce4d0SZheng Fan 		{
801766ce4d0SZheng Fan 			pBox->SetItemState(BT_SUBSTRIGHT,STATE_CHECK);
802766ce4d0SZheng Fan 			pBox->SetItemState(BT_SUBSTLEFT,STATE_NOCHECK);
803766ce4d0SZheng Fan 			pBox->SetItemState(BT_SUBSTCENTER,STATE_NOCHECK);
804766ce4d0SZheng Fan 			pBox->SetItemState(BT_SUBSTJUSTIFY,STATE_NOCHECK);
805766ce4d0SZheng Fan 			SfxBoolItem aBoolItem( SID_ATTR_PARA_ADJUST_RIGHT, sal_True );
806766ce4d0SZheng Fan 			GetBindings()->GetDispatcher()->Execute(SID_ATTR_PARA_ADJUST_RIGHT, SFX_CALLMODE_RECORD, &aBoolItem, 0L);
807766ce4d0SZheng Fan 		}
808766ce4d0SZheng Fan 		break;
809766ce4d0SZheng Fan 	case BT_SUBSTJUSTIFY:
810766ce4d0SZheng Fan 		{
811766ce4d0SZheng Fan 			pBox->SetItemState(BT_SUBSTJUSTIFY,STATE_CHECK);
812766ce4d0SZheng Fan 			pBox->SetItemState(BT_SUBSTLEFT,STATE_NOCHECK);
813766ce4d0SZheng Fan 			pBox->SetItemState(BT_SUBSTRIGHT,STATE_NOCHECK);
814766ce4d0SZheng Fan 			pBox->SetItemState(BT_SUBSTCENTER,STATE_NOCHECK);
815766ce4d0SZheng Fan 			SfxBoolItem aBoolItem( SID_ATTR_PARA_ADJUST_BLOCK, sal_True );
816766ce4d0SZheng Fan 			GetBindings()->GetDispatcher()->Execute(SID_ATTR_PARA_ADJUST_BLOCK, SFX_CALLMODE_RECORD, &aBoolItem, 0L);
817766ce4d0SZheng Fan 		}
818766ce4d0SZheng Fan 		break;
819766ce4d0SZheng Fan 	}
820766ce4d0SZheng Fan 
821766ce4d0SZheng Fan 	return 0;
822766ce4d0SZheng Fan }
823766ce4d0SZheng Fan //==================================for Paragraph Indent=====================
8241715803bSPavel Janík IMPL_LINK( ParaPropertyPanel, ModifyIndentHdl_Impl, SvxRelativeField*, /* pBox */ )
825766ce4d0SZheng Fan {
826512ec161SZheng Fan 	SvxLRSpaceItem aMargin( SID_ATTR_PARA_LRSPACE );
827766ce4d0SZheng Fan 	aMargin.SetTxtLeft( (const long)GetCoreValue( *maLeftIndent.get(), m_eLRSpaceUnit ) );
828766ce4d0SZheng Fan 	aMargin.SetRight( (const long)GetCoreValue( *maRightIndent.get(), m_eLRSpaceUnit ) );
829766ce4d0SZheng Fan 	aMargin.SetTxtFirstLineOfst( (const short)GetCoreValue( *maFLineIndent.get(), m_eLRSpaceUnit ) );
830766ce4d0SZheng Fan 
831766ce4d0SZheng Fan 	GetBindings()->GetDispatcher()->Execute(
832512ec161SZheng Fan 		SID_ATTR_PARA_LRSPACE, SFX_CALLMODE_RECORD, &aMargin, 0L);
833766ce4d0SZheng Fan 	return 0;
834766ce4d0SZheng Fan }
835766ce4d0SZheng Fan 
836766ce4d0SZheng Fan IMPL_LINK(ParaPropertyPanel, ClickIndent_IncDec_Hdl_Impl, ToolBox *, pControl)
837766ce4d0SZheng Fan {
838766ce4d0SZheng Fan 	switch (pControl->GetCurItemId())
839766ce4d0SZheng Fan 	{
840766ce4d0SZheng Fan 		case INDENT_INCREMENT:
841766ce4d0SZheng Fan 		{
842766ce4d0SZheng Fan 			switch (maContext.GetCombinedContext())
843766ce4d0SZheng Fan 			{
844766ce4d0SZheng Fan 				case CombinedEnumContext(Application_Writer, Context_Default):
845766ce4d0SZheng Fan 				case CombinedEnumContext(Application_Writer, Context_Text):
846766ce4d0SZheng Fan 				case CombinedEnumContext(Application_Writer, Context_Table):
847766ce4d0SZheng Fan 				{
848766ce4d0SZheng Fan 					SfxBoolItem aMargin( SID_INC_INDENT, sal_True );
849766ce4d0SZheng Fan 					GetBindings()->GetDispatcher()->Execute(
850766ce4d0SZheng Fan 						SID_INC_INDENT, SFX_CALLMODE_RECORD, &aMargin, 0L);
851766ce4d0SZheng Fan 				}
852766ce4d0SZheng Fan 				break;
853766ce4d0SZheng Fan 				default:
854766ce4d0SZheng Fan 				{
855512ec161SZheng Fan 					SvxLRSpaceItem aMargin( SID_ATTR_PARA_LRSPACE );
856766ce4d0SZheng Fan 
857766ce4d0SZheng Fan 					maTxtLeft += INDENT_STEP;
858766ce4d0SZheng Fan 					sal_Int64 nVal = OutputDevice::LogicToLogic( maTxtLeft, (MapUnit)(SFX_MAPUNIT_TWIP), MAP_100TH_MM );
859766ce4d0SZheng Fan 					nVal = OutputDevice::LogicToLogic( (long)nVal, MAP_100TH_MM, (MapUnit)m_eLRSpaceUnit );
860766ce4d0SZheng Fan 					aMargin.SetTxtLeft( (const long)nVal );
861766ce4d0SZheng Fan 					aMargin.SetRight( (const long)GetCoreValue( *maRightIndent.get(), m_eLRSpaceUnit ) );
862766ce4d0SZheng Fan 					aMargin.SetTxtFirstLineOfst( (const short)GetCoreValue( *maFLineIndent.get(), m_eLRSpaceUnit ) );
863766ce4d0SZheng Fan 
864766ce4d0SZheng Fan 					GetBindings()->GetDispatcher()->Execute(
865512ec161SZheng Fan 						SID_ATTR_PARA_LRSPACE, SFX_CALLMODE_RECORD, &aMargin, 0L);
866766ce4d0SZheng Fan 				}
867766ce4d0SZheng Fan 			}
868766ce4d0SZheng Fan 		}
869766ce4d0SZheng Fan 		break;
870766ce4d0SZheng Fan 		case INDENT_DECREMENT:
871766ce4d0SZheng Fan 		{
872766ce4d0SZheng Fan 			switch (maContext.GetCombinedContext())
873766ce4d0SZheng Fan 			{
874766ce4d0SZheng Fan 				case CombinedEnumContext(Application_Writer, Context_Default):
875766ce4d0SZheng Fan 				case CombinedEnumContext(Application_Writer, Context_Text):
876766ce4d0SZheng Fan 				case CombinedEnumContext(Application_Writer, Context_Table):
877766ce4d0SZheng Fan 				{
878766ce4d0SZheng Fan 					SfxBoolItem aMargin( SID_DEC_INDENT, sal_True );
879766ce4d0SZheng Fan 					GetBindings()->GetDispatcher()->Execute(
880766ce4d0SZheng Fan 						SID_DEC_INDENT, SFX_CALLMODE_RECORD, &aMargin, 0L);
881766ce4d0SZheng Fan 				}
882766ce4d0SZheng Fan 				break;
883766ce4d0SZheng Fan 				default:
884766ce4d0SZheng Fan 				{
885766ce4d0SZheng Fan 					if((maTxtLeft - INDENT_STEP) < 0)
886766ce4d0SZheng Fan 						maTxtLeft = DEFAULT_VALUE;
887766ce4d0SZheng Fan 					else
888766ce4d0SZheng Fan 						maTxtLeft -= INDENT_STEP;
889766ce4d0SZheng Fan 
890512ec161SZheng Fan 					SvxLRSpaceItem aMargin( SID_ATTR_PARA_LRSPACE );
891766ce4d0SZheng Fan 
892766ce4d0SZheng Fan 					sal_Int64 nVal = OutputDevice::LogicToLogic( maTxtLeft, (MapUnit)(SFX_MAPUNIT_TWIP), MAP_100TH_MM );
893766ce4d0SZheng Fan 					nVal = OutputDevice::LogicToLogic( (long)nVal, MAP_100TH_MM, (MapUnit)m_eLRSpaceUnit );
894766ce4d0SZheng Fan 
895766ce4d0SZheng Fan 					aMargin.SetTxtLeft( (const long)nVal );
896766ce4d0SZheng Fan 					aMargin.SetRight( (const long)GetCoreValue( *maRightIndent.get(), m_eLRSpaceUnit ) );
897766ce4d0SZheng Fan 					aMargin.SetTxtFirstLineOfst( (const short)GetCoreValue( *maFLineIndent.get(), m_eLRSpaceUnit ) );
898766ce4d0SZheng Fan 
899766ce4d0SZheng Fan 					GetBindings()->GetDispatcher()->Execute(
900512ec161SZheng Fan 						SID_ATTR_PARA_LRSPACE, SFX_CALLMODE_RECORD, &aMargin, 0L);
901766ce4d0SZheng Fan 				}
902766ce4d0SZheng Fan 			}
903766ce4d0SZheng Fan 		}
904766ce4d0SZheng Fan 		break;
905766ce4d0SZheng Fan 		case ID_HANGING_INDENT:
906766ce4d0SZheng Fan 		{
907512ec161SZheng Fan 			SvxLRSpaceItem aMargin( SID_ATTR_PARA_LRSPACE );
908766ce4d0SZheng Fan 			aMargin.SetTxtLeft( (const long)GetCoreValue( *maLeftIndent.get(), m_eLRSpaceUnit ) + (const short)GetCoreValue( *maFLineIndent.get(), m_eLRSpaceUnit ) );
909766ce4d0SZheng Fan 			aMargin.SetRight( (const long)GetCoreValue( *maRightIndent.get(), m_eLRSpaceUnit ) );
910766ce4d0SZheng Fan 			aMargin.SetTxtFirstLineOfst( ((const short)GetCoreValue( *maFLineIndent.get(), m_eLRSpaceUnit ))*(-1) );
911766ce4d0SZheng Fan 
912766ce4d0SZheng Fan 			GetBindings()->GetDispatcher()->Execute(
913512ec161SZheng Fan 				SID_ATTR_PARA_LRSPACE, SFX_CALLMODE_RECORD, &aMargin, 0L);
914766ce4d0SZheng Fan 		}
915766ce4d0SZheng Fan 		break;
916766ce4d0SZheng Fan 	}
917766ce4d0SZheng Fan 	return( 0L );
918766ce4d0SZheng Fan }
919766ce4d0SZheng Fan 
920766ce4d0SZheng Fan IMPL_LINK(ParaPropertyPanel, ClickProDemote_Hdl_Impl, ToolBox *, pControl)
921766ce4d0SZheng Fan {
922395b75f9SOliver-Rainer Wittmann     switch (pControl->GetCurItemId())
923395b75f9SOliver-Rainer Wittmann     {
924395b75f9SOliver-Rainer Wittmann         case BT_TBX_INDENT_PROMOTE:
925395b75f9SOliver-Rainer Wittmann         {
926395b75f9SOliver-Rainer Wittmann             GetBindings()->GetDispatcher()->Execute( SID_OUTLINE_RIGHT, SFX_CALLMODE_RECORD );
927395b75f9SOliver-Rainer Wittmann         }
928395b75f9SOliver-Rainer Wittmann         break;
929395b75f9SOliver-Rainer Wittmann         case BT_TBX_INDENT_DEMOTE:
930395b75f9SOliver-Rainer Wittmann         {
931395b75f9SOliver-Rainer Wittmann             GetBindings()->GetDispatcher()->Execute( SID_OUTLINE_LEFT, SFX_CALLMODE_RECORD );
932395b75f9SOliver-Rainer Wittmann         }
933395b75f9SOliver-Rainer Wittmann         break;
934395b75f9SOliver-Rainer Wittmann         case SD_HANGING_INDENT:
935395b75f9SOliver-Rainer Wittmann         {
936395b75f9SOliver-Rainer Wittmann             SvxLRSpaceItem aMargin( SID_ATTR_PARA_LRSPACE );
937395b75f9SOliver-Rainer Wittmann             aMargin.SetTxtLeft( (const long)GetCoreValue( *maLeftIndent.get(), m_eLRSpaceUnit ) + (const short)GetCoreValue( *maFLineIndent.get(), m_eLRSpaceUnit ) );
938395b75f9SOliver-Rainer Wittmann             aMargin.SetRight( (const long)GetCoreValue( *maRightIndent.get(), m_eLRSpaceUnit ) );
939395b75f9SOliver-Rainer Wittmann             aMargin.SetTxtFirstLineOfst( ((const short)GetCoreValue( *maFLineIndent.get(), m_eLRSpaceUnit ))*(-1) );
940395b75f9SOliver-Rainer Wittmann 
941395b75f9SOliver-Rainer Wittmann             GetBindings()->GetDispatcher()->Execute( SID_ATTR_PARA_LRSPACE, SFX_CALLMODE_RECORD, &aMargin, 0L);
942395b75f9SOliver-Rainer Wittmann         }
943395b75f9SOliver-Rainer Wittmann         break;
944395b75f9SOliver-Rainer Wittmann     }
945395b75f9SOliver-Rainer Wittmann     return( 0L );
946766ce4d0SZheng Fan }
947766ce4d0SZheng Fan //==================================for Paragraph Line Spacing=====================
948766ce4d0SZheng Fan 
949766ce4d0SZheng Fan IMPL_LINK( ParaPropertyPanel, ClickLineSPDropDownHdl_Impl, ToolBox*, pBox )
950766ce4d0SZheng Fan {
951766ce4d0SZheng Fan 
952766ce4d0SZheng Fan 	const sal_uInt16 nId = pBox->GetCurItemId();
953766ce4d0SZheng Fan 	OSL_ASSERT(nId == TOOLBOX_ITEM1);
954766ce4d0SZheng Fan 	if(nId == TOOLBOX_ITEM1)
955766ce4d0SZheng Fan 	{
956766ce4d0SZheng Fan 		pBox->SetItemDown( nId, true );
957766ce4d0SZheng Fan 		maLineSpacePopup.Rearrange(meLnSpState,m_eMetricUnit,mpLnSPItem,maContext);
958766ce4d0SZheng Fan 		maLineSpacePopup.Show(*pBox);
959766ce4d0SZheng Fan 
960766ce4d0SZheng Fan 	}
961766ce4d0SZheng Fan 	return (0L);
962766ce4d0SZheng Fan }
963766ce4d0SZheng Fan 
964766ce4d0SZheng Fan //==================================for Paragraph Spacing=====================
9651715803bSPavel Janík IMPL_LINK( ParaPropertyPanel, ULSpaceHdl_Impl, SvxRelativeField*, /* pBox */)
966766ce4d0SZheng Fan {
967512ec161SZheng Fan 	SvxULSpaceItem aMargin( SID_ATTR_PARA_ULSPACE );
968766ce4d0SZheng Fan 	aMargin.SetUpper( (sal_uInt16)GetCoreValue( *maTopDist.get(), m_eULSpaceUnit ) );
969766ce4d0SZheng Fan 	aMargin.SetLower( (sal_uInt16)GetCoreValue( *maBottomDist.get(), m_eULSpaceUnit ) );
970766ce4d0SZheng Fan 
971766ce4d0SZheng Fan 	GetBindings()->GetDispatcher()->Execute(
972512ec161SZheng Fan 		SID_ATTR_PARA_ULSPACE, SFX_CALLMODE_RECORD, &aMargin, 0L);
973766ce4d0SZheng Fan 	return 0L;
974766ce4d0SZheng Fan }
975766ce4d0SZheng Fan 
976766ce4d0SZheng Fan IMPL_LINK(ParaPropertyPanel, ClickUL_IncDec_Hdl_Impl, ToolBox *, pControl)
977766ce4d0SZheng Fan {
978766ce4d0SZheng Fan 	switch (pControl->GetCurItemId())
979766ce4d0SZheng Fan 		{
980766ce4d0SZheng Fan 	    case UL_INCREMENT:
981766ce4d0SZheng Fan 		     {
982512ec161SZheng Fan 				 SvxULSpaceItem aMargin( SID_ATTR_PARA_ULSPACE );
983766ce4d0SZheng Fan 
984766ce4d0SZheng Fan 				 maUpper += UL_STEP;
985766ce4d0SZheng Fan 				 sal_Int64 nVal = OutputDevice::LogicToLogic( maUpper, (MapUnit)(SFX_MAPUNIT_TWIP), MAP_100TH_MM );
986766ce4d0SZheng Fan 				 nVal = OutputDevice::LogicToLogic( (long)nVal, MAP_100TH_MM, (MapUnit)m_eLRSpaceUnit );
987766ce4d0SZheng Fan 				 aMargin.SetUpper( (const sal_uInt16)nVal );
988766ce4d0SZheng Fan 
989766ce4d0SZheng Fan 				 maLower += UL_STEP;
990766ce4d0SZheng Fan 				 nVal = OutputDevice::LogicToLogic( maLower, (MapUnit)(SFX_MAPUNIT_TWIP), MAP_100TH_MM );
991766ce4d0SZheng Fan 				 nVal = OutputDevice::LogicToLogic( (long)nVal, MAP_100TH_MM, (MapUnit)m_eLRSpaceUnit );
992766ce4d0SZheng Fan 	             aMargin.SetLower( (const sal_uInt16)nVal );
993766ce4d0SZheng Fan 
994766ce4d0SZheng Fan 				 GetBindings()->GetDispatcher()->Execute(
995512ec161SZheng Fan 					 SID_ATTR_PARA_ULSPACE, SFX_CALLMODE_RECORD, &aMargin, 0L);
996766ce4d0SZheng Fan 			 }
997766ce4d0SZheng Fan 			 break;
998766ce4d0SZheng Fan 		case UL_DECREMENT:
999766ce4d0SZheng Fan 			{
1000512ec161SZheng Fan 				 SvxULSpaceItem aMargin( SID_ATTR_PARA_ULSPACE );
1001766ce4d0SZheng Fan 
1002766ce4d0SZheng Fan 				 if( maUpper >= UL_STEP )
1003766ce4d0SZheng Fan 				 {
1004766ce4d0SZheng Fan 					maUpper -= UL_STEP;
1005766ce4d0SZheng Fan 					sal_Int64	nVal = OutputDevice::LogicToLogic( maUpper, (MapUnit)(SFX_MAPUNIT_TWIP), MAP_100TH_MM );
1006766ce4d0SZheng Fan 					nVal = OutputDevice::LogicToLogic( (long)nVal, MAP_100TH_MM, (MapUnit)m_eLRSpaceUnit );
1007766ce4d0SZheng Fan 					aMargin.SetUpper( (const sal_uInt16)nVal );
1008766ce4d0SZheng Fan 				 }
1009766ce4d0SZheng Fan 				 else
1010766ce4d0SZheng Fan 					aMargin.SetUpper( DEFAULT_VALUE );
1011766ce4d0SZheng Fan 				 if( maLower >= UL_STEP )
1012766ce4d0SZheng Fan 				 {
1013766ce4d0SZheng Fan 					maLower -= UL_STEP;
1014766ce4d0SZheng Fan 					sal_Int64	nVal = OutputDevice::LogicToLogic( maLower, (MapUnit)(SFX_MAPUNIT_TWIP), MAP_100TH_MM );
1015766ce4d0SZheng Fan 					nVal = OutputDevice::LogicToLogic( (long)nVal, MAP_100TH_MM, (MapUnit)m_eLRSpaceUnit );
1016766ce4d0SZheng Fan 					aMargin.SetLower( (const sal_uInt16)nVal );
1017766ce4d0SZheng Fan 				 }
1018766ce4d0SZheng Fan 				 else
1019766ce4d0SZheng Fan 					aMargin.SetLower( DEFAULT_VALUE );
1020766ce4d0SZheng Fan 
1021766ce4d0SZheng Fan 				 GetBindings()->GetDispatcher()->Execute(
1022512ec161SZheng Fan 					 SID_ATTR_PARA_ULSPACE, SFX_CALLMODE_RECORD, &aMargin, 0L);
1023766ce4d0SZheng Fan 			}
1024766ce4d0SZheng Fan 			break;
1025766ce4d0SZheng Fan 		}
1026766ce4d0SZheng Fan 	return( 0L );
1027766ce4d0SZheng Fan }
1028766ce4d0SZheng Fan 
1029766ce4d0SZheng Fan //==================================for Paragraph State change=====================
103045da7d5eSAndre Fischer void ParaPropertyPanel::NotifyItemUpdate(
103145da7d5eSAndre Fischer     sal_uInt16 nSID,
103245da7d5eSAndre Fischer     SfxItemState eState,
103345da7d5eSAndre Fischer     const SfxPoolItem* pState,
103445da7d5eSAndre Fischer     const bool bIsEnabled)
103545da7d5eSAndre Fischer {
103645da7d5eSAndre Fischer     (void)bIsEnabled;
103745da7d5eSAndre Fischer 
1038766ce4d0SZheng Fan 	if( nSID == SID_ATTR_METRIC )
1039766ce4d0SZheng Fan 	{
1040766ce4d0SZheng Fan 		m_eMetricUnit = GetCurrentUnit(eState,pState);
1041766ce4d0SZheng Fan 		if( m_eMetricUnit!=m_last_eMetricUnit )
1042766ce4d0SZheng Fan 		{
1043766ce4d0SZheng Fan 			SetFieldUnit( *maLeftIndent.get(), m_eMetricUnit );
1044766ce4d0SZheng Fan 			SetFieldUnit( *maRightIndent.get(), m_eMetricUnit );
1045766ce4d0SZheng Fan 			SetFieldUnit( *maFLineIndent.get(), m_eMetricUnit );
1046766ce4d0SZheng Fan 			SetFieldUnit( *maTopDist.get(), m_eMetricUnit );
1047766ce4d0SZheng Fan 			SetFieldUnit( *maBottomDist.get(), m_eMetricUnit );
1048766ce4d0SZheng Fan 		}
1049766ce4d0SZheng Fan 		m_last_eMetricUnit = m_eMetricUnit;
1050766ce4d0SZheng Fan 	}
1051766ce4d0SZheng Fan 
1052766ce4d0SZheng Fan 	if( nSID == SID_ATTR_PARA_LRSPACE )
1053766ce4d0SZheng Fan 		StateChangedIndentImpl( nSID, eState, pState );
1054766ce4d0SZheng Fan 
1055766ce4d0SZheng Fan 	if( nSID == SID_ATTR_PARA_LINESPACE )
1056766ce4d0SZheng Fan 		StateChangedLnSPImpl( nSID, eState, pState );
1057766ce4d0SZheng Fan 
1058766ce4d0SZheng Fan 	if( nSID == SID_ATTR_PARA_ULSPACE)
1059766ce4d0SZheng Fan 		StateChangedULImpl( nSID, eState, pState );
1060766ce4d0SZheng Fan 
1061766ce4d0SZheng 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)
1062766ce4d0SZheng Fan 		StateChangedAlignmentImpl( nSID, eState, pState );
1063766ce4d0SZheng Fan 
1064766ce4d0SZheng Fan 	if (nSID==SID_OUTLINE_LEFT || nSID==SID_OUTLINE_RIGHT)
1065766ce4d0SZheng Fan 		StateChangeOutLineImpl( nSID, eState, pState );
1066766ce4d0SZheng Fan 
1067766ce4d0SZheng Fan 	if (nSID==SID_INC_INDENT || nSID==SID_DEC_INDENT)
1068766ce4d0SZheng Fan 		StateChangeIncDecImpl( nSID, eState, pState );
106937fee4fdSAndre Fischer 	// Add toggle state for numbering and bullet icons
1070766ce4d0SZheng Fan 	if (nSID==FN_NUM_NUMBERING_ON || nSID==FN_NUM_BULLET_ON)
1071766ce4d0SZheng Fan 		StateChangeBulletNumImpl( nSID, eState, pState );
1072766ce4d0SZheng Fan 
1073766ce4d0SZheng Fan 	//Get the num rule index data of the current selection
1074766ce4d0SZheng Fan 	if ( nSID == FN_BUL_NUM_RULE_INDEX ||nSID == FN_NUM_NUM_RULE_INDEX)
1075766ce4d0SZheng Fan 		StateChangeBulletNumRuleImpl( nSID, eState, pState );
1076766ce4d0SZheng Fan 
1077766ce4d0SZheng Fan 	if ((nSID == SID_TABLE_VERT_NONE)||(nSID == SID_TABLE_VERT_CENTER)||(nSID == SID_TABLE_VERT_BOTTOM))
1078766ce4d0SZheng Fan 	{
1079766ce4d0SZheng Fan 		VertStateChanged( nSID, eState, pState);
1080766ce4d0SZheng Fan 	}
1081766ce4d0SZheng Fan 	else if (nSID == SID_BACKGROUND_COLOR)
1082766ce4d0SZheng Fan 	{
1083766ce4d0SZheng Fan 		ParaBKGStateChanged(nSID, eState, pState);
1084766ce4d0SZheng Fan 	}
1085766ce4d0SZheng Fan }
1086766ce4d0SZheng Fan 
108745da7d5eSAndre Fischer 
108845da7d5eSAndre Fischer 
108945da7d5eSAndre Fischer 
1090766ce4d0SZheng Fan void ParaPropertyPanel::StateChangedAlignmentImpl( sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState )
1091766ce4d0SZheng Fan {
1092766ce4d0SZheng Fan 	if( eState >= SFX_ITEM_AVAILABLE )
1093766ce4d0SZheng Fan 	{
1094766ce4d0SZheng Fan 		const SfxBoolItem* pItem = (const SfxBoolItem*)pState;
1095766ce4d0SZheng Fan 		bool IsChecked = (bool)pItem->GetValue();
1096766ce4d0SZheng Fan 		switch (nSID)
1097766ce4d0SZheng Fan 		{
1098766ce4d0SZheng Fan 		case SID_ATTR_PARA_ADJUST_LEFT:
1099766ce4d0SZheng Fan 			{
1100766ce4d0SZheng Fan 				if(IsChecked)
1101766ce4d0SZheng Fan 				{
1102766ce4d0SZheng Fan 					maAlignToolBox->SetItemState(BT_SUBSTLEFT,STATE_CHECK);
1103766ce4d0SZheng Fan 					maAlignToolBox->SetItemState(BT_SUBSTCENTER,STATE_NOCHECK);
1104766ce4d0SZheng Fan 					maAlignToolBox->SetItemState(BT_SUBSTRIGHT,STATE_NOCHECK);
1105766ce4d0SZheng Fan 					maAlignToolBox->SetItemState(BT_SUBSTJUSTIFY,STATE_NOCHECK);
1106766ce4d0SZheng Fan 				}
1107766ce4d0SZheng Fan 				else
1108766ce4d0SZheng Fan 					maAlignToolBox->SetItemState(BT_SUBSTLEFT,STATE_NOCHECK);
1109766ce4d0SZheng Fan 			}
1110766ce4d0SZheng Fan 			break;
1111766ce4d0SZheng Fan 		case SID_ATTR_PARA_ADJUST_CENTER:
1112766ce4d0SZheng Fan 			{
1113766ce4d0SZheng Fan 				if(IsChecked)
1114766ce4d0SZheng Fan 				{
1115766ce4d0SZheng Fan 					maAlignToolBox->SetItemState(BT_SUBSTCENTER,STATE_CHECK);
1116766ce4d0SZheng Fan 					maAlignToolBox->SetItemState(BT_SUBSTLEFT,STATE_NOCHECK);
1117766ce4d0SZheng Fan 					maAlignToolBox->SetItemState(BT_SUBSTRIGHT,STATE_NOCHECK);
1118766ce4d0SZheng Fan 					maAlignToolBox->SetItemState(BT_SUBSTJUSTIFY,STATE_NOCHECK);
1119766ce4d0SZheng Fan 				}
1120766ce4d0SZheng Fan 				else
1121766ce4d0SZheng Fan 					maAlignToolBox->SetItemState(BT_SUBSTCENTER,STATE_NOCHECK);
1122766ce4d0SZheng Fan 			}
1123766ce4d0SZheng Fan 			break;
1124766ce4d0SZheng Fan 		case SID_ATTR_PARA_ADJUST_RIGHT:
1125766ce4d0SZheng Fan 			{
1126766ce4d0SZheng Fan 				if(IsChecked)
1127766ce4d0SZheng Fan 				{
1128766ce4d0SZheng Fan 					maAlignToolBox->SetItemState(BT_SUBSTRIGHT,STATE_CHECK);
1129766ce4d0SZheng Fan 					maAlignToolBox->SetItemState(BT_SUBSTLEFT,STATE_NOCHECK);
1130766ce4d0SZheng Fan 					maAlignToolBox->SetItemState(BT_SUBSTCENTER,STATE_NOCHECK);
1131766ce4d0SZheng Fan 					maAlignToolBox->SetItemState(BT_SUBSTJUSTIFY,STATE_NOCHECK);
1132766ce4d0SZheng Fan 				}
1133766ce4d0SZheng Fan 				else
1134766ce4d0SZheng Fan 					maAlignToolBox->SetItemState(BT_SUBSTRIGHT,STATE_NOCHECK);
1135766ce4d0SZheng Fan 			}
1136766ce4d0SZheng Fan 			break;
1137766ce4d0SZheng Fan 		case SID_ATTR_PARA_ADJUST_BLOCK:
1138766ce4d0SZheng Fan 			{
1139766ce4d0SZheng Fan 				if(IsChecked)
1140766ce4d0SZheng Fan 				{
1141766ce4d0SZheng Fan 					maAlignToolBox->SetItemState(BT_SUBSTJUSTIFY,STATE_CHECK);
1142766ce4d0SZheng Fan 					maAlignToolBox->SetItemState(BT_SUBSTLEFT,STATE_NOCHECK);
1143766ce4d0SZheng Fan 					maAlignToolBox->SetItemState(BT_SUBSTCENTER,STATE_NOCHECK);
1144766ce4d0SZheng Fan 					maAlignToolBox->SetItemState(BT_SUBSTRIGHT,STATE_NOCHECK);
1145766ce4d0SZheng Fan 				}
1146766ce4d0SZheng Fan 				else
1147766ce4d0SZheng Fan 					maAlignToolBox->SetItemState(BT_SUBSTJUSTIFY,STATE_NOCHECK);
1148766ce4d0SZheng Fan 			}
1149766ce4d0SZheng Fan 			break;
1150766ce4d0SZheng Fan 		}
1151766ce4d0SZheng Fan 	}
1152766ce4d0SZheng Fan 	else if( eState == SFX_ITEM_DISABLED )
1153766ce4d0SZheng Fan 	{
1154766ce4d0SZheng Fan 	}
1155766ce4d0SZheng Fan 	else if ( eState == SFX_ITEM_DONTCARE )
1156766ce4d0SZheng Fan 	{
1157766ce4d0SZheng Fan 		switch (nSID)
1158766ce4d0SZheng Fan 		{
1159766ce4d0SZheng Fan 		case SID_ATTR_PARA_ADJUST_LEFT:
1160766ce4d0SZheng Fan 			maAlignToolBox->SetItemState(BT_SUBSTLEFT,STATE_NOCHECK);
1161766ce4d0SZheng Fan 			break;
1162766ce4d0SZheng Fan 		case SID_ATTR_PARA_ADJUST_CENTER:
1163766ce4d0SZheng Fan 			maAlignToolBox->SetItemState(BT_SUBSTCENTER,STATE_NOCHECK);
1164766ce4d0SZheng Fan 			break;
1165766ce4d0SZheng Fan 		case SID_ATTR_PARA_ADJUST_RIGHT:
1166766ce4d0SZheng Fan 			maAlignToolBox->SetItemState(BT_SUBSTRIGHT,STATE_NOCHECK);
1167766ce4d0SZheng Fan 			break;
1168766ce4d0SZheng Fan 		case SID_ATTR_PARA_ADJUST_BLOCK:
1169766ce4d0SZheng Fan 			maAlignToolBox->SetItemState(BT_SUBSTJUSTIFY,STATE_NOCHECK);
1170766ce4d0SZheng Fan 			break;
1171766ce4d0SZheng Fan 		}
1172766ce4d0SZheng Fan 	}
1173766ce4d0SZheng Fan }
1174766ce4d0SZheng Fan 
11751715803bSPavel Janík void ParaPropertyPanel::StateChangedIndentImpl( sal_uInt16 /* nSID */, SfxItemState eState, const SfxPoolItem* pState )
1176766ce4d0SZheng Fan {
1177766ce4d0SZheng Fan 	switch (maContext.GetCombinedContext())
1178766ce4d0SZheng Fan 	{
1179766ce4d0SZheng Fan 
1180766ce4d0SZheng Fan 		case CombinedEnumContext(Application_Writer, Context_DrawText):
1181766ce4d0SZheng Fan 		case CombinedEnumContext(Application_Calc, Context_DrawText):
1182766ce4d0SZheng Fan 		case CombinedEnumContext(Application_Writer, Context_Annotation):
1183766ce4d0SZheng Fan 		{
1184766ce4d0SZheng Fan 			maLeftIndent->SetMin( DEFAULT_VALUE );
1185766ce4d0SZheng Fan 			maRightIndent->SetMin( DEFAULT_VALUE );
1186766ce4d0SZheng Fan 			maFLineIndent->SetMin( DEFAULT_VALUE );
1187766ce4d0SZheng Fan 			maTbxIndent_IncDec->Show();
1188766ce4d0SZheng Fan 			maTbxProDemote->Hide();
1189766ce4d0SZheng Fan 		}
1190766ce4d0SZheng Fan 		break;
1191766ce4d0SZheng Fan 		case CombinedEnumContext(Application_Draw, Context_DrawText):
1192766ce4d0SZheng Fan         	case CombinedEnumContext(Application_Impress, Context_DrawText):
1193766ce4d0SZheng Fan 		case CombinedEnumContext(Application_Draw, Context_Draw):
1194766ce4d0SZheng Fan 		case CombinedEnumContext(Application_Draw, Context_TextObject):
1195766ce4d0SZheng Fan 		case CombinedEnumContext(Application_Draw, Context_Graphic):
1196766ce4d0SZheng Fan 		case CombinedEnumContext(Application_Impress, Context_Draw):
1197766ce4d0SZheng Fan 		case CombinedEnumContext(Application_Impress, Context_TextObject):
1198766ce4d0SZheng Fan 		case CombinedEnumContext(Application_Impress, Context_Graphic):
1199766ce4d0SZheng Fan 		case CombinedEnumContext(Application_Impress, Context_Table):
1200766ce4d0SZheng Fan         	case CombinedEnumContext(Application_Draw, Context_Table):
1201766ce4d0SZheng Fan 		{
1202766ce4d0SZheng Fan     		maLeftIndent->SetMin( DEFAULT_VALUE );
1203766ce4d0SZheng Fan 			maRightIndent->SetMin( DEFAULT_VALUE );
1204766ce4d0SZheng Fan 			maFLineIndent->SetMin( DEFAULT_VALUE );
1205766ce4d0SZheng Fan 			maTbxIndent_IncDec->Hide();
1206766ce4d0SZheng Fan 			maTbxProDemote->Show();
1207766ce4d0SZheng Fan 		}
1208766ce4d0SZheng Fan 		break;
1209766ce4d0SZheng Fan 		case CombinedEnumContext(Application_Writer, Context_Default):
1210766ce4d0SZheng Fan 		case CombinedEnumContext(Application_Writer, Context_Text):
1211766ce4d0SZheng Fan 		case CombinedEnumContext(Application_Writer, Context_Table):
1212766ce4d0SZheng Fan 		{
1213766ce4d0SZheng Fan 			maLeftIndent->SetMin( NEGA_MAXVALUE, FUNIT_100TH_MM );
1214766ce4d0SZheng Fan 			maRightIndent->SetMin( NEGA_MAXVALUE, FUNIT_100TH_MM );
1215766ce4d0SZheng Fan 			maFLineIndent->SetMin( NEGA_MAXVALUE, FUNIT_100TH_MM );
1216766ce4d0SZheng Fan 			maTbxIndent_IncDec->Show();
1217766ce4d0SZheng Fan 			maTbxProDemote->Hide();
1218766ce4d0SZheng Fan 		}
1219766ce4d0SZheng Fan 		break;
1220766ce4d0SZheng Fan 	}
1221766ce4d0SZheng Fan 
1222766ce4d0SZheng Fan 	if( pState && eState >= SFX_ITEM_AVAILABLE )
1223766ce4d0SZheng Fan 	{
1224766ce4d0SZheng Fan 		SvxLRSpaceItem* pSpace = ( SvxLRSpaceItem*)pState;
1225766ce4d0SZheng Fan 		maTxtLeft = pSpace->GetTxtLeft();
1226766ce4d0SZheng Fan 		maTxtLeft = OutputDevice::LogicToLogic( maTxtLeft, (MapUnit)m_eLRSpaceUnit, MAP_100TH_MM );
1227766ce4d0SZheng Fan 		maTxtLeft = OutputDevice::LogicToLogic( maTxtLeft, MAP_100TH_MM, (MapUnit)(SFX_MAPUNIT_TWIP) );
1228766ce4d0SZheng Fan 
1229766ce4d0SZheng Fan 		long aTxtRight = pSpace->GetRight();
1230766ce4d0SZheng Fan 		aTxtRight = OutputDevice::LogicToLogic( aTxtRight, (MapUnit)m_eLRSpaceUnit, MAP_100TH_MM );
1231766ce4d0SZheng Fan 		aTxtRight = OutputDevice::LogicToLogic( aTxtRight, MAP_100TH_MM, (MapUnit)(SFX_MAPUNIT_TWIP) );
1232766ce4d0SZheng Fan 
1233766ce4d0SZheng Fan 		long aTxtFirstLineOfst = pSpace->GetTxtFirstLineOfst();
1234766ce4d0SZheng Fan 		aTxtFirstLineOfst = OutputDevice::LogicToLogic( aTxtFirstLineOfst, (MapUnit)m_eLRSpaceUnit, MAP_100TH_MM );
1235766ce4d0SZheng Fan 		aTxtFirstLineOfst = OutputDevice::LogicToLogic( aTxtFirstLineOfst, MAP_100TH_MM, (MapUnit)(SFX_MAPUNIT_TWIP) );
1236766ce4d0SZheng Fan 
1237766ce4d0SZheng Fan 		long nVal = OutputDevice::LogicToLogic( maTxtLeft, (MapUnit)(SFX_MAPUNIT_TWIP), MAP_100TH_MM );
1238766ce4d0SZheng Fan 		nVal = (long)maLeftIndent->Normalize( (long)nVal );
1239766ce4d0SZheng Fan 		maLeftIndent->SetValue( nVal, FUNIT_100TH_MM );
1240766ce4d0SZheng Fan 
1241766ce4d0SZheng Fan 		if(maContext.GetCombinedContext() != CombinedEnumContext(Application_Writer, Context_Text) &&
1242766ce4d0SZheng Fan 			maContext.GetCombinedContext() != CombinedEnumContext(Application_Writer, Context_Default) &&
1243766ce4d0SZheng Fan 			maContext.GetCombinedContext() != CombinedEnumContext(Application_Writer, Context_Table))
1244766ce4d0SZheng Fan 		{
1245766ce4d0SZheng Fan 			maFLineIndent->SetMin( nVal*(-1), FUNIT_100TH_MM );
1246766ce4d0SZheng Fan 		}
1247766ce4d0SZheng Fan 
1248766ce4d0SZheng Fan 		long nrVal = OutputDevice::LogicToLogic( aTxtRight, (MapUnit)(SFX_MAPUNIT_TWIP), MAP_100TH_MM );
1249766ce4d0SZheng Fan 		nrVal = (long)maRightIndent->Normalize( (long)nrVal );
1250766ce4d0SZheng Fan 	    maRightIndent->SetValue( nrVal, FUNIT_100TH_MM );
1251766ce4d0SZheng Fan 
1252766ce4d0SZheng Fan 		long nfVal = OutputDevice::LogicToLogic( aTxtFirstLineOfst, (MapUnit)(SFX_MAPUNIT_TWIP), MAP_100TH_MM );
1253766ce4d0SZheng Fan 		nfVal = (long)maFLineIndent->Normalize( (long)nfVal );
1254766ce4d0SZheng Fan 		maFLineIndent->SetValue( nfVal, FUNIT_100TH_MM );
1255766ce4d0SZheng Fan 
1256766ce4d0SZheng Fan 		switch (maContext.GetCombinedContext())
1257766ce4d0SZheng Fan 		{
1258766ce4d0SZheng Fan 			case CombinedEnumContext(Application_Writer, Context_DrawText):
1259766ce4d0SZheng Fan 			case CombinedEnumContext(Application_Writer, Context_Text):
1260766ce4d0SZheng Fan 			case CombinedEnumContext(Application_Writer, Context_Default):
1261766ce4d0SZheng Fan 			case CombinedEnumContext(Application_Writer, Context_Table):
1262766ce4d0SZheng Fan 			case CombinedEnumContext(Application_Writer, Context_Annotation):
1263766ce4d0SZheng Fan 			{
1264766ce4d0SZheng Fan 				maLeftIndent->SetMax( MAX_SW - nrVal, FUNIT_100TH_MM );
1265766ce4d0SZheng Fan 				maRightIndent->SetMax( MAX_SW - nVal, FUNIT_100TH_MM );
1266766ce4d0SZheng Fan 				maFLineIndent->SetMax( MAX_SW - nVal - nrVal, FUNIT_100TH_MM );
1267766ce4d0SZheng Fan 			}
1268766ce4d0SZheng Fan 			break;
1269766ce4d0SZheng Fan 			case CombinedEnumContext(Application_Draw, Context_DrawText):
1270766ce4d0SZheng Fan 			case CombinedEnumContext(Application_Draw, Context_Draw):
1271766ce4d0SZheng Fan         		case CombinedEnumContext(Application_Draw, Context_Table):
1272766ce4d0SZheng Fan 			case CombinedEnumContext(Application_Draw, Context_TextObject):
1273766ce4d0SZheng Fan 			case CombinedEnumContext(Application_Draw, Context_Graphic):
1274766ce4d0SZheng Fan 			case CombinedEnumContext(Application_Impress, Context_TextObject):
1275766ce4d0SZheng Fan         		case CombinedEnumContext(Application_Impress, Context_DrawText):
1276766ce4d0SZheng Fan 			case CombinedEnumContext(Application_Impress, Context_Table):
1277766ce4d0SZheng Fan 			case CombinedEnumContext(Application_Impress, Context_Draw):
1278766ce4d0SZheng Fan 			case CombinedEnumContext(Application_Impress, Context_Graphic):
1279766ce4d0SZheng Fan 			{
1280766ce4d0SZheng Fan 				maLeftIndent->SetMax( MAX_SC_SD - nrVal, FUNIT_100TH_MM );
1281766ce4d0SZheng Fan 				maRightIndent->SetMax( MAX_SC_SD - nVal, FUNIT_100TH_MM );
1282766ce4d0SZheng Fan 				maFLineIndent->SetMax( MAX_SC_SD - nVal - nrVal, FUNIT_100TH_MM );
1283766ce4d0SZheng Fan 			}
1284766ce4d0SZheng Fan 		}
1285766ce4d0SZheng Fan 
1286eeb4e5d3SOliver-Rainer Wittmann         maTbxIndent_IncDec->Enable();
1287eeb4e5d3SOliver-Rainer Wittmann         maTbxIndent_IncDec->EnableItem(ID_HANGING_INDENT, sal_True);
1288eeb4e5d3SOliver-Rainer Wittmann         if ( maContext.GetCombinedContext() != CombinedEnumContext(Application_Writer, Context_Text)
1289eeb4e5d3SOliver-Rainer Wittmann              && maContext.GetCombinedContext() != CombinedEnumContext(Application_Writer, Context_Default)
1290eeb4e5d3SOliver-Rainer Wittmann              && maContext.GetCombinedContext() != CombinedEnumContext(Application_Writer, Context_Table) )
1291eeb4e5d3SOliver-Rainer Wittmann         {
1292eeb4e5d3SOliver-Rainer Wittmann             maTbxIndent_IncDec->EnableItem(BT_TBX_INDENT_INC, sal_True);
1293eeb4e5d3SOliver-Rainer Wittmann             maTbxIndent_IncDec->EnableItem(BT_TBX_INDENT_DEC, sal_True);
1294eeb4e5d3SOliver-Rainer Wittmann         }
1295766ce4d0SZheng Fan 
12961ff378efSZheng Fan //		maTbxProDemote->Enable();
12971ff378efSZheng Fan //		if( !mbOutLineRight && !mbOutLineLeft )
12981ff378efSZheng Fan //			maTbxProDemote->EnableItem(SD_HANGING_INDENT, sal_True);
1299766ce4d0SZheng Fan 		maTbxProDemote->EnableItem(SD_HANGING_INDENT, sal_True);
1300766ce4d0SZheng Fan 	}
1301766ce4d0SZheng Fan 	else if( eState == SFX_ITEM_DISABLED )
1302766ce4d0SZheng Fan 	{
1303766ce4d0SZheng Fan 		maLeftIndent-> Disable();
1304766ce4d0SZheng Fan 		maRightIndent->Disable();
1305766ce4d0SZheng Fan 		maFLineIndent->Disable();
1306766ce4d0SZheng Fan 		maTbxIndent_IncDec->Disable();
1307766ce4d0SZheng Fan 		if( maContext.GetCombinedContext() != CombinedEnumContext(Application_Writer, Context_Text)  &&
1308766ce4d0SZheng Fan 			maContext.GetCombinedContext() != CombinedEnumContext(Application_Writer, Context_Default) &&
1309766ce4d0SZheng Fan 			maContext.GetCombinedContext() !=  CombinedEnumContext(Application_Writer, Context_Table) )
1310766ce4d0SZheng Fan 			maTbxIndent_IncDec->Disable();
1311766ce4d0SZheng Fan 		else
1312766ce4d0SZheng Fan 			maTbxIndent_IncDec->EnableItem(ID_HANGING_INDENT, sal_False);
1313766ce4d0SZheng Fan 
13141ff378efSZheng Fan //		maTbxProDemote->Disable();
1315766ce4d0SZheng Fan 		maTbxProDemote->EnableItem(SD_HANGING_INDENT, sal_False);
1316766ce4d0SZheng Fan 	}
1317766ce4d0SZheng Fan 	else
1318766ce4d0SZheng Fan 	{
1319766ce4d0SZheng Fan 		maLeftIndent->SetEmptyFieldValue();
1320766ce4d0SZheng Fan 		maRightIndent->SetEmptyFieldValue();
1321766ce4d0SZheng Fan 		maFLineIndent->SetEmptyFieldValue();
1322766ce4d0SZheng Fan 		if( maContext.GetCombinedContext() != CombinedEnumContext(Application_Writer, Context_Text)  &&
1323766ce4d0SZheng Fan 			maContext.GetCombinedContext() != CombinedEnumContext(Application_Writer, Context_Default) &&
1324766ce4d0SZheng Fan 			maContext.GetCombinedContext() !=  CombinedEnumContext(Application_Writer, Context_Table) )
1325766ce4d0SZheng Fan 			maTbxIndent_IncDec->Disable();
1326766ce4d0SZheng Fan 		else
1327766ce4d0SZheng Fan 			maTbxIndent_IncDec->EnableItem(ID_HANGING_INDENT, sal_False);
13281ff378efSZheng Fan //		maTbxProDemote->Disable();
1329766ce4d0SZheng Fan 		maTbxProDemote->EnableItem(SD_HANGING_INDENT, sal_False);
1330766ce4d0SZheng Fan 	}
1331766ce4d0SZheng Fan }
1332766ce4d0SZheng Fan 
13331715803bSPavel Janík void ParaPropertyPanel::StateChangedLnSPImpl( sal_uInt16 /* nSID */, SfxItemState eState, const SfxPoolItem* pState )
1334766ce4d0SZheng Fan {
1335766ce4d0SZheng Fan 	meLnSpState = eState;
1336766ce4d0SZheng Fan 
1337766ce4d0SZheng Fan 	if( pState && eState >= SFX_ITEM_AVAILABLE )
1338766ce4d0SZheng Fan 	{
1339766ce4d0SZheng Fan 		if(mpLnSPItem)
1340766ce4d0SZheng Fan 			delete mpLnSPItem;
1341766ce4d0SZheng Fan 		mpLnSPItem = ( SvxLineSpacingItem *)pState->Clone();
1342766ce4d0SZheng Fan 	}
1343766ce4d0SZheng Fan }
1344766ce4d0SZheng Fan 
13451715803bSPavel Janík void ParaPropertyPanel::StateChangedULImpl( sal_uInt16 /* nSID */, SfxItemState eState, const SfxPoolItem* pState )
1346766ce4d0SZheng Fan {
1347766ce4d0SZheng Fan 	maTopDist->SetMax( maTopDist->Normalize( MAX_DURCH ), MapToFieldUnit(m_eULSpaceUnit) );
1348766ce4d0SZheng Fan 	maBottomDist->SetMax( maBottomDist->Normalize( MAX_DURCH ), MapToFieldUnit(m_eULSpaceUnit) );
1349766ce4d0SZheng Fan 
1350766ce4d0SZheng Fan 	if( pState && eState >= SFX_ITEM_AVAILABLE )
1351766ce4d0SZheng Fan 	{
1352766ce4d0SZheng Fan 		SvxULSpaceItem* pOldItem = (SvxULSpaceItem*)pState;
1353766ce4d0SZheng Fan 
1354766ce4d0SZheng Fan 		maUpper = pOldItem->GetUpper();
1355766ce4d0SZheng Fan 		maUpper = OutputDevice::LogicToLogic( maUpper, (MapUnit)m_eULSpaceUnit, MAP_100TH_MM );
1356766ce4d0SZheng Fan 		maUpper = OutputDevice::LogicToLogic( maUpper, MAP_100TH_MM, (MapUnit)(SFX_MAPUNIT_TWIP) );
1357766ce4d0SZheng Fan 
1358766ce4d0SZheng Fan 		maLower = pOldItem->GetLower();
1359766ce4d0SZheng Fan 		maLower = OutputDevice::LogicToLogic( maLower, (MapUnit)m_eULSpaceUnit, MAP_100TH_MM );
1360766ce4d0SZheng Fan 		maLower = OutputDevice::LogicToLogic( maLower, MAP_100TH_MM, (MapUnit)(SFX_MAPUNIT_TWIP) );
1361766ce4d0SZheng Fan 
1362766ce4d0SZheng Fan 		sal_Int64 nVal = OutputDevice::LogicToLogic( maUpper, (MapUnit)(SFX_MAPUNIT_TWIP), MAP_100TH_MM );
1363766ce4d0SZheng Fan 		nVal = maTopDist->Normalize( nVal );
1364766ce4d0SZheng Fan 		maTopDist->SetValue( nVal, FUNIT_100TH_MM );
1365766ce4d0SZheng Fan 
1366766ce4d0SZheng Fan 		nVal = OutputDevice::LogicToLogic( maLower, (MapUnit)(SFX_MAPUNIT_TWIP), MAP_100TH_MM );
1367766ce4d0SZheng Fan 		nVal = maBottomDist->Normalize( nVal );
1368766ce4d0SZheng Fan 		maBottomDist->SetValue( nVal, FUNIT_100TH_MM );
1369766ce4d0SZheng Fan 		maTbxUL_IncDec->Enable();
1370766ce4d0SZheng Fan 	}
1371512ec161SZheng Fan 	else if(eState == SFX_ITEM_DISABLED )
1372766ce4d0SZheng Fan 	{
1373766ce4d0SZheng Fan 		maTopDist->Disable();
1374766ce4d0SZheng Fan 		maBottomDist->Disable();
1375766ce4d0SZheng Fan 		maTbxUL_IncDec->Disable();
1376766ce4d0SZheng Fan 	}
1377512ec161SZheng Fan 	else
1378766ce4d0SZheng Fan 	{
1379766ce4d0SZheng Fan 		maTopDist->SetEmptyFieldValue();
1380766ce4d0SZheng Fan 		maBottomDist->SetEmptyFieldValue();
1381766ce4d0SZheng Fan 		maTbxUL_IncDec->Disable();
1382766ce4d0SZheng Fan 	}
1383766ce4d0SZheng Fan }
1384766ce4d0SZheng Fan 
1385766ce4d0SZheng Fan void ParaPropertyPanel::StateChangeOutLineImpl( sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState )
1386766ce4d0SZheng Fan {
1387766ce4d0SZheng Fan     if (nSID==SID_OUTLINE_LEFT)
1388766ce4d0SZheng Fan 	{
1389766ce4d0SZheng Fan 		if( pState && eState == SFX_ITEM_UNKNOWN )
1390766ce4d0SZheng Fan 			mbOutLineLeft = 1;
1391766ce4d0SZheng Fan 		else
1392766ce4d0SZheng Fan 			mbOutLineLeft = 0;
1393766ce4d0SZheng Fan 	}
1394766ce4d0SZheng Fan 	if (nSID==SID_OUTLINE_RIGHT)
1395766ce4d0SZheng Fan 	{
1396766ce4d0SZheng Fan 		if( pState && eState == SFX_ITEM_UNKNOWN )
1397766ce4d0SZheng Fan 			mbOutLineRight = 1;
1398766ce4d0SZheng Fan 		else
1399766ce4d0SZheng Fan 			mbOutLineRight = 0;
1400766ce4d0SZheng Fan 	}
1401766ce4d0SZheng Fan 	if(mbOutLineLeft)
1402766ce4d0SZheng Fan 		maTbxProDemote->EnableItem(BT_TBX_INDENT_DEMOTE, sal_True);
1403766ce4d0SZheng Fan 	else
1404766ce4d0SZheng Fan 		maTbxProDemote->EnableItem(BT_TBX_INDENT_DEMOTE, sal_False);
1405766ce4d0SZheng Fan 
1406766ce4d0SZheng Fan 	if(mbOutLineRight)
1407766ce4d0SZheng Fan 		maTbxProDemote->EnableItem(BT_TBX_INDENT_PROMOTE, sal_True);
1408766ce4d0SZheng Fan 	else
1409766ce4d0SZheng Fan 		maTbxProDemote->EnableItem(BT_TBX_INDENT_PROMOTE, sal_False);
1410766ce4d0SZheng Fan 
1411766ce4d0SZheng Fan }
1412766ce4d0SZheng Fan 
1413766ce4d0SZheng Fan void ParaPropertyPanel::StateChangeIncDecImpl( sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState )
1414766ce4d0SZheng Fan {
1415eeb4e5d3SOliver-Rainer Wittmann     if ( ( maContext.GetCombinedContext() == CombinedEnumContext(Application_Writer, Context_Text)
1416eeb4e5d3SOliver-Rainer Wittmann            || maContext.GetCombinedContext() == CombinedEnumContext(Application_Writer, Context_Default)
1417eeb4e5d3SOliver-Rainer Wittmann            || maContext.GetCombinedContext() ==  CombinedEnumContext(Application_Writer, Context_Table) )
1418eeb4e5d3SOliver-Rainer Wittmann          && ( nSID == SID_INC_INDENT || nSID == SID_DEC_INDENT ) )
1419eeb4e5d3SOliver-Rainer Wittmann     {
1420eeb4e5d3SOliver-Rainer Wittmann         // Writer's text shell is the only one which provides reasonable states for Slots SID_INC_INDENT and SID_DEC_INDENT
1421eeb4e5d3SOliver-Rainer Wittmann         // - namely SFX_ITEM_UNKNOWN and SFX_ITEM_DISABLED
1422eeb4e5d3SOliver-Rainer Wittmann         maTbxIndent_IncDec->EnableItem(
1423eeb4e5d3SOliver-Rainer Wittmann             nSID == SID_INC_INDENT ? BT_TBX_INDENT_INC : BT_TBX_INDENT_DEC,
1424eeb4e5d3SOliver-Rainer Wittmann             ( pState && eState == SFX_ITEM_UNKNOWN ) ? sal_True : sal_False );
1425eeb4e5d3SOliver-Rainer Wittmann     }
1426766ce4d0SZheng Fan }
1427eeb4e5d3SOliver-Rainer Wittmann 
1428eeb4e5d3SOliver-Rainer Wittmann 
142937fee4fdSAndre Fischer // Add toggle state for numbering and bullet icons
1430766ce4d0SZheng Fan void ParaPropertyPanel::StateChangeBulletNumImpl( sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState )
1431766ce4d0SZheng Fan {
14327aed46aaSOliver-Rainer Wittmann     if ( (eState >= SFX_ITEM_DEFAULT) && (pState->ISA(SfxBoolItem)) )
14337aed46aaSOliver-Rainer Wittmann     {
14347aed46aaSOliver-Rainer Wittmann         if (nSID==FN_NUM_NUMBERING_ON)
14357aed46aaSOliver-Rainer Wittmann         {
14367aed46aaSOliver-Rainer Wittmann             const SfxBoolItem* pItem= (const SfxBoolItem*)pState;
14377aed46aaSOliver-Rainer Wittmann             sal_Bool aBool = (sal_Bool)pItem->GetValue();
14387aed46aaSOliver-Rainer Wittmann             if (aBool) {
14397aed46aaSOliver-Rainer Wittmann                 maTBxNumBullet->SetItemState(IID_NUMBER,	STATE_CHECK);
14407aed46aaSOliver-Rainer Wittmann             } else {
14417aed46aaSOliver-Rainer Wittmann                 maTBxNumBullet->SetItemState(IID_NUMBER,	STATE_NOCHECK);
14427aed46aaSOliver-Rainer Wittmann             }
14437aed46aaSOliver-Rainer Wittmann         }
14447aed46aaSOliver-Rainer Wittmann         else if (nSID==FN_NUM_BULLET_ON)
14457aed46aaSOliver-Rainer Wittmann         {
14467aed46aaSOliver-Rainer Wittmann             const SfxBoolItem* pItem= (const SfxBoolItem*)pState;
14477aed46aaSOliver-Rainer Wittmann             sal_Bool aBool = (sal_Bool)pItem->GetValue();
14487aed46aaSOliver-Rainer Wittmann             if (aBool) {
14497aed46aaSOliver-Rainer Wittmann                 maTBxNumBullet->SetItemState(IID_BULLET,	STATE_CHECK);
14507aed46aaSOliver-Rainer Wittmann             } else {
14517aed46aaSOliver-Rainer Wittmann                 maTBxNumBullet->SetItemState(IID_BULLET,	STATE_NOCHECK);
14527aed46aaSOliver-Rainer Wittmann             }
14537aed46aaSOliver-Rainer Wittmann         }
14547aed46aaSOliver-Rainer Wittmann     }
1455766ce4d0SZheng Fan }
14567aed46aaSOliver-Rainer Wittmann 
14577aed46aaSOliver-Rainer Wittmann 
14587aed46aaSOliver-Rainer Wittmann void ParaPropertyPanel::StateChangeBulletNumRuleImpl( sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState )
1459766ce4d0SZheng Fan {
14607aed46aaSOliver-Rainer Wittmann     if ( eState >= SFX_ITEM_DEFAULT && pState->ISA(SfxUInt16Item) )
14617aed46aaSOliver-Rainer Wittmann     {
14627aed46aaSOliver-Rainer Wittmann         sal_uInt16 nValue = (sal_uInt16)0xFFFF;
14637aed46aaSOliver-Rainer Wittmann         {
14647aed46aaSOliver-Rainer Wittmann             const SfxUInt16Item* pIt = (const SfxUInt16Item*)pState;
14657aed46aaSOliver-Rainer Wittmann             if ( pIt )
14667aed46aaSOliver-Rainer Wittmann                 nValue = pIt->GetValue();
14677aed46aaSOliver-Rainer Wittmann         }
1468766ce4d0SZheng Fan 
14697aed46aaSOliver-Rainer Wittmann         if ( nSID == FN_BUL_NUM_RULE_INDEX )
14707aed46aaSOliver-Rainer Wittmann         {
14717aed46aaSOliver-Rainer Wittmann             mnBulletTypeIndex = nValue;
14727aed46aaSOliver-Rainer Wittmann         }
14737aed46aaSOliver-Rainer Wittmann         else if ( nSID == FN_NUM_NUM_RULE_INDEX )
14747aed46aaSOliver-Rainer Wittmann         {
14757aed46aaSOliver-Rainer Wittmann             mnNumTypeIndex = nValue;
14767aed46aaSOliver-Rainer Wittmann         }
14777aed46aaSOliver-Rainer Wittmann     }
1478766ce4d0SZheng Fan }
14797aed46aaSOliver-Rainer Wittmann 
14807aed46aaSOliver-Rainer Wittmann 
1481766ce4d0SZheng Fan FieldUnit ParaPropertyPanel::GetCurrentUnit( SfxItemState eState, const SfxPoolItem* pState )
1482766ce4d0SZheng Fan {
1483766ce4d0SZheng Fan 	FieldUnit eUnit = FUNIT_NONE;
1484766ce4d0SZheng Fan 
1485766ce4d0SZheng Fan 	if ( pState && eState >= SFX_ITEM_DEFAULT )
1486766ce4d0SZheng Fan 		eUnit = (FieldUnit)( (const SfxUInt16Item*)pState )->GetValue();
1487766ce4d0SZheng Fan 	else
1488766ce4d0SZheng Fan 	{
1489766ce4d0SZheng Fan 		SfxViewFrame* pFrame = SfxViewFrame::Current();
1490766ce4d0SZheng Fan 		SfxObjectShell* pSh = NULL;
1491766ce4d0SZheng Fan 		if ( pFrame )
1492766ce4d0SZheng Fan 			pSh = pFrame->GetObjectShell();
1493766ce4d0SZheng Fan 		if ( pSh )  //the object shell is not always available during reload
1494766ce4d0SZheng Fan 		{
1495766ce4d0SZheng Fan 			SfxModule* pModule = pSh->GetModule();
1496766ce4d0SZheng Fan 			if ( pModule )
1497766ce4d0SZheng Fan 			{
1498766ce4d0SZheng Fan 				const SfxPoolItem* pItem = pModule->GetItem( SID_ATTR_METRIC );
1499766ce4d0SZheng Fan 				if ( pItem )
1500766ce4d0SZheng Fan 					eUnit = (FieldUnit)( (SfxUInt16Item*)pItem )->GetValue();
1501766ce4d0SZheng Fan 			}
1502766ce4d0SZheng Fan 			else
1503766ce4d0SZheng Fan 			{
1504766ce4d0SZheng Fan 				DBG_ERRORFILE( "GetModuleFieldUnit(): no module found" );
1505766ce4d0SZheng Fan 			}
1506766ce4d0SZheng Fan 		}
1507766ce4d0SZheng Fan 	}
1508766ce4d0SZheng Fan 
1509766ce4d0SZheng Fan 	return eUnit;
1510766ce4d0SZheng Fan }
15117aed46aaSOliver-Rainer Wittmann 
1512766ce4d0SZheng Fan 
1513766ce4d0SZheng Fan PopupControl* ParaPropertyPanel::CreateLineSpacingControl (PopupContainer* pParent)
1514766ce4d0SZheng Fan {
1515766ce4d0SZheng Fan 	return new ParaLineSpacingControl(pParent, *this);
1516766ce4d0SZheng Fan }
1517766ce4d0SZheng Fan 
1518766ce4d0SZheng Fan PopupControl* ParaPropertyPanel::CreateBulletsPopupControl (PopupContainer* pParent)
1519766ce4d0SZheng Fan {
1520766ce4d0SZheng Fan 	return new ParaBulletsControl(pParent, *this);
1521766ce4d0SZheng Fan }
1522766ce4d0SZheng Fan 
1523766ce4d0SZheng Fan PopupControl* ParaPropertyPanel::CreateNumberingPopupControl (PopupContainer* pParent)
1524766ce4d0SZheng Fan {
1525766ce4d0SZheng Fan 	return new ParaNumberingControl(pParent, *this);
1526766ce4d0SZheng Fan }
1527766ce4d0SZheng Fan 
1528b7a56e95SArmin Le Grand namespace
1529b7a56e95SArmin Le Grand {
1530b7a56e95SArmin Le Grand     Color GetNoBackgroundColor(void)
1531b7a56e95SArmin Le Grand     {
1532b7a56e95SArmin Le Grand         return COL_TRANSPARENT;
1533b7a56e95SArmin Le Grand     }
1534b7a56e95SArmin Le Grand } // end of anonymous namespace
1535b7a56e95SArmin Le Grand 
1536766ce4d0SZheng Fan PopupControl* ParaPropertyPanel::CreateBGColorPopupControl (PopupContainer* pParent)
1537766ce4d0SZheng Fan {
1538b7a56e95SArmin Le Grand     const ResId aResId(SVX_RES(STR_NOFILL));
1539b7a56e95SArmin Le Grand 
1540b7a56e95SArmin Le Grand     return new ColorControl(
1541766ce4d0SZheng Fan         pParent,
1542766ce4d0SZheng Fan         mpBindings,
1543b7a56e95SArmin Le Grand         SVX_RES(RID_POPUPPANEL_PARAPAGE_BACK_COLOR),
1544766ce4d0SZheng Fan         SVX_RES(VS_FONT_COLOR),
1545b7a56e95SArmin Le Grand         ::boost::bind(GetNoBackgroundColor),
1546766ce4d0SZheng Fan         ::boost::bind(&ParaPropertyPanel::SetBGColor, this, _1,_2),
1547766ce4d0SZheng Fan         pParent,
1548b7a56e95SArmin Le Grand         &aResId);
1549766ce4d0SZheng Fan }
1550766ce4d0SZheng Fan 
1551766ce4d0SZheng Fan 
1552766ce4d0SZheng Fan ParaPropertyPanel::ParaPropertyPanel(Window* pParent,
15533cac12cfSAndre Fischer     const cssu::Reference<css::frame::XFrame>& rxFrame,
155437fee4fdSAndre Fischer     SfxBindings* pBindings,
155537fee4fdSAndre Fischer     const cssu::Reference<css::ui::XSidebar>& rxSidebar)
155637fee4fdSAndre Fischer     : Control(pParent, SVX_RES(RID_SIDEBAR_PARA_PANEL)),
155737fee4fdSAndre Fischer       maAlignToolBoxBackground(ControlFactory::CreateToolBoxBackground(this)),
155837fee4fdSAndre Fischer       maAlignToolBox (ControlFactory::CreateToolBox(maAlignToolBoxBackground.get(),SVX_RES(TBX_HORIZONTALALIGNMENT))),
155937fee4fdSAndre Fischer       maTBxVertAlignBackground(ControlFactory::CreateToolBoxBackground(this)),
156037fee4fdSAndre Fischer       maTBxVertAlign (ControlFactory::CreateToolBox(maTBxVertAlignBackground.get(),SVX_RES(TBX_VERT_ALIGN))),
156137fee4fdSAndre Fischer       maTBxNumBulletBackground(ControlFactory::CreateToolBoxBackground(this)),
156237fee4fdSAndre Fischer       maTBxNumBullet (ControlFactory::CreateToolBox(maTBxNumBulletBackground.get(),SVX_RES(TBX_NUM_BULLET))),
156337fee4fdSAndre Fischer       maTBxBackColorBackground(ControlFactory::CreateToolBoxBackground(this)),
156437fee4fdSAndre Fischer       maTBxBackColor (ControlFactory::CreateToolBox(maTBxBackColorBackground.get(),SVX_RES(TBX_BACK_COLOR))),
156537fee4fdSAndre Fischer       maFTUL (new FixedText(this, SVX_RES(FT_SPACING))),
156637fee4fdSAndre Fischer       maTbxUL_IncDecBackground(ControlFactory::CreateToolBoxBackground(this)),
156737fee4fdSAndre Fischer       maTbxUL_IncDec (ControlFactory::CreateToolBox(maTbxUL_IncDecBackground.get(),SVX_RES(TBX_UL_INC_DEC))),
156837fee4fdSAndre Fischer       maTopDist (new SvxRelativeField(this, SVX_RES(MF_ABOVE_PARASPACING))),
156937fee4fdSAndre Fischer       maBottomDist (new SvxRelativeField(this, SVX_RES(MF_BELOW_PARASPACING))),
157037fee4fdSAndre Fischer       maLineSPTbxBackground(ControlFactory::CreateToolBoxBackground(this)),
157137fee4fdSAndre Fischer       maLineSPTbx (ControlFactory::CreateToolBox(maLineSPTbxBackground.get(),SVX_RES(TBX_LINESP))),
157237fee4fdSAndre Fischer       maFTIndent (new FixedText(this, SVX_RES(FT_INDENT))),
157337fee4fdSAndre Fischer       maTbxIndent_IncDecBackground(ControlFactory::CreateToolBoxBackground(this)),
157437fee4fdSAndre Fischer       maTbxIndent_IncDec (ControlFactory::CreateToolBox(maTbxIndent_IncDecBackground.get(),SVX_RES(TBX_INDENT_INC_DEC))),
157537fee4fdSAndre Fischer       maTbxProDemoteBackground(ControlFactory::CreateToolBoxBackground(this)),
157637fee4fdSAndre Fischer       maTbxProDemote (ControlFactory::CreateToolBox(maTbxProDemoteBackground.get(),SVX_RES(TBX_INDENT_PRO_DEMOTE))),
157737fee4fdSAndre Fischer       maLeftIndent (new SvxRelativeField(this, SVX_RES(MF_BEFORE_INDENT))),
157837fee4fdSAndre Fischer       maRightIndent (new SvxRelativeField(this, SVX_RES(MF_AFTER_INDENT))),
157937fee4fdSAndre Fischer       maFLineIndent (new SvxRelativeField(this, SVX_RES(MF_FL_INDENT))),
158037fee4fdSAndre Fischer       mpColorUpdater (),
158137fee4fdSAndre Fischer       maFISpace1 ( this, SVX_RES( FI_SPACE1)),
158237fee4fdSAndre Fischer       maFISpace2 ( this, SVX_RES( FI_SPACE2)),
158337fee4fdSAndre Fischer       maFIndent1 ( this, SVX_RES( FI_INDENT1)),
158437fee4fdSAndre Fischer       maFIndent2 ( this, SVX_RES( FI_INDENT2)),
158537fee4fdSAndre Fischer       maFIndent3 ( this, SVX_RES( FI_INDENT3)),
158637fee4fdSAndre Fischer       maSpace1 (SVX_RES(IMG_SPACE1)),
158737fee4fdSAndre Fischer       maSpace2 (SVX_RES(IMG_SPACE2)),
158837fee4fdSAndre Fischer       maSpace3 (SVX_RES(IMG_SPACE3)),
158937fee4fdSAndre Fischer       maIndent1 (SVX_RES(IMG_INDENT1)),
159037fee4fdSAndre Fischer       maIndent2 (SVX_RES(IMG_INDENT2)),
159137fee4fdSAndre Fischer       maIndent3 (SVX_RES(IMG_INDENT3)),
159237fee4fdSAndre Fischer       maIndHang (SVX_RES(IMG_INDENT_HANG)),
159337fee4fdSAndre Fischer       maParInc (SVX_RES(IMG_PARA_INC)),
159437fee4fdSAndre Fischer       maParDec (SVX_RES(IMG_PARA_DEC)),
159537fee4fdSAndre Fischer       maNumBImageList (SVX_RES(IL_NUM_BULLET)),
159637fee4fdSAndre Fischer       maNumBImageListH (SVX_RES(ILH_NUM_BULLET)),
159737fee4fdSAndre Fischer       maNumBImageListRTL (SVX_RES(IL_NUM_BULLET_RTL)),
159837fee4fdSAndre Fischer       maImgBackColorHigh (SVX_RES(IMG_BACK_COLOR_H)),
159937fee4fdSAndre Fischer       maImgBackColor (SVX_RES(IMG_BACK_COLOR)),
160037fee4fdSAndre Fischer       maTxtLeft (0),
160137fee4fdSAndre Fischer       mpLnSPItem (NULL),
160237fee4fdSAndre Fischer       meLnSpState (SFX_ITEM_DONTCARE),
160337fee4fdSAndre Fischer       mbOutLineLeft (false),
160437fee4fdSAndre Fischer       mbOutLineRight (false),
160537fee4fdSAndre Fischer       maUpper (0),
160637fee4fdSAndre Fischer       maLower (0),
160737fee4fdSAndre Fischer       mnBulletTypeIndex ((sal_uInt16)0xFFFF),
160837fee4fdSAndre Fischer       mnNumTypeIndex ((sal_uInt16)0xFFFF),
160937fee4fdSAndre Fischer       maColor (COL_AUTO),
161037fee4fdSAndre Fischer       mbColorAvailable (true),
161137fee4fdSAndre Fischer       m_eLRSpaceUnit(),
161237fee4fdSAndre Fischer       m_eULSpaceUnit(),
16133cac12cfSAndre Fischer       maLeftAlignControl(SID_ATTR_PARA_ADJUST_LEFT, *pBindings, *this, A2S("LeftPara"), rxFrame),
16143cac12cfSAndre Fischer       maCenterAlignControl(SID_ATTR_PARA_ADJUST_CENTER, *pBindings, *this, A2S("CenterPara"), rxFrame),
16153cac12cfSAndre Fischer       maRightAlignControl(SID_ATTR_PARA_ADJUST_RIGHT, *pBindings, *this, A2S("RightPara"), rxFrame),
16163cac12cfSAndre Fischer       maJustifyAlignControl(SID_ATTR_PARA_ADJUST_BLOCK, *pBindings, *this, A2S("JustifyPara"), rxFrame),
161737fee4fdSAndre Fischer       maLRSpaceControl (SID_ATTR_PARA_LRSPACE,*pBindings,*this),
161837fee4fdSAndre Fischer       maLNSpaceControl (SID_ATTR_PARA_LINESPACE, *pBindings,*this),
161937fee4fdSAndre Fischer       maULSpaceControl (SID_ATTR_PARA_ULSPACE, *pBindings,*this),
16203cac12cfSAndre Fischer       maOutLineLeftControl(SID_OUTLINE_LEFT, *pBindings, *this, A2S("OutlineRight"), rxFrame),
16213cac12cfSAndre Fischer       maOutLineRightControl(SID_OUTLINE_RIGHT, *pBindings, *this, A2S("OutlineLeft"), rxFrame),
16223cac12cfSAndre Fischer       maDecIndentControl(SID_DEC_INDENT, *pBindings,*this, A2S("DecrementIndent"), rxFrame),
16233cac12cfSAndre Fischer       maIncIndentControl(SID_INC_INDENT, *pBindings,*this, A2S("IncrementIndent"), rxFrame),
16243cac12cfSAndre Fischer       maVertTop (SID_TABLE_VERT_NONE, *pBindings, *this, A2S("CellVertTop"), rxFrame),
16253cac12cfSAndre Fischer       maVertCenter (SID_TABLE_VERT_CENTER, *pBindings,*this, A2S("CellVertCenter"), rxFrame),
16263cac12cfSAndre Fischer       maVertBottom (SID_TABLE_VERT_BOTTOM,*pBindings,*this, A2S("CellVertBottom"), rxFrame),
16273cac12cfSAndre Fischer       maBulletOnOff(FN_NUM_BULLET_ON, *pBindings, *this, A2S("DefaultBullet"), rxFrame),
16283cac12cfSAndre Fischer       maNumberOnOff(FN_NUM_NUMBERING_ON, *pBindings, *this, A2S("DefaultNumbering"), rxFrame),
162937fee4fdSAndre Fischer       maBackColorControl (SID_BACKGROUND_COLOR,	*pBindings,*this),
163037fee4fdSAndre Fischer       m_aMetricCtl (SID_ATTR_METRIC, *pBindings,*this),
163137fee4fdSAndre Fischer       maBulletNumRuleIndex (FN_BUL_NUM_RULE_INDEX, *pBindings,*this),
163237fee4fdSAndre Fischer       maNumNumRuleIndex (FN_NUM_NUM_RULE_INDEX, *pBindings,*this),
16338cdef556SPavel Janík       mxFrame(rxFrame),
163437fee4fdSAndre Fischer       maContext(),
163537fee4fdSAndre Fischer       mpBindings(pBindings),
163637fee4fdSAndre Fischer       maLineSpacePopup(this, ::boost::bind(&ParaPropertyPanel::CreateLineSpacingControl, this, _1)),
163737fee4fdSAndre Fischer       maBulletsPopup(this, ::boost::bind(&ParaPropertyPanel::CreateBulletsPopupControl, this, _1)),
163837fee4fdSAndre Fischer       maNumberingPopup(this, ::boost::bind(&ParaPropertyPanel::CreateNumberingPopupControl, this, _1)),
163937fee4fdSAndre Fischer       maBGColorPopup(this, ::boost::bind(&ParaPropertyPanel::CreateBGColorPopupControl, this, _1)),
164037fee4fdSAndre Fischer       mxSidebar(rxSidebar)
1641766ce4d0SZheng Fan {
1642766ce4d0SZheng Fan 	initial();
16433cac12cfSAndre Fischer 	FreeResource();
1644766ce4d0SZheng Fan }
1645766ce4d0SZheng Fan 
164637fee4fdSAndre Fischer } } // end of namespace svx::sidebar
1647