|  | /************************************************************** | 
|  | * | 
|  | * Licensed to the Apache Software Foundation (ASF) under one | 
|  | * or more contributor license agreements.  See the NOTICE file | 
|  | * distributed with this work for additional information | 
|  | * regarding copyright ownership.  The ASF licenses this file | 
|  | * to you under the Apache License, Version 2.0 (the | 
|  | * "License"); you may not use this file except in compliance | 
|  | * with the License.  You may obtain a copy of the License at | 
|  | * | 
|  | *   http://www.apache.org/licenses/LICENSE-2.0 | 
|  | * | 
|  | * Unless required by applicable law or agreed to in writing, | 
|  | * software distributed under the License is distributed on an | 
|  | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | 
|  | * KIND, either express or implied.  See the License for the | 
|  | * specific language governing permissions and limitations | 
|  | * under the License. | 
|  | * | 
|  | *************************************************************/ | 
|  |  | 
|  |  | 
|  |  | 
|  | // MARKER(update_precomp.py): autogen include statement, do not remove | 
|  | #include "precompiled_sw.hxx" | 
|  |  | 
|  | #ifdef SW_DLLIMPLEMENTATION | 
|  | #undef SW_DLLIMPLEMENTATION | 
|  | #endif | 
|  |  | 
|  |  | 
|  | #include <hintids.hxx> | 
|  | #include <tools/list.hxx> | 
|  | #include <vcl/msgbox.hxx> | 
|  | #include <svl/stritem.hxx> | 
|  | #include <svl/intitem.hxx> | 
|  | #include <svx/htmlmode.hxx> | 
|  | #include <editeng/keepitem.hxx> | 
|  | #include <editeng/brkitem.hxx> | 
|  | #include <editeng/ulspitem.hxx> | 
|  | #include <editeng/frmdiritem.hxx> | 
|  | #include <svl/ctloptions.hxx> | 
|  | #include <swmodule.hxx> | 
|  | #include <fmtornt.hxx> | 
|  | #include <fmtpdsc.hxx> | 
|  | #include <fmtlsplt.hxx> | 
|  |  | 
|  | #include <svtools/htmlcfg.hxx> | 
|  | #include <fmtrowsplt.hxx> | 
|  | #include <svx/htmlmode.hxx> | 
|  |  | 
|  | #include "access.hrc" | 
|  |  | 
|  | #ifndef _DOCSH_HXX | 
|  | #include <docsh.hxx> | 
|  | #endif | 
|  | #include <wrtsh.hxx> | 
|  | #ifndef _VIEW_HXX | 
|  | #include <view.hxx> | 
|  | #endif | 
|  | #include <viewopt.hxx> | 
|  | #include <uitool.hxx> | 
|  | #include <frmatr.hxx> | 
|  | #include <tabledlg.hxx> | 
|  | #ifndef _TABLEPG_HXX | 
|  | #include <tablepg.hxx> | 
|  | #endif | 
|  | #include <tablemgr.hxx> | 
|  | #include <pagedesc.hxx> | 
|  | #include <uiitems.hxx> | 
|  | #include <poolfmt.hxx> | 
|  | #include <SwStyleNameMapper.hxx> | 
|  |  | 
|  | #ifndef _CMDID_H | 
|  | #include <cmdid.h> | 
|  | #endif | 
|  | #ifndef _TABLEDLG_HRC | 
|  | #include <tabledlg.hrc> | 
|  | #endif | 
|  | #ifndef _TABLE_HRC | 
|  | #include <table.hrc> | 
|  | #endif | 
|  | #include <svx/svxids.hrc> | 
|  | #include <svx/dialogs.hrc> | 
|  | #include <svx/flagsdef.hxx> | 
|  | #include <svx/svxdlg.hxx> | 
|  |  | 
|  | using namespace ::com::sun::star; | 
|  |  | 
|  |  | 
|  | #ifdef DEBUG_TBLDLG | 
|  | void DbgTblRep(SwTableRep* pRep) | 
|  | { | 
|  | DBG_ERROR(String(pRep->GetColCount())) | 
|  | DBG_ERROR(String(pRep->GetAllColCount())) | 
|  | SwTwips nSum = 0; | 
|  | for(sal_uInt16 i = 0; i < pRep->GetAllColCount(); i++) | 
|  | { | 
|  | String sMsg(i); | 
|  | sMsg += pRep->GetColumns()[i].bVisible ? " v " : " h "; | 
|  | sMsg += pRep->GetColumns()[i].nWidth; | 
|  | nSum +=pRep->GetColumns()[i].nWidth; | 
|  | DBG_ERROR(sMsg) | 
|  | } | 
|  | String sMsg("Spaltensumme: "); | 
|  | sMsg += nSum; | 
|  | sMsg += " Tblbreite: "; | 
|  | sMsg += pRep->GetWidth(); | 
|  | DBG_ERROR(sMsg) | 
|  | sMsg = "Gesamt/Links/Rechts: "; | 
|  | sMsg += pRep->GetSpace(); | 
|  | sMsg += '/'; | 
|  | sMsg += pRep->GetLeftSpace(); | 
|  | sMsg += '/'; | 
|  | sMsg += pRep->GetRightSpace(); | 
|  | DBG_ERROR(sMsg) | 
|  | sMsg = "Align: "; | 
|  | sMsg += pRep->GetAlign(); | 
|  | DBG_ERROR(sMsg) | 
|  |  | 
|  | }; | 
|  |  | 
|  | #endif | 
|  |  | 
|  |  | 
|  | SwFormatTablePage::SwFormatTablePage( Window* pParent, const SfxItemSet& rSet ) : | 
|  | SfxTabPage(pParent, SW_RES( TP_FORMAT_TABLE ), rSet ), | 
|  | aOptionsFL(this,    SW_RES( FL_OPTIONS )), | 
|  | aNameFT(this,		SW_RES( FT_NAME )), | 
|  | aNameED(this,		SW_RES( ED_NAME )), | 
|  | aWidthFT(this,		SW_RES( FT_WIDTH )), | 
|  | aWidthMF(this,		SW_RES( ED_WIDTH )), | 
|  | aRelWidthCB(this, 	SW_RES( CB_REL_WIDTH )), | 
|  |  | 
|  | aPosFL(this,       SW_RES( FL_POS )), | 
|  | aFullBtn(this,      SW_RES( RB_FULL )), | 
|  | aLeftBtn(this,      SW_RES( RB_LEFT )), | 
|  | aFromLeftBtn(this,  SW_RES( RB_FROM_LEFT )), | 
|  | aRightBtn(this,     SW_RES( RB_RIGHT )), | 
|  | aCenterBtn(this,    SW_RES( RB_CENTER )), | 
|  | aFreeBtn(this,      SW_RES( RB_FREE )), | 
|  |  | 
|  | aDistFL(this,       SW_RES( FL_DIST )), | 
|  | aLeftFT(this,       SW_RES( FT_LEFT_DIST )), | 
|  | aLeftMF(this,		SW_RES( ED_LEFT_DIST )), | 
|  | aRightFT(this,		SW_RES( FT_RIGHT_DIST )), | 
|  | aRightMF(this,		SW_RES( ED_RIGHT_DIST )), | 
|  | aTopFT (this,		SW_RES( FT_TOP_DIST )), | 
|  | aTopMF(this,		SW_RES( ED_TOP_DIST )), | 
|  | aBottomFT(this,		SW_RES( FT_BOTTOM_DIST )), | 
|  | aBottomMF(this,		SW_RES( ED_BOTTOM_DIST )), | 
|  |  | 
|  | aPropertiesFL(this,     SW_RES( FL_PROPERTIES    )), | 
|  | aTextDirectionFT(this,  SW_RES( FT_TEXTDIRECTION )), | 
|  | aTextDirectionLB(this,  SW_RES( LB_TEXTDIRECTION )), | 
|  |  | 
|  | pTblData(0), | 
|  | nSaveWidth(0), | 
|  | nMinTableWidth(MINLAY), | 
|  | bModified(sal_False), | 
|  | bFull(0), | 
|  | bHtmlMode(sal_False) | 
|  | { | 
|  | FreeResource(); | 
|  | SetExchangeSupport(); | 
|  |  | 
|  | const SfxPoolItem* pItem; | 
|  | if(SFX_ITEM_SET == rSet.GetItemState(SID_HTML_MODE, sal_False, &pItem)) | 
|  | bHtmlMode = 0 != (((const SfxUInt16Item*)pItem)->GetValue() & HTMLMODE_ON); | 
|  |  | 
|  | sal_Bool bCTL = SW_MOD()->GetCTLOptions().IsCTLFontEnabled(); | 
|  | if( !bHtmlMode && bCTL ) | 
|  | { | 
|  | aPropertiesFL.Show(); | 
|  | aTextDirectionFT.Show(); | 
|  | aTextDirectionLB.Show(); | 
|  | } | 
|  |  | 
|  | Init(); | 
|  | } | 
|  |  | 
|  | /*------------------------------------------------------------------------ | 
|  | ------------------------------------------------------------------------*/ | 
|  | void  SwFormatTablePage::Init() | 
|  | { | 
|  | aLeftMF.MetricField::SetMin(-999999); | 
|  | aRightMF.MetricField::SetMin(-999999); | 
|  |  | 
|  | // handler | 
|  | Link aLk = LINK( this, SwFormatTablePage, AutoClickHdl ); | 
|  | aFullBtn.SetClickHdl( aLk ); | 
|  | aFreeBtn.SetClickHdl( aLk ); | 
|  | aLeftBtn.SetClickHdl( aLk ); | 
|  | aFromLeftBtn.SetClickHdl( aLk ); | 
|  | aRightBtn.SetClickHdl( aLk ); | 
|  | aCenterBtn.SetClickHdl( aLk ); | 
|  |  | 
|  | aLk = LINK( this, SwFormatTablePage, UpDownLoseFocusHdl ); | 
|  | aTopMF.SetUpHdl( aLk ); | 
|  | aBottomMF.SetUpHdl( aLk ); | 
|  | aRightMF.SetUpHdl( aLk ); | 
|  | aLeftMF.SetUpHdl( aLk ); | 
|  | aWidthMF.SetUpHdl( aLk ); | 
|  |  | 
|  | aTopMF.SetDownHdl( aLk ); | 
|  | aBottomMF.SetDownHdl( aLk ); | 
|  | aRightMF.SetDownHdl( aLk ); | 
|  | aLeftMF.SetDownHdl( aLk ); | 
|  | aWidthMF.SetDownHdl( aLk ); | 
|  |  | 
|  | aTopMF.SetLoseFocusHdl( aLk ); | 
|  | aBottomMF.SetLoseFocusHdl( aLk ); | 
|  | aRightMF.SetLoseFocusHdl( aLk ); | 
|  | aLeftMF.SetLoseFocusHdl( aLk ); | 
|  | aWidthMF.SetLoseFocusHdl( aLk ); | 
|  |  | 
|  | aRelWidthCB.SetClickHdl(LINK( this, SwFormatTablePage, RelWidthClickHdl )); | 
|  | } | 
|  |  | 
|  | /*------------------------------------------------------------------------*/ | 
|  |  | 
|  | IMPL_LINK( SwFormatTablePage, RelWidthClickHdl, CheckBox *, pBtn ) | 
|  | { | 
|  | DBG_ASSERT(pTblData, "Tabellendaten nicht da?"); | 
|  | sal_Bool bIsChecked = pBtn->IsChecked(); | 
|  | sal_Int64 nLeft  = aLeftMF.DenormalizePercent(aLeftMF.GetValue(FUNIT_TWIP )); | 
|  | sal_Int64 nRight = aRightMF.DenormalizePercent(aRightMF.GetValue(FUNIT_TWIP )); | 
|  | aWidthMF.ShowPercent(bIsChecked); | 
|  | aLeftMF.ShowPercent(bIsChecked); | 
|  | aRightMF.ShowPercent(bIsChecked); | 
|  |  | 
|  | if (bIsChecked) | 
|  | { | 
|  | aWidthMF.SetRefValue(pTblData->GetSpace()); | 
|  | aLeftMF.SetRefValue(pTblData->GetSpace()); | 
|  | aRightMF.SetRefValue(pTblData->GetSpace()); | 
|  | aLeftMF.MetricField::SetMin(0); // wird vom Percentfield ueberschrieben | 
|  | aRightMF.MetricField::SetMin(0);//                 -""- | 
|  | aLeftMF.MetricField::SetMax(99); // | 
|  | aRightMF.MetricField::SetMax(99);// | 
|  | aLeftMF.SetPrcntValue(aLeftMF.NormalizePercent(nLeft ), FUNIT_TWIP ); | 
|  | aRightMF.SetPrcntValue(aRightMF.NormalizePercent(nRight ), FUNIT_TWIP ); | 
|  | } | 
|  | else | 
|  | ModifyHdl(&aLeftMF);	// Werte wieder korrigieren | 
|  |  | 
|  | if(aFreeBtn.IsChecked()) | 
|  | { | 
|  | sal_Bool bEnable = !pBtn->IsChecked(); | 
|  | aRightMF.Enable(bEnable); | 
|  | aRightFT.Enable(bEnable); | 
|  | } | 
|  | bModified = sal_True; | 
|  |  | 
|  | return 0; | 
|  | } | 
|  |  | 
|  | /*------------------------------------------------------------------------ | 
|  | ------------------------------------------------------------------------*/ | 
|  | IMPL_LINK( SwFormatTablePage, AutoClickHdl, CheckBox *, pBox ) | 
|  | { | 
|  | sal_Bool bRestore = sal_True, | 
|  | bLeftEnable = sal_False, | 
|  | bRightEnable= sal_False, | 
|  | bWidthEnable= sal_False, | 
|  | bOthers = sal_True; | 
|  | if( (RadioButton *) pBox == &aFullBtn ) | 
|  | { | 
|  | aLeftMF.SetPrcntValue(0); | 
|  | aRightMF.SetPrcntValue(0); | 
|  | nSaveWidth = static_cast< SwTwips >(aWidthMF.DenormalizePercent(aWidthMF.GetValue(FUNIT_TWIP ))); | 
|  | aWidthMF.SetPrcntValue(aWidthMF.NormalizePercent(pTblData->GetSpace() ), FUNIT_TWIP ); | 
|  | bFull = sal_True; | 
|  | bRestore = sal_False; | 
|  | } | 
|  | else if( (RadioButton *) pBox == &aLeftBtn ) | 
|  | { | 
|  | bRightEnable = bWidthEnable = sal_True; | 
|  | aLeftMF.SetPrcntValue(0); | 
|  | } | 
|  | else if( (RadioButton *) pBox == &aFromLeftBtn ) | 
|  | { | 
|  | bLeftEnable = bWidthEnable = sal_True; | 
|  | aRightMF.SetPrcntValue(0); | 
|  | } | 
|  | else if( (RadioButton *) pBox == &aRightBtn ) | 
|  | { | 
|  | bLeftEnable = bWidthEnable = sal_True; | 
|  | aRightMF.SetPrcntValue(0); | 
|  | } | 
|  | else if( ( RadioButton * ) pBox == &aCenterBtn ) | 
|  | { | 
|  | bLeftEnable = bWidthEnable = sal_True; | 
|  | } | 
|  | else if( ( RadioButton * ) pBox == &aFreeBtn ) | 
|  | { | 
|  | RightModifyHdl(&aRightMF); | 
|  | bLeftEnable = sal_True; | 
|  | bWidthEnable = sal_True; | 
|  | bOthers = sal_False; | 
|  | } | 
|  | aLeftMF.Enable(bLeftEnable); | 
|  | aLeftFT.Enable(bLeftEnable); | 
|  | aWidthMF.Enable(bWidthEnable); | 
|  | aWidthFT.Enable(bWidthEnable); | 
|  | if ( bOthers ) | 
|  | { | 
|  | aRightMF.Enable(bRightEnable); | 
|  | aRightFT.Enable(bRightEnable); | 
|  | aRelWidthCB.Enable(bWidthEnable); | 
|  | } | 
|  |  | 
|  | if(bFull && bRestore) | 
|  | { | 
|  | // nachdem auf autom. geschaltet wurde, wurde die Breite gemerkt, | 
|  | // um sie beim Zurueckschalten restaurieren zu koennen | 
|  | bFull = sal_False; | 
|  | aWidthMF.SetPrcntValue(aWidthMF.NormalizePercent(nSaveWidth ), FUNIT_TWIP ); | 
|  | } | 
|  | ModifyHdl(&aWidthMF); | 
|  | bModified = sal_True; | 
|  | return 0; | 
|  | } | 
|  |  | 
|  | /*----------------------------------------------------------------------*/ | 
|  | IMPL_LINK( SwFormatTablePage, RightModifyHdl, MetricField *, EMPTYARG ) | 
|  | { | 
|  | if(aFreeBtn.IsChecked()) | 
|  | { | 
|  | sal_Bool bEnable = aRightMF.GetValue() == 0; | 
|  | //		aWidthMF.Enable(bEnable); | 
|  | aRelWidthCB.Enable(bEnable); | 
|  | //		aWidthFT.Enable(bEnable); | 
|  | if ( !bEnable ) | 
|  | { | 
|  | aRelWidthCB.Check(sal_False); | 
|  | RelWidthClickHdl(&aRelWidthCB); | 
|  | } | 
|  | bEnable = aRelWidthCB.IsChecked(); | 
|  | aRightMF.Enable(!bEnable); | 
|  | aRightFT.Enable(!bEnable); | 
|  | } | 
|  | return 0; | 
|  | } | 
|  |  | 
|  | /*------------------------------------------------------------------------ | 
|  | ------------------------------------------------------------------------*/ | 
|  | IMPL_LINK_INLINE_START( SwFormatTablePage, UpDownLoseFocusHdl, MetricField *, pEdit ) | 
|  | { | 
|  | if( &aRightMF == pEdit) | 
|  | RightModifyHdl(pEdit); | 
|  | ModifyHdl( pEdit ); | 
|  | return 0; | 
|  | } | 
|  | IMPL_LINK_INLINE_END( SwFormatTablePage, UpDownLoseFocusHdl, MetricField *, pEdit ) | 
|  |  | 
|  | void  SwFormatTablePage::ModifyHdl( Edit* pEdit ) | 
|  | { | 
|  |  | 
|  | SwTwips nCurWidth  = static_cast< SwTwips >(aWidthMF.DenormalizePercent(aWidthMF.GetValue( FUNIT_TWIP ))); | 
|  | SwTwips nPrevWidth = nCurWidth; | 
|  | SwTwips nRight = static_cast< SwTwips >(aRightMF.DenormalizePercent(aRightMF.GetValue( FUNIT_TWIP ))); | 
|  | SwTwips nLeft  = static_cast< SwTwips >(aLeftMF.DenormalizePercent(aLeftMF.GetValue( FUNIT_TWIP ))); | 
|  | SwTwips nDiff; | 
|  |  | 
|  | if( pEdit == &aWidthMF ) | 
|  | { | 
|  | if( nCurWidth < MINLAY ) | 
|  | nCurWidth = MINLAY; | 
|  | nDiff = nRight + nLeft + nCurWidth - pTblData->GetSpace() ; | 
|  | //rechtsbuendig nur linken Rand veraendern | 
|  | if(aRightBtn.IsChecked()) | 
|  | nLeft -= nDiff; | 
|  | //linksbuendig nur rechten Rand veraendern | 
|  | else if(aLeftBtn.IsChecked()) | 
|  | nRight -= nDiff; | 
|  | //linker Rand und Breite erlaubt - erst rechts - dann links | 
|  | else if(aFromLeftBtn.IsChecked()) | 
|  | { | 
|  | if( nRight >= nDiff ) | 
|  | nRight -= nDiff; | 
|  | else | 
|  | { | 
|  | nDiff -= nRight; | 
|  | nRight = 0; | 
|  | if(nLeft >= nDiff) | 
|  | nLeft -= nDiff; | 
|  | else | 
|  | { | 
|  | nRight += nLeft - nDiff; | 
|  | nLeft = 0; | 
|  | nCurWidth = pTblData->GetSpace(); | 
|  | } | 
|  |  | 
|  | } | 
|  | } | 
|  | //zentriert beide Seiten gleichmaessig veraendern | 
|  | else if(aCenterBtn.IsChecked()) | 
|  | { | 
|  | if((nLeft != nRight)) | 
|  | { | 
|  | nDiff += nLeft + nRight; | 
|  | nLeft = nDiff/2; | 
|  | nRight = nDiff/2; | 
|  | } | 
|  | else | 
|  | { | 
|  | nLeft -= nDiff/2; | 
|  | nRight -= nDiff/2; | 
|  | } | 
|  | } | 
|  | //freie Ausrichtung: beide Raender verkleinern | 
|  | else if(aFreeBtn.IsChecked()) | 
|  | { | 
|  | nLeft -= nDiff/2; | 
|  | nRight -= nDiff/2; | 
|  | } | 
|  | } | 
|  | if( pEdit == &aRightMF	) | 
|  | { | 
|  |  | 
|  | if( nRight + nLeft > pTblData->GetSpace() - MINLAY ) | 
|  | nRight = pTblData->GetSpace() -nLeft - MINLAY; | 
|  |  | 
|  | nCurWidth = pTblData->GetSpace() - nLeft - nRight; | 
|  | } | 
|  | if( pEdit == &aLeftMF ) | 
|  | { | 
|  | if(!aFromLeftBtn.IsChecked()) | 
|  | { | 
|  | sal_Bool bCenter = aCenterBtn.IsChecked(); | 
|  | if( bCenter ) | 
|  | nRight = nLeft; | 
|  | if(nRight + nLeft > pTblData->GetSpace() - MINLAY ) | 
|  | { | 
|  | nLeft  = bCenter ? 	(pTblData->GetSpace() - MINLAY) /2 : | 
|  | (pTblData->GetSpace() - MINLAY) - nRight; | 
|  | nRight = bCenter ? 	(pTblData->GetSpace() - MINLAY) /2 : nRight; | 
|  | } | 
|  | nCurWidth = pTblData->GetSpace() - nLeft - nRight; | 
|  | } | 
|  | else | 
|  | { | 
|  | //hier wird bei Aenderung an der linken Seite zuerst der | 
|  | //rechte Rand veraendert, dann die Breite | 
|  | nDiff = nRight + nLeft + nCurWidth - pTblData->GetSpace() ; | 
|  |  | 
|  | nRight -= nDiff; | 
|  | nCurWidth = pTblData->GetSpace() - nLeft - nRight; | 
|  | } | 
|  | } | 
|  | if (nCurWidth != nPrevWidth ) | 
|  | aWidthMF.SetPrcntValue( aWidthMF.NormalizePercent( nCurWidth ), FUNIT_TWIP ); | 
|  | aRightMF.SetPrcntValue( aRightMF.NormalizePercent( nRight ), FUNIT_TWIP ); | 
|  | aLeftMF.SetPrcntValue( aLeftMF.NormalizePercent( nLeft ), FUNIT_TWIP ); | 
|  | bModified = sal_True; | 
|  | } | 
|  |  | 
|  | /*------------------------------------------------------------------------ | 
|  | ------------------------------------------------------------------------*/ | 
|  | SfxTabPage*  SwFormatTablePage::Create( Window* pParent, | 
|  | const SfxItemSet& rAttrSet) | 
|  | { | 
|  | return new SwFormatTablePage( pParent, rAttrSet ); | 
|  | } | 
|  |  | 
|  | /*------------------------------------------------------------------------ | 
|  | -------------------------------------------------------------------------*/ | 
|  | sal_Bool  SwFormatTablePage::FillItemSet( SfxItemSet& rCoreSet ) | 
|  | { | 
|  | // Testen, ob eins der Control noch den Focus hat | 
|  | if(aWidthMF.HasFocus()) | 
|  | ModifyHdl(&aWidthMF); | 
|  | else if(aLeftMF.HasFocus()) | 
|  | ModifyHdl(&aLeftMF); | 
|  | else if(aRightMF.HasFocus()) | 
|  | ModifyHdl(&aRightMF); | 
|  | else if(aTopMF.HasFocus()) | 
|  | ModifyHdl(&aTopMF); | 
|  | else if(aBottomMF.HasFocus()) | 
|  | ModifyHdl(&aBottomMF); | 
|  |  | 
|  | if(bModified) | 
|  | { | 
|  | if( aBottomMF.GetText() != aBottomMF.GetSavedValue() || | 
|  | aTopMF.GetText() != aTopMF.GetSavedValue() ) | 
|  | { | 
|  | SvxULSpaceItem aULSpace(RES_UL_SPACE); | 
|  | aULSpace.SetUpper( (sal_uInt16) aTopMF.Denormalize( | 
|  | aTopMF.GetValue( FUNIT_TWIP ))); | 
|  | aULSpace.SetLower( (sal_uInt16) aBottomMF.Denormalize( | 
|  | aBottomMF.GetValue( FUNIT_TWIP ))); | 
|  | rCoreSet.Put(aULSpace); | 
|  | } | 
|  |  | 
|  | } | 
|  | if(aNameED.GetText() != aNameED.GetSavedValue()) | 
|  | { | 
|  | rCoreSet.Put(SfxStringItem(	FN_PARAM_TABLE_NAME, aNameED.GetText())); | 
|  | bModified = sal_True; | 
|  | } | 
|  |  | 
|  | sal_uInt16 nPos; | 
|  | if( aTextDirectionLB.IsVisible() && | 
|  | ( nPos = aTextDirectionLB.GetSelectEntryPos() ) != | 
|  | aTextDirectionLB.GetSavedValue() ) | 
|  | { | 
|  | sal_uInt32 nDirection = (sal_uInt32)(sal_uIntPtr)aTextDirectionLB.GetEntryData( nPos ); | 
|  | rCoreSet.Put( SvxFrameDirectionItem( (SvxFrameDirection)nDirection, RES_FRAMEDIR)); | 
|  | bModified = sal_True; | 
|  | } | 
|  |  | 
|  | return bModified; | 
|  | } | 
|  |  | 
|  | /*------------------------------------------------------------------------ | 
|  | ------------------------------------------------------------------------*/ | 
|  | void  SwFormatTablePage::Reset( const SfxItemSet& ) | 
|  | { | 
|  | const SfxItemSet& rSet = GetItemSet(); | 
|  | const SfxPoolItem*	pItem; | 
|  |  | 
|  | if(bHtmlMode) | 
|  | { | 
|  | aNameED	.Disable(); | 
|  | aTopFT	.Hide(); | 
|  | aTopMF	.Hide(); | 
|  | aBottomFT.Hide(); | 
|  | aBottomMF.Hide(); | 
|  | aFreeBtn.Enable(sal_False); | 
|  | } | 
|  | FieldUnit aMetric = ::GetDfltMetric(bHtmlMode); | 
|  | SetMetric( aWidthMF, aMetric ); | 
|  | SetMetric( aRightMF, aMetric ); | 
|  | SetMetric( aLeftMF, aMetric ); | 
|  | SetMetric( aTopMF, aMetric ); | 
|  | SetMetric( aBottomMF, aMetric ); | 
|  |  | 
|  | //Name | 
|  | if(SFX_ITEM_SET == rSet.GetItemState( FN_PARAM_TABLE_NAME, sal_False, &pItem )) | 
|  | { | 
|  | aNameED.SetText(((const SfxStringItem*)pItem)->GetValue()); | 
|  | aNameED.SaveValue(); | 
|  | } | 
|  |  | 
|  | if(SFX_ITEM_SET == rSet.GetItemState( FN_TABLE_REP, sal_False, &pItem )) | 
|  | { | 
|  | pTblData = (SwTableRep*)((const SwPtrItem*) pItem)->GetValue(); | 
|  | nMinTableWidth = pTblData->GetColCount() * MINLAY; | 
|  |  | 
|  | if(pTblData->GetWidthPercent()) | 
|  | { | 
|  | aRelWidthCB.Check(sal_True); | 
|  | RelWidthClickHdl(&aRelWidthCB); | 
|  | aWidthMF.SetPrcntValue(pTblData->GetWidthPercent(), FUNIT_CUSTOM); | 
|  |  | 
|  | aWidthMF.SaveValue(); | 
|  | nSaveWidth = static_cast< SwTwips >(aWidthMF.GetValue(FUNIT_CUSTOM)); | 
|  | } | 
|  | else | 
|  | { | 
|  | aWidthMF.SetPrcntValue(aWidthMF.NormalizePercent( | 
|  | pTblData->GetWidth()), FUNIT_TWIP); | 
|  | aWidthMF.SaveValue(); | 
|  | nSaveWidth = pTblData->GetWidth(); | 
|  | nMinTableWidth = Min( nSaveWidth, nMinTableWidth ); | 
|  | } | 
|  |  | 
|  | aWidthMF.SetRefValue(pTblData->GetSpace()); | 
|  | aWidthMF.SetLast(aWidthMF.NormalizePercent( pTblData->GetSpace() )); | 
|  | aLeftMF.SetLast(aLeftMF.NormalizePercent( pTblData->GetSpace() )); | 
|  | aRightMF.SetLast(aRightMF.NormalizePercent( pTblData->GetSpace() )); | 
|  |  | 
|  | aLeftMF.SetPrcntValue(aLeftMF.NormalizePercent( | 
|  | pTblData->GetLeftSpace()), FUNIT_TWIP); | 
|  | aRightMF.SetPrcntValue(aRightMF.NormalizePercent( | 
|  | pTblData->GetRightSpace()), FUNIT_TWIP); | 
|  | aLeftMF.SaveValue(); | 
|  | aRightMF.SaveValue(); | 
|  |  | 
|  | nOldAlign = pTblData->GetAlign(); | 
|  |  | 
|  | sal_Bool bSetRight = sal_False, bRightEnable = sal_False, | 
|  | bSetLeft  = sal_False, bLeftEnable  = sal_False; | 
|  | switch( nOldAlign ) | 
|  | { | 
|  | case text::HoriOrientation::NONE: | 
|  | aFreeBtn.Check(); | 
|  | if(aRelWidthCB.IsChecked()) | 
|  | bSetRight = sal_True; | 
|  | break; | 
|  | case text::HoriOrientation::FULL: | 
|  | { | 
|  | bSetRight = bSetLeft = sal_True; | 
|  | aFullBtn.Check(); | 
|  | aWidthMF.Enable(sal_False); | 
|  | aRelWidthCB.Enable(sal_False); | 
|  | aWidthFT.Enable(sal_False); | 
|  | } | 
|  | break; | 
|  | case text::HoriOrientation::LEFT: | 
|  | { | 
|  | bSetLeft = sal_True; | 
|  | aLeftBtn.Check(); | 
|  | } | 
|  | break; | 
|  | case text::HoriOrientation::LEFT_AND_WIDTH : | 
|  | { | 
|  | bSetRight = sal_True; | 
|  | aFromLeftBtn.Check(); | 
|  | } | 
|  | break; | 
|  | case text::HoriOrientation::RIGHT: | 
|  | { | 
|  | bSetRight = sal_True; | 
|  | aRightBtn.Check(); | 
|  | } | 
|  | break; | 
|  | case text::HoriOrientation::CENTER: | 
|  | { | 
|  | bSetRight = sal_True; | 
|  | aCenterBtn.Check(); | 
|  | } | 
|  | break; | 
|  | } | 
|  | if ( bSetRight ) | 
|  | { | 
|  | aRightMF.Enable(bRightEnable); | 
|  | aRightFT.Enable(bRightEnable); | 
|  | } | 
|  | if ( bSetLeft ) | 
|  | { | 
|  | aLeftMF.Enable(bLeftEnable); | 
|  | aLeftFT.Enable(bLeftEnable); | 
|  | } | 
|  |  | 
|  | } | 
|  |  | 
|  | //Raender | 
|  | if(SFX_ITEM_SET == rSet.GetItemState( RES_UL_SPACE, sal_False,&pItem )) | 
|  | { | 
|  | aTopMF.SetValue(aTopMF.Normalize( | 
|  | ((const SvxULSpaceItem*)pItem)->GetUpper()), FUNIT_TWIP); | 
|  | aBottomMF.SetValue(aBottomMF.Normalize( | 
|  | ((const SvxULSpaceItem*)pItem)->GetLower()), FUNIT_TWIP); | 
|  | aTopMF.SaveValue(); | 
|  | aBottomMF.SaveValue(); | 
|  | } | 
|  |  | 
|  | //text direction | 
|  | if( SFX_ITEM_SET == rSet.GetItemState( RES_FRAMEDIR, sal_True, &pItem ) ) | 
|  | { | 
|  | sal_uInt32 nVal  = ((SvxFrameDirectionItem*)pItem)->GetValue(); | 
|  | sal_uInt16 nPos = aTextDirectionLB.GetEntryPos( (void*) nVal ); | 
|  | aTextDirectionLB.SelectEntryPos( nPos ); | 
|  | aTextDirectionLB.SaveValue(); | 
|  | } | 
|  |  | 
|  | aWidthMF.SetMax( 2*aWidthMF.NormalizePercent( pTblData->GetSpace() ), FUNIT_TWIP ); | 
|  | aRightMF.SetMax( aRightMF.NormalizePercent( pTblData->GetSpace() ), FUNIT_TWIP ); | 
|  | aLeftMF.SetMax( aLeftMF.NormalizePercent( pTblData->GetSpace() ), FUNIT_TWIP ); | 
|  | aWidthMF.SetMin( aWidthMF.NormalizePercent( nMinTableWidth ), FUNIT_TWIP ); | 
|  |  | 
|  | } | 
|  |  | 
|  | /*------------------------------------------------------------------------ | 
|  | ------------------------------------------------------------------------*/ | 
|  | void  	SwFormatTablePage::ActivatePage( const SfxItemSet& rSet ) | 
|  | { | 
|  | DBG_ASSERT(pTblData, "Tabellendaten nicht da?"); | 
|  | if(SFX_ITEM_SET == rSet.GetItemState( FN_TABLE_REP )) | 
|  | { | 
|  | SwTwips nCurWidth = text::HoriOrientation::FULL != pTblData->GetAlign() ? | 
|  | pTblData->GetWidth() : | 
|  | pTblData->GetSpace(); | 
|  | if(pTblData->GetWidthPercent() == 0 && | 
|  | nCurWidth != aWidthMF.DenormalizePercent(aWidthMF.GetValue(FUNIT_TWIP ))) | 
|  | { | 
|  | aWidthMF.SetPrcntValue(aWidthMF.NormalizePercent( | 
|  | nCurWidth), FUNIT_TWIP); | 
|  | aWidthMF.SaveValue(); | 
|  | nSaveWidth = nCurWidth; | 
|  | aLeftMF.SetPrcntValue(aLeftMF.NormalizePercent( | 
|  | pTblData->GetLeftSpace()), FUNIT_TWIP); | 
|  | aLeftMF.SaveValue(); | 
|  | aRightMF.SetPrcntValue(aRightMF.NormalizePercent( | 
|  | pTblData->GetRightSpace()), FUNIT_TWIP); | 
|  | aRightMF.SaveValue(); | 
|  | } | 
|  | } | 
|  |  | 
|  | } | 
|  | /*------------------------------------------------------------------------ | 
|  | ------------------------------------------------------------------------*/ | 
|  | int  SwFormatTablePage::DeactivatePage( SfxItemSet* _pSet ) | 
|  | { | 
|  | // os: VCL sorgt nicht dafuer, dass das aktive Control im | 
|  | // dialog bei OK den focus verliert | 
|  | aNameED.GrabFocus(); | 
|  | // Test des Tabellennamens auf Leerzeichen | 
|  | String sTblName = aNameED.GetText(); | 
|  | if(sTblName.Search(' ') != STRING_NOTFOUND) | 
|  | { | 
|  | InfoBox(this, SW_RES(MSG_WRONG_TABLENAME)).Execute(); | 
|  | aNameED.GrabFocus(); | 
|  | return KEEP_PAGE; | 
|  | } | 
|  | if(_pSet) | 
|  | { | 
|  | FillItemSet(*_pSet); | 
|  | if(bModified) | 
|  | { | 
|  | SwTwips lLeft  = static_cast< SwTwips >(aLeftMF.DenormalizePercent(aLeftMF.GetValue( FUNIT_TWIP ))); | 
|  | SwTwips lRight = static_cast< SwTwips >(aRightMF.DenormalizePercent(aRightMF.GetValue( FUNIT_TWIP ))); | 
|  |  | 
|  |  | 
|  | if( aLeftMF.GetText() != aLeftMF.GetSavedValue() || | 
|  | aRightMF.GetText() != aRightMF.GetSavedValue() ) | 
|  | { | 
|  | pTblData->SetWidthChanged(); | 
|  | pTblData->SetLeftSpace( lLeft); | 
|  | pTblData->SetRightSpace( lRight); | 
|  | } | 
|  |  | 
|  | SwTwips lWidth; | 
|  | if (aRelWidthCB.IsChecked() && aRelWidthCB.IsEnabled()) | 
|  | { | 
|  | lWidth = pTblData->GetSpace() - lRight - lLeft; | 
|  | sal_uInt16 nPercentWidth = (sal_uInt16)aWidthMF.GetValue(FUNIT_CUSTOM); | 
|  | if(pTblData->GetWidthPercent() != nPercentWidth) | 
|  | { | 
|  | pTblData->SetWidthPercent(nPercentWidth); | 
|  | pTblData->SetWidthChanged(); | 
|  | } | 
|  | } | 
|  | else | 
|  | { | 
|  | pTblData->SetWidthPercent(0); | 
|  | lWidth = static_cast< SwTwips >(aWidthMF.DenormalizePercent(aWidthMF.GetValue( FUNIT_TWIP ))); | 
|  | } | 
|  | pTblData->SetWidth(lWidth); | 
|  |  | 
|  | SwTwips nColSum = 0; | 
|  | sal_uInt16 i; | 
|  |  | 
|  | for( i = 0; i < pTblData->GetColCount(); i++) | 
|  | { | 
|  | nColSum += pTblData->GetColumns()[i].nWidth; | 
|  | } | 
|  | if(nColSum != pTblData->GetWidth()) | 
|  | { | 
|  | SwTwips nMinWidth = Min( (long)MINLAY, | 
|  | (long) (pTblData->GetWidth() / | 
|  | pTblData->GetColCount() - 1)); | 
|  | SwTwips nDiff = nColSum - pTblData->GetWidth(); | 
|  | while ( Abs(nDiff) > pTblData->GetColCount() + 1 ) | 
|  | { | 
|  | SwTwips nSub = nDiff / pTblData->GetColCount(); | 
|  | for( i = 0; i < pTblData->GetColCount(); i++) | 
|  | { | 
|  | if(pTblData->GetColumns()[i].nWidth - nMinWidth > nSub) | 
|  | { | 
|  | pTblData->GetColumns()[i].nWidth -= nSub; | 
|  | nDiff -= nSub; | 
|  | } | 
|  | else | 
|  | { | 
|  | nDiff -= pTblData->GetColumns()[i].nWidth - nMinWidth; | 
|  | pTblData->GetColumns()[i].nWidth = nMinWidth; | 
|  | } | 
|  |  | 
|  | } | 
|  | } | 
|  | } | 
|  |  | 
|  | sal_Int16 nAlign = 0; | 
|  | if(aRightBtn.IsChecked()) | 
|  | nAlign = text::HoriOrientation::RIGHT; | 
|  | else if(aLeftBtn.IsChecked()) | 
|  | nAlign = text::HoriOrientation::LEFT; | 
|  | else if(aFromLeftBtn.IsChecked()) | 
|  | nAlign = text::HoriOrientation::LEFT_AND_WIDTH; | 
|  | else if(aCenterBtn.IsChecked()) | 
|  | nAlign = text::HoriOrientation::CENTER; | 
|  | else if(aFreeBtn.IsChecked()) | 
|  | nAlign = text::HoriOrientation::NONE; | 
|  | else if(aFullBtn.IsChecked()) | 
|  | { | 
|  | nAlign = text::HoriOrientation::FULL; | 
|  | lWidth = lAutoWidth; | 
|  | } | 
|  | if(nAlign != pTblData->GetAlign()) | 
|  | { | 
|  | pTblData->SetWidthChanged(); | 
|  | pTblData->SetAlign(nAlign); | 
|  | } | 
|  |  | 
|  |  | 
|  | //      if(  text::HoriOrientation::CENTER && lWidth != (SwTwips)aWidthMF.GetSavedValue()) | 
|  | if(pTblData->GetWidth() != lWidth ) | 
|  | { | 
|  | pTblData->SetWidthChanged(); | 
|  | pTblData->SetWidth( | 
|  | nAlign == text::HoriOrientation::FULL ? pTblData->GetSpace() : lWidth ); | 
|  | } | 
|  | if(pTblData->HasWidthChanged()) | 
|  | _pSet->Put(SwPtrItem(FN_TABLE_REP, pTblData)); | 
|  | } | 
|  | #ifdef DEBUG_TBLDLG | 
|  | DbgTblRep(pTblData) | 
|  | #endif | 
|  | } | 
|  | return sal_True; | 
|  | } | 
|  | /*------------------------------------------------------------------------ | 
|  | Beschreibung: Seite Spaltenkonfiguration | 
|  | ------------------------------------------------------------------------*/ | 
|  | SwTableColumnPage::SwTableColumnPage( Window* pParent, | 
|  | const SfxItemSet& rSet ) : | 
|  | SfxTabPage(pParent, SW_RES( TP_TABLE_COLUMN ), rSet ), | 
|  | aModifyTableCB(this,	SW_RES(CB_MOD_TBL)), | 
|  | aProportionalCB(this,	SW_RES(CB_PROP)), | 
|  | aSpaceFT(this,			SW_RES(FT_SPACE)), | 
|  | aSpaceED(this,			SW_RES(ED_SPACE)), | 
|  |  | 
|  | aColFL(this,            SW_RES(COL_FL_LAYOUT)), | 
|  | aUpBtn(this,            SW_RES(COL_BTN_UP)), | 
|  | aFT1(this,              SW_RES(COL_FT_1)), | 
|  | aMF1(this,				SW_RES(COL_MF_1)), | 
|  | aFT2(this,				SW_RES(COL_FT_2)), | 
|  | aMF2(this,				SW_RES(COL_MF_2)), | 
|  | aFT3(this,				SW_RES(COL_FT_3)), | 
|  | aMF3(this,				SW_RES(COL_MF_3)), | 
|  | aFT4(this,				SW_RES(COL_FT_4)), | 
|  | aMF4(this,				SW_RES(COL_MF_4)), | 
|  | aFT5(this,				SW_RES(COL_FT_5)), | 
|  | aMF5(this,				SW_RES(COL_MF_5)), | 
|  | aFT6(this,				SW_RES(COL_FT_6)), | 
|  | aMF6(this,				SW_RES(COL_MF_6)), | 
|  | aDownBtn(this,          SW_RES(COL_BTN_DOWN)), | 
|  |  | 
|  | nTableWidth(0), | 
|  | nMinWidth( MINLAY ), | 
|  | nNoOfCols( 0 ), | 
|  | nNoOfVisibleCols( 0 ), | 
|  | bModified(sal_False), | 
|  | bModifyTbl(sal_False), | 
|  | bPercentMode(sal_False) | 
|  | { | 
|  | FreeResource(); | 
|  | SetExchangeSupport(); | 
|  |  | 
|  | aDownBtn.SetAccessibleRelationMemberOf(&aColFL); | 
|  | aUpBtn.SetAccessibleRelationMemberOf(&aColFL); | 
|  |  | 
|  | pFieldArr[0] = &aMF1; | 
|  | pFieldArr[1] = &aMF2; | 
|  | pFieldArr[2] = &aMF3; | 
|  | pFieldArr[3] = &aMF4; | 
|  | pFieldArr[4] = &aMF5; | 
|  | pFieldArr[5] = &aMF6; | 
|  |  | 
|  | pTextArr[0] = &aFT1; | 
|  | pTextArr[1] = &aFT2; | 
|  | pTextArr[2] = &aFT3; | 
|  | pTextArr[3] = &aFT4; | 
|  | pTextArr[4] = &aFT5; | 
|  | pTextArr[5] = &aFT6; | 
|  |  | 
|  | const SfxPoolItem* pItem; | 
|  | Init((SFX_ITEM_SET == rSet.GetItemState( SID_HTML_MODE, sal_False,&pItem ) | 
|  | && ((const SfxUInt16Item*)pItem)->GetValue() & HTMLMODE_ON)); | 
|  |  | 
|  | }; | 
|  | /*------------------------------------------------------------------------ | 
|  | Beschreibung: Seite Spaltenkonfiguration | 
|  | ------------------------------------------------------------------------*/ | 
|  | SwTableColumnPage::~SwTableColumnPage() | 
|  | { | 
|  | }; | 
|  |  | 
|  | /*------------------------------------------------------------------------ | 
|  | ------------------------------------------------------------------------*/ | 
|  | SfxTabPage*   SwTableColumnPage::Create( Window* pParent, | 
|  | const SfxItemSet& rAttrSet) | 
|  | { | 
|  | return new SwTableColumnPage( pParent, rAttrSet ); | 
|  | }; | 
|  |  | 
|  | /*------------------------------------------------------------------------ | 
|  | ------------------------------------------------------------------------*/ | 
|  | void  SwTableColumnPage::Reset( const SfxItemSet& ) | 
|  | { | 
|  | const SfxItemSet& rSet = GetItemSet(); | 
|  |  | 
|  | const SfxPoolItem* pItem; | 
|  | if(SFX_ITEM_SET == rSet.GetItemState( FN_TABLE_REP, sal_False, &pItem )) | 
|  | { | 
|  | pTblData = (SwTableRep*)((const SwPtrItem*) pItem)->GetValue(); | 
|  | nNoOfVisibleCols = pTblData->GetColCount(); | 
|  | nNoOfCols = pTblData->GetAllColCount(); | 
|  | nTableWidth = pTblData->GetAlign() != text::HoriOrientation::FULL && | 
|  | pTblData->GetAlign() != text::HoriOrientation::LEFT_AND_WIDTH? | 
|  | pTblData->GetWidth() : pTblData->GetSpace(); | 
|  |  | 
|  | sal_uInt16 i; | 
|  | for( i = 0; i < nNoOfCols; i++ ) | 
|  | { | 
|  | if( pTblData->GetColumns()[i].nWidth  < nMinWidth ) | 
|  | nMinWidth = pTblData->GetColumns()[i].nWidth; | 
|  | } | 
|  | sal_Int64 nMinTwips = pFieldArr[0]->NormalizePercent( nMinWidth ); | 
|  | sal_Int64 nMaxTwips = pFieldArr[0]->NormalizePercent( nTableWidth ); | 
|  | for( i = 0; (i < MET_FIELDS) && (i < nNoOfVisibleCols); i++ ) | 
|  | { | 
|  | pFieldArr[i]->SetPrcntValue( pFieldArr[i]->NormalizePercent( | 
|  | GetVisibleWidth(i) ), FUNIT_TWIP ); | 
|  | pFieldArr[i]->SetMin( nMinTwips , FUNIT_TWIP ); | 
|  | pFieldArr[i]->SetMax( nMaxTwips , FUNIT_TWIP ); | 
|  | pFieldArr[i]->Enable(); | 
|  | pTextArr[i]->Enable(); | 
|  | } | 
|  |  | 
|  | if( nNoOfVisibleCols > MET_FIELDS ) | 
|  | aUpBtn.Enable(); | 
|  | i = nNoOfVisibleCols; | 
|  | while( i < MET_FIELDS ) | 
|  | { | 
|  | pFieldArr[i]->SetText( aEmptyStr ); | 
|  | pTextArr[i]->Hide(); | 
|  | i++; | 
|  | } | 
|  | } | 
|  | ActivatePage(rSet); | 
|  |  | 
|  | }; | 
|  |  | 
|  | /*------------------------------------------------------------------------ | 
|  | ------------------------------------------------------------------------*/ | 
|  | void  SwTableColumnPage::Init(sal_Bool bWeb) | 
|  | { | 
|  | FieldUnit aMetric = ::GetDfltMetric(bWeb); | 
|  | Link aLkUp = LINK( this, SwTableColumnPage, UpHdl ); | 
|  | Link aLkDown = LINK( this, SwTableColumnPage, DownHdl ); | 
|  | Link aLkLF = LINK( this, SwTableColumnPage, LoseFocusHdl ); | 
|  | for( sal_uInt16 i = 0; i < MET_FIELDS; i++ ) | 
|  | { | 
|  | aValueTbl[i] = i; | 
|  | SetMetric(*pFieldArr[i], aMetric); | 
|  | pFieldArr[i]->SetUpHdl( aLkUp ); | 
|  | pFieldArr[i]->SetDownHdl( aLkDown ); | 
|  | pFieldArr[i]->SetLoseFocusHdl( aLkLF ); | 
|  |  | 
|  | } | 
|  | SetMetric(aSpaceED, aMetric); | 
|  |  | 
|  | Link aLk = LINK( this, SwTableColumnPage, AutoClickHdl ); | 
|  | aUpBtn.SetClickHdl( aLk ); | 
|  | aDownBtn.SetClickHdl( aLk ); | 
|  |  | 
|  | aLk = LINK( this, SwTableColumnPage, ModeHdl ); | 
|  | aModifyTableCB .SetClickHdl( aLk ); | 
|  | aProportionalCB.SetClickHdl( aLk ); | 
|  | }; | 
|  |  | 
|  | /*------------------------------------------------------------------------ | 
|  | ------------------------------------------------------------------------*/ | 
|  | IMPL_LINK( SwTableColumnPage, AutoClickHdl, CheckBox *, pBox ) | 
|  | { | 
|  | //Anzeigefenster verschieben | 
|  | if(pBox == (CheckBox *)&aDownBtn) | 
|  | { | 
|  | if(aValueTbl[0] > 0) | 
|  | { | 
|  | for( sal_uInt16 i=0; i < MET_FIELDS; i++ ) | 
|  | aValueTbl[i] -= 1; | 
|  | } | 
|  | } | 
|  | if(pBox == (CheckBox *)&aUpBtn) | 
|  | { | 
|  | if( aValueTbl[ MET_FIELDS -1 ] < nNoOfVisibleCols -1  ) | 
|  | { | 
|  | for(sal_uInt16 i=0;i < MET_FIELDS;i++) | 
|  | aValueTbl[i] += 1; | 
|  | } | 
|  | } | 
|  | for( sal_uInt16 i = 0; (i < nNoOfVisibleCols ) && ( i < MET_FIELDS); i++ ) | 
|  | { | 
|  | String sEntry('~'); | 
|  | String sIndex = String::CreateFromInt32( aValueTbl[i] + 1 ); | 
|  | sEntry += sIndex; | 
|  | pTextArr[i]->SetText( sEntry ); | 
|  | //IAccessibility2 Impplementaton 2009----- | 
|  | //added by menghu for SODC_5143,12/12/2006 | 
|  | String sColumnWidth = SW_RESSTR( STR_ACCESS_COLUMN_WIDTH); | 
|  | sColumnWidth.SearchAndReplace( DEFINE_CONST_UNICODE("%1"), sIndex ); | 
|  | pFieldArr[i]->SetAccessibleName( sColumnWidth ); | 
|  | //end of SODC_5143 | 
|  | //-----IAccessibility2 Impplementaton 2009 | 
|  | } | 
|  |  | 
|  | aDownBtn.Enable(aValueTbl[0] > 0); | 
|  | aUpBtn.Enable(aValueTbl[ MET_FIELDS -1 ] < nNoOfVisibleCols -1 ); | 
|  | UpdateCols(0); | 
|  | return 0; | 
|  | }; | 
|  |  | 
|  | /*------------------------------------------------------------------------ | 
|  | ------------------------------------------------------------------------*/ | 
|  | IMPL_LINK_INLINE_START( SwTableColumnPage, UpHdl, PercentField *, pEdit ) | 
|  | { | 
|  | bModified = sal_True; | 
|  | ModifyHdl( pEdit ); | 
|  | return 0; | 
|  | }; | 
|  | IMPL_LINK_INLINE_END( SwTableColumnPage, UpHdl, PercentField *, pEdit ) | 
|  |  | 
|  | /*------------------------------------------------------------------------ | 
|  | ------------------------------------------------------------------------*/ | 
|  | IMPL_LINK_INLINE_START( SwTableColumnPage, DownHdl, PercentField *, pEdit ) | 
|  | { | 
|  | bModified = sal_True; | 
|  | ModifyHdl( pEdit ); | 
|  | return 0; | 
|  | }; | 
|  | IMPL_LINK_INLINE_END( SwTableColumnPage, DownHdl, PercentField *, pEdit ) | 
|  |  | 
|  | /*------------------------------------------------------------------------ | 
|  | ------------------------------------------------------------------------*/ | 
|  | IMPL_LINK_INLINE_START( SwTableColumnPage, LoseFocusHdl, PercentField *, pEdit ) | 
|  | { | 
|  | if(pEdit->IsModified()) | 
|  | { | 
|  | bModified = sal_True; | 
|  | ModifyHdl( pEdit ); | 
|  | } | 
|  | return 0; | 
|  | }; | 
|  | IMPL_LINK_INLINE_END( SwTableColumnPage, LoseFocusHdl, PercentField *, pEdit ) | 
|  |  | 
|  | /*------------------------------------------------------------------------ | 
|  | ------------------------------------------------------------------------*/ | 
|  | IMPL_LINK( SwTableColumnPage, ModeHdl, CheckBox*, pBox ) | 
|  | { | 
|  | sal_Bool bCheck = pBox->IsChecked(); | 
|  | if(pBox == &aProportionalCB) | 
|  | { | 
|  | if(bCheck) | 
|  | aModifyTableCB.Check(); | 
|  | aModifyTableCB.Enable(!bCheck && bModifyTbl); | 
|  | } | 
|  | return 0; | 
|  | }; | 
|  |  | 
|  | /*------------------------------------------------------------------------ | 
|  | ------------------------------------------------------------------------*/ | 
|  | sal_Bool  SwTableColumnPage::FillItemSet( SfxItemSet& ) | 
|  | { | 
|  | for( sal_uInt16 i = 0; i < MET_FIELDS; i++ ) | 
|  | { | 
|  | if(pFieldArr[i]->HasFocus()) | 
|  | { | 
|  | LoseFocusHdl(pFieldArr[i]); | 
|  | break; | 
|  | } | 
|  | } | 
|  |  | 
|  | if(bModified) | 
|  | { | 
|  | pTblData->SetColsChanged(); | 
|  | } | 
|  | return bModified; | 
|  | }; | 
|  |  | 
|  | /*------------------------------------------------------------------------ | 
|  | ------------------------------------------------------------------------*/ | 
|  | void   SwTableColumnPage::ModifyHdl( PercentField* pEdit ) | 
|  | { | 
|  | sal_uInt16 nAktPos; | 
|  | sal_uInt16 i; | 
|  |  | 
|  | for( i = 0; i < MET_FIELDS; i++) | 
|  | if(pEdit == pFieldArr[i]) | 
|  | break; | 
|  |  | 
|  | if (MET_FIELDS <= i) | 
|  | { | 
|  | OSL_ENSURE(false, "cannot happen."); | 
|  | return; | 
|  | } | 
|  |  | 
|  | SetVisibleWidth(aValueTbl[i], static_cast< SwTwips >(pEdit->DenormalizePercent(pEdit->GetValue( FUNIT_TWIP ))) ); | 
|  | nAktPos = aValueTbl[i]; | 
|  |  | 
|  | UpdateCols( nAktPos ); | 
|  | }; | 
|  |  | 
|  | /*------------------------------------------------------------------------ | 
|  | ------------------------------------------------------------------------*/ | 
|  | void   SwTableColumnPage::UpdateCols( sal_uInt16 nAktPos ) | 
|  | { | 
|  | SwTwips nSum = 0; | 
|  | sal_uInt16 i; | 
|  |  | 
|  | for( i = 0; i < nNoOfCols; i++ ) | 
|  | { | 
|  | nSum += (pTblData->GetColumns())[i].nWidth; | 
|  | } | 
|  | SwTwips nDiff = nSum - nTableWidth; | 
|  |  | 
|  | sal_Bool bModifyTable = aModifyTableCB.IsChecked(); | 
|  | sal_Bool bProp =    aProportionalCB.IsChecked(); | 
|  |  | 
|  | if(!bModifyTable && !bProp ) | 
|  | { | 
|  | //		the table width is constant, the difference is balanced with the other columns | 
|  | sal_uInt16 nLoopCount = 0; | 
|  | while( nDiff ) | 
|  | { | 
|  | if( ++nAktPos == nNoOfVisibleCols) | 
|  | { | 
|  | nAktPos = 0; | 
|  | ++nLoopCount; | 
|  | //#i101353# in small tables it might not be possible to balance column width | 
|  | if( nLoopCount > 1 ) | 
|  | break; | 
|  | } | 
|  | if( nDiff < 0 ) | 
|  | { | 
|  | SetVisibleWidth(nAktPos, GetVisibleWidth(nAktPos) -nDiff); | 
|  | nDiff = 0; | 
|  | } | 
|  | else if( GetVisibleWidth(nAktPos) >= nDiff + nMinWidth ) | 
|  | { | 
|  | SetVisibleWidth(nAktPos, GetVisibleWidth(nAktPos) -nDiff); | 
|  | nDiff = 0; | 
|  | } | 
|  | if( nDiff > 0 && GetVisibleWidth(nAktPos) > nMinWidth ) | 
|  | { | 
|  | if( nDiff >= (GetVisibleWidth(nAktPos) - nMinWidth) ) | 
|  | { | 
|  | nDiff -= (GetVisibleWidth(nAktPos) - nMinWidth); | 
|  | SetVisibleWidth(nAktPos, nMinWidth); | 
|  | } | 
|  | else | 
|  | { | 
|  | nDiff = 0; | 
|  | SetVisibleWidth(nAktPos, GetVisibleWidth(nAktPos) -nDiff); | 
|  | } | 
|  | DBG_ASSERT(nDiff >= 0, "nDiff < 0 kann hier nicht sein!"); | 
|  | } | 
|  | } | 
|  | } | 
|  | else if(bModifyTable && !bProp) | 
|  | { | 
|  | //		Differenz wird ueber die Tabellenbreite ausgeglichen, | 
|  | //		andere Spalten bleiben unveraendert | 
|  | DBG_ASSERT(nDiff <= pTblData->GetSpace() - nTableWidth, "Maximum falsch eingestellt" ); | 
|  | SwTwips nActSpace = pTblData->GetSpace() - nTableWidth; | 
|  | if(nDiff > nActSpace) | 
|  | { | 
|  | nTableWidth = pTblData->GetSpace(); | 
|  | SetVisibleWidth(nAktPos, GetVisibleWidth(nAktPos) - nDiff + nActSpace ); | 
|  | } | 
|  | else | 
|  | { | 
|  | nTableWidth += nDiff; | 
|  | } | 
|  | } | 
|  | else if(bModifyTable & bProp) | 
|  | { | 
|  | //		Alle Spalten werden proportional mitveraendert, die Tabellenbreite wird | 
|  | //  	entsprechend angepasst | 
|  | DBG_ASSERT(nDiff * nNoOfVisibleCols <= pTblData->GetSpace() - nTableWidth, "Maximum falsch eingestellt" ); | 
|  | long nAdd = nDiff; | 
|  | if(nDiff * nNoOfVisibleCols > pTblData->GetSpace() - nTableWidth) | 
|  | { | 
|  | nAdd = (pTblData->GetSpace() - nTableWidth) / nNoOfVisibleCols; | 
|  | SetVisibleWidth(nAktPos, GetVisibleWidth(nAktPos) - nDiff + nAdd ); | 
|  | nDiff = nAdd; | 
|  | } | 
|  | if(nAdd) | 
|  | for(i = 0; i < nNoOfVisibleCols; i++ ) | 
|  | { | 
|  | if(i == nAktPos) | 
|  | continue; | 
|  | SwTwips nVisWidth; | 
|  | if((nVisWidth = GetVisibleWidth(i)) + nDiff < MINLAY) | 
|  | { | 
|  | nAdd += nVisWidth - MINLAY; | 
|  | SetVisibleWidth(i, MINLAY); | 
|  | } | 
|  | else | 
|  | { | 
|  | SetVisibleWidth(i, nVisWidth + nDiff); | 
|  | nAdd += nDiff; | 
|  | } | 
|  |  | 
|  | } | 
|  | nTableWidth += nAdd; | 
|  |  | 
|  | } | 
|  | else | 
|  | { | 
|  | //		Die Differenz wird gleichmaessig auf alle anderen Spalten aufgeteilt | 
|  | // 		die Tabellenbreite bleibt konstant | 
|  | /* | 
|  | SwTwips nDiffn = nDiff/(nNoOfVisibleCols - 1); | 
|  | if(nDiff < 0 && (nNoOfVisibleCols - 1) * nDiffn != nDiff) | 
|  | nDiffn-- ; | 
|  | sal_uInt16 nStart = nAktPos++; | 
|  | if(nAktPos == nNoOfVisibleCols) | 
|  | nStart = 0; | 
|  | for(sal_uInt16 i = 0; i < nNoOfVisibleCols; i++ ) | 
|  | { | 
|  | if((nVisWidth = GetVisibleWidth(i)) + nDiff < MINLAY) | 
|  | { | 
|  | nAdd += nVisWidth - MINLAY; | 
|  | SetVisibleWidth(i, MINLAY); | 
|  | } | 
|  | } | 
|  | */ | 
|  |  | 
|  | } | 
|  |  | 
|  | #ifdef DEBUG_TBLDLG | 
|  | DbgTblRep(pTblData) | 
|  | #endif | 
|  |  | 
|  | if(!bPercentMode) | 
|  | aSpaceED.SetValue(aSpaceED.Normalize( pTblData->GetSpace() - nTableWidth) , FUNIT_TWIP); | 
|  |  | 
|  | for( i = 0; ( i < nNoOfVisibleCols ) && ( i < MET_FIELDS ); i++) | 
|  | { | 
|  | pFieldArr[i]->SetPrcntValue(pFieldArr[i]->NormalizePercent( | 
|  | GetVisibleWidth(aValueTbl[i]) ), FUNIT_TWIP); | 
|  | pFieldArr[i]->ClearModifyFlag(); | 
|  | } | 
|  |  | 
|  | } | 
|  |  | 
|  | /*------------------------------------------------------------------------ | 
|  | ------------------------------------------------------------------------*/ | 
|  | void    SwTableColumnPage::ActivatePage( const SfxItemSet& ) | 
|  | { | 
|  | bPercentMode = pTblData->GetWidthPercent() != 0; | 
|  | for( sal_uInt16 i = 0; (i < MET_FIELDS) && (i < nNoOfVisibleCols); i++ ) | 
|  | { | 
|  | pFieldArr[i]->SetRefValue(pTblData->GetWidth()); | 
|  | pFieldArr[i]->ShowPercent( bPercentMode ); | 
|  | } | 
|  |  | 
|  | sal_uInt16 nTblAlign = pTblData->GetAlign(); | 
|  | if((text::HoriOrientation::FULL != nTblAlign && nTableWidth != pTblData->GetWidth()) || | 
|  | (text::HoriOrientation::FULL == nTblAlign && nTableWidth != pTblData->GetSpace())) | 
|  | { | 
|  | nTableWidth = text::HoriOrientation::FULL == nTblAlign ? | 
|  | pTblData->GetSpace() : | 
|  | pTblData->GetWidth(); | 
|  | UpdateCols(0); | 
|  | } | 
|  | bModifyTbl = sal_True; | 
|  | if(pTblData->GetWidthPercent() || | 
|  | text::HoriOrientation::FULL == nTblAlign || | 
|  | pTblData->IsLineSelected()  ) | 
|  | bModifyTbl = sal_False; | 
|  | if(bPercentMode) | 
|  | { | 
|  | aModifyTableCB	.Check(sal_False); | 
|  | aProportionalCB .Check(sal_False); | 
|  | } | 
|  | else if( !bModifyTbl ) | 
|  | { | 
|  | aProportionalCB.Check(sal_False); | 
|  | aModifyTableCB.Check(sal_False); | 
|  | } | 
|  | aSpaceFT.Enable(!bPercentMode); | 
|  | aSpaceED.Enable(!bPercentMode); | 
|  | aModifyTableCB.Enable( !bPercentMode && bModifyTbl ); | 
|  | aProportionalCB.Enable(!bPercentMode && bModifyTbl ); | 
|  |  | 
|  | /*	if(pTblData->IsLineSelected() && pTblData->IsComplex()) | 
|  | { | 
|  |  | 
|  | }*/ | 
|  | aSpaceED.SetValue(aSpaceED.Normalize( | 
|  | pTblData->GetSpace() - nTableWidth) , FUNIT_TWIP); | 
|  |  | 
|  | } | 
|  |  | 
|  | /*------------------------------------------------------------------------ | 
|  | ------------------------------------------------------------------------*/ | 
|  | int  SwTableColumnPage::DeactivatePage( SfxItemSet* _pSet ) | 
|  | { | 
|  | if(_pSet) | 
|  | { | 
|  | FillItemSet(*_pSet); | 
|  | if(text::HoriOrientation::FULL != pTblData->GetAlign() && pTblData->GetWidth() != nTableWidth) | 
|  | { | 
|  | pTblData->SetWidth(nTableWidth); | 
|  | SwTwips nDiff = pTblData->GetSpace() - pTblData->GetWidth() - | 
|  | pTblData->GetLeftSpace() - pTblData->GetRightSpace(); | 
|  | switch( pTblData->GetAlign()  ) | 
|  | { | 
|  | case text::HoriOrientation::RIGHT: | 
|  | pTblData->SetLeftSpace(pTblData->GetLeftSpace() + nDiff); | 
|  | break; | 
|  | case text::HoriOrientation::LEFT: | 
|  | pTblData->SetRightSpace(pTblData->GetRightSpace() + nDiff); | 
|  | break; | 
|  | case text::HoriOrientation::NONE: | 
|  | { | 
|  | SwTwips nDiff2 = nDiff/2; | 
|  | if( nDiff > 0 || | 
|  | (-nDiff2 < pTblData->GetRightSpace() && - nDiff2 < pTblData->GetLeftSpace())) | 
|  | { | 
|  | pTblData->SetRightSpace(pTblData->GetRightSpace() + nDiff2); | 
|  | pTblData->SetLeftSpace(pTblData->GetLeftSpace() + nDiff2); | 
|  | } | 
|  | else | 
|  | { | 
|  | if(pTblData->GetRightSpace() > pTblData->GetLeftSpace()) | 
|  | { | 
|  | pTblData->SetLeftSpace(0); | 
|  | pTblData->SetRightSpace(pTblData->GetSpace() - pTblData->GetWidth()); | 
|  | } | 
|  | else | 
|  | { | 
|  | pTblData->SetRightSpace(0); | 
|  | pTblData->SetLeftSpace(pTblData->GetSpace() - pTblData->GetWidth()); | 
|  | } | 
|  | } | 
|  | } | 
|  | break; | 
|  | case text::HoriOrientation::CENTER: | 
|  | pTblData->SetRightSpace(pTblData->GetRightSpace() + nDiff/2); | 
|  | pTblData->SetLeftSpace(pTblData->GetLeftSpace() + nDiff/2); | 
|  | break; | 
|  | case text::HoriOrientation::LEFT_AND_WIDTH : | 
|  | if(nDiff > pTblData->GetRightSpace()) | 
|  | { | 
|  | pTblData->SetLeftSpace(pTblData->GetSpace() - pTblData->GetWidth()); | 
|  | } | 
|  | pTblData->SetRightSpace( | 
|  | pTblData->GetSpace() - pTblData->GetWidth() - pTblData->GetLeftSpace()); | 
|  | break; | 
|  | } | 
|  | pTblData->SetWidthChanged(); | 
|  | } | 
|  | #ifdef DEBUG_TBLDLG | 
|  | DbgTblRep(pTblData) | 
|  | #endif | 
|  | _pSet->Put(SwPtrItem( FN_TABLE_REP, pTblData )); | 
|  | } | 
|  | return sal_True; | 
|  | } | 
|  |  | 
|  | /*------------------------------------------------------------------------ | 
|  | ------------------------------------------------------------------------*/ | 
|  | SwTwips  SwTableColumnPage::GetVisibleWidth(sal_uInt16 nPos) | 
|  | { | 
|  | sal_uInt16 i=0; | 
|  |  | 
|  | while( nPos ) | 
|  | { | 
|  | if(pTblData->GetColumns()[i].bVisible && nPos) | 
|  | nPos--; | 
|  | i++; | 
|  | } | 
|  | SwTwips nReturn = pTblData->GetColumns()[i].nWidth; | 
|  | DBG_ASSERT(i < nNoOfCols, "Array index out of range"); | 
|  | while(!pTblData->GetColumns()[i].bVisible && (i + 1) < nNoOfCols) | 
|  | nReturn += pTblData->GetColumns()[++i].nWidth; | 
|  |  | 
|  | //	return (*ppTableColumns)[i].nWidth; | 
|  | return nReturn; | 
|  | } | 
|  |  | 
|  | /*------------------------------------------------------------------------ | 
|  | ------------------------------------------------------------------------*/ | 
|  | void SwTableColumnPage::SetVisibleWidth(sal_uInt16 nPos, SwTwips nNewWidth) | 
|  | { | 
|  | sal_uInt16 i=0; | 
|  | while( nPos ) | 
|  | { | 
|  | if(pTblData->GetColumns()[i].bVisible && nPos) | 
|  | nPos--; | 
|  | i++; | 
|  | } | 
|  | DBG_ASSERT(i < nNoOfCols, "Array index out of range"); | 
|  | pTblData->GetColumns()[i].nWidth = nNewWidth; | 
|  | while(!pTblData->GetColumns()[i].bVisible && (i + 1) < nNoOfCols) | 
|  | pTblData->GetColumns()[++i].nWidth = 0; | 
|  |  | 
|  | } | 
|  |  | 
|  | /*------------------------------------------------------------------------ | 
|  | ------------------------------------------------------------------------*/ | 
|  | SwTableTabDlg::SwTableTabDlg(Window* pParent, SfxItemPool& , | 
|  | const SfxItemSet* pItemSet, SwWrtShell* pSh ) : | 
|  | SfxTabDialog(pParent, SW_RES(DLG_FORMAT_TABLE), pItemSet,0), | 
|  | pShell(pSh), | 
|  | nHtmlMode(::GetHtmlMode(pSh->GetView().GetDocShell())) | 
|  | { | 
|  | FreeResource(); | 
|  | SfxAbstractDialogFactory* pFact = SfxAbstractDialogFactory::Create(); | 
|  | DBG_ASSERT(pFact, "Dialogdiet fail!"); | 
|  | AddTabPage(TP_FORMAT_TABLE, &SwFormatTablePage::Create, 0 ); | 
|  | AddTabPage(TP_TABLE_TEXTFLOW, &SwTextFlowPage::Create, 0 ); | 
|  | AddTabPage(TP_TABLE_COLUMN, &SwTableColumnPage::Create, 0 ); | 
|  | AddTabPage(TP_BACKGROUND, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BACKGROUND ), 0 ); | 
|  | AddTabPage(TP_BORDER, pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BORDER ), 0 ); | 
|  | } | 
|  |  | 
|  |  | 
|  | /*------------------------------------------------------------------------ | 
|  | ------------------------------------------------------------------------*/ | 
|  | void  SwTableTabDlg::PageCreated(sal_uInt16 nId, SfxTabPage& rPage) | 
|  | { | 
|  | SfxAllItemSet aSet(*(GetInputSetImpl()->GetPool())); | 
|  | if( TP_BACKGROUND == nId ) | 
|  | { | 
|  | sal_Int32 nFlagType = SVX_SHOW_TBLCTL; | 
|  | if(!( nHtmlMode & HTMLMODE_ON ) || | 
|  | nHtmlMode & HTMLMODE_SOME_STYLES) | 
|  | nFlagType |= SVX_SHOW_SELECTOR; | 
|  | aSet.Put (SfxUInt32Item(SID_FLAG_TYPE, nFlagType)); | 
|  | rPage.PageCreated(aSet); | 
|  | } | 
|  | else if(TP_BORDER == nId) | 
|  | { | 
|  | aSet.Put (SfxUInt16Item(SID_SWMODE_TYPE,SW_BORDER_MODE_TABLE)); | 
|  | rPage.PageCreated(aSet); | 
|  | } | 
|  | else if(TP_TABLE_TEXTFLOW == nId) | 
|  | { | 
|  | ((SwTextFlowPage&)rPage).SetShell(pShell); | 
|  | const sal_uInt16 eType = pShell->GetFrmType(0,sal_True); | 
|  | if( !(FRMTYPE_BODY & eType) ) | 
|  | ((SwTextFlowPage&)rPage).DisablePageBreak(); | 
|  | } | 
|  | } | 
|  |  | 
|  | /*-----------------12.12.96 12.22------------------- | 
|  | --------------------------------------------------*/ | 
|  | SwTextFlowPage::SwTextFlowPage( Window* pParent, | 
|  | const SfxItemSet& rSet ) : | 
|  | SfxTabPage(pParent, SW_RES( TP_TABLE_TEXTFLOW ), rSet ), | 
|  | aFlowFL         (this, SW_RES(FL_FLOW            )), | 
|  | aPgBrkCB        (this, SW_RES(CB_PAGEBREAK      )), | 
|  | aPgBrkRB        (this, SW_RES(RB_BREAKPAGE      )), | 
|  | aColBrkRB       (this, SW_RES(RB_BREAKCOLUMN    )), | 
|  | aPgBrkBeforeRB  (this, SW_RES(RB_PAGEBREAKBEFORE)), | 
|  | aPgBrkAfterRB   (this, SW_RES(RB_PAGEBREAKAFTER )), | 
|  | aPageCollCB     (this, SW_RES(CB_PAGECOLL       )), | 
|  | aPageCollLB     (this, SW_RES(LB_PAGECOLL       )), | 
|  | aPageNoFT       (this, SW_RES(FT_PAGENUM        )), | 
|  | aPageNoNF       (this, SW_RES(NF_PAGENUM        )), | 
|  | aSplitCB        (this, SW_RES(CB_SPLIT          )), | 
|  | aSplitRowCB     (this, SW_RES(CB_SPLIT_ROW      )), | 
|  | aKeepCB			(this, SW_RES(CB_KEEP			)), | 
|  | aHeadLineCB     (this, SW_RES(CB_HEADLINE       )), | 
|  | aRepeatHeaderFT         (this, SW_RES(FT_REPEAT_HEADER  )), | 
|  | aRepeatHeaderBeforeFT   (this), | 
|  | aRepeatHeaderNF         (this, SW_RES(NF_REPEAT_HEADER  )), | 
|  | aRepeatHeaderAfterFT    (this), | 
|  | aRepeatHeaderCombo      (this, SW_RES(WIN_REPEAT_HEADER), aRepeatHeaderNF, aRepeatHeaderBeforeFT, aRepeatHeaderAfterFT), | 
|  | aTextDirectionFT(this, SW_RES(FT_TEXTDIRECTION  )), | 
|  | aTextDirectionLB(this, SW_RES(LB_TEXTDIRECTION  )), | 
|  |  | 
|  | aVertOrientFL   (this, SW_RES(FL_VERT_ORIENT    )), | 
|  | aVertOrientFT(this,  SW_RES(FT_VERTORIENT       )), | 
|  | aVertOrientLB(this,  SW_RES(LB_VERTORIENT       )), | 
|  |  | 
|  | pShell(0), | 
|  |  | 
|  | bPageBreak(sal_True), | 
|  | bHtmlMode(sal_False) | 
|  | { | 
|  | FreeResource(); | 
|  |  | 
|  | aPgBrkRB.SetAccessibleRelationMemberOf(&aPgBrkCB); | 
|  | aColBrkRB.SetAccessibleRelationMemberOf(&aPgBrkCB); | 
|  | aPgBrkBeforeRB.SetAccessibleRelationMemberOf(&aPgBrkCB); | 
|  | aPgBrkAfterRB.SetAccessibleRelationMemberOf(&aPgBrkCB); | 
|  | aPageCollLB.SetAccessibleRelationLabeledBy(&aPageCollCB); | 
|  | aPageCollLB.SetAccessibleName(aPageCollCB.GetText()); | 
|  |  | 
|  | aPgBrkCB.SetClickHdl(LINK(this, SwTextFlowPage, PageBreakHdl_Impl)); | 
|  | aPgBrkBeforeRB.SetClickHdl( | 
|  | LINK( this, SwTextFlowPage, PageBreakPosHdl_Impl ) ); | 
|  | aPgBrkAfterRB.SetClickHdl( | 
|  | LINK( this, SwTextFlowPage, PageBreakPosHdl_Impl ) ); | 
|  | aPageCollCB.SetClickHdl( | 
|  | LINK( this, SwTextFlowPage, ApplyCollClickHdl_Impl ) ); | 
|  | aColBrkRB.SetClickHdl( | 
|  | LINK( this, SwTextFlowPage, PageBreakTypeHdl_Impl ) ); | 
|  | aPgBrkRB.SetClickHdl( | 
|  | LINK( this, SwTextFlowPage, PageBreakTypeHdl_Impl ) ); | 
|  | aSplitCB.SetClickHdl( | 
|  | LINK( this, SwTextFlowPage, SplitHdl_Impl)); | 
|  | aSplitRowCB.SetClickHdl( | 
|  | LINK( this, SwTextFlowPage, SplitRowHdl_Impl)); | 
|  | aHeadLineCB.SetClickHdl( LINK( this, SwTextFlowPage, HeadLineCBClickHdl ) ); | 
|  |  | 
|  | #ifndef SW_FILEFORMAT_40 | 
|  | const SfxPoolItem *pItem; | 
|  | if(SFX_ITEM_SET == rSet.GetItemState( SID_HTML_MODE, sal_False,&pItem ) | 
|  | && ((const SfxUInt16Item*)pItem)->GetValue() & HTMLMODE_ON) | 
|  | #endif | 
|  | { | 
|  | aKeepCB.Hide(); | 
|  | aSplitCB.Hide(); | 
|  | aSplitRowCB.Hide(); | 
|  | } | 
|  |  | 
|  | aRepeatHeaderCombo.Arrange( aRepeatHeaderFT ); | 
|  |  | 
|  | HeadLineCBClickHdl(); | 
|  | } | 
|  |  | 
|  | /*-----------------12.12.96 12.22------------------- | 
|  | --------------------------------------------------*/ | 
|  | SwTextFlowPage::~SwTextFlowPage() | 
|  | { | 
|  | } | 
|  |  | 
|  | /*-----------------12.12.96 12.22------------------- | 
|  | --------------------------------------------------*/ | 
|  | SfxTabPage*   SwTextFlowPage::Create( Window* pParent, | 
|  | const SfxItemSet& rAttrSet) | 
|  | { | 
|  | return new SwTextFlowPage(pParent, rAttrSet); | 
|  | } | 
|  |  | 
|  | /*-----------------12.12.96 12.22------------------- | 
|  | --------------------------------------------------*/ | 
|  | sal_Bool  SwTextFlowPage::FillItemSet( SfxItemSet& rSet ) | 
|  | { | 
|  | sal_Bool bModified = sal_False; | 
|  |  | 
|  | //Ueberschrift wiederholen | 
|  | if(aHeadLineCB.IsChecked() != aHeadLineCB.GetSavedValue() || | 
|  | String::CreateFromInt32( static_cast< sal_Int32 >(aRepeatHeaderNF.GetValue()) ) != aRepeatHeaderNF.GetSavedValue() ) | 
|  | { | 
|  | bModified |= 0 != rSet.Put( | 
|  | SfxUInt16Item(FN_PARAM_TABLE_HEADLINE, aHeadLineCB.IsChecked()? sal_uInt16(aRepeatHeaderNF.GetValue()) : 0 )); | 
|  | } | 
|  | if(aKeepCB.IsChecked() != aKeepCB.GetSavedValue()) | 
|  | bModified |= 0 != rSet.Put( SvxFmtKeepItem( aKeepCB.IsChecked(), RES_KEEP)); | 
|  |  | 
|  | if(aSplitCB.IsChecked() != aSplitCB.GetSavedValue()) | 
|  | bModified |= 0 != rSet.Put( SwFmtLayoutSplit( aSplitCB.IsChecked())); | 
|  |  | 
|  | if(aSplitRowCB.IsChecked() != aSplitRowCB.GetSavedValue()) | 
|  | bModified |= 0 != rSet.Put( SwFmtRowSplit( aSplitRowCB.IsChecked())); | 
|  |  | 
|  |  | 
|  | const SvxFmtBreakItem* pBreak = (const SvxFmtBreakItem*)GetOldItem( rSet, RES_BREAK ); | 
|  | const SwFmtPageDesc* pDesc = (const SwFmtPageDesc*) GetOldItem( rSet, RES_PAGEDESC ); | 
|  |  | 
|  |  | 
|  | sal_Bool bState = aPageCollCB.IsChecked(); | 
|  |  | 
|  | //Wenn Seitenvorlage, dann kein Break | 
|  | sal_Bool bPageItemPut = sal_False; | 
|  | if ( bState != aPageCollCB.GetSavedValue() || | 
|  | ( bState && | 
|  | aPageCollLB.GetSelectEntryPos() != aPageCollLB.GetSavedValue() ) | 
|  | || (aPageNoNF.IsEnabled() && aPageNoNF.IsValueModified()) ) | 
|  | { | 
|  | String sPage; | 
|  |  | 
|  | if ( bState ) | 
|  | { | 
|  | sPage = aPageCollLB.GetSelectEntry(); | 
|  | } | 
|  | sal_uInt16 nPgNum = static_cast< sal_uInt16 >(aPageNoNF.GetValue()); | 
|  | if ( !pDesc || !pDesc->GetPageDesc() || | 
|  | ( pDesc->GetPageDesc() && ((pDesc->GetPageDesc()->GetName() != sPage) || | 
|  | aPageNoNF.GetSavedValue() != (String)nPgNum))) | 
|  | { | 
|  | SwFmtPageDesc aFmt( pShell->FindPageDescByName( sPage, sal_True ) ); | 
|  | aFmt.SetNumOffset(bState ? nPgNum : 0); | 
|  | bModified |= 0 != rSet.Put( aFmt ); | 
|  | bPageItemPut = bState; | 
|  | } | 
|  | } | 
|  | sal_Bool bIsChecked = aPgBrkCB.IsChecked(); | 
|  | if ( !bPageItemPut && | 
|  | (	bState != aPageCollCB.GetSavedValue() || | 
|  | bIsChecked != aPgBrkCB.GetSavedValue()				|| | 
|  | aPgBrkBeforeRB.IsChecked() != aPgBrkBeforeRB.GetSavedValue()	|| | 
|  | aPgBrkRB.IsChecked() != aPgBrkRB.GetSavedValue() )) | 
|  | { | 
|  | SvxFmtBreakItem aBreak( | 
|  | (const SvxFmtBreakItem&)GetItemSet().Get( RES_BREAK ) ); | 
|  |  | 
|  | if(bIsChecked) | 
|  | { | 
|  | sal_Bool bBefore = aPgBrkBeforeRB.IsChecked(); | 
|  |  | 
|  | if ( aPgBrkRB.IsChecked() ) | 
|  | { | 
|  | if ( bBefore ) | 
|  | aBreak.SetValue( SVX_BREAK_PAGE_BEFORE ); | 
|  | else | 
|  | aBreak.SetValue( SVX_BREAK_PAGE_AFTER ); | 
|  | } | 
|  | else | 
|  | { | 
|  | if ( bBefore ) | 
|  | aBreak.SetValue( SVX_BREAK_COLUMN_BEFORE ); | 
|  | else | 
|  | aBreak.SetValue( SVX_BREAK_COLUMN_AFTER ); | 
|  | } | 
|  | } | 
|  | else | 
|  | { | 
|  | aBreak.SetValue( SVX_BREAK_NONE ); | 
|  | } | 
|  |  | 
|  | if ( !pBreak || !( *(const SvxFmtBreakItem*)pBreak == aBreak ) ) | 
|  | { | 
|  | bModified |= 0 != rSet.Put( aBreak ); | 
|  | } | 
|  | } | 
|  |  | 
|  | if(aTextDirectionLB.GetSelectEntryPos() != aTextDirectionLB.GetSavedValue()) | 
|  | { | 
|  | bModified |= 0 != rSet.Put( | 
|  | SvxFrameDirectionItem( | 
|  | (SvxFrameDirection)(sal_uLong)aTextDirectionLB.GetEntryData(aTextDirectionLB.GetSelectEntryPos()) | 
|  | , FN_TABLE_BOX_TEXTDIRECTION)); | 
|  | } | 
|  |  | 
|  | if(aVertOrientLB.GetSelectEntryPos() != aVertOrientLB.GetSavedValue()) | 
|  | { | 
|  | sal_uInt16 nOrient = USHRT_MAX; | 
|  | switch(aVertOrientLB.GetSelectEntryPos()) | 
|  | { | 
|  | case 0 : nOrient = text::VertOrientation::NONE; break; | 
|  | case 1 : nOrient = text::VertOrientation::CENTER; break; | 
|  | case 2 : nOrient = text::VertOrientation::BOTTOM; break; | 
|  | } | 
|  | if(nOrient != USHRT_MAX) | 
|  | bModified |= 0 != rSet.Put(SfxUInt16Item(FN_TABLE_SET_VERT_ALIGN, nOrient)); | 
|  | } | 
|  |  | 
|  | return bModified; | 
|  |  | 
|  | } | 
|  |  | 
|  | /*-----------------12.12.96 12.22------------------- | 
|  | --------------------------------------------------*/ | 
|  | void   SwTextFlowPage::Reset( const SfxItemSet& rSet ) | 
|  | { | 
|  | const SfxPoolItem* pItem; | 
|  | SvxHtmlOptions* pHtmlOpt = SvxHtmlOptions::Get(); | 
|  | sal_Bool bFlowAllowed = !bHtmlMode || pHtmlOpt->IsPrintLayoutExtension(); | 
|  | if(bFlowAllowed) | 
|  | { | 
|  | // Einfuegen der vorhandenen Seitenvorlagen in die Listbox | 
|  | const sal_uInt16 nCount = pShell->GetPageDescCnt(); | 
|  | sal_uInt16 i; | 
|  |  | 
|  | for( i = 0; i < nCount; ++i) | 
|  | { | 
|  | const SwPageDesc &rPageDesc = pShell->GetPageDesc(i); | 
|  | aPageCollLB.InsertEntry(rPageDesc.GetName()); | 
|  | } | 
|  |  | 
|  | String aFmtName; | 
|  | for(i = RES_POOLPAGE_BEGIN; i < RES_POOLPAGE_END; ++i) | 
|  | if( LISTBOX_ENTRY_NOTFOUND == aPageCollLB.GetEntryPos( | 
|  | aFmtName = SwStyleNameMapper::GetUIName( i, aFmtName ) )) | 
|  | aPageCollLB.InsertEntry( aFmtName ); | 
|  |  | 
|  | if(SFX_ITEM_SET == rSet.GetItemState( RES_KEEP, sal_False, &pItem )) | 
|  | { | 
|  | aKeepCB.Check( ((const SvxFmtKeepItem*)pItem)->GetValue() ); | 
|  | aKeepCB.SaveValue(); | 
|  | } | 
|  | if(SFX_ITEM_SET == rSet.GetItemState( RES_LAYOUT_SPLIT, sal_False, &pItem )) | 
|  | { | 
|  | aSplitCB.Check( ((const SwFmtLayoutSplit*)pItem)->GetValue() ); | 
|  | } | 
|  | else | 
|  | aSplitCB.Check(); | 
|  |  | 
|  | aSplitCB.SaveValue(); | 
|  | SplitHdl_Impl(&aSplitCB); | 
|  |  | 
|  | if(SFX_ITEM_SET == rSet.GetItemState( RES_ROW_SPLIT, sal_False, &pItem )) | 
|  | { | 
|  | aSplitRowCB.Check( ((const SwFmtRowSplit*)pItem)->GetValue() ); | 
|  | } | 
|  | else | 
|  | aSplitRowCB.SetState(STATE_DONTKNOW); | 
|  | aSplitRowCB.SaveValue(); | 
|  |  | 
|  | if(bPageBreak) | 
|  | { | 
|  | if(SFX_ITEM_SET == rSet.GetItemState( RES_PAGEDESC, sal_False, &pItem )) | 
|  | { | 
|  | String sPageDesc; | 
|  | const SwPageDesc* pDesc = ((const SwFmtPageDesc*)pItem)->GetPageDesc(); | 
|  | aPageNoNF.SetValue(((const SwFmtPageDesc*)pItem)->GetNumOffset()); | 
|  | if(pDesc) | 
|  | sPageDesc = pDesc->GetName(); | 
|  | if ( sPageDesc.Len() && | 
|  | aPageCollLB.GetEntryPos( sPageDesc ) != LISTBOX_ENTRY_NOTFOUND ) | 
|  | { | 
|  | aPageCollLB.SelectEntry( sPageDesc ); | 
|  | aPageCollCB.Check(); | 
|  |  | 
|  | aPgBrkCB.Enable(); | 
|  | aPgBrkRB.Enable(); | 
|  | aColBrkRB.Enable(); | 
|  | aPgBrkBeforeRB.Enable(); | 
|  | aPgBrkAfterRB.Enable(); | 
|  | aPageCollCB.Enable(); | 
|  | aPgBrkCB.Check(); | 
|  |  | 
|  | aPgBrkCB.Check( sal_True ); | 
|  | aColBrkRB.Check( sal_False ); | 
|  | aPgBrkBeforeRB.Check( sal_True ); | 
|  | aPgBrkAfterRB.Check( sal_False ); | 
|  | } | 
|  | else | 
|  | { | 
|  | aPageCollLB.SetNoSelection(); | 
|  | aPageCollCB.Check(sal_False); | 
|  | } | 
|  | } | 
|  |  | 
|  | if(SFX_ITEM_SET == rSet.GetItemState( RES_BREAK, sal_False, &pItem )) | 
|  | { | 
|  | const SvxFmtBreakItem* pPageBreak = (const SvxFmtBreakItem*)pItem; | 
|  | SvxBreak eBreak = (SvxBreak)pPageBreak->GetValue(); | 
|  |  | 
|  | if ( eBreak != SVX_BREAK_NONE ) | 
|  | { | 
|  | aPgBrkCB.Check(); | 
|  | aPageCollCB.Enable(sal_False); | 
|  | aPageCollLB.Enable(sal_False); | 
|  | aPageNoFT.Enable(sal_False); | 
|  | aPageNoNF.Enable(sal_False); | 
|  | } | 
|  | switch ( eBreak ) | 
|  | { | 
|  | case SVX_BREAK_PAGE_BEFORE: | 
|  | aPgBrkRB.Check( sal_True ); | 
|  | aColBrkRB.Check( sal_False ); | 
|  | aPgBrkBeforeRB.Check( sal_True ); | 
|  | aPgBrkAfterRB.Check( sal_False ); | 
|  | break; | 
|  | case SVX_BREAK_PAGE_AFTER: | 
|  | aPgBrkRB.Check( sal_True ); | 
|  | aColBrkRB.Check( sal_False ); | 
|  | aPgBrkBeforeRB.Check( sal_False ); | 
|  | aPgBrkAfterRB.Check( sal_True ); | 
|  | break; | 
|  | case SVX_BREAK_COLUMN_BEFORE: | 
|  | aPgBrkRB.Check( sal_False ); | 
|  | aColBrkRB.Check( sal_True ); | 
|  | aPgBrkBeforeRB.Check( sal_True ); | 
|  | aPgBrkAfterRB.Check( sal_False ); | 
|  | break; | 
|  | case SVX_BREAK_COLUMN_AFTER: | 
|  | aPgBrkRB.Check( sal_False ); | 
|  | aColBrkRB.Check( sal_True ); | 
|  | aPgBrkBeforeRB.Check( sal_False ); | 
|  | aPgBrkAfterRB.Check( sal_True ); | 
|  | break; | 
|  | default:; //prevent warning | 
|  | } | 
|  |  | 
|  | } | 
|  | if ( aPgBrkBeforeRB.IsChecked() ) | 
|  | PageBreakPosHdl_Impl( &aPgBrkBeforeRB ); | 
|  | else if ( aPgBrkAfterRB.IsChecked() ) | 
|  | PageBreakPosHdl_Impl( &aPgBrkAfterRB ); | 
|  | PageBreakHdl_Impl( &aPgBrkCB ); | 
|  | } | 
|  | } | 
|  | else | 
|  | { | 
|  | aPgBrkRB.Enable(sal_False); | 
|  | aColBrkRB.Enable(sal_False); | 
|  | aPgBrkBeforeRB.Enable(sal_False); | 
|  | aPgBrkAfterRB.Enable(sal_False); | 
|  | aKeepCB	.Enable(sal_False); | 
|  | aSplitCB.Enable(sal_False); | 
|  | aPgBrkCB.Enable(sal_False); | 
|  | aPageCollCB.Enable(sal_False); | 
|  | aPageCollLB.Enable(sal_False); | 
|  | } | 
|  |  | 
|  | if(SFX_ITEM_SET == rSet.GetItemState( FN_PARAM_TABLE_HEADLINE, sal_False, &pItem )) | 
|  | { | 
|  | sal_uInt16 nRep = ((const SfxUInt16Item*)pItem)->GetValue(); | 
|  | aHeadLineCB.Check( nRep > 0 ); | 
|  | aHeadLineCB.SaveValue(); | 
|  | aRepeatHeaderNF.SetValue( nRep ); | 
|  | aRepeatHeaderNF.SaveValue(); | 
|  | } | 
|  | if ( rSet.GetItemState(FN_TABLE_BOX_TEXTDIRECTION) > SFX_ITEM_AVAILABLE ) | 
|  | { | 
|  | sal_uLong nDirection = ((const SvxFrameDirectionItem&)rSet.Get(FN_TABLE_BOX_TEXTDIRECTION)).GetValue(); | 
|  | aTextDirectionLB.SelectEntryPos(aTextDirectionLB.GetEntryPos( (const void*)nDirection )); | 
|  | } | 
|  |  | 
|  | if ( rSet.GetItemState(FN_TABLE_SET_VERT_ALIGN) > SFX_ITEM_AVAILABLE ) | 
|  | { | 
|  | sal_uInt16 nVert = ((const SfxUInt16Item&)rSet.Get(FN_TABLE_SET_VERT_ALIGN)).GetValue(); | 
|  | sal_uInt16 nPos = 0; | 
|  | switch(nVert) | 
|  | { | 
|  | case text::VertOrientation::NONE:     nPos = 0;   break; | 
|  | case text::VertOrientation::CENTER:   nPos = 1;   break; | 
|  | case text::VertOrientation::BOTTOM:   nPos = 2;   break; | 
|  | } | 
|  | aVertOrientLB.SelectEntryPos(nPos); | 
|  | } | 
|  |  | 
|  | aPageCollCB.SaveValue(); | 
|  | aPageCollLB.SaveValue(); | 
|  | aPgBrkCB.SaveValue(); | 
|  | aPgBrkRB.SaveValue(); | 
|  | aColBrkRB.SaveValue(); | 
|  | aPgBrkBeforeRB.SaveValue(); | 
|  | aPgBrkAfterRB.SaveValue(); | 
|  | aPageNoNF.SaveValue(); | 
|  | aTextDirectionLB.SaveValue(); | 
|  | aVertOrientLB.SaveValue(); | 
|  |  | 
|  | HeadLineCBClickHdl(); | 
|  | } | 
|  | /*-----------------16.04.98 14:48------------------- | 
|  |  | 
|  | --------------------------------------------------*/ | 
|  |  | 
|  | void SwTextFlowPage::SetShell(SwWrtShell* pSh) | 
|  | { | 
|  | pShell = pSh; | 
|  | bHtmlMode = 0 != (::GetHtmlMode(pShell->GetView().GetDocShell()) & HTMLMODE_ON); | 
|  | if(bHtmlMode) | 
|  | { | 
|  | aPageNoNF.Enable(sal_False); | 
|  | aPageNoFT.Enable(sal_False); | 
|  | } | 
|  | } | 
|  |  | 
|  | /*-----------------12.12.96 16.18------------------- | 
|  | --------------------------------------------------*/ | 
|  | IMPL_LINK( SwTextFlowPage, PageBreakHdl_Impl, CheckBox*, EMPTYARG ) | 
|  | { | 
|  | if( aPgBrkCB.IsChecked() ) | 
|  | { | 
|  | aPgBrkRB.		Enable(); | 
|  | aColBrkRB.		Enable(); | 
|  | aPgBrkBeforeRB.	Enable(); | 
|  | aPgBrkAfterRB.	Enable(); | 
|  |  | 
|  | if ( aPgBrkRB.IsChecked() && aPgBrkBeforeRB.IsChecked() ) | 
|  | { | 
|  | aPageCollCB.Enable(); | 
|  |  | 
|  | sal_Bool bEnable = aPageCollCB.IsChecked() && | 
|  | aPageCollLB.GetEntryCount(); | 
|  | aPageCollLB.Enable(bEnable); | 
|  | if(!bHtmlMode) | 
|  | { | 
|  | aPageNoFT.Enable(bEnable); | 
|  | aPageNoNF.Enable(bEnable); | 
|  | } | 
|  | } | 
|  | } | 
|  | else | 
|  | { | 
|  | aPageCollCB.Check( sal_False ); | 
|  | aPageCollCB.Enable(sal_False); | 
|  | aPageCollLB.Enable(sal_False); | 
|  | aPageNoFT.Enable(sal_False); | 
|  | aPageNoNF.Enable(sal_False); | 
|  | aPgBrkRB.		Enable(sal_False); | 
|  | aColBrkRB.		Enable(sal_False); | 
|  | aPgBrkBeforeRB.	Enable(sal_False); | 
|  | aPgBrkAfterRB.	Enable(sal_False); | 
|  | } | 
|  | return 0; | 
|  | } | 
|  |  | 
|  | /*-----------------12.12.96 16.18------------------- | 
|  | --------------------------------------------------*/ | 
|  | IMPL_LINK( SwTextFlowPage, ApplyCollClickHdl_Impl, CheckBox*, EMPTYARG ) | 
|  | { | 
|  | sal_Bool bEnable = sal_False; | 
|  | if ( aPageCollCB.IsChecked() && | 
|  | aPageCollLB.GetEntryCount() ) | 
|  | { | 
|  | bEnable = sal_True; | 
|  | aPageCollLB.SelectEntryPos( 0 ); | 
|  | } | 
|  | else | 
|  | { | 
|  | aPageCollLB.SetNoSelection(); | 
|  | } | 
|  | aPageCollLB.Enable(bEnable); | 
|  | if(!bHtmlMode) | 
|  | { | 
|  | aPageNoFT.Enable(bEnable); | 
|  | aPageNoNF.Enable(bEnable); | 
|  | } | 
|  | return 0; | 
|  | } | 
|  |  | 
|  | /*-----------------12.12.96 16.18------------------- | 
|  | --------------------------------------------------*/ | 
|  | IMPL_LINK( SwTextFlowPage, PageBreakPosHdl_Impl, RadioButton*, pBtn ) | 
|  | { | 
|  | if ( aPgBrkCB.IsChecked() ) | 
|  | { | 
|  | if ( pBtn == &aPgBrkBeforeRB && aPgBrkRB.IsChecked() ) | 
|  | { | 
|  | aPageCollCB.Enable(); | 
|  |  | 
|  | sal_Bool bEnable = aPageCollCB.IsChecked()  && | 
|  | aPageCollLB.GetEntryCount(); | 
|  |  | 
|  | aPageCollLB.Enable(bEnable); | 
|  | if(!bHtmlMode) | 
|  | { | 
|  | aPageNoFT.Enable(bEnable); | 
|  | aPageNoNF.Enable(bEnable); | 
|  | } | 
|  | } | 
|  | else if ( pBtn == &aPgBrkAfterRB ) | 
|  | { | 
|  | aPageCollCB	.Check( sal_False ); | 
|  | aPageCollCB	.Enable(sal_False); | 
|  | aPageCollLB	.Enable(sal_False); | 
|  | aPageNoFT 	.Enable(sal_False); | 
|  | aPageNoNF	.Enable(sal_False); | 
|  | } | 
|  | } | 
|  | return 0; | 
|  | } | 
|  |  | 
|  | /*-----------------12.12.96 16.18------------------- | 
|  | --------------------------------------------------*/ | 
|  | IMPL_LINK( SwTextFlowPage, PageBreakTypeHdl_Impl, RadioButton*, pBtn ) | 
|  | { | 
|  | if ( pBtn == &aColBrkRB || aPgBrkAfterRB.IsChecked() ) | 
|  | { | 
|  | aPageCollCB	.Check(sal_False); | 
|  | aPageCollCB	.Enable(sal_False); | 
|  | aPageCollLB	.Enable(sal_False); | 
|  | aPageNoFT	.Enable(sal_False); | 
|  | aPageNoNF	.Enable(sal_False); | 
|  | } | 
|  | else if ( aPgBrkBeforeRB.IsChecked() ) | 
|  | PageBreakPosHdl_Impl( &aPgBrkBeforeRB ); | 
|  | return 0; | 
|  | } | 
|  | /*-----------------17.11.2003 11:30----------------- | 
|  | * | 
|  | * --------------------------------------------------*/ | 
|  | IMPL_LINK( SwTextFlowPage, SplitHdl_Impl, CheckBox*, pBox ) | 
|  | { | 
|  | aSplitRowCB.Enable(pBox->IsChecked()); | 
|  | return 0; | 
|  | } | 
|  | /*-----------------17.11.2003 11:30----------------- | 
|  | * | 
|  | * --------------------------------------------------*/ | 
|  | IMPL_LINK( SwTextFlowPage, SplitRowHdl_Impl, TriStateBox*, pBox ) | 
|  | { | 
|  | pBox->EnableTriState(sal_False); | 
|  | return 0; | 
|  | } | 
|  |  | 
|  | IMPL_LINK( SwTextFlowPage, HeadLineCBClickHdl, void*, EMPTYARG ) | 
|  | { | 
|  | aRepeatHeaderCombo.Enable(aHeadLineCB.IsChecked()); | 
|  |  | 
|  | return 0; | 
|  | } | 
|  |  | 
|  | /*-----------------30.05.97 07:37------------------- | 
|  |  | 
|  | --------------------------------------------------*/ | 
|  | void SwTextFlowPage::DisablePageBreak() | 
|  | { | 
|  | bPageBreak = sal_False; | 
|  | aPgBrkCB       .Disable(); | 
|  | aPgBrkRB       .Disable(); | 
|  | aColBrkRB      .Disable(); | 
|  | aPgBrkBeforeRB .Disable(); | 
|  | aPgBrkAfterRB  .Disable(); | 
|  | aPageCollCB    .Disable(); | 
|  | aPageCollLB    .Disable(); | 
|  | aPageNoFT      .Disable(); | 
|  | aPageNoNF      .Disable(); | 
|  | } | 
|  |  | 
|  |  | 
|  |  |