LCOV - code coverage report
Current view: top level - chart2/source/controller/main - ShapeController.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 24 370 6.5 %
Date: 2012-08-25 Functions: 6 24 25.0 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 1 756 0.1 %

           Branch data     Line data    Source code
       1                 :            : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2                 :            : /*
       3                 :            :  * This file is part of the LibreOffice project.
       4                 :            :  *
       5                 :            :  * This Source Code Form is subject to the terms of the Mozilla Public
       6                 :            :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       7                 :            :  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
       8                 :            :  *
       9                 :            :  * This file incorporates work covered by the following license notice:
      10                 :            :  *
      11                 :            :  *   Licensed to the Apache Software Foundation (ASF) under one or more
      12                 :            :  *   contributor license agreements. See the NOTICE file distributed
      13                 :            :  *   with this work for additional information regarding copyright
      14                 :            :  *   ownership. The ASF licenses this file to you under the Apache
      15                 :            :  *   License, Version 2.0 (the "License"); you may not use this file
      16                 :            :  *   except in compliance with the License. You may obtain a copy of
      17                 :            :  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
      18                 :            :  */
      19                 :            : 
      20                 :            : 
      21                 :            : #include "ShapeController.hxx"
      22                 :            : #include "ShapeController.hrc"
      23                 :            : #include "ChartController.hxx"
      24                 :            : #include "ChartWindow.hxx"
      25                 :            : #include "ViewElementListProvider.hxx"
      26                 :            : #include "dlg_ShapeFont.hxx"
      27                 :            : #include "dlg_ShapeParagraph.hxx"
      28                 :            : #include "chartview/DrawModelWrapper.hxx"
      29                 :            : #include "macros.hxx"
      30                 :            : 
      31                 :            : #include <com/sun/star/frame/XStorable.hpp>
      32                 :            : 
      33                 :            : #include <osl/mutex.hxx>
      34                 :            : #include <vcl/msgbox.hxx>
      35                 :            : #include <vcl/svapp.hxx>
      36                 :            : #include <editeng/brkitem.hxx>
      37                 :            : #include <svx/dialogs.hrc>
      38                 :            : #include <svx/drawitem.hxx>
      39                 :            : #include <editeng/eeitem.hxx>
      40                 :            : #include <editeng/hyznitem.hxx>
      41                 :            : #include <editeng/orphitem.hxx>
      42                 :            : #include <editeng/spltitem.hxx>
      43                 :            : #include <svx/svxdlg.hxx>
      44                 :            : #include <editeng/widwitem.hxx>
      45                 :            : 
      46                 :            : #include <boost/scoped_ptr.hpp>
      47                 :            : 
      48                 :            : using namespace ::com::sun::star;
      49                 :            : using namespace ::com::sun::star::frame;
      50                 :            : 
      51                 :            : using ::com::sun::star::uno::Reference;
      52                 :            : using ::com::sun::star::uno::Sequence;
      53                 :            : 
      54                 :            : //.............................................................................
      55                 :            : namespace chart
      56                 :            : {
      57                 :            : //.............................................................................
      58                 :            : 
      59                 :         34 : ShapeController::ShapeController( const Reference< uno::XComponentContext >& rxContext,
      60                 :            :         ChartController* pController )
      61                 :            :     :FeatureCommandDispatchBase( rxContext )
      62                 :         34 :     ,m_pChartController( pController )
      63                 :            : {
      64                 :         34 : }
      65                 :            : 
      66                 :         34 : ShapeController::~ShapeController()
      67                 :            : {
      68         [ -  + ]:         68 : }
      69                 :            : 
      70                 :         34 : void ShapeController::initialize()
      71                 :            : {
      72                 :         34 :     FeatureCommandDispatchBase::initialize();
      73                 :         34 : }
      74                 :            : 
      75                 :            : // WeakComponentImplHelperBase
      76                 :         34 : void ShapeController::disposing()
      77                 :            : {
      78                 :         34 : }
      79                 :            : 
      80                 :            : // XEventListener
      81                 :          0 : void ShapeController::disposing( const lang::EventObject& /* Source */ )
      82                 :            :     throw (uno::RuntimeException)
      83                 :            : {
      84                 :          0 : }
      85                 :            : 
      86                 :          0 : FeatureState ShapeController::getState( const ::rtl::OUString& rCommand )
      87                 :            : {
      88                 :          0 :     FeatureState aReturn;
      89                 :          0 :     aReturn.bEnabled = false;
      90         [ #  # ]:          0 :     aReturn.aState <<= false;
      91                 :            : 
      92                 :          0 :     bool bWritable = false;
      93         [ #  # ]:          0 :     if ( m_pChartController )
      94                 :            :     {
      95 [ #  # ][ #  # ]:          0 :         Reference< frame::XStorable > xStorable( m_pChartController->getModel(), uno::UNO_QUERY );
      96         [ #  # ]:          0 :         if ( xStorable.is() )
      97                 :            :         {
      98 [ #  # ][ #  # ]:          0 :             bWritable = !xStorable->isReadonly();
      99                 :          0 :         }
     100                 :            :     }
     101                 :            : 
     102         [ #  # ]:          0 :     SupportedFeatures::const_iterator aIter = m_aSupportedFeatures.find( rCommand );
     103         [ #  # ]:          0 :     if ( aIter != m_aSupportedFeatures.end() )
     104                 :            :     {
     105                 :          0 :         sal_uInt16 nFeatureId = aIter->second.nFeatureId;
     106   [ #  #  #  #  :          0 :         switch ( nFeatureId )
                      # ]
     107                 :            :         {
     108                 :            :             case COMMAND_ID_FORMAT_LINE:
     109                 :            :             case COMMAND_ID_FORMAT_AREA:
     110                 :            :             case COMMAND_ID_TEXT_ATTRIBUTES:
     111                 :            :             case COMMAND_ID_TRANSFORM_DIALOG:
     112                 :            :             case COMMAND_ID_OBJECT_TITLE_DESCRIPTION:
     113                 :            :             case COMMAND_ID_RENAME_OBJECT:
     114                 :            :                 {
     115                 :          0 :                     aReturn.bEnabled = bWritable;
     116         [ #  # ]:          0 :                     aReturn.aState <<= false;
     117                 :            :                 }
     118                 :          0 :                 break;
     119                 :            :             case COMMAND_ID_BRING_TO_FRONT:
     120                 :            :             case COMMAND_ID_FORWARD:
     121                 :            :                 {
     122 [ #  # ][ #  # ]:          0 :                     aReturn.bEnabled = ( bWritable && isForwardPossible() );
                 [ #  # ]
     123         [ #  # ]:          0 :                     aReturn.aState <<= false;
     124                 :            :                 }
     125                 :          0 :                 break;
     126                 :            :             case COMMAND_ID_BACKWARD:
     127                 :            :             case COMMAND_ID_SEND_TO_BACK:
     128                 :            :                 {
     129                 :            : 
     130 [ #  # ][ #  # ]:          0 :                     aReturn.bEnabled = ( bWritable && isBackwardPossible() );
                 [ #  # ]
     131         [ #  # ]:          0 :                     aReturn.aState <<= false;
     132                 :            :                 }
     133                 :          0 :                 break;
     134                 :            :             case COMMAND_ID_FONT_DIALOG:
     135                 :            :             case COMMAND_ID_PARAGRAPH_DIALOG:
     136                 :            :                 {
     137                 :          0 :                     aReturn.bEnabled = bWritable;
     138         [ #  # ]:          0 :                     aReturn.aState <<= false;
     139                 :            :                 }
     140                 :          0 :                 break;
     141                 :            :             default:
     142                 :            :                 {
     143                 :          0 :                     aReturn.bEnabled = false;
     144         [ #  # ]:          0 :                     aReturn.aState <<= false;
     145                 :            :                 }
     146                 :          0 :                 break;
     147                 :            :         }
     148                 :            :     }
     149                 :            : 
     150                 :          0 :     return aReturn;
     151                 :            : }
     152                 :            : 
     153                 :          0 : void ShapeController::execute( const ::rtl::OUString& rCommand, const Sequence< beans::PropertyValue>& rArgs )
     154                 :            : {
     155                 :            :     (void)rArgs;
     156                 :            : 
     157         [ #  # ]:          0 :     SupportedFeatures::const_iterator aIter = m_aSupportedFeatures.find( rCommand );
     158         [ #  # ]:          0 :     if ( aIter != m_aSupportedFeatures.end() )
     159                 :            :     {
     160                 :          0 :         sal_uInt16 nFeatureId = aIter->second.nFeatureId;
     161   [ #  #  #  #  :          0 :         switch ( nFeatureId )
          #  #  #  #  #  
                      # ]
     162                 :            :         {
     163                 :            :             case COMMAND_ID_FORMAT_LINE:
     164                 :            :                 {
     165         [ #  # ]:          0 :                     executeDispatch_FormatLine();
     166                 :            :                 }
     167                 :          0 :                 break;
     168                 :            :             case COMMAND_ID_FORMAT_AREA:
     169                 :            :                 {
     170         [ #  # ]:          0 :                     executeDispatch_FormatArea();
     171                 :            :                 }
     172                 :          0 :                 break;
     173                 :            :             case COMMAND_ID_TEXT_ATTRIBUTES:
     174                 :            :                 {
     175         [ #  # ]:          0 :                     executeDispatch_TextAttributes();
     176                 :            :                 }
     177                 :          0 :                 break;
     178                 :            :             case COMMAND_ID_TRANSFORM_DIALOG:
     179                 :            :                 {
     180         [ #  # ]:          0 :                     executeDispatch_TransformDialog();
     181                 :            :                 }
     182                 :          0 :                 break;
     183                 :            :             case COMMAND_ID_OBJECT_TITLE_DESCRIPTION:
     184                 :            :                 {
     185         [ #  # ]:          0 :                     executeDispatch_ObjectTitleDescription();
     186                 :            :                 }
     187                 :          0 :                 break;
     188                 :            :             case COMMAND_ID_RENAME_OBJECT:
     189                 :            :                 {
     190         [ #  # ]:          0 :                     executeDispatch_RenameObject();
     191                 :            :                 }
     192                 :          0 :                 break;
     193                 :            :             case COMMAND_ID_BRING_TO_FRONT:
     194                 :            :             case COMMAND_ID_FORWARD:
     195                 :            :             case COMMAND_ID_BACKWARD:
     196                 :            :             case COMMAND_ID_SEND_TO_BACK:
     197                 :            :                 {
     198         [ #  # ]:          0 :                     executeDispatch_ChangeZOrder( nFeatureId );
     199                 :            :                 }
     200                 :          0 :                 break;
     201                 :            :             case COMMAND_ID_FONT_DIALOG:
     202                 :            :                 {
     203         [ #  # ]:          0 :                     executeDispatch_FontDialog();
     204                 :            :                 }
     205                 :          0 :                 break;
     206                 :            :             case COMMAND_ID_PARAGRAPH_DIALOG:
     207                 :            :                 {
     208         [ #  # ]:          0 :                     executeDispatch_ParagraphDialog();
     209                 :            :                 }
     210                 :          0 :                 break;
     211                 :            :             default:
     212                 :            :                 {
     213                 :            :                 }
     214                 :          0 :                 break;
     215                 :            :         }
     216                 :            :     }
     217                 :          0 : }
     218                 :            : 
     219                 :         34 : void ShapeController::describeSupportedFeatures()
     220                 :            : {
     221                 :         34 :     implDescribeSupportedFeature( ".uno:FormatLine",                COMMAND_ID_FORMAT_LINE,                 CommandGroup::FORMAT );
     222                 :         34 :     implDescribeSupportedFeature( ".uno:FormatArea",                COMMAND_ID_FORMAT_AREA,                 CommandGroup::FORMAT );
     223                 :         34 :     implDescribeSupportedFeature( ".uno:TextAttributes",            COMMAND_ID_TEXT_ATTRIBUTES,             CommandGroup::FORMAT );
     224                 :         34 :     implDescribeSupportedFeature( ".uno:TransformDialog",           COMMAND_ID_TRANSFORM_DIALOG,            CommandGroup::FORMAT );
     225                 :         34 :     implDescribeSupportedFeature( ".uno:ObjectTitleDescription",    COMMAND_ID_OBJECT_TITLE_DESCRIPTION,    CommandGroup::FORMAT );
     226                 :         34 :     implDescribeSupportedFeature( ".uno:RenameObject",              COMMAND_ID_RENAME_OBJECT,               CommandGroup::FORMAT );
     227                 :         34 :     implDescribeSupportedFeature( ".uno:BringToFront",              COMMAND_ID_BRING_TO_FRONT,              CommandGroup::FORMAT );
     228                 :         34 :     implDescribeSupportedFeature( ".uno:Forward",                   COMMAND_ID_FORWARD,                     CommandGroup::FORMAT );
     229                 :         34 :     implDescribeSupportedFeature( ".uno:Backward",                  COMMAND_ID_BACKWARD,                    CommandGroup::FORMAT );
     230                 :         34 :     implDescribeSupportedFeature( ".uno:SendToBack",                COMMAND_ID_SEND_TO_BACK,                CommandGroup::FORMAT );
     231                 :         34 :     implDescribeSupportedFeature( ".uno:FontDialog",                COMMAND_ID_FONT_DIALOG,                 CommandGroup::EDIT );
     232                 :         34 :     implDescribeSupportedFeature( ".uno:ParagraphDialog",           COMMAND_ID_PARAGRAPH_DIALOG,            CommandGroup::EDIT );
     233                 :         34 : }
     234                 :            : 
     235                 :          0 : IMPL_LINK( ShapeController, CheckNameHdl, AbstractSvxNameDialog*, pDialog )
     236                 :            : {
     237         [ #  # ]:          0 :     String aName;
     238         [ #  # ]:          0 :     if ( pDialog )
     239                 :            :     {
     240         [ #  # ]:          0 :         pDialog->GetName( aName );
     241                 :            :     }
     242         [ #  # ]:          0 :     if ( aName.Len() )
     243                 :            :     {
     244 [ #  # ][ #  # ]:          0 :         DrawViewWrapper* pDrawViewWrapper = ( m_pChartController ? m_pChartController->GetDrawViewWrapper() : NULL );
     245 [ #  # ][ #  # ]:          0 :         if ( pDrawViewWrapper && pDrawViewWrapper->getNamedSdrObject( aName ) )
         [ #  # ][ #  # ]
                 [ #  # ]
           [ #  #  #  # ]
     246                 :            :         {
     247                 :          0 :             return 0;
     248                 :            :         }
     249                 :            :     }
     250         [ #  # ]:          0 :     return 1;
     251                 :            : }
     252                 :            : 
     253                 :          0 : void ShapeController::executeDispatch_FormatLine()
     254                 :            : {
     255         [ #  # ]:          0 :     SolarMutexGuard aGuard;
     256         [ #  # ]:          0 :     if ( m_pChartController )
     257                 :            :     {
     258                 :          0 :         Window* pParent = dynamic_cast< Window* >( m_pChartController->m_pChartWindow );
     259         [ #  # ]:          0 :         DrawModelWrapper* pDrawModelWrapper = m_pChartController->GetDrawModelWrapper();
     260         [ #  # ]:          0 :         DrawViewWrapper* pDrawViewWrapper = m_pChartController->GetDrawViewWrapper();
     261 [ #  # ][ #  # ]:          0 :         if ( pParent && pDrawModelWrapper && pDrawViewWrapper )
                 [ #  # ]
     262                 :            :         {
     263         [ #  # ]:          0 :             SdrObject* pSelectedObj = pDrawViewWrapper->getSelectedObject();
     264         [ #  # ]:          0 :             SfxItemSet aAttr( pDrawViewWrapper->GetDefaultAttr() );
     265                 :          0 :             sal_Bool bHasMarked = pDrawViewWrapper->AreObjectsMarked();
     266         [ #  # ]:          0 :             if ( bHasMarked )
     267                 :            :             {
     268         [ #  # ]:          0 :                 pDrawViewWrapper->MergeAttrFromMarked( aAttr, sal_False );
     269                 :            :             }
     270         [ #  # ]:          0 :             SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
     271         [ #  # ]:          0 :             if ( pFact )
     272                 :            :             {
     273                 :            :                 ::boost::scoped_ptr< SfxAbstractTabDialog > pDlg(
     274         [ #  # ]:          0 :                     pFact->CreateSvxLineTabDialog( pParent, &aAttr, &pDrawModelWrapper->getSdrModel(),
     275         [ #  # ]:          0 :                         pSelectedObj, bHasMarked ) );
     276 [ #  # ][ #  # ]:          0 :                 if ( pDlg.get() && ( pDlg->Execute() == RET_OK ) )
         [ #  # ][ #  # ]
     277                 :            :                 {
     278         [ #  # ]:          0 :                     const SfxItemSet* pOutAttr = pDlg->GetOutputItemSet();
     279         [ #  # ]:          0 :                     if ( bHasMarked )
     280                 :            :                     {
     281         [ #  # ]:          0 :                         pDrawViewWrapper->SetAttrToMarked( *pOutAttr, sal_False );
     282                 :            :                     }
     283                 :            :                     else
     284                 :            :                     {
     285         [ #  # ]:          0 :                         pDrawViewWrapper->SetDefaultAttr( *pOutAttr, sal_False );
     286                 :            :                     }
     287         [ #  # ]:          0 :                 }
     288         [ #  # ]:          0 :             }
     289                 :            :         }
     290         [ #  # ]:          0 :     }
     291                 :          0 : }
     292                 :            : 
     293                 :          0 : void ShapeController::executeDispatch_FormatArea()
     294                 :            : {
     295         [ #  # ]:          0 :     SolarMutexGuard aGuard;
     296         [ #  # ]:          0 :     if ( m_pChartController )
     297                 :            :     {
     298                 :          0 :         Window* pParent = dynamic_cast< Window* >( m_pChartController->m_pChartWindow );
     299         [ #  # ]:          0 :         DrawModelWrapper* pDrawModelWrapper = m_pChartController->GetDrawModelWrapper();
     300         [ #  # ]:          0 :         DrawViewWrapper* pDrawViewWrapper = m_pChartController->GetDrawViewWrapper();
     301 [ #  # ][ #  # ]:          0 :         if ( pParent && pDrawModelWrapper && pDrawViewWrapper )
                 [ #  # ]
     302                 :            :         {
     303         [ #  # ]:          0 :             SfxItemSet aAttr( pDrawViewWrapper->GetDefaultAttr() );
     304                 :          0 :             sal_Bool bHasMarked = pDrawViewWrapper->AreObjectsMarked();
     305         [ #  # ]:          0 :             if ( bHasMarked )
     306                 :            :             {
     307         [ #  # ]:          0 :                 pDrawViewWrapper->MergeAttrFromMarked( aAttr, sal_False );
     308                 :            :             }
     309         [ #  # ]:          0 :             SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
     310         [ #  # ]:          0 :             if ( pFact )
     311                 :            :             {
     312                 :            :                 ::boost::scoped_ptr< AbstractSvxAreaTabDialog > pDlg(
     313         [ #  # ]:          0 :                     pFact->CreateSvxAreaTabDialog( pParent, &aAttr, &pDrawModelWrapper->getSdrModel(),
     314         [ #  # ]:          0 :                         pDrawViewWrapper ) );
     315         [ #  # ]:          0 :                 if ( pDlg.get() )
     316                 :            :                 {
     317                 :          0 :                     SfxItemPool& rItemPool = pDrawViewWrapper->GetModel()->GetItemPool();
     318 [ #  # ][ #  # ]:          0 :                     SfxItemSet aSet( rItemPool, rItemPool.GetFirstWhich(), rItemPool.GetLastWhich() );
                 [ #  # ]
     319 [ #  # ][ #  # ]:          0 :                     if ( pDlg->Execute() == RET_OK )
     320                 :            :                     {
     321         [ #  # ]:          0 :                         const SfxItemSet* pOutAttr = pDlg->GetOutputItemSet();
     322         [ #  # ]:          0 :                         if ( bHasMarked )
     323                 :            :                         {
     324         [ #  # ]:          0 :                             pDrawViewWrapper->SetAttrToMarked( *pOutAttr, sal_False );
     325                 :            :                         }
     326                 :            :                         else
     327                 :            :                         {
     328         [ #  # ]:          0 :                             pDrawViewWrapper->SetDefaultAttr( *pOutAttr, sal_False );
     329                 :            :                         }
     330         [ #  # ]:          0 :                     }
     331         [ #  # ]:          0 :                 }
     332         [ #  # ]:          0 :             }
     333                 :            :         }
     334         [ #  # ]:          0 :     }
     335                 :          0 : }
     336                 :            : 
     337                 :          0 : void ShapeController::executeDispatch_TextAttributes()
     338                 :            : {
     339         [ #  # ]:          0 :     SolarMutexGuard aGuard;
     340         [ #  # ]:          0 :     if ( m_pChartController )
     341                 :            :     {
     342                 :          0 :         Window* pParent = dynamic_cast< Window* >( m_pChartController->m_pChartWindow );
     343         [ #  # ]:          0 :         DrawViewWrapper* pDrawViewWrapper = m_pChartController->GetDrawViewWrapper();
     344 [ #  # ][ #  # ]:          0 :         if ( pParent && pDrawViewWrapper )
     345                 :            :         {
     346         [ #  # ]:          0 :             SfxItemSet aAttr( pDrawViewWrapper->GetDefaultAttr() );
     347                 :          0 :             sal_Bool bHasMarked = pDrawViewWrapper->AreObjectsMarked();
     348         [ #  # ]:          0 :             if ( bHasMarked )
     349                 :            :             {
     350         [ #  # ]:          0 :                 pDrawViewWrapper->MergeAttrFromMarked( aAttr, sal_False );
     351                 :            :             }
     352         [ #  # ]:          0 :             SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
     353         [ #  # ]:          0 :             if ( pFact )
     354                 :            :             {
     355                 :            :                 ::boost::scoped_ptr< SfxAbstractTabDialog > pDlg(
     356         [ #  # ]:          0 :                     pFact->CreateTextTabDialog( pParent, &aAttr, pDrawViewWrapper ) );
     357 [ #  # ][ #  # ]:          0 :                 if ( pDlg.get() && ( pDlg->Execute() == RET_OK ) )
         [ #  # ][ #  # ]
     358                 :            :                 {
     359         [ #  # ]:          0 :                     const SfxItemSet* pOutAttr = pDlg->GetOutputItemSet();
     360         [ #  # ]:          0 :                     if ( bHasMarked )
     361                 :            :                     {
     362         [ #  # ]:          0 :                         pDrawViewWrapper->SetAttributes( *pOutAttr );
     363                 :            :                     }
     364                 :            :                     else
     365                 :            :                     {
     366         [ #  # ]:          0 :                         pDrawViewWrapper->SetDefaultAttr( *pOutAttr, sal_False );
     367                 :            :                     }
     368         [ #  # ]:          0 :                 }
     369         [ #  # ]:          0 :             }
     370                 :            :         }
     371         [ #  # ]:          0 :     }
     372                 :          0 : }
     373                 :            : 
     374                 :          0 : void ShapeController::executeDispatch_TransformDialog()
     375                 :            : {
     376         [ #  # ]:          0 :     SolarMutexGuard aGuard;
     377         [ #  # ]:          0 :     if ( m_pChartController )
     378                 :            :     {
     379                 :          0 :         Window* pParent = dynamic_cast< Window* >( m_pChartController->m_pChartWindow );
     380         [ #  # ]:          0 :         DrawViewWrapper* pDrawViewWrapper = m_pChartController->GetDrawViewWrapper();
     381 [ #  # ][ #  # ]:          0 :         if ( pParent && pDrawViewWrapper )
     382                 :            :         {
     383         [ #  # ]:          0 :             SdrObject* pSelectedObj = pDrawViewWrapper->getSelectedObject();
     384 [ #  # ][ #  # ]:          0 :             if ( pSelectedObj && pSelectedObj->GetObjIdentifier() == OBJ_CAPTION )
         [ #  # ][ #  # ]
     385                 :            :             {
     386                 :            :                 // item set for caption
     387         [ #  # ]:          0 :                 SfxItemSet aAttr( pDrawViewWrapper->GetModel()->GetItemPool() );
     388         [ #  # ]:          0 :                 pDrawViewWrapper->GetAttributes( aAttr );
     389                 :            :                 // item set for position and size
     390         [ #  # ]:          0 :                 SfxItemSet aGeoAttr( pDrawViewWrapper->GetGeoAttrFromMarked() );
     391         [ #  # ]:          0 :                 SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
     392         [ #  # ]:          0 :                 if ( pFact )
     393                 :            :                 {
     394                 :            :                     ::boost::scoped_ptr< SfxAbstractTabDialog > pDlg(
     395         [ #  # ]:          0 :                         pFact->CreateCaptionDialog( pParent, pDrawViewWrapper ) );
     396         [ #  # ]:          0 :                     if ( pDlg.get() )
     397                 :            :                     {
     398         [ #  # ]:          0 :                         const sal_uInt16* pRange = pDlg->GetInputRanges( *aAttr.GetPool() );
     399         [ #  # ]:          0 :                         SfxItemSet aCombAttr( *aAttr.GetPool(), pRange );
     400         [ #  # ]:          0 :                         aCombAttr.Put( aAttr );
     401         [ #  # ]:          0 :                         aCombAttr.Put( aGeoAttr );
     402         [ #  # ]:          0 :                         pDlg->SetInputSet( &aCombAttr );
     403 [ #  # ][ #  # ]:          0 :                         if ( pDlg->Execute() == RET_OK )
     404                 :            :                         {
     405         [ #  # ]:          0 :                             const SfxItemSet* pOutAttr = pDlg->GetOutputItemSet();
     406         [ #  # ]:          0 :                             pDrawViewWrapper->SetAttributes( *pOutAttr );
     407         [ #  # ]:          0 :                             pDrawViewWrapper->SetGeoAttrToMarked( *pOutAttr );
     408         [ #  # ]:          0 :                         }
     409         [ #  # ]:          0 :                     }
     410 [ #  # ][ #  # ]:          0 :                 }
     411                 :            :             }
     412                 :            :             else
     413                 :            :             {
     414         [ #  # ]:          0 :                 SfxItemSet aGeoAttr( pDrawViewWrapper->GetGeoAttrFromMarked() );
     415         [ #  # ]:          0 :                 SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
     416         [ #  # ]:          0 :                 if ( pFact )
     417                 :            :                 {
     418                 :            :                     ::boost::scoped_ptr< SfxAbstractTabDialog > pDlg(
     419         [ #  # ]:          0 :                         pFact->CreateSvxTransformTabDialog( pParent, &aGeoAttr, pDrawViewWrapper ) );
     420 [ #  # ][ #  # ]:          0 :                     if ( pDlg.get() && ( pDlg->Execute() == RET_OK ) )
         [ #  # ][ #  # ]
     421                 :            :                     {
     422         [ #  # ]:          0 :                         const SfxItemSet* pOutAttr = pDlg->GetOutputItemSet();
     423         [ #  # ]:          0 :                         pDrawViewWrapper->SetGeoAttrToMarked( *pOutAttr );
     424         [ #  # ]:          0 :                     }
     425         [ #  # ]:          0 :                 }
     426                 :            :             }
     427                 :            :         }
     428         [ #  # ]:          0 :     }
     429                 :          0 : }
     430                 :            : 
     431                 :          0 : void ShapeController::executeDispatch_ObjectTitleDescription()
     432                 :            : {
     433         [ #  # ]:          0 :     SolarMutexGuard aGuard;
     434         [ #  # ]:          0 :     if ( m_pChartController )
     435                 :            :     {
     436         [ #  # ]:          0 :         DrawViewWrapper* pDrawViewWrapper = m_pChartController->GetDrawViewWrapper();
     437 [ #  # ][ #  # ]:          0 :         if ( pDrawViewWrapper && pDrawViewWrapper->GetMarkedObjectCount() == 1 )
                 [ #  # ]
     438                 :            :         {
     439         [ #  # ]:          0 :             SdrObject* pSelectedObj = pDrawViewWrapper->getSelectedObject();
     440         [ #  # ]:          0 :             if ( pSelectedObj )
     441                 :            :             {
     442 [ #  # ][ #  # ]:          0 :                 String aTitle( pSelectedObj->GetTitle() );
     443 [ #  # ][ #  # ]:          0 :                 String aDescription( pSelectedObj->GetDescription() );
     444         [ #  # ]:          0 :                 SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
     445         [ #  # ]:          0 :                 if ( pFact )
     446                 :            :                 {
     447                 :            :                     ::boost::scoped_ptr< AbstractSvxObjectTitleDescDialog > pDlg(
     448         [ #  # ]:          0 :                         pFact->CreateSvxObjectTitleDescDialog( NULL, aTitle, aDescription ) );
     449 [ #  # ][ #  # ]:          0 :                     if ( pDlg.get() && ( pDlg->Execute() == RET_OK ) )
         [ #  # ][ #  # ]
     450                 :            :                     {
     451         [ #  # ]:          0 :                         pDlg->GetTitle( aTitle );
     452         [ #  # ]:          0 :                         pDlg->GetDescription( aDescription );
     453 [ #  # ][ #  # ]:          0 :                         pSelectedObj->SetTitle( aTitle );
     454 [ #  # ][ #  # ]:          0 :                         pSelectedObj->SetDescription( aDescription );
     455         [ #  # ]:          0 :                     }
     456 [ #  # ][ #  # ]:          0 :                 }
     457                 :            :             }
     458                 :            :         }
     459         [ #  # ]:          0 :     }
     460                 :          0 : }
     461                 :            : 
     462                 :          0 : void ShapeController::executeDispatch_RenameObject()
     463                 :            : {
     464         [ #  # ]:          0 :     SolarMutexGuard aGuard;
     465         [ #  # ]:          0 :     if ( m_pChartController )
     466                 :            :     {
     467         [ #  # ]:          0 :         DrawViewWrapper* pDrawViewWrapper = m_pChartController->GetDrawViewWrapper();
     468 [ #  # ][ #  # ]:          0 :         if ( pDrawViewWrapper && pDrawViewWrapper->GetMarkedObjectCount() == 1 )
                 [ #  # ]
     469                 :            :         {
     470         [ #  # ]:          0 :             SdrObject* pSelectedObj = pDrawViewWrapper->getSelectedObject();
     471         [ #  # ]:          0 :             if ( pSelectedObj )
     472                 :            :             {
     473         [ #  # ]:          0 :                 rtl::OUString aName = pSelectedObj->GetName();
     474         [ #  # ]:          0 :                 SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
     475         [ #  # ]:          0 :                 if ( pFact )
     476                 :            :                 {
     477                 :            :                     ::boost::scoped_ptr< AbstractSvxObjectNameDialog > pDlg(
     478 [ #  # ][ #  # ]:          0 :                         pFact->CreateSvxObjectNameDialog( NULL, aName ) );
                 [ #  # ]
     479 [ #  # ][ #  # ]:          0 :                     pDlg->SetCheckNameHdl( LINK( this, ShapeController, CheckNameHdl ) );
     480 [ #  # ][ #  # ]:          0 :                     if ( pDlg.get() && ( pDlg->Execute() == RET_OK ) )
         [ #  # ][ #  # ]
     481                 :            :                     {
     482         [ #  # ]:          0 :                         String aTmp;
     483         [ #  # ]:          0 :                         pDlg->GetName(aTmp);
     484         [ #  # ]:          0 :                         aName = aTmp;
     485 [ #  # ][ #  # ]:          0 :                         if (pSelectedObj->GetName().equals(aName))
     486                 :            :                         {
     487         [ #  # ]:          0 :                             pSelectedObj->SetName( aName );
     488         [ #  # ]:          0 :                         }
     489         [ #  # ]:          0 :                     }
     490                 :          0 :                 }
     491                 :            :             }
     492                 :            :         }
     493         [ #  # ]:          0 :     }
     494                 :          0 : }
     495                 :            : 
     496                 :          0 : void ShapeController::executeDispatch_ChangeZOrder( sal_uInt16 nId )
     497                 :            : {
     498         [ #  # ]:          0 :     SolarMutexGuard aGuard;
     499 [ #  # ][ #  # ]:          0 :     DrawViewWrapper* pDrawViewWrapper = ( m_pChartController ? m_pChartController->GetDrawViewWrapper() : NULL );
     500         [ #  # ]:          0 :     if ( pDrawViewWrapper )
     501                 :            :     {
     502   [ #  #  #  #  :          0 :         switch ( nId )
                      # ]
     503                 :            :         {
     504                 :            :             case COMMAND_ID_BRING_TO_FRONT:
     505                 :            :                 {
     506 [ #  # ][ #  # ]:          0 :                     if ( isForwardPossible() )
     507                 :            :                     {
     508         [ #  # ]:          0 :                         pDrawViewWrapper->PutMarkedToTop();
     509                 :            :                     }
     510                 :            :                 }
     511                 :          0 :                 break;
     512                 :            :             case COMMAND_ID_FORWARD:
     513                 :            :                 {
     514 [ #  # ][ #  # ]:          0 :                     if ( isForwardPossible() )
     515                 :            :                     {
     516         [ #  # ]:          0 :                         pDrawViewWrapper->MovMarkedToTop();
     517                 :            :                     }
     518                 :            :                 }
     519                 :          0 :                 break;
     520                 :            :             case COMMAND_ID_BACKWARD:
     521                 :            :                 {
     522 [ #  # ][ #  # ]:          0 :                     if ( isBackwardPossible() )
     523                 :            :                     {
     524         [ #  # ]:          0 :                         pDrawViewWrapper->MovMarkedToBtm();
     525                 :            :                     }
     526                 :            :                 }
     527                 :          0 :                 break;
     528                 :            :             case COMMAND_ID_SEND_TO_BACK:
     529                 :            :                 {
     530 [ #  # ][ #  # ]:          0 :                     if ( isBackwardPossible() )
     531                 :            :                     {
     532         [ #  # ]:          0 :                         SdrObject* pFirstObj = getFirstAdditionalShape();
     533         [ #  # ]:          0 :                         pDrawViewWrapper->PutMarkedBehindObj( pFirstObj );
     534                 :            :                     }
     535                 :            :                 }
     536                 :          0 :                 break;
     537                 :            :             default:
     538                 :            :                 {
     539                 :            :                 }
     540                 :          0 :                 break;
     541                 :            :         }
     542         [ #  # ]:          0 :     }
     543                 :          0 : }
     544                 :            : 
     545                 :          0 : void ShapeController::executeDispatch_FontDialog()
     546                 :            : {
     547         [ #  # ]:          0 :     SolarMutexGuard aGuard;
     548         [ #  # ]:          0 :     if ( m_pChartController )
     549                 :            :     {
     550                 :          0 :         Window* pParent = dynamic_cast< Window* >( m_pChartController->m_pChartWindow );
     551         [ #  # ]:          0 :         DrawModelWrapper* pDrawModelWrapper = m_pChartController->GetDrawModelWrapper();
     552         [ #  # ]:          0 :         DrawViewWrapper* pDrawViewWrapper = m_pChartController->GetDrawViewWrapper();
     553 [ #  # ][ #  # ]:          0 :         if ( pParent && pDrawModelWrapper && pDrawViewWrapper )
                 [ #  # ]
     554                 :            :         {
     555         [ #  # ]:          0 :             SfxItemSet aAttr( pDrawViewWrapper->GetModel()->GetItemPool() );
     556         [ #  # ]:          0 :             pDrawViewWrapper->GetAttributes( aAttr );
     557         [ #  # ]:          0 :             ViewElementListProvider aViewElementListProvider( pDrawModelWrapper );
     558 [ #  # ][ #  # ]:          0 :             ::boost::scoped_ptr< ShapeFontDialog > pDlg( new ShapeFontDialog( pParent, &aAttr, &aViewElementListProvider ) );
     559 [ #  # ][ #  # ]:          0 :             if ( pDlg.get() && ( pDlg->Execute() == RET_OK ) )
         [ #  # ][ #  # ]
     560                 :            :             {
     561                 :          0 :                 const SfxItemSet* pOutAttr = pDlg->GetOutputItemSet();
     562         [ #  # ]:          0 :                 pDrawViewWrapper->SetAttributes( *pOutAttr );
     563 [ #  # ][ #  # ]:          0 :             }
                 [ #  # ]
     564                 :            :         }
     565         [ #  # ]:          0 :     }
     566                 :          0 : }
     567                 :            : 
     568                 :          0 : void ShapeController::executeDispatch_ParagraphDialog()
     569                 :            : {
     570         [ #  # ]:          0 :     SolarMutexGuard aGuard;
     571         [ #  # ]:          0 :     if ( m_pChartController )
     572                 :            :     {
     573                 :          0 :         Window* pParent = dynamic_cast< Window* >( m_pChartController->m_pChartWindow );
     574         [ #  # ]:          0 :         DrawViewWrapper* pDrawViewWrapper = m_pChartController->GetDrawViewWrapper();
     575 [ #  # ][ #  # ]:          0 :         if ( pParent && pDrawViewWrapper )
     576                 :            :         {
     577                 :          0 :             SfxItemPool& rPool = pDrawViewWrapper->GetModel()->GetItemPool();
     578         [ #  # ]:          0 :             SfxItemSet aAttr( rPool );
     579         [ #  # ]:          0 :             pDrawViewWrapper->GetAttributes( aAttr );
     580                 :            : 
     581                 :            :             SfxItemSet aNewAttr( rPool,
     582                 :            :                                     EE_ITEMS_START, EE_ITEMS_END,
     583                 :            :                                     SID_ATTR_PARA_HYPHENZONE, SID_ATTR_PARA_HYPHENZONE,
     584                 :            :                                     SID_ATTR_PARA_PAGEBREAK, SID_ATTR_PARA_PAGEBREAK,
     585                 :            :                                     SID_ATTR_PARA_SPLIT, SID_ATTR_PARA_SPLIT,
     586                 :            :                                     SID_ATTR_PARA_WIDOWS, SID_ATTR_PARA_WIDOWS,
     587                 :            :                                     SID_ATTR_PARA_ORPHANS, SID_ATTR_PARA_ORPHANS,
     588         [ #  # ]:          0 :                                     0 );
     589         [ #  # ]:          0 :             aNewAttr.Put( aAttr );
     590 [ #  # ][ #  # ]:          0 :             aNewAttr.Put( SvxHyphenZoneItem( sal_False, SID_ATTR_PARA_HYPHENZONE ) );
                 [ #  # ]
     591 [ #  # ][ #  # ]:          0 :             aNewAttr.Put( SvxFmtBreakItem( SVX_BREAK_NONE, SID_ATTR_PARA_PAGEBREAK ) );
                 [ #  # ]
     592 [ #  # ][ #  # ]:          0 :             aNewAttr.Put( SvxFmtSplitItem( sal_True, SID_ATTR_PARA_SPLIT)  );
                 [ #  # ]
     593 [ #  # ][ #  # ]:          0 :             aNewAttr.Put( SvxWidowsItem( 0, SID_ATTR_PARA_WIDOWS) );
                 [ #  # ]
     594 [ #  # ][ #  # ]:          0 :             aNewAttr.Put( SvxOrphansItem( 0, SID_ATTR_PARA_ORPHANS) );
                 [ #  # ]
     595                 :            : 
     596 [ #  # ][ #  # ]:          0 :             ::boost::scoped_ptr< ShapeParagraphDialog > pDlg( new ShapeParagraphDialog( pParent, &aNewAttr ) );
     597 [ #  # ][ #  # ]:          0 :             if ( pDlg.get() && ( pDlg->Execute() == RET_OK ) )
         [ #  # ][ #  # ]
     598                 :            :             {
     599                 :          0 :                 const SfxItemSet* pOutAttr = pDlg->GetOutputItemSet();
     600         [ #  # ]:          0 :                 pDrawViewWrapper->SetAttributes( *pOutAttr );
     601 [ #  # ][ #  # ]:          0 :             }
                 [ #  # ]
     602                 :            :         }
     603         [ #  # ]:          0 :     }
     604                 :          0 : }
     605                 :            : 
     606                 :          0 : SdrObject* ShapeController::getFirstAdditionalShape()
     607                 :            : {
     608                 :          0 :     SdrObject* pFirstObj = NULL;
     609                 :            : 
     610                 :            :     try
     611                 :            :     {
     612 [ #  # ][ #  # ]:          0 :         DrawModelWrapper* pDrawModelWrapper = ( m_pChartController ? m_pChartController->GetDrawModelWrapper() : NULL );
     613         [ #  # ]:          0 :         if ( pDrawModelWrapper )
     614                 :            :         {
     615                 :          0 :             Reference< drawing::XShape > xFirstShape;
     616         [ #  # ]:          0 :             Reference< drawing::XDrawPage > xDrawPage( pDrawModelWrapper->getMainDrawPage() );
     617         [ #  # ]:          0 :             Reference< drawing::XShapes > xDrawPageShapes( xDrawPage, uno::UNO_QUERY_THROW );
     618         [ #  # ]:          0 :             Reference< drawing::XShapes > xChartRoot( DrawModelWrapper::getChartRootShape( xDrawPage ) );
     619 [ #  # ][ #  # ]:          0 :             sal_Int32 nCount = xDrawPageShapes->getCount();
     620         [ #  # ]:          0 :             for ( sal_Int32 i = 0; i < nCount; ++i )
     621                 :            :             {
     622                 :          0 :                 Reference< drawing::XShape > xShape;
     623 [ #  # ][ #  # ]:          0 :                 if ( xDrawPageShapes->getByIndex( i ) >>= xShape )
         [ #  # ][ #  # ]
     624                 :            :                 {
     625 [ #  # ][ #  # ]:          0 :                     if ( xShape.is() && xShape != xChartRoot )
         [ #  # ][ #  # ]
     626                 :            :                     {
     627         [ #  # ]:          0 :                         xFirstShape = xShape;
     628                 :            :                         break;
     629                 :            :                     }
     630                 :            :                 }
     631         [ #  # ]:          0 :             }
     632         [ #  # ]:          0 :             if ( xFirstShape.is() )
     633                 :            :             {
     634         [ #  # ]:          0 :                 pFirstObj = DrawViewWrapper::getSdrObject( xFirstShape );
     635         [ #  # ]:          0 :             }
     636                 :            :         }
     637                 :            :     }
     638                 :          0 :     catch ( const uno::Exception& ex )
     639                 :            :     {
     640                 :            :         ASSERT_EXCEPTION( ex );
     641                 :            :     }
     642                 :            : 
     643                 :          0 :     return pFirstObj;
     644                 :            : }
     645                 :            : 
     646                 :          0 : SdrObject* ShapeController::getLastAdditionalShape()
     647                 :            : {
     648                 :          0 :     SdrObject* pLastObj = NULL;
     649                 :            : 
     650                 :            :     try
     651                 :            :     {
     652 [ #  # ][ #  # ]:          0 :         DrawModelWrapper* pDrawModelWrapper = ( m_pChartController ? m_pChartController->GetDrawModelWrapper() : NULL );
     653         [ #  # ]:          0 :         if ( pDrawModelWrapper )
     654                 :            :         {
     655                 :          0 :             Reference< drawing::XShape > xLastShape;
     656         [ #  # ]:          0 :             Reference< drawing::XDrawPage > xDrawPage( pDrawModelWrapper->getMainDrawPage() );
     657         [ #  # ]:          0 :             Reference< drawing::XShapes > xDrawPageShapes( xDrawPage, uno::UNO_QUERY_THROW );
     658         [ #  # ]:          0 :             Reference< drawing::XShapes > xChartRoot( DrawModelWrapper::getChartRootShape( xDrawPage ) );
     659 [ #  # ][ #  # ]:          0 :             sal_Int32 nCount = xDrawPageShapes->getCount();
     660         [ #  # ]:          0 :             for ( sal_Int32 i = nCount - 1; i >= 0; --i )
     661                 :            :             {
     662                 :          0 :                 Reference< drawing::XShape > xShape;
     663 [ #  # ][ #  # ]:          0 :                 if ( xDrawPageShapes->getByIndex( i ) >>= xShape )
         [ #  # ][ #  # ]
     664                 :            :                 {
     665 [ #  # ][ #  # ]:          0 :                     if ( xShape.is() && xShape != xChartRoot )
         [ #  # ][ #  # ]
     666                 :            :                     {
     667         [ #  # ]:          0 :                         xLastShape = xShape;
     668                 :            :                         break;
     669                 :            :                     }
     670                 :            :                 }
     671         [ #  # ]:          0 :             }
     672         [ #  # ]:          0 :             if ( xLastShape.is() )
     673                 :            :             {
     674         [ #  # ]:          0 :                 pLastObj = DrawViewWrapper::getSdrObject( xLastShape );
     675         [ #  # ]:          0 :             }
     676                 :            :         }
     677                 :            :     }
     678                 :          0 :     catch ( const uno::Exception& ex )
     679                 :            :     {
     680                 :            :         ASSERT_EXCEPTION( ex );
     681                 :            :     }
     682                 :            : 
     683                 :          0 :     return pLastObj;
     684                 :            : }
     685                 :            : 
     686                 :          0 : bool ShapeController::isBackwardPossible()
     687                 :            : {
     688 [ #  # ][ #  # ]:          0 :     if ( m_pChartController && m_pChartController->m_aSelection.isAdditionalShapeSelected() )
                 [ #  # ]
     689                 :            :     {
     690         [ #  # ]:          0 :         SolarMutexGuard aGuard;
     691         [ #  # ]:          0 :         DrawViewWrapper* pDrawViewWrapper = m_pChartController->GetDrawViewWrapper();
     692         [ #  # ]:          0 :         if ( pDrawViewWrapper )
     693                 :            :         {
     694         [ #  # ]:          0 :             SdrObject* pSelectedObj = pDrawViewWrapper->getSelectedObject();
     695         [ #  # ]:          0 :             SdrObject* pFirstObj = getFirstAdditionalShape();
     696 [ #  # ][ #  # ]:          0 :             if ( pSelectedObj && pFirstObj && pSelectedObj != pFirstObj )
                 [ #  # ]
     697                 :            :             {
     698                 :          0 :                 return true;
     699                 :            :             }
     700 [ #  # ][ #  # ]:          0 :         }
     701                 :            :     }
     702                 :          0 :     return false;
     703                 :            : }
     704                 :            : 
     705                 :          0 : bool ShapeController::isForwardPossible()
     706                 :            : {
     707 [ #  # ][ #  # ]:          0 :     if ( m_pChartController && m_pChartController->m_aSelection.isAdditionalShapeSelected() )
                 [ #  # ]
     708                 :            :     {
     709         [ #  # ]:          0 :         SolarMutexGuard aGuard;
     710         [ #  # ]:          0 :         DrawViewWrapper* pDrawViewWrapper = m_pChartController->GetDrawViewWrapper();
     711         [ #  # ]:          0 :         if ( pDrawViewWrapper )
     712                 :            :         {
     713         [ #  # ]:          0 :             SdrObject* pSelectedObj = pDrawViewWrapper->getSelectedObject();
     714         [ #  # ]:          0 :             SdrObject* pLastObj = getLastAdditionalShape();
     715 [ #  # ][ #  # ]:          0 :             if ( pSelectedObj && pLastObj && pSelectedObj != pLastObj )
                 [ #  # ]
     716                 :            :             {
     717                 :          0 :                 return true;
     718                 :            :             }
     719 [ #  # ][ #  # ]:          0 :         }
     720                 :            :     }
     721                 :          0 :     return false;
     722                 :            : }
     723                 :            : 
     724                 :            : //.............................................................................
     725                 :            : } //  namespace chart
     726                 :            : //.............................................................................
     727                 :            : 
     728                 :            : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10