| /************************************************************** |
| * |
| * 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_chart2.hxx" |
| |
| #include "ShapeController.hxx" |
| #include "ShapeController.hrc" |
| #include "ChartController.hxx" |
| #include "ChartWindow.hxx" |
| #include "ViewElementListProvider.hxx" |
| #include "dlg_ShapeFont.hxx" |
| #include "dlg_ShapeParagraph.hxx" |
| #include "chartview/DrawModelWrapper.hxx" |
| #include "macros.hxx" |
| |
| #include <com/sun/star/frame/XStorable.hpp> |
| |
| #include <vos/mutex.hxx> |
| #include <vcl/msgbox.hxx> |
| #include <vcl/svapp.hxx> |
| #include <editeng/brkitem.hxx> |
| #include <svx/dialogs.hrc> |
| #include <svx/drawitem.hxx> |
| #include <editeng/eeitem.hxx> |
| #include <editeng/hyznitem.hxx> |
| #include <editeng/orphitem.hxx> |
| #include <editeng/spltitem.hxx> |
| #include <svx/svxdlg.hxx> |
| #include <editeng/widwitem.hxx> |
| |
| #include <boost/scoped_ptr.hpp> |
| |
| using namespace ::com::sun::star; |
| using namespace ::com::sun::star::frame; |
| |
| using ::com::sun::star::uno::Reference; |
| using ::com::sun::star::uno::Sequence; |
| |
| //............................................................................. |
| namespace chart |
| { |
| //............................................................................. |
| |
| ShapeController::ShapeController( const Reference< uno::XComponentContext >& rxContext, |
| ChartController* pController ) |
| :FeatureCommandDispatchBase( rxContext ) |
| ,m_pChartController( pController ) |
| { |
| } |
| |
| ShapeController::~ShapeController() |
| { |
| } |
| |
| void ShapeController::initialize() |
| { |
| FeatureCommandDispatchBase::initialize(); |
| } |
| |
| // WeakComponentImplHelperBase |
| void ShapeController::disposing() |
| { |
| } |
| |
| // XEventListener |
| void ShapeController::disposing( const lang::EventObject& /* Source */ ) |
| throw (uno::RuntimeException) |
| { |
| } |
| |
| FeatureState ShapeController::getState( const ::rtl::OUString& rCommand ) |
| { |
| FeatureState aReturn; |
| aReturn.bEnabled = false; |
| aReturn.aState <<= false; |
| |
| bool bWritable = false; |
| if ( m_pChartController ) |
| { |
| Reference< frame::XStorable > xStorable( m_pChartController->getModel(), uno::UNO_QUERY ); |
| if ( xStorable.is() ) |
| { |
| bWritable = !xStorable->isReadonly(); |
| } |
| } |
| |
| SupportedFeatures::const_iterator aIter = m_aSupportedFeatures.find( rCommand ); |
| if ( aIter != m_aSupportedFeatures.end() ) |
| { |
| sal_uInt16 nFeatureId = aIter->second.nFeatureId; |
| switch ( nFeatureId ) |
| { |
| case COMMAND_ID_FORMAT_LINE: |
| case COMMAND_ID_FORMAT_AREA: |
| case COMMAND_ID_TEXT_ATTRIBUTES: |
| case COMMAND_ID_TRANSFORM_DIALOG: |
| case COMMAND_ID_OBJECT_TITLE_DESCRIPTION: |
| case COMMAND_ID_RENAME_OBJECT: |
| { |
| aReturn.bEnabled = bWritable; |
| aReturn.aState <<= false; |
| } |
| break; |
| case COMMAND_ID_BRING_TO_FRONT: |
| case COMMAND_ID_FORWARD: |
| { |
| aReturn.bEnabled = ( bWritable && isForwardPossible() ); |
| aReturn.aState <<= false; |
| } |
| break; |
| case COMMAND_ID_BACKWARD: |
| case COMMAND_ID_SEND_TO_BACK: |
| { |
| |
| aReturn.bEnabled = ( bWritable && isBackwardPossible() ); |
| aReturn.aState <<= false; |
| } |
| break; |
| case COMMAND_ID_FONT_DIALOG: |
| case COMMAND_ID_PARAGRAPH_DIALOG: |
| { |
| aReturn.bEnabled = bWritable; |
| aReturn.aState <<= false; |
| } |
| break; |
| default: |
| { |
| aReturn.bEnabled = false; |
| aReturn.aState <<= false; |
| } |
| break; |
| } |
| } |
| |
| return aReturn; |
| } |
| |
| void ShapeController::execute( const ::rtl::OUString& rCommand, const Sequence< beans::PropertyValue>& rArgs ) |
| { |
| (void)rArgs; |
| |
| SupportedFeatures::const_iterator aIter = m_aSupportedFeatures.find( rCommand ); |
| if ( aIter != m_aSupportedFeatures.end() ) |
| { |
| sal_uInt16 nFeatureId = aIter->second.nFeatureId; |
| switch ( nFeatureId ) |
| { |
| case COMMAND_ID_FORMAT_LINE: |
| { |
| executeDispatch_FormatLine(); |
| } |
| break; |
| case COMMAND_ID_FORMAT_AREA: |
| { |
| executeDispatch_FormatArea(); |
| } |
| break; |
| case COMMAND_ID_TEXT_ATTRIBUTES: |
| { |
| executeDispatch_TextAttributes(); |
| } |
| break; |
| case COMMAND_ID_TRANSFORM_DIALOG: |
| { |
| executeDispatch_TransformDialog(); |
| } |
| break; |
| case COMMAND_ID_OBJECT_TITLE_DESCRIPTION: |
| { |
| executeDispatch_ObjectTitleDescription(); |
| } |
| break; |
| case COMMAND_ID_RENAME_OBJECT: |
| { |
| executeDispatch_RenameObject(); |
| } |
| break; |
| case COMMAND_ID_BRING_TO_FRONT: |
| case COMMAND_ID_FORWARD: |
| case COMMAND_ID_BACKWARD: |
| case COMMAND_ID_SEND_TO_BACK: |
| { |
| executeDispatch_ChangeZOrder( nFeatureId ); |
| } |
| break; |
| case COMMAND_ID_FONT_DIALOG: |
| { |
| executeDispatch_FontDialog(); |
| } |
| break; |
| case COMMAND_ID_PARAGRAPH_DIALOG: |
| { |
| executeDispatch_ParagraphDialog(); |
| } |
| break; |
| default: |
| { |
| } |
| break; |
| } |
| } |
| } |
| |
| void ShapeController::describeSupportedFeatures() |
| { |
| implDescribeSupportedFeature( ".uno:FormatLine", COMMAND_ID_FORMAT_LINE, CommandGroup::FORMAT ); |
| implDescribeSupportedFeature( ".uno:FormatArea", COMMAND_ID_FORMAT_AREA, CommandGroup::FORMAT ); |
| implDescribeSupportedFeature( ".uno:TextAttributes", COMMAND_ID_TEXT_ATTRIBUTES, CommandGroup::FORMAT ); |
| implDescribeSupportedFeature( ".uno:TransformDialog", COMMAND_ID_TRANSFORM_DIALOG, CommandGroup::FORMAT ); |
| implDescribeSupportedFeature( ".uno:ObjectTitleDescription", COMMAND_ID_OBJECT_TITLE_DESCRIPTION, CommandGroup::FORMAT ); |
| implDescribeSupportedFeature( ".uno:RenameObject", COMMAND_ID_RENAME_OBJECT, CommandGroup::FORMAT ); |
| implDescribeSupportedFeature( ".uno:BringToFront", COMMAND_ID_BRING_TO_FRONT, CommandGroup::FORMAT ); |
| implDescribeSupportedFeature( ".uno:Forward", COMMAND_ID_FORWARD, CommandGroup::FORMAT ); |
| implDescribeSupportedFeature( ".uno:Backward", COMMAND_ID_BACKWARD, CommandGroup::FORMAT ); |
| implDescribeSupportedFeature( ".uno:SendToBack", COMMAND_ID_SEND_TO_BACK, CommandGroup::FORMAT ); |
| implDescribeSupportedFeature( ".uno:FontDialog", COMMAND_ID_FONT_DIALOG, CommandGroup::EDIT ); |
| implDescribeSupportedFeature( ".uno:ParagraphDialog", COMMAND_ID_PARAGRAPH_DIALOG, CommandGroup::EDIT ); |
| } |
| |
| IMPL_LINK( ShapeController, CheckNameHdl, AbstractSvxNameDialog*, pDialog ) |
| { |
| String aName; |
| if ( pDialog ) |
| { |
| pDialog->GetName( aName ); |
| } |
| if ( aName.Len() ) |
| { |
| DrawViewWrapper* pDrawViewWrapper = ( m_pChartController ? m_pChartController->GetDrawViewWrapper() : NULL ); |
| if ( pDrawViewWrapper && pDrawViewWrapper->getNamedSdrObject( aName ) ) |
| { |
| return 0; |
| } |
| } |
| return 1; |
| } |
| |
| void ShapeController::executeDispatch_FormatLine() |
| { |
| ::vos::OGuard aGuard( Application::GetSolarMutex() ); |
| if ( m_pChartController ) |
| { |
| Window* pParent = dynamic_cast< Window* >( m_pChartController->m_pChartWindow ); |
| DrawModelWrapper* pDrawModelWrapper = m_pChartController->GetDrawModelWrapper(); |
| DrawViewWrapper* pDrawViewWrapper = m_pChartController->GetDrawViewWrapper(); |
| if ( pParent && pDrawModelWrapper && pDrawViewWrapper ) |
| { |
| SdrObject* pSelectedObj = pDrawViewWrapper->getSelectedObject(); |
| SfxItemSet aAttr( pDrawViewWrapper->GetDefaultAttr() ); |
| sal_Bool bHasMarked = pDrawViewWrapper->AreObjectsMarked(); |
| if ( bHasMarked ) |
| { |
| pDrawViewWrapper->MergeAttrFromMarked( aAttr, sal_False ); |
| } |
| SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create(); |
| if ( pFact ) |
| { |
| ::boost::scoped_ptr< SfxAbstractTabDialog > pDlg( |
| pFact->CreateSvxLineTabDialog( pParent, &aAttr, &pDrawModelWrapper->getSdrModel(), |
| pSelectedObj, bHasMarked ) ); |
| if ( pDlg.get() && ( pDlg->Execute() == RET_OK ) ) |
| { |
| const SfxItemSet* pOutAttr = pDlg->GetOutputItemSet(); |
| if ( bHasMarked ) |
| { |
| pDrawViewWrapper->SetAttrToMarked( *pOutAttr, sal_False ); |
| } |
| else |
| { |
| pDrawViewWrapper->SetDefaultAttr( *pOutAttr, sal_False ); |
| } |
| } |
| } |
| } |
| } |
| } |
| |
| void ShapeController::executeDispatch_FormatArea() |
| { |
| ::vos::OGuard aGuard( Application::GetSolarMutex() ); |
| if ( m_pChartController ) |
| { |
| Window* pParent = dynamic_cast< Window* >( m_pChartController->m_pChartWindow ); |
| DrawModelWrapper* pDrawModelWrapper = m_pChartController->GetDrawModelWrapper(); |
| DrawViewWrapper* pDrawViewWrapper = m_pChartController->GetDrawViewWrapper(); |
| if ( pParent && pDrawModelWrapper && pDrawViewWrapper ) |
| { |
| SfxItemSet aAttr( pDrawViewWrapper->GetDefaultAttr() ); |
| sal_Bool bHasMarked = pDrawViewWrapper->AreObjectsMarked(); |
| if ( bHasMarked ) |
| { |
| pDrawViewWrapper->MergeAttrFromMarked( aAttr, sal_False ); |
| } |
| SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create(); |
| if ( pFact ) |
| { |
| ::boost::scoped_ptr< AbstractSvxAreaTabDialog > pDlg( |
| pFact->CreateSvxAreaTabDialog( pParent, &aAttr, &pDrawModelWrapper->getSdrModel(), true ) ); |
| if ( pDlg.get() ) |
| { |
| SfxItemPool& rItemPool = pDrawViewWrapper->GetModel()->GetItemPool(); |
| SfxItemSet aSet( rItemPool, rItemPool.GetFirstWhich(), rItemPool.GetLastWhich() ); |
| // const SvxColorTableItem* pColorItem = static_cast< const SvxColorTableItem* >( aSet.GetItem( SID_COLOR_TABLE ) ); |
| |
| if ( pDlg->Execute() == RET_OK ) |
| { |
| const SfxItemSet* pOutAttr = pDlg->GetOutputItemSet(); |
| if ( bHasMarked ) |
| { |
| pDrawViewWrapper->SetAttrToMarked( *pOutAttr, sal_False ); |
| } |
| else |
| { |
| pDrawViewWrapper->SetDefaultAttr( *pOutAttr, sal_False ); |
| } |
| } |
| } |
| } |
| } |
| } |
| } |
| |
| void ShapeController::executeDispatch_TextAttributes() |
| { |
| ::vos::OGuard aGuard( Application::GetSolarMutex() ); |
| if ( m_pChartController ) |
| { |
| Window* pParent = dynamic_cast< Window* >( m_pChartController->m_pChartWindow ); |
| DrawViewWrapper* pDrawViewWrapper = m_pChartController->GetDrawViewWrapper(); |
| if ( pParent && pDrawViewWrapper ) |
| { |
| SfxItemSet aAttr( pDrawViewWrapper->GetDefaultAttr() ); |
| sal_Bool bHasMarked = pDrawViewWrapper->AreObjectsMarked(); |
| if ( bHasMarked ) |
| { |
| pDrawViewWrapper->MergeAttrFromMarked( aAttr, sal_False ); |
| } |
| SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create(); |
| if ( pFact ) |
| { |
| ::boost::scoped_ptr< SfxAbstractTabDialog > pDlg( |
| pFact->CreateTextTabDialog( pParent, &aAttr, pDrawViewWrapper ) ); |
| if ( pDlg.get() && ( pDlg->Execute() == RET_OK ) ) |
| { |
| const SfxItemSet* pOutAttr = pDlg->GetOutputItemSet(); |
| if ( bHasMarked ) |
| { |
| pDrawViewWrapper->SetAttributes( *pOutAttr ); |
| } |
| else |
| { |
| pDrawViewWrapper->SetDefaultAttr( *pOutAttr, sal_False ); |
| } |
| } |
| } |
| } |
| } |
| } |
| |
| void ShapeController::executeDispatch_TransformDialog() |
| { |
| ::vos::OGuard aGuard( Application::GetSolarMutex() ); |
| if ( m_pChartController ) |
| { |
| Window* pParent = dynamic_cast< Window* >( m_pChartController->m_pChartWindow ); |
| DrawViewWrapper* pDrawViewWrapper = m_pChartController->GetDrawViewWrapper(); |
| if ( pParent && pDrawViewWrapper ) |
| { |
| SdrObject* pSelectedObj = pDrawViewWrapper->getSelectedObject(); |
| if ( pSelectedObj && pSelectedObj->GetObjIdentifier() == OBJ_CAPTION ) |
| { |
| // item set for caption |
| SfxItemSet aAttr( pDrawViewWrapper->GetModel()->GetItemPool() ); |
| pDrawViewWrapper->GetAttributes( aAttr ); |
| // item set for position and size |
| SfxItemSet aGeoAttr( pDrawViewWrapper->GetGeoAttrFromMarked() ); |
| SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create(); |
| if ( pFact ) |
| { |
| ::boost::scoped_ptr< SfxAbstractTabDialog > pDlg( |
| pFact->CreateCaptionDialog( pParent, pDrawViewWrapper ) ); |
| if ( pDlg.get() ) |
| { |
| const sal_uInt16* pRange = pDlg->GetInputRanges( *aAttr.GetPool() ); |
| SfxItemSet aCombAttr( *aAttr.GetPool(), pRange ); |
| aCombAttr.Put( aAttr ); |
| aCombAttr.Put( aGeoAttr ); |
| pDlg->SetInputSet( &aCombAttr ); |
| if ( pDlg->Execute() == RET_OK ) |
| { |
| const SfxItemSet* pOutAttr = pDlg->GetOutputItemSet(); |
| pDrawViewWrapper->SetAttributes( *pOutAttr ); |
| pDrawViewWrapper->SetGeoAttrToMarked( *pOutAttr ); |
| } |
| } |
| } |
| } |
| else |
| { |
| SfxItemSet aGeoAttr( pDrawViewWrapper->GetGeoAttrFromMarked() ); |
| SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create(); |
| if ( pFact ) |
| { |
| ::boost::scoped_ptr< SfxAbstractTabDialog > pDlg( |
| pFact->CreateSvxTransformTabDialog( pParent, &aGeoAttr, pDrawViewWrapper ) ); |
| if ( pDlg.get() && ( pDlg->Execute() == RET_OK ) ) |
| { |
| const SfxItemSet* pOutAttr = pDlg->GetOutputItemSet(); |
| pDrawViewWrapper->SetGeoAttrToMarked( *pOutAttr ); |
| } |
| } |
| } |
| } |
| } |
| } |
| |
| void ShapeController::executeDispatch_ObjectTitleDescription() |
| { |
| ::vos::OGuard aGuard( Application::GetSolarMutex() ); |
| if ( m_pChartController ) |
| { |
| DrawViewWrapper* pDrawViewWrapper = m_pChartController->GetDrawViewWrapper(); |
| if ( pDrawViewWrapper && pDrawViewWrapper->GetMarkedObjectCount() == 1 ) |
| { |
| SdrObject* pSelectedObj = pDrawViewWrapper->getSelectedObject(); |
| if ( pSelectedObj ) |
| { |
| String aTitle( pSelectedObj->GetTitle() ); |
| String aDescription( pSelectedObj->GetDescription() ); |
| SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create(); |
| if ( pFact ) |
| { |
| ::boost::scoped_ptr< AbstractSvxObjectTitleDescDialog > pDlg( |
| pFact->CreateSvxObjectTitleDescDialog( NULL, aTitle, aDescription ) ); |
| if ( pDlg.get() && ( pDlg->Execute() == RET_OK ) ) |
| { |
| pDlg->GetTitle( aTitle ); |
| pDlg->GetDescription( aDescription ); |
| pSelectedObj->SetTitle( aTitle ); |
| pSelectedObj->SetDescription( aDescription ); |
| } |
| } |
| } |
| } |
| } |
| } |
| |
| void ShapeController::executeDispatch_RenameObject() |
| { |
| ::vos::OGuard aGuard( Application::GetSolarMutex() ); |
| if ( m_pChartController ) |
| { |
| DrawViewWrapper* pDrawViewWrapper = m_pChartController->GetDrawViewWrapper(); |
| if ( pDrawViewWrapper && pDrawViewWrapper->GetMarkedObjectCount() == 1 ) |
| { |
| SdrObject* pSelectedObj = pDrawViewWrapper->getSelectedObject(); |
| if ( pSelectedObj ) |
| { |
| String aName( pSelectedObj->GetName() ); |
| SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create(); |
| if ( pFact ) |
| { |
| ::boost::scoped_ptr< AbstractSvxObjectNameDialog > pDlg( |
| pFact->CreateSvxObjectNameDialog( NULL, aName ) ); |
| pDlg->SetCheckNameHdl( LINK( this, ShapeController, CheckNameHdl ) ); |
| if ( pDlg.get() && ( pDlg->Execute() == RET_OK ) ) |
| { |
| pDlg->GetName( aName ); |
| if ( aName != pSelectedObj->GetName() ) |
| { |
| pSelectedObj->SetName( aName ); |
| } |
| } |
| } |
| } |
| } |
| } |
| } |
| |
| void ShapeController::executeDispatch_ChangeZOrder( sal_uInt16 nId ) |
| { |
| ::vos::OGuard aGuard( Application::GetSolarMutex() ); |
| DrawViewWrapper* pDrawViewWrapper = ( m_pChartController ? m_pChartController->GetDrawViewWrapper() : NULL ); |
| if ( pDrawViewWrapper ) |
| { |
| switch ( nId ) |
| { |
| case COMMAND_ID_BRING_TO_FRONT: |
| { |
| if ( isForwardPossible() ) |
| { |
| pDrawViewWrapper->PutMarkedToTop(); |
| } |
| } |
| break; |
| case COMMAND_ID_FORWARD: |
| { |
| if ( isForwardPossible() ) |
| { |
| pDrawViewWrapper->MovMarkedToTop(); |
| } |
| } |
| break; |
| case COMMAND_ID_BACKWARD: |
| { |
| if ( isBackwardPossible() ) |
| { |
| pDrawViewWrapper->MovMarkedToBtm(); |
| } |
| } |
| break; |
| case COMMAND_ID_SEND_TO_BACK: |
| { |
| if ( isBackwardPossible() ) |
| { |
| SdrObject* pFirstObj = getFirstAdditionalShape(); |
| pDrawViewWrapper->PutMarkedBehindObj( pFirstObj ); |
| } |
| } |
| break; |
| default: |
| { |
| } |
| break; |
| } |
| } |
| } |
| |
| void ShapeController::executeDispatch_FontDialog() |
| { |
| ::vos::OGuard aGuard( Application::GetSolarMutex() ); |
| if ( m_pChartController ) |
| { |
| Window* pParent = dynamic_cast< Window* >( m_pChartController->m_pChartWindow ); |
| DrawModelWrapper* pDrawModelWrapper = m_pChartController->GetDrawModelWrapper(); |
| DrawViewWrapper* pDrawViewWrapper = m_pChartController->GetDrawViewWrapper(); |
| if ( pParent && pDrawModelWrapper && pDrawViewWrapper ) |
| { |
| SfxItemSet aAttr( pDrawViewWrapper->GetModel()->GetItemPool() ); |
| pDrawViewWrapper->GetAttributes( aAttr ); |
| ViewElementListProvider aViewElementListProvider( pDrawModelWrapper ); |
| ::boost::scoped_ptr< ShapeFontDialog > pDlg( new ShapeFontDialog( pParent, &aAttr, &aViewElementListProvider ) ); |
| if ( pDlg.get() && ( pDlg->Execute() == RET_OK ) ) |
| { |
| const SfxItemSet* pOutAttr = pDlg->GetOutputItemSet(); |
| pDrawViewWrapper->SetAttributes( *pOutAttr ); |
| } |
| } |
| } |
| } |
| |
| void ShapeController::executeDispatch_ParagraphDialog() |
| { |
| ::vos::OGuard aGuard( Application::GetSolarMutex() ); |
| if ( m_pChartController ) |
| { |
| Window* pParent = dynamic_cast< Window* >( m_pChartController->m_pChartWindow ); |
| DrawViewWrapper* pDrawViewWrapper = m_pChartController->GetDrawViewWrapper(); |
| if ( pParent && pDrawViewWrapper ) |
| { |
| SfxItemPool& rPool = pDrawViewWrapper->GetModel()->GetItemPool(); |
| SfxItemSet aAttr( rPool ); |
| pDrawViewWrapper->GetAttributes( aAttr ); |
| |
| SfxItemSet aNewAttr( rPool, |
| EE_ITEMS_START, EE_ITEMS_END, |
| SID_ATTR_PARA_HYPHENZONE, SID_ATTR_PARA_HYPHENZONE, |
| SID_ATTR_PARA_PAGEBREAK, SID_ATTR_PARA_PAGEBREAK, |
| SID_ATTR_PARA_SPLIT, SID_ATTR_PARA_SPLIT, |
| SID_ATTR_PARA_WIDOWS, SID_ATTR_PARA_WIDOWS, |
| SID_ATTR_PARA_ORPHANS, SID_ATTR_PARA_ORPHANS, |
| 0 ); |
| aNewAttr.Put( aAttr ); |
| aNewAttr.Put( SvxHyphenZoneItem( sal_False, SID_ATTR_PARA_HYPHENZONE ) ); |
| aNewAttr.Put( SvxFmtBreakItem( SVX_BREAK_NONE, SID_ATTR_PARA_PAGEBREAK ) ); |
| aNewAttr.Put( SvxFmtSplitItem( sal_True, SID_ATTR_PARA_SPLIT) ); |
| aNewAttr.Put( SvxWidowsItem( 0, SID_ATTR_PARA_WIDOWS) ); |
| aNewAttr.Put( SvxOrphansItem( 0, SID_ATTR_PARA_ORPHANS) ); |
| |
| ::boost::scoped_ptr< ShapeParagraphDialog > pDlg( new ShapeParagraphDialog( pParent, &aNewAttr ) ); |
| if ( pDlg.get() && ( pDlg->Execute() == RET_OK ) ) |
| { |
| const SfxItemSet* pOutAttr = pDlg->GetOutputItemSet(); |
| pDrawViewWrapper->SetAttributes( *pOutAttr ); |
| } |
| } |
| } |
| } |
| |
| SdrObject* ShapeController::getFirstAdditionalShape() |
| { |
| SdrObject* pFirstObj = NULL; |
| |
| try |
| { |
| DrawModelWrapper* pDrawModelWrapper = ( m_pChartController ? m_pChartController->GetDrawModelWrapper() : NULL ); |
| if ( pDrawModelWrapper ) |
| { |
| Reference< drawing::XShape > xFirstShape; |
| Reference< drawing::XDrawPage > xDrawPage( pDrawModelWrapper->getMainDrawPage() ); |
| Reference< drawing::XShapes > xDrawPageShapes( xDrawPage, uno::UNO_QUERY_THROW ); |
| Reference< drawing::XShapes > xChartRoot( DrawModelWrapper::getChartRootShape( xDrawPage ) ); |
| sal_Int32 nCount = xDrawPageShapes->getCount(); |
| for ( sal_Int32 i = 0; i < nCount; ++i ) |
| { |
| Reference< drawing::XShape > xShape; |
| if ( xDrawPageShapes->getByIndex( i ) >>= xShape ) |
| { |
| if ( xShape.is() && xShape != xChartRoot ) |
| { |
| xFirstShape = xShape; |
| break; |
| } |
| } |
| } |
| if ( xFirstShape.is() ) |
| { |
| pFirstObj = DrawViewWrapper::getSdrObject( xFirstShape ); |
| } |
| } |
| } |
| catch ( uno::Exception& ex ) |
| { |
| ASSERT_EXCEPTION( ex ); |
| } |
| |
| return pFirstObj; |
| } |
| |
| SdrObject* ShapeController::getLastAdditionalShape() |
| { |
| SdrObject* pLastObj = NULL; |
| |
| try |
| { |
| DrawModelWrapper* pDrawModelWrapper = ( m_pChartController ? m_pChartController->GetDrawModelWrapper() : NULL ); |
| if ( pDrawModelWrapper ) |
| { |
| Reference< drawing::XShape > xLastShape; |
| Reference< drawing::XDrawPage > xDrawPage( pDrawModelWrapper->getMainDrawPage() ); |
| Reference< drawing::XShapes > xDrawPageShapes( xDrawPage, uno::UNO_QUERY_THROW ); |
| Reference< drawing::XShapes > xChartRoot( DrawModelWrapper::getChartRootShape( xDrawPage ) ); |
| sal_Int32 nCount = xDrawPageShapes->getCount(); |
| for ( sal_Int32 i = nCount - 1; i >= 0; --i ) |
| { |
| Reference< drawing::XShape > xShape; |
| if ( xDrawPageShapes->getByIndex( i ) >>= xShape ) |
| { |
| if ( xShape.is() && xShape != xChartRoot ) |
| { |
| xLastShape = xShape; |
| break; |
| } |
| } |
| } |
| if ( xLastShape.is() ) |
| { |
| pLastObj = DrawViewWrapper::getSdrObject( xLastShape ); |
| } |
| } |
| } |
| catch ( uno::Exception& ex ) |
| { |
| ASSERT_EXCEPTION( ex ); |
| } |
| |
| return pLastObj; |
| } |
| |
| bool ShapeController::isBackwardPossible() |
| { |
| if ( m_pChartController && m_pChartController->m_aSelection.isAdditionalShapeSelected() ) |
| { |
| ::vos::OGuard aGuard( Application::GetSolarMutex() ); |
| DrawViewWrapper* pDrawViewWrapper = m_pChartController->GetDrawViewWrapper(); |
| if ( pDrawViewWrapper ) |
| { |
| SdrObject* pSelectedObj = pDrawViewWrapper->getSelectedObject(); |
| SdrObject* pFirstObj = getFirstAdditionalShape(); |
| if ( pSelectedObj && pFirstObj && pSelectedObj != pFirstObj ) |
| { |
| return true; |
| } |
| } |
| } |
| return false; |
| } |
| |
| bool ShapeController::isForwardPossible() |
| { |
| if ( m_pChartController && m_pChartController->m_aSelection.isAdditionalShapeSelected() ) |
| { |
| ::vos::OGuard aGuard( Application::GetSolarMutex() ); |
| DrawViewWrapper* pDrawViewWrapper = m_pChartController->GetDrawViewWrapper(); |
| if ( pDrawViewWrapper ) |
| { |
| SdrObject* pSelectedObj = pDrawViewWrapper->getSelectedObject(); |
| SdrObject* pLastObj = getLastAdditionalShape(); |
| if ( pSelectedObj && pLastObj && pSelectedObj != pLastObj ) |
| { |
| return true; |
| } |
| } |
| } |
| return false; |
| } |
| |
| //............................................................................. |
| } // namespace chart |
| //............................................................................. |