1facb16e7SArmin Le Grand /************************************************************** 2facb16e7SArmin Le Grand * 3facb16e7SArmin Le Grand * Licensed to the Apache Software Foundation (ASF) under one 4facb16e7SArmin Le Grand * or more contributor license agreements. See the NOTICE file 5facb16e7SArmin Le Grand * distributed with this work for additional information 6facb16e7SArmin Le Grand * regarding copyright ownership. The ASF licenses this file 7facb16e7SArmin Le Grand * to you under the Apache License, Version 2.0 (the 8facb16e7SArmin Le Grand * "License"); you may not use this file except in compliance 9facb16e7SArmin Le Grand * with the License. You may obtain a copy of the License at 10facb16e7SArmin Le Grand * 11facb16e7SArmin Le Grand * http://www.apache.org/licenses/LICENSE-2.0 12facb16e7SArmin Le Grand * 13facb16e7SArmin Le Grand * Unless required by applicable law or agreed to in writing, 14facb16e7SArmin Le Grand * software distributed under the License is distributed on an 15facb16e7SArmin Le Grand * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16facb16e7SArmin Le Grand * KIND, either express or implied. See the License for the 17facb16e7SArmin Le Grand * specific language governing permissions and limitations 18facb16e7SArmin Le Grand * under the License. 19facb16e7SArmin Le Grand * 20facb16e7SArmin Le Grand *************************************************************/ 21facb16e7SArmin Le Grand 22facb16e7SArmin Le Grand #include "precompiled_sc.hxx" 23facb16e7SArmin Le Grand 24facb16e7SArmin Le Grand #include <sfx2/sidebar/propertypanel.hrc> 25facb16e7SArmin Le Grand #include <sfx2/sidebar/Theme.hxx> 26facb16e7SArmin Le Grand #include <sfx2/sidebar/ControlFactory.hxx> 27facb16e7SArmin Le Grand #include <AlignmentPropertyPanel.hxx> 28facb16e7SArmin Le Grand #include <AlignmentPropertyPanel.hrc> 29facb16e7SArmin Le Grand #include <svx/dialmgr.hxx> 30facb16e7SArmin Le Grand #include "sc.hrc" 31facb16e7SArmin Le Grand #include "scresid.hxx" 32facb16e7SArmin Le Grand #include <sfx2/bindings.hxx> 33facb16e7SArmin Le Grand #include <sfx2/dispatch.hxx> 34facb16e7SArmin Le Grand #include <svx/algitem.hxx> 35facb16e7SArmin Le Grand #include <svx/dlgutil.hxx> 36facb16e7SArmin Le Grand #include <vcl/toolbox.hxx> 37facb16e7SArmin Le Grand #include <svx/sidebar/SidebarDialControl.hxx> 38facb16e7SArmin Le Grand 39facb16e7SArmin Le Grand using namespace css; 40facb16e7SArmin Le Grand using namespace cssu; 41facb16e7SArmin Le Grand 42facb16e7SArmin Le Grand #define A2S(pString) (::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(pString))) 43facb16e7SArmin Le Grand 44facb16e7SArmin Le Grand ////////////////////////////////////////////////////////////////////////////// 45facb16e7SArmin Le Grand // namespace open 46facb16e7SArmin Le Grand 47facb16e7SArmin Le Grand namespace sc { namespace sidebar { 48facb16e7SArmin Le Grand 49facb16e7SArmin Le Grand ////////////////////////////////////////////////////////////////////////////// 50facb16e7SArmin Le Grand 51facb16e7SArmin Le Grand AlignmentPropertyPanel::AlignmentPropertyPanel( 52facb16e7SArmin Le Grand Window* pParent, 53facb16e7SArmin Le Grand const cssu::Reference<css::frame::XFrame>& rxFrame, 54facb16e7SArmin Le Grand SfxBindings* pBindings) 55facb16e7SArmin Le Grand : Control( 56facb16e7SArmin Le Grand pParent, 57facb16e7SArmin Le Grand ScResId(RID_PROPERTYPANEL_SC_ALIGNMENT)), 58facb16e7SArmin Le Grand mpTBHorizontal(new ToolBox(this, ScResId(TBX_HORIZONTAL_ALIGNMENT))), 59facb16e7SArmin Le Grand mpTBVertical(new ToolBox(this, ScResId(TBX_VERTICAL_ALIGN))), 60facb16e7SArmin Le Grand mpFTLeftIndent(new FixedText(this, ScResId(FT_LEFT_INDENT))), 61facb16e7SArmin Le Grand mpMFLeftIndent(new MetricField(this, ScResId(MF_LEFT_INDENT))), 62facb16e7SArmin Le Grand mpCBXWrapText(new CheckBox(this, ScResId(CBX_WRAP))), 63facb16e7SArmin Le Grand mpCBXMergeCell(new CheckBox(this, ScResId(CBX_MERGE))), 64facb16e7SArmin Le Grand mpFtRotate(new FixedText(this, ScResId(FT_ORIENT))), 65facb16e7SArmin Le Grand mpCtrlDial(new svx::sidebar::SidebarDialControl(this, ScResId(DIAL_CONTROL))), // , true)), 66facb16e7SArmin Le Grand mpMtrAngle(new MetricBox(this, ScResId(CBOX_ANGLE))), 67facb16e7SArmin Le Grand mpCbStacked(new CheckBox(this, ScResId(CBX_VERT))), 68facb16e7SArmin Le Grand maAlignHorControl(SID_H_ALIGNCELL, *pBindings, *this), 69facb16e7SArmin Le Grand maAlignVerControl(SID_V_ALIGNCELL, *pBindings, *this), 70facb16e7SArmin Le Grand maLeftIndentControl(SID_ATTR_ALIGN_INDENT, *pBindings, *this), 71facb16e7SArmin Le Grand maMergeCellControl(FID_MERGE_TOGGLE, *pBindings, *this), 72facb16e7SArmin Le Grand maWrapTextControl(SID_ATTR_ALIGN_LINEBREAK, *pBindings, *this), 73facb16e7SArmin Le Grand maAngleControl(SID_ATTR_ALIGN_DEGREES, *pBindings, *this), 74facb16e7SArmin Le Grand maStackControl(SID_ATTR_ALIGN_STACKED, *pBindings, *this), 75facb16e7SArmin Le Grand maIMGAlignLeft(ScResId(IMG_ALIGN_LEFT)), 76facb16e7SArmin Le Grand maIMGAlignCenter(ScResId(IMG_ALIGN_CENTER)), 77facb16e7SArmin Le Grand maIMGAlignRight(ScResId(IMG_ALIGN_RIGHT)), 78facb16e7SArmin Le Grand maIMGAlignJust(ScResId(IMG_ALIGN_JUST)), 79facb16e7SArmin Le Grand maIMGAlignTop(ScResId(IMG_ALIGN_TOP)), 80facb16e7SArmin Le Grand maIMGAlignCenterV(ScResId(IMG_ALIGN_CENTER_V)), 81facb16e7SArmin Le Grand maIMGAlignBottom(ScResId(IMG_ALIGN_BOTTOM)), 82facb16e7SArmin Le Grand meHorAlignState(SVX_HOR_JUSTIFY_STANDARD), 83facb16e7SArmin Le Grand meVerAlignState(SVX_VER_JUSTIFY_STANDARD), 84facb16e7SArmin Le Grand mbMultiDisable(false), 85facb16e7SArmin Le Grand mxFrame(rxFrame), 86facb16e7SArmin Le Grand maContext(), 87facb16e7SArmin Le Grand mpBindings(pBindings) 88facb16e7SArmin Le Grand { 89facb16e7SArmin Le Grand Initialize(); 90facb16e7SArmin Le Grand FreeResource(); 91facb16e7SArmin Le Grand } 92facb16e7SArmin Le Grand 93facb16e7SArmin Le Grand ////////////////////////////////////////////////////////////////////////////// 94facb16e7SArmin Le Grand 95facb16e7SArmin Le Grand AlignmentPropertyPanel::~AlignmentPropertyPanel() 96facb16e7SArmin Le Grand { 97facb16e7SArmin Le Grand } 98facb16e7SArmin Le Grand 99facb16e7SArmin Le Grand ////////////////////////////////////////////////////////////////////////////// 100facb16e7SArmin Le Grand 101facb16e7SArmin Le Grand void AlignmentPropertyPanel::Initialize() 102facb16e7SArmin Le Grand { 103facb16e7SArmin Le Grand mpTBHorizontal->SetItemImage(ID_SUBSTLEFT, maIMGAlignLeft); 104facb16e7SArmin Le Grand mpTBHorizontal->SetItemImage(ID_SUBSTCENTER, maIMGAlignCenter); 105facb16e7SArmin Le Grand mpTBHorizontal->SetItemImage(ID_SUBSTRIGHT, maIMGAlignRight); 106facb16e7SArmin Le Grand mpTBHorizontal->SetItemImage(ID_SUBSTJUSTIFY, maIMGAlignJust); 107facb16e7SArmin Le Grand Size aTbxSize( mpTBHorizontal->CalcWindowSizePixel() ); 108facb16e7SArmin Le Grand mpTBHorizontal->SetOutputSizePixel( aTbxSize ); 109facb16e7SArmin Le Grand mpTBHorizontal->SetBackground(Wallpaper()); 110facb16e7SArmin Le Grand mpTBHorizontal->SetPaintTransparent(true); 111facb16e7SArmin Le Grand Link aLink = LINK(this, AlignmentPropertyPanel, TbxHorAlignSelectHdl); 112facb16e7SArmin Le Grand mpTBHorizontal->SetSelectHdl ( aLink ); 113facb16e7SArmin Le Grand 114facb16e7SArmin Le Grand mpTBVertical->SetItemImage(IID_VERT_TOP, maIMGAlignTop); 115facb16e7SArmin Le Grand mpTBVertical->SetItemImage(IID_VERT_CENTER, maIMGAlignCenterV); 116facb16e7SArmin Le Grand mpTBVertical->SetItemImage(IID_VERT_BOTTOM, maIMGAlignBottom); 117facb16e7SArmin Le Grand Size aTbxSize2( mpTBVertical->CalcWindowSizePixel() ); 118facb16e7SArmin Le Grand mpTBVertical->SetOutputSizePixel( aTbxSize2 ); 119facb16e7SArmin Le Grand mpTBVertical->SetBackground(Wallpaper()); 120facb16e7SArmin Le Grand mpTBVertical->SetPaintTransparent(true); 121facb16e7SArmin Le Grand aLink = LINK(this, AlignmentPropertyPanel, TbxVerAlignSelectHdl); 122facb16e7SArmin Le Grand mpTBVertical->SetSelectHdl ( aLink ); 123facb16e7SArmin Le Grand 124facb16e7SArmin Le Grand mpFTLeftIndent->Disable(); 125facb16e7SArmin Le Grand mpMFLeftIndent->Disable(); 126facb16e7SArmin Le Grand mpMFLeftIndent->SetAccessibleName(::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Left Indent"))); //wj acc 127facb16e7SArmin Le Grand aLink = LINK(this, AlignmentPropertyPanel, MFLeftIndentMdyHdl); 128facb16e7SArmin Le Grand mpMFLeftIndent->SetModifyHdl ( aLink ); 129facb16e7SArmin Le Grand 130facb16e7SArmin Le Grand aLink = LINK(this, AlignmentPropertyPanel, CBOXMergnCellClkHdl); 131facb16e7SArmin Le Grand mpCBXMergeCell->SetClickHdl ( aLink ); 132facb16e7SArmin Le Grand 133facb16e7SArmin Le Grand aLink = LINK(this, AlignmentPropertyPanel, CBOXWrapTextClkHdl); 134facb16e7SArmin Le Grand mpCBXWrapText->SetClickHdl ( aLink ); 135facb16e7SArmin Le Grand 136facb16e7SArmin Le Grand //rotation control 137facb16e7SArmin Le Grand mpCtrlDial->SetAccessibleName(::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Text Orientation"))); //wj acc 138facb16e7SArmin Le Grand mpCtrlDial->SetModifyHdl(LINK( this, AlignmentPropertyPanel, RotationHdl)); 1394e8031e0SArmin Le Grand 1404e8031e0SArmin Le Grand //rotation 141facb16e7SArmin Le Grand mpMtrAngle->SetAccessibleName(::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Text Orientation"))); //wj acc 142facb16e7SArmin Le Grand mpMtrAngle->SetModifyHdl(LINK( this, AlignmentPropertyPanel, AngleModifiedHdl)); 143facb16e7SArmin Le Grand mpMtrAngle->EnableAutocomplete( false ); 1444e8031e0SArmin Le Grand 145facb16e7SArmin Le Grand //Vertical stacked 146facb16e7SArmin Le Grand mpCbStacked->SetClickHdl( LINK( this, AlignmentPropertyPanel, ClickStackHdl ) ); 147facb16e7SArmin Le Grand 148facb16e7SArmin Le Grand mpMtrAngle->InsertValue(0, FUNIT_CUSTOM); 149facb16e7SArmin Le Grand mpMtrAngle->InsertValue(45, FUNIT_CUSTOM); 150facb16e7SArmin Le Grand mpMtrAngle->InsertValue(90, FUNIT_CUSTOM); 151facb16e7SArmin Le Grand mpMtrAngle->InsertValue(135, FUNIT_CUSTOM); 152facb16e7SArmin Le Grand mpMtrAngle->InsertValue(180, FUNIT_CUSTOM); 153facb16e7SArmin Le Grand mpMtrAngle->InsertValue(225, FUNIT_CUSTOM); 154facb16e7SArmin Le Grand mpMtrAngle->InsertValue(270, FUNIT_CUSTOM); 155facb16e7SArmin Le Grand mpMtrAngle->InsertValue(315, FUNIT_CUSTOM); 156*df46ddf6SArmin Le Grand mpMtrAngle->SetDropDownLineCount(mpMtrAngle->GetEntryCount()); 157facb16e7SArmin Le Grand 158facb16e7SArmin Le Grand mpTBHorizontal->SetAccessibleRelationLabeledBy(mpTBHorizontal.get()); 159facb16e7SArmin Le Grand mpTBVertical->SetAccessibleRelationLabeledBy(mpTBVertical.get()); 160facb16e7SArmin Le Grand mpMFLeftIndent->SetAccessibleRelationLabeledBy(mpFTLeftIndent.get()); 161facb16e7SArmin Le Grand mpMtrAngle->SetAccessibleRelationLabeledBy(mpFtRotate.get()); 162facb16e7SArmin Le Grand #ifdef HAS_IA2 163facb16e7SArmin Le Grand mpMtrAngle->SetMpSubEditAccLableBy(mpFtRotate.get()); 164facb16e7SArmin Le Grand #endif 165facb16e7SArmin Le Grand } 166facb16e7SArmin Le Grand 167facb16e7SArmin Le Grand ////////////////////////////////////////////////////////////////////////////// 168facb16e7SArmin Le Grand 169facb16e7SArmin Le Grand IMPL_LINK( AlignmentPropertyPanel, AngleModifiedHdl, void *, EMPTYARG ) 170facb16e7SArmin Le Grand { 171facb16e7SArmin Le Grand String sTmp = mpMtrAngle->GetText(); 172facb16e7SArmin Le Grand 173facb16e7SArmin Le Grand sal_Unicode nChar = sTmp.GetChar( 0 ); 174facb16e7SArmin Le Grand if((sTmp.Len()== 1 && nChar == '-') || 175facb16e7SArmin Le Grand (nChar != '-' && ((nChar < '0') || (nChar > '9') ) )) ////modify 176facb16e7SArmin Le Grand return 0; 177facb16e7SArmin Le Grand 178facb16e7SArmin Le Grand double dTmp = sTmp.ToDouble(); 179facb16e7SArmin Le Grand FormatDegrees(dTmp); 180facb16e7SArmin Le Grand 181facb16e7SArmin Le Grand sal_Int64 nTmp = (sal_Int64)dTmp*100; 182facb16e7SArmin Le Grand SfxInt32Item aAngleItem( SID_ATTR_ALIGN_DEGREES,(sal_uInt32) nTmp); 183facb16e7SArmin Le Grand 184facb16e7SArmin Le Grand GetBindings()->GetDispatcher()->Execute( 185facb16e7SArmin Le Grand SID_ATTR_ALIGN_DEGREES, SFX_CALLMODE_RECORD, &aAngleItem, 0L ); 186facb16e7SArmin Le Grand return 0; 187facb16e7SArmin Le Grand } 188facb16e7SArmin Le Grand 189facb16e7SArmin Le Grand ////////////////////////////////////////////////////////////////////////////// 190facb16e7SArmin Le Grand 191facb16e7SArmin Le Grand IMPL_LINK( AlignmentPropertyPanel, RotationHdl, void *, EMPTYARG ) 192facb16e7SArmin Le Grand { 193facb16e7SArmin Le Grand sal_Int32 nTmp = mpCtrlDial->GetRotation(); 194facb16e7SArmin Le Grand SfxInt32Item aAngleItem( SID_ATTR_ALIGN_DEGREES,(sal_uInt32) nTmp); 195facb16e7SArmin Le Grand 196facb16e7SArmin Le Grand GetBindings()->GetDispatcher()->Execute( 197facb16e7SArmin Le Grand SID_ATTR_ALIGN_DEGREES, SFX_CALLMODE_RECORD, &aAngleItem, 0L ); 198facb16e7SArmin Le Grand 199facb16e7SArmin Le Grand return 0; 200facb16e7SArmin Le Grand } 201facb16e7SArmin Le Grand 202facb16e7SArmin Le Grand ////////////////////////////////////////////////////////////////////////////// 203facb16e7SArmin Le Grand 204facb16e7SArmin Le Grand IMPL_LINK( AlignmentPropertyPanel, ClickStackHdl, void *, EMPTYARG ) 205facb16e7SArmin Le Grand { 206facb16e7SArmin Le Grand bool bVertical = mpCbStacked->IsChecked() ? true : false; 207facb16e7SArmin Le Grand SfxBoolItem aStackItem( SID_ATTR_ALIGN_STACKED, bVertical ); 208facb16e7SArmin Le Grand GetBindings()->GetDispatcher()->Execute( 209facb16e7SArmin Le Grand SID_ATTR_ALIGN_STACKED, SFX_CALLMODE_RECORD, &aStackItem, 0L ); 210facb16e7SArmin Le Grand return 0; 211facb16e7SArmin Le Grand } 212facb16e7SArmin Le Grand 213facb16e7SArmin Le Grand ////////////////////////////////////////////////////////////////////////////// 214facb16e7SArmin Le Grand 215facb16e7SArmin Le Grand IMPL_LINK(AlignmentPropertyPanel, TbxHorAlignSelectHdl, ToolBox*, pToolBox) 216facb16e7SArmin Le Grand { 217facb16e7SArmin Le Grand sal_uInt16 nId = pToolBox->GetCurItemId(); 218facb16e7SArmin Le Grand 219facb16e7SArmin Le Grand if(nId == ID_SUBSTLEFT) 220facb16e7SArmin Le Grand { 221facb16e7SArmin Le Grand if(meHorAlignState != SVX_HOR_JUSTIFY_LEFT) 222facb16e7SArmin Le Grand meHorAlignState = SVX_HOR_JUSTIFY_LEFT; 223facb16e7SArmin Le Grand else 224facb16e7SArmin Le Grand meHorAlignState = SVX_HOR_JUSTIFY_STANDARD; 225facb16e7SArmin Le Grand } 226facb16e7SArmin Le Grand else if( nId == ID_SUBSTCENTER ) 227facb16e7SArmin Le Grand { 228facb16e7SArmin Le Grand if(meHorAlignState != SVX_HOR_JUSTIFY_CENTER) 229facb16e7SArmin Le Grand meHorAlignState = SVX_HOR_JUSTIFY_CENTER; 230facb16e7SArmin Le Grand else 231facb16e7SArmin Le Grand meHorAlignState = SVX_HOR_JUSTIFY_STANDARD; 232facb16e7SArmin Le Grand } 233facb16e7SArmin Le Grand else if( nId == ID_SUBSTRIGHT ) 234facb16e7SArmin Le Grand { 235facb16e7SArmin Le Grand if(meHorAlignState != SVX_HOR_JUSTIFY_RIGHT) 236facb16e7SArmin Le Grand meHorAlignState = SVX_HOR_JUSTIFY_RIGHT; 237facb16e7SArmin Le Grand else 238facb16e7SArmin Le Grand meHorAlignState = SVX_HOR_JUSTIFY_STANDARD; 239facb16e7SArmin Le Grand } 240facb16e7SArmin Le Grand else if( nId == ID_SUBSTJUSTIFY ) 241facb16e7SArmin Le Grand { 242facb16e7SArmin Le Grand if(meHorAlignState != SVX_HOR_JUSTIFY_BLOCK) 243facb16e7SArmin Le Grand meHorAlignState = SVX_HOR_JUSTIFY_BLOCK; 244facb16e7SArmin Le Grand else 245facb16e7SArmin Le Grand meHorAlignState = SVX_HOR_JUSTIFY_STANDARD; 246facb16e7SArmin Le Grand } 247facb16e7SArmin Le Grand SvxHorJustifyItem aHorItem(meHorAlignState, SID_H_ALIGNCELL); 248facb16e7SArmin Le Grand GetBindings()->GetDispatcher()->Execute(SID_H_ALIGNCELL, SFX_CALLMODE_RECORD, &aHorItem, 0L); 249facb16e7SArmin Le Grand UpdateHorAlign(); 250facb16e7SArmin Le Grand return 0; 251facb16e7SArmin Le Grand } 252facb16e7SArmin Le Grand 253facb16e7SArmin Le Grand ////////////////////////////////////////////////////////////////////////////// 254facb16e7SArmin Le Grand 255facb16e7SArmin Le Grand IMPL_LINK(AlignmentPropertyPanel, TbxVerAlignSelectHdl, ToolBox*, pToolBox) 256facb16e7SArmin Le Grand { 257facb16e7SArmin Le Grand sal_uInt16 nId = pToolBox->GetCurItemId(); 258facb16e7SArmin Le Grand 259facb16e7SArmin Le Grand //Bold 260facb16e7SArmin Le Grand if(nId == IID_VERT_TOP) 261facb16e7SArmin Le Grand { 262facb16e7SArmin Le Grand if(meVerAlignState != SVX_VER_JUSTIFY_TOP) 263facb16e7SArmin Le Grand meVerAlignState = SVX_VER_JUSTIFY_TOP; 264facb16e7SArmin Le Grand else 265facb16e7SArmin Le Grand meVerAlignState = SVX_VER_JUSTIFY_STANDARD; 266facb16e7SArmin Le Grand } 267facb16e7SArmin Le Grand else if( nId == IID_VERT_CENTER ) 268facb16e7SArmin Le Grand { 269facb16e7SArmin Le Grand if(meVerAlignState != SVX_VER_JUSTIFY_CENTER) 270facb16e7SArmin Le Grand meVerAlignState = SVX_VER_JUSTIFY_CENTER; 271facb16e7SArmin Le Grand else 272facb16e7SArmin Le Grand meVerAlignState = SVX_VER_JUSTIFY_STANDARD; 273facb16e7SArmin Le Grand } 274facb16e7SArmin Le Grand else if( nId == IID_VERT_BOTTOM ) 275facb16e7SArmin Le Grand { 276facb16e7SArmin Le Grand if(meVerAlignState != SVX_VER_JUSTIFY_BOTTOM) 277facb16e7SArmin Le Grand meVerAlignState = SVX_VER_JUSTIFY_BOTTOM; 278facb16e7SArmin Le Grand else 279facb16e7SArmin Le Grand meVerAlignState = SVX_VER_JUSTIFY_STANDARD; 280facb16e7SArmin Le Grand } 281facb16e7SArmin Le Grand SvxVerJustifyItem aVerItem(meVerAlignState, SID_V_ALIGNCELL); 282facb16e7SArmin Le Grand GetBindings()->GetDispatcher()->Execute(SID_V_ALIGNCELL, SFX_CALLMODE_RECORD, &aVerItem, 0L); 283facb16e7SArmin Le Grand UpdateVerAlign(); 284facb16e7SArmin Le Grand return 0; 285facb16e7SArmin Le Grand } 286facb16e7SArmin Le Grand 287facb16e7SArmin Le Grand ////////////////////////////////////////////////////////////////////////////// 288facb16e7SArmin Le Grand 289facb16e7SArmin Le Grand IMPL_LINK(AlignmentPropertyPanel, MFLeftIndentMdyHdl, void*, EMPTYARG) 290facb16e7SArmin Le Grand { 291facb16e7SArmin Le Grand mpCBXWrapText->EnableTriState(false); 292facb16e7SArmin Le Grand sal_uInt16 nVal = (sal_uInt16)mpMFLeftIndent->GetValue(); 293facb16e7SArmin Le Grand SfxUInt16Item aItem( SID_ATTR_ALIGN_INDENT, (sal_uInt16)CalcToUnit( nVal, SFX_MAPUNIT_TWIP ) ); 294facb16e7SArmin Le Grand 295facb16e7SArmin Le Grand GetBindings()->GetDispatcher()->Execute(SID_ATTR_ALIGN_INDENT, SFX_CALLMODE_RECORD, &aItem, 0L); 296facb16e7SArmin Le Grand return( 0L ); 297facb16e7SArmin Le Grand } 298facb16e7SArmin Le Grand 299facb16e7SArmin Le Grand ////////////////////////////////////////////////////////////////////////////// 300facb16e7SArmin Le Grand 301facb16e7SArmin Le Grand IMPL_LINK(AlignmentPropertyPanel, CBOXMergnCellClkHdl, void*, EMPTYARG) 302facb16e7SArmin Le Grand { 303facb16e7SArmin Le Grand bool bState = mpCBXMergeCell->IsChecked(); 304facb16e7SArmin Le Grand 305facb16e7SArmin Le Grand //Modified 306facb16e7SArmin Le Grand //SfxBoolItem aItem( FID_MERGE_TOGGLE , bState); 307facb16e7SArmin Le Grand //GetBindings()->GetDispatcher()->Execute(FID_MERGE_TOGGLE, SFX_CALLMODE_RECORD, &aItem, false, 0L); 308facb16e7SArmin Le Grand if(bState) 309facb16e7SArmin Le Grand GetBindings()->GetDispatcher()->Execute(FID_MERGE_ON, SFX_CALLMODE_RECORD); 310facb16e7SArmin Le Grand else 311facb16e7SArmin Le Grand GetBindings()->GetDispatcher()->Execute(FID_MERGE_OFF, SFX_CALLMODE_RECORD); 312facb16e7SArmin Le Grand GetBindings()->Invalidate(FID_MERGE_TOGGLE,true,false); 313facb16e7SArmin Le Grand //modified end 314facb16e7SArmin Le Grand 315facb16e7SArmin Le Grand return 0; 316facb16e7SArmin Le Grand } 317facb16e7SArmin Le Grand 318facb16e7SArmin Le Grand ////////////////////////////////////////////////////////////////////////////// 319facb16e7SArmin Le Grand 320facb16e7SArmin Le Grand IMPL_LINK(AlignmentPropertyPanel, CBOXWrapTextClkHdl, void*, EMPTYARG) 321facb16e7SArmin Le Grand { 322facb16e7SArmin Le Grand bool bState = mpCBXWrapText->IsChecked(); 323facb16e7SArmin Le Grand SfxBoolItem aItem( SID_ATTR_ALIGN_LINEBREAK , bState); 324facb16e7SArmin Le Grand GetBindings()->GetDispatcher()->Execute(SID_ATTR_ALIGN_LINEBREAK, SFX_CALLMODE_RECORD, &aItem, 0L); 325facb16e7SArmin Le Grand return 0; 326facb16e7SArmin Le Grand } 327facb16e7SArmin Le Grand 328facb16e7SArmin Le Grand ////////////////////////////////////////////////////////////////////////////// 329facb16e7SArmin Le Grand 330facb16e7SArmin Le Grand AlignmentPropertyPanel* AlignmentPropertyPanel::Create ( 331facb16e7SArmin Le Grand Window* pParent, 332facb16e7SArmin Le Grand const cssu::Reference<css::frame::XFrame>& rxFrame, 333facb16e7SArmin Le Grand SfxBindings* pBindings) 334facb16e7SArmin Le Grand { 335facb16e7SArmin Le Grand if (pParent == NULL) 336facb16e7SArmin Le Grand throw lang::IllegalArgumentException(A2S("no parent Window given to AlignmentPropertyPanel::Create"), NULL, 0); 337facb16e7SArmin Le Grand if ( ! rxFrame.is()) 338facb16e7SArmin Le Grand throw lang::IllegalArgumentException(A2S("no XFrame given to AlignmentPropertyPanel::Create"), NULL, 1); 339facb16e7SArmin Le Grand if (pBindings == NULL) 340facb16e7SArmin Le Grand throw lang::IllegalArgumentException(A2S("no SfxBindings given to AlignmentPropertyPanel::Create"), NULL, 2); 341facb16e7SArmin Le Grand 342facb16e7SArmin Le Grand return new AlignmentPropertyPanel( 343facb16e7SArmin Le Grand pParent, 344facb16e7SArmin Le Grand rxFrame, 345facb16e7SArmin Le Grand pBindings); 346facb16e7SArmin Le Grand } 347facb16e7SArmin Le Grand 348facb16e7SArmin Le Grand ////////////////////////////////////////////////////////////////////////////// 349facb16e7SArmin Le Grand 350facb16e7SArmin Le Grand void AlignmentPropertyPanel::DataChanged( 351facb16e7SArmin Le Grand const DataChangedEvent& rEvent) 352facb16e7SArmin Le Grand { 353facb16e7SArmin Le Grand (void)rEvent; 354facb16e7SArmin Le Grand } 355facb16e7SArmin Le Grand 356facb16e7SArmin Le Grand ////////////////////////////////////////////////////////////////////////////// 357facb16e7SArmin Le Grand 358facb16e7SArmin Le Grand void AlignmentPropertyPanel::HandleContextChange( 359facb16e7SArmin Le Grand const ::sfx2::sidebar::EnumContext aContext) 360facb16e7SArmin Le Grand { 361facb16e7SArmin Le Grand if(maContext == aContext) 362facb16e7SArmin Le Grand { 363facb16e7SArmin Le Grand // Nothing to do. 364facb16e7SArmin Le Grand return; 365facb16e7SArmin Le Grand } 366facb16e7SArmin Le Grand 367facb16e7SArmin Le Grand maContext = aContext; 368facb16e7SArmin Le Grand 369facb16e7SArmin Le Grand 370facb16e7SArmin Le Grand 371facb16e7SArmin Le Grand // todo 372facb16e7SArmin Le Grand } 373facb16e7SArmin Le Grand 374facb16e7SArmin Le Grand ////////////////////////////////////////////////////////////////////////////// 375facb16e7SArmin Le Grand 376facb16e7SArmin Le Grand void AlignmentPropertyPanel::NotifyItemUpdate( 377facb16e7SArmin Le Grand sal_uInt16 nSID, 378facb16e7SArmin Le Grand SfxItemState eState, 379facb16e7SArmin Le Grand const SfxPoolItem* pState) 380facb16e7SArmin Le Grand { 381facb16e7SArmin Le Grand switch(nSID) 382facb16e7SArmin Le Grand { 383facb16e7SArmin Le Grand case SID_H_ALIGNCELL: 384facb16e7SArmin Le Grand if(eState >= SFX_ITEM_DEFAULT && pState && pState->ISA(SvxHorJustifyItem) ) 385facb16e7SArmin Le Grand { 386facb16e7SArmin Le Grand const SvxHorJustifyItem* pItem = (const SvxHorJustifyItem*)pState; 387facb16e7SArmin Le Grand meHorAlignState = (SvxCellHorJustify)pItem->GetValue(); 388facb16e7SArmin Le Grand } 389facb16e7SArmin Le Grand else 390facb16e7SArmin Le Grand { 391facb16e7SArmin Le Grand meHorAlignState = SVX_HOR_JUSTIFY_STANDARD; 392facb16e7SArmin Le Grand } 393facb16e7SArmin Le Grand UpdateHorAlign(); 394facb16e7SArmin Le Grand break; 395facb16e7SArmin Le Grand case SID_V_ALIGNCELL: 396facb16e7SArmin Le Grand if(eState >= SFX_ITEM_DEFAULT && pState && pState->ISA(SvxVerJustifyItem) ) 397facb16e7SArmin Le Grand { 398facb16e7SArmin Le Grand const SvxVerJustifyItem* pItem = (const SvxVerJustifyItem*)pState; 399facb16e7SArmin Le Grand meVerAlignState = (SvxCellVerJustify)pItem->GetValue(); 400facb16e7SArmin Le Grand } 401facb16e7SArmin Le Grand else 402facb16e7SArmin Le Grand { 403facb16e7SArmin Le Grand meVerAlignState = SVX_VER_JUSTIFY_STANDARD; 404facb16e7SArmin Le Grand } 405facb16e7SArmin Le Grand UpdateVerAlign(); 406facb16e7SArmin Le Grand break; 407facb16e7SArmin Le Grand case SID_ATTR_ALIGN_INDENT: 408facb16e7SArmin Le Grand if(eState >= SFX_ITEM_DEFAULT && pState && pState->ISA(SfxUInt16Item) ) 409facb16e7SArmin Le Grand { 410facb16e7SArmin Le Grand const SfxUInt16Item* pItem = (const SfxUInt16Item*)pState; 411facb16e7SArmin Le Grand sal_uInt16 nVal = pItem->GetValue(); 412facb16e7SArmin Le Grand mpMFLeftIndent->SetValue( CalcToPoint(nVal, SFX_MAPUNIT_TWIP, 1) ); 413facb16e7SArmin Le Grand } 414facb16e7SArmin Le Grand else 415facb16e7SArmin Le Grand { 416facb16e7SArmin Le Grand mpMFLeftIndent->SetValue(0); 417facb16e7SArmin Le Grand mpMFLeftIndent->SetText(String()); 418facb16e7SArmin Le Grand } 419facb16e7SArmin Le Grand break; 420facb16e7SArmin Le Grand case FID_MERGE_TOGGLE: 421facb16e7SArmin Le Grand if(eState >= SFX_ITEM_DEFAULT && pState && pState->ISA(SfxBoolItem) ) 422facb16e7SArmin Le Grand { 423facb16e7SArmin Le Grand mpCBXMergeCell->Enable(); 424facb16e7SArmin Le Grand const SfxBoolItem* pItem = (const SfxBoolItem*)pState; 425facb16e7SArmin Le Grand bool bVal = pItem->GetValue(); 426facb16e7SArmin Le Grand if(bVal) 427facb16e7SArmin Le Grand mpCBXMergeCell->Check(true); 428facb16e7SArmin Le Grand else 429facb16e7SArmin Le Grand mpCBXMergeCell->Check(false); 430facb16e7SArmin Le Grand } 431facb16e7SArmin Le Grand else 432facb16e7SArmin Le Grand { 433facb16e7SArmin Le Grand mpCBXMergeCell->Check(false); 434facb16e7SArmin Le Grand mpCBXMergeCell->Disable(); 435facb16e7SArmin Le Grand } 436facb16e7SArmin Le Grand break; 437facb16e7SArmin Le Grand 438facb16e7SArmin Le Grand case SID_ATTR_ALIGN_LINEBREAK: 439facb16e7SArmin Le Grand if(eState == SFX_ITEM_DISABLED) 440facb16e7SArmin Le Grand { 441facb16e7SArmin Le Grand mpCBXWrapText->EnableTriState(false); 442facb16e7SArmin Le Grand mpCBXWrapText->Check(false); 443facb16e7SArmin Le Grand mpCBXWrapText->Disable(); 444facb16e7SArmin Le Grand } 445facb16e7SArmin Le Grand else 446facb16e7SArmin Le Grand { 447facb16e7SArmin Le Grand mpCBXWrapText->Enable(); 448facb16e7SArmin Le Grand if(eState >= SFX_ITEM_DEFAULT && pState && pState->ISA(SfxBoolItem) ) 449facb16e7SArmin Le Grand { 450facb16e7SArmin Le Grand mpCBXWrapText->EnableTriState(false); 451facb16e7SArmin Le Grand const SfxBoolItem* pItem = (const SfxBoolItem*)pState; 452facb16e7SArmin Le Grand bool bVal = pItem->GetValue(); 453facb16e7SArmin Le Grand if(bVal) 454facb16e7SArmin Le Grand mpCBXWrapText->Check(true); 455facb16e7SArmin Le Grand else 456facb16e7SArmin Le Grand mpCBXWrapText->Check(false); 457facb16e7SArmin Le Grand } 458facb16e7SArmin Le Grand else if(eState == SFX_ITEM_DONTCARE) 459facb16e7SArmin Le Grand { 460facb16e7SArmin Le Grand mpCBXWrapText->EnableTriState(true); 461facb16e7SArmin Le Grand mpCBXWrapText->SetState(STATE_DONTKNOW); 462facb16e7SArmin Le Grand } 463facb16e7SArmin Le Grand } 464facb16e7SArmin Le Grand break; 465facb16e7SArmin Le Grand case SID_ATTR_ALIGN_DEGREES: 466facb16e7SArmin Le Grand if (eState >= SFX_ITEM_AVAILABLE) 467facb16e7SArmin Le Grand { 468facb16e7SArmin Le Grand long nTmp = ((const SfxInt32Item*)pState)->GetValue(); 469facb16e7SArmin Le Grand mpMtrAngle->SetValue( nTmp / 100); //wj 470facb16e7SArmin Le Grand mpCtrlDial->SetRotation( nTmp ); 471facb16e7SArmin Le Grand switch(nTmp) 472facb16e7SArmin Le Grand { 473facb16e7SArmin Le Grand case 0: 474facb16e7SArmin Le Grand mpMtrAngle->SelectEntryPos(0); 475facb16e7SArmin Le Grand break; 476facb16e7SArmin Le Grand case 4500: 477facb16e7SArmin Le Grand mpMtrAngle->SelectEntryPos(1); 478facb16e7SArmin Le Grand break; 479facb16e7SArmin Le Grand case 9000: 480facb16e7SArmin Le Grand mpMtrAngle->SelectEntryPos(2); 481facb16e7SArmin Le Grand break; 482facb16e7SArmin Le Grand case 13500: 483facb16e7SArmin Le Grand mpMtrAngle->SelectEntryPos(3); 484facb16e7SArmin Le Grand break; 485facb16e7SArmin Le Grand case 18000: 486facb16e7SArmin Le Grand mpMtrAngle->SelectEntryPos(4); 487facb16e7SArmin Le Grand break; 488facb16e7SArmin Le Grand case 22500: 489facb16e7SArmin Le Grand mpMtrAngle->SelectEntryPos(5); 490facb16e7SArmin Le Grand break; 491facb16e7SArmin Le Grand case 27000: 492facb16e7SArmin Le Grand mpMtrAngle->SelectEntryPos(6); 493facb16e7SArmin Le Grand break; 494facb16e7SArmin Le Grand case 31500: 495facb16e7SArmin Le Grand mpMtrAngle->SelectEntryPos(7); 496facb16e7SArmin Le Grand } 497facb16e7SArmin Le Grand } 498facb16e7SArmin Le Grand else 499facb16e7SArmin Le Grand { 500facb16e7SArmin Le Grand mpMtrAngle->SetText( String() ); 501facb16e7SArmin Le Grand mpCtrlDial->SetRotation( 0 ); 502facb16e7SArmin Le Grand } 503facb16e7SArmin Le Grand break; 504facb16e7SArmin Le Grand case SID_ATTR_ALIGN_STACKED: 505facb16e7SArmin Le Grand if (eState >= SFX_ITEM_AVAILABLE) 506facb16e7SArmin Le Grand { 507facb16e7SArmin Le Grand mpCbStacked->EnableTriState(false); 508facb16e7SArmin Le Grand const SfxBoolItem* aStackItem = (const SfxBoolItem*)pState; 509facb16e7SArmin Le Grand bool IsChecked = (bool)aStackItem->GetValue(); 510facb16e7SArmin Le Grand if(IsChecked) 511facb16e7SArmin Le Grand { 512facb16e7SArmin Le Grand mpCbStacked->Check(IsChecked); 513facb16e7SArmin Le Grand mpFtRotate->Disable(); 514facb16e7SArmin Le Grand mpMtrAngle->Disable(); 515facb16e7SArmin Le Grand mpCtrlDial->Disable(); 516facb16e7SArmin Le Grand mbMultiDisable = true; 517facb16e7SArmin Le Grand } 518facb16e7SArmin Le Grand else 519facb16e7SArmin Le Grand { 520facb16e7SArmin Le Grand mpCbStacked->Check(IsChecked); 521facb16e7SArmin Le Grand mpFtRotate->Enable(); 522facb16e7SArmin Le Grand mpMtrAngle->Enable(); 523facb16e7SArmin Le Grand mpCtrlDial->Enable(); 524facb16e7SArmin Le Grand mbMultiDisable = false; 525facb16e7SArmin Le Grand } 526facb16e7SArmin Le Grand } 527facb16e7SArmin Le Grand else 528facb16e7SArmin Le Grand { 529facb16e7SArmin Le Grand mbMultiDisable = true; 530facb16e7SArmin Le Grand mpFtRotate->Disable(); 531facb16e7SArmin Le Grand mpMtrAngle->Disable(); 532facb16e7SArmin Le Grand mpCtrlDial->Disable(); 533facb16e7SArmin Le Grand mpCbStacked->EnableTriState(true); 534facb16e7SArmin Le Grand mpCbStacked->SetState(STATE_DONTKNOW); 535facb16e7SArmin Le Grand } 536facb16e7SArmin Le Grand } 537facb16e7SArmin Le Grand } 538facb16e7SArmin Le Grand 539facb16e7SArmin Le Grand ////////////////////////////////////////////////////////////////////////////// 540facb16e7SArmin Le Grand 541facb16e7SArmin Le Grand SfxBindings* AlignmentPropertyPanel::GetBindings() 542facb16e7SArmin Le Grand { 543facb16e7SArmin Le Grand return mpBindings; 544facb16e7SArmin Le Grand } 545facb16e7SArmin Le Grand 546facb16e7SArmin Le Grand ////////////////////////////////////////////////////////////////////////////// 547facb16e7SArmin Le Grand 548facb16e7SArmin Le Grand void AlignmentPropertyPanel::FormatDegrees(double& dTmp) 549facb16e7SArmin Le Grand { 550facb16e7SArmin Le Grand while(dTmp<0) 551facb16e7SArmin Le Grand dTmp += 360; 552facb16e7SArmin Le Grand while (dTmp > 359) //modify 553facb16e7SArmin Le Grand dTmp = 359; 554facb16e7SArmin Le Grand } 555facb16e7SArmin Le Grand 556facb16e7SArmin Le Grand ////////////////////////////////////////////////////////////////////////////// 557facb16e7SArmin Le Grand 558facb16e7SArmin Le Grand void AlignmentPropertyPanel::UpdateHorAlign() 559facb16e7SArmin Le Grand { 560facb16e7SArmin Le Grand mpTBHorizontal->SetItemState(ID_SUBSTLEFT, STATE_NOCHECK); 561facb16e7SArmin Le Grand mpTBHorizontal->SetItemState(ID_SUBSTCENTER, STATE_NOCHECK); 562facb16e7SArmin Le Grand mpTBHorizontal->SetItemState(ID_SUBSTRIGHT, STATE_NOCHECK); 563facb16e7SArmin Le Grand mpTBHorizontal->SetItemState(ID_SUBSTJUSTIFY,STATE_NOCHECK); 564facb16e7SArmin Le Grand mpFTLeftIndent->Disable(); 565facb16e7SArmin Le Grand mpMFLeftIndent->Disable(); 566facb16e7SArmin Le Grand if(meHorAlignState==SVX_HOR_JUSTIFY_REPEAT) 567facb16e7SArmin Le Grand { 568facb16e7SArmin Le Grand mpFtRotate->Disable(); 569facb16e7SArmin Le Grand mpCtrlDial->Disable(); 570facb16e7SArmin Le Grand mpMtrAngle->Disable(); 571facb16e7SArmin Le Grand mpCbStacked->Disable(); 572facb16e7SArmin Le Grand } 573facb16e7SArmin Le Grand else 574facb16e7SArmin Le Grand { 575facb16e7SArmin Le Grand if(!mbMultiDisable) 576facb16e7SArmin Le Grand { 577facb16e7SArmin Le Grand mpFtRotate->Enable(); 578facb16e7SArmin Le Grand mpCtrlDial->Enable(); 579facb16e7SArmin Le Grand mpMtrAngle->Enable(); 580facb16e7SArmin Le Grand } 581facb16e7SArmin Le Grand else 582facb16e7SArmin Le Grand { 583facb16e7SArmin Le Grand mpFtRotate->Disable(); 584facb16e7SArmin Le Grand mpCtrlDial->Disable(); 585facb16e7SArmin Le Grand mpMtrAngle->Disable(); 586facb16e7SArmin Le Grand } 587facb16e7SArmin Le Grand mpCbStacked->Enable(); 588facb16e7SArmin Le Grand } 589facb16e7SArmin Le Grand switch(meHorAlignState) 590facb16e7SArmin Le Grand { 591facb16e7SArmin Le Grand case SVX_HOR_JUSTIFY_LEFT: 592facb16e7SArmin Le Grand mpTBHorizontal->SetItemState(ID_SUBSTLEFT, STATE_CHECK); 593facb16e7SArmin Le Grand mpFTLeftIndent->Enable(); 594facb16e7SArmin Le Grand mpMFLeftIndent->Enable(); 595facb16e7SArmin Le Grand break; 596facb16e7SArmin Le Grand case SVX_HOR_JUSTIFY_CENTER:mpTBHorizontal->SetItemState(ID_SUBSTCENTER, STATE_CHECK);break; 597facb16e7SArmin Le Grand case SVX_HOR_JUSTIFY_RIGHT: mpTBHorizontal->SetItemState(ID_SUBSTRIGHT, STATE_CHECK);break; 598facb16e7SArmin Le Grand case SVX_HOR_JUSTIFY_BLOCK: mpTBHorizontal->SetItemState(ID_SUBSTJUSTIFY,STATE_CHECK);break; 599facb16e7SArmin Le Grand default:; 600facb16e7SArmin Le Grand } 601facb16e7SArmin Le Grand } 602facb16e7SArmin Le Grand 603facb16e7SArmin Le Grand ////////////////////////////////////////////////////////////////////////////// 604facb16e7SArmin Le Grand 605facb16e7SArmin Le Grand void AlignmentPropertyPanel::UpdateVerAlign() 606facb16e7SArmin Le Grand { 607facb16e7SArmin Le Grand mpTBVertical->SetItemState(IID_VERT_TOP, STATE_NOCHECK); 608facb16e7SArmin Le Grand mpTBVertical->SetItemState(IID_VERT_CENTER, STATE_NOCHECK); 609facb16e7SArmin Le Grand mpTBVertical->SetItemState(IID_VERT_BOTTOM, STATE_NOCHECK); 610facb16e7SArmin Le Grand 611facb16e7SArmin Le Grand switch(meVerAlignState) 612facb16e7SArmin Le Grand { 613facb16e7SArmin Le Grand case SVX_VER_JUSTIFY_TOP: mpTBVertical->SetItemState(IID_VERT_TOP, STATE_CHECK);break; 614facb16e7SArmin Le Grand case SVX_VER_JUSTIFY_CENTER:mpTBVertical->SetItemState(IID_VERT_CENTER, STATE_CHECK);break; 615facb16e7SArmin Le Grand case SVX_VER_JUSTIFY_BOTTOM: mpTBVertical->SetItemState(IID_VERT_BOTTOM, STATE_CHECK);break; 616facb16e7SArmin Le Grand default:; 617facb16e7SArmin Le Grand } 618facb16e7SArmin Le Grand } 619facb16e7SArmin Le Grand 620facb16e7SArmin Le Grand ////////////////////////////////////////////////////////////////////////////// 621facb16e7SArmin Le Grand // namespace close 622facb16e7SArmin Le Grand 623facb16e7SArmin Le Grand }} // end of namespace ::sc::sidebar 624facb16e7SArmin Le Grand 625facb16e7SArmin Le Grand ////////////////////////////////////////////////////////////////////////////// 626facb16e7SArmin Le Grand // eof 627