Tag: cws_dev300_rptchart02
User: oj      
Date: 2008-05-15 12:29:42+0000
Modified:
   dba/reportdesign/source/ui/dlg/Condition.cxx
   dba/reportdesign/source/ui/inc/DesignView.hxx
   dba/reportdesign/source/ui/inc/ReportController.hxx
   dba/reportdesign/source/ui/inc/ReportSection.hxx
   dba/reportdesign/source/ui/inc/ReportWindow.hxx
   dba/reportdesign/source/ui/inc/ScrollHelper.hxx
   dba/reportdesign/source/ui/inc/ViewsWindow.hxx
   dba/reportdesign/source/ui/report/DesignView.cxx
   dba/reportdesign/source/ui/report/ReportController.cxx
   dba/reportdesign/source/ui/report/ReportSection.cxx
   dba/reportdesign/source/ui/report/ReportWindow.cxx
   dba/reportdesign/source/ui/report/ScrollHelper.cxx
   dba/reportdesign/source/ui/report/ViewsWindow.cxx

Log:
 #i87135# allow to enable e.g. bold for controls as other checks

File Changes:

Directory: /dba/reportdesign/source/ui/dlg/
===========================================

File [changed]: Condition.cxx
Url: 
http://dba.openoffice.org/source/browse/dba/reportdesign/source/ui/dlg/Condition.cxx?r1=1.5&r2=1.5.2.1
Delta lines:  +6 -7
-------------------
--- Condition.cxx       2008-04-10 18:51:45+0000        1.5
+++ Condition.cxx       2008-05-15 12:29:37+0000        1.5.2.1
@@ -7,7 +7,7 @@
  * OpenOffice.org - a multi-platform office productivity suite
  *
  * $RCSfile: Condition.cxx,v $
- * $Revision: 1.5 $
+ * $Revision: 1.5.2.1 $
  *
  * This file is part of OpenOffice.org.
  *
@@ -211,6 +211,10 @@
     ,m_nLastKnownWindowWidth( -1 )
     ,m_bInDestruction( false )
 {
+    m_aMoveUp.SetModeImage( ModuleRes( IMG_MOVE_UP_HC ), 
BMP_COLOR_HIGHCONTRAST );
+    m_aMoveDown.SetModeImage( ModuleRes( IMG_MOVE_DOWN_HC ), 
BMP_COLOR_HIGHCONTRAST );
+
+    FreeResource();
     m_aActions.SetStyle(m_aActions.GetStyle()|WB_LINESPACING);
     m_aCondLHS.GrabFocus();
 
@@ -260,11 +264,6 @@
     m_pBtnUpdaterFontColor = new ::svx::ToolboxButtonColorUpdater(
                                             SID_ATTR_CHAR_COLOR2, 
SID_ATTR_CHAR_COLOR2, &m_aActions, TBX_UPDATER_MODE_CHAR_COLOR_NEW );
 
-
-    m_aMoveUp.SetModeImage( ModuleRes( IMG_MOVE_UP_HC ), 
BMP_COLOR_HIGHCONTRAST );
-    m_aMoveDown.SetModeImage( ModuleRes( IMG_MOVE_DOWN_HC ), 
BMP_COLOR_HIGHCONTRAST );
-
-    FreeResource();
     Show();
 
     impl_layoutAll();

Directory: /dba/reportdesign/source/ui/inc/
===========================================

File [changed]: DesignView.hxx
Url: 
http://dba.openoffice.org/source/browse/dba/reportdesign/source/ui/inc/DesignView.hxx?r1=1.4.22.2&r2=1.4.22.3
Delta lines:  +7 -2
-------------------
--- DesignView.hxx      2008-04-16 06:29:26+0000        1.4.22.2
+++ DesignView.hxx      2008-05-15 12:29:38+0000        1.4.22.3
@@ -7,7 +7,7 @@
  * OpenOffice.org - a multi-platform office productivity suite
  *
  * $RCSfile: DesignView.hxx,v $
- * $Revision: 1.4.22.2 $
+ * $Revision: 1.4.22.3 $
  *
  * This file is part of OpenOffice.org.
  *
@@ -274,6 +274,11 @@
         sal_Bool        isHandleEvent(sal_uInt16 _nId) const;
 
         sal_uInt32      getMarkedObjectCount() const;
+        
+        /** fills the vector with all selected control models
+            /param  _rSelection The vector will be filled and will not be 
cleared before.
+        */
+        void fillControlModelSelection(::std::vector< 
::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > >& 
_rSelection) const;
        };
 //==================================================================
 }      //rptui

File [changed]: ReportController.hxx
Url: 
http://dba.openoffice.org/source/browse/dba/reportdesign/source/ui/inc/ReportController.hxx?r1=1.7&r2=1.7.2.1
Delta lines:  +25 -8
--------------------
--- ReportController.hxx        2008-04-10 19:03:27+0000        1.7
+++ ReportController.hxx        2008-05-15 12:29:38+0000        1.7.2.1
@@ -7,7 +7,7 @@
  * OpenOffice.org - a multi-platform office productivity suite
  *
  * $RCSfile: ReportController.hxx,v $
- * $Revision: 1.7 $
+ * $Revision: 1.7.2.1 $
  *
  * This file is part of OpenOffice.org.
  *
@@ -34,21 +34,23 @@
 #include <dbaccess/singledoccontroller.hxx>
 #endif
 #include <cppuhelper/implbase2.hxx>
-#include <com/sun/star/beans/PropertyValue.hpp>
+#include <com/sun/star/uno/XComponentContext.hpp>
 #include <com/sun/star/uno/Sequence.hxx>
 #include <com/sun/star/sdbc/XConnection.hpp>
-#include <com/sun/star/report/XSection.hpp>
+#include <com/sun/star/sdbc/XRowSet.hpp>
+#include <com/sun/star/beans/PropertyValue.hpp>
 #include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/beans/XPropertyChangeListener.hpp>
 #include <com/sun/star/util/XNumberFormatter.hpp>
-#include <com/sun/star/uno/XComponentContext.hpp>
 #include <com/sun/star/io/XObjectOutputStream.hpp>
 #include <com/sun/star/io/XObjectInputStream.hpp>
 #include <com/sun/star/frame/XComponentLoader.hpp>
+#include <com/sun/star/frame/XFrame.hpp>
 #include <com/sun/star/report/XReportDefinition.hpp>
 #include <com/sun/star/report/XReportControlModel.hpp>
-#include <com/sun/star/beans/XPropertyChangeListener.hpp>
 #include <com/sun/star/report/XReportEngine.hpp>
-#include <com/sun/star/sdbc/XRowSet.hpp>
+#include <com/sun/star/report/XSection.hpp>
+
 #include <comphelper/uno3.hxx>
 #include <svtools/transfer.hxx>
 #include <svtools/lstner.hxx>
@@ -58,7 +60,7 @@
 #include "RptDef.hxx"
 #include <functional>
 #include <boost/shared_ptr.hpp>
-#include <com/sun/star/frame/XFrame.hpp>
+
 
 
 class TransferableHelper;
@@ -257,6 +259,21 @@
         */
         void createDefaultControl(const ::com::sun::star::uno::Sequence< 
::com::sun::star::beans::PropertyValue>& _aArgs);
 
+        /** fills the state for the feture request.
+            @param  _sProperty  the property which should be filled in the 
value 
+            @param  _rState     the state to fill
+        */
+        void impl_fillState_nothrow(const ::rtl::OUString& 
_sProperty,dbaui::FeatureState& _rState) const;
+        void impl_fillCustomShapeState_nothrow(const char* 
_pCustomShapeType,dbaui::FeatureState& _rState) const;
+
+        /** set the property at all selected controls.
+            @return <TRUE/> when the selection is not empty
+        */
+        bool impl_setPropertyAtControls_throw(const sal_Int32 _nUndoResId
+            ,const ::rtl::OUString& _sProperty
+            ,const ::com::sun::star::uno::Any& _aValue
+            ,const ::com::sun::star::uno::Sequence< 
::com::sun::star::beans::PropertyValue >& _aArgs);
+
                DECL_LINK( OnInvalidateClipboard, void* );
                DECL_LINK( OnClipboardChanged, void* );
         DECL_LINK( OnExecuteReport, void* );

File [changed]: ReportSection.hxx
Url: 
http://dba.openoffice.org/source/browse/dba/reportdesign/source/ui/inc/ReportSection.hxx?r1=1.4.92.3&r2=1.4.92.4
Delta lines:  +3 -3
-------------------
--- ReportSection.hxx   2008-04-16 06:29:33+0000        1.4.92.3
+++ ReportSection.hxx   2008-05-15 12:29:38+0000        1.4.92.4
@@ -7,7 +7,7 @@
  * OpenOffice.org - a multi-platform office productivity suite
  *
  * $RCSfile: ReportSection.hxx,v $
- * $Revision: 1.4.92.3 $
+ * $Revision: 1.4.92.4 $
  *
  * This file is part of OpenOffice.org.
  *
@@ -147,7 +147,7 @@
         /** fills the vector with all selected control models
             /param  _rSelection The vector will be filled and will not be 
cleared before.
         */
-        void fillControlModelSelection(::std::vector< 
::com::sun::star::uno::Reference< ::com::sun::star::report::XReportComponent > 
>& _rSelection) const;
+        void fillControlModelSelection(::std::vector< 
::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > >& 
_rSelection) const;
 
         /** creates a default object (custom shape)
         *

File [changed]: ReportWindow.hxx
Url: 
http://dba.openoffice.org/source/browse/dba/reportdesign/source/ui/inc/ReportWindow.hxx?r1=1.3.92.2&r2=1.3.92.3
Delta lines:  +7 -2
-------------------
--- ReportWindow.hxx    2008-04-16 06:29:37+0000        1.3.92.2
+++ ReportWindow.hxx    2008-05-15 12:29:38+0000        1.3.92.3
@@ -7,7 +7,7 @@
  * OpenOffice.org - a multi-platform office productivity suite
  *
  * $RCSfile: ReportWindow.hxx,v $
- * $Revision: 1.3.92.2 $
+ * $Revision: 1.3.92.3 $
  *
  * This file is part of OpenOffice.org.
  *
@@ -232,6 +232,11 @@
         void alignMarkedObjects(sal_Int32 _nControlModification, bool 
_bAlignAtSection, bool bBoundRects = false);
 
         sal_uInt32 getMarkedObjectCount() const;
+
+        /** fills the vector with all selected control models
+            /param  _rSelection The vector will be filled and will not be 
cleared before.
+        */
+        void fillControlModelSelection(::std::vector< 
::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > >& 
_rSelection) const;
        };
 //==================================================================
 }      //rptui

File [changed]: ScrollHelper.hxx
Url: 
http://dba.openoffice.org/source/browse/dba/reportdesign/source/ui/inc/ScrollHelper.hxx?r1=1.4.22.2&r2=1.4.22.3
Delta lines:  +6 -2
-------------------
--- ScrollHelper.hxx    2008-04-16 06:29:40+0000        1.4.22.2
+++ ScrollHelper.hxx    2008-05-15 12:29:38+0000        1.4.22.3
@@ -7,7 +7,7 @@
  * OpenOffice.org - a multi-platform office productivity suite
  *
  * $RCSfile: ScrollHelper.hxx,v $
- * $Revision: 1.4.22.2 $
+ * $Revision: 1.4.22.3 $
  *
  * This file is part of OpenOffice.org.
  *
@@ -216,6 +216,10 @@
 
         sal_uInt32 getMarkedObjectCount() const;
 
+        /** fills the vector with all selected control models
+            /param  _rSelection The vector will be filled and will not be 
cleared before.
+        */
+        void fillControlModelSelection(::std::vector< 
::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > >& 
_rSelection) const;
        };
 }
 #endif // RPTUI_SCROLLHELPER_HXX

File [changed]: ViewsWindow.hxx
Url: 
http://dba.openoffice.org/source/browse/dba/reportdesign/source/ui/inc/ViewsWindow.hxx?r1=1.5.22.2&r2=1.5.22.3
Delta lines:  +6 -2
-------------------
--- ViewsWindow.hxx     2008-04-16 06:29:47+0000        1.5.22.2
+++ ViewsWindow.hxx     2008-05-15 12:29:38+0000        1.5.22.3
@@ -7,7 +7,7 @@
  * OpenOffice.org - a multi-platform office productivity suite
  *
  * $RCSfile: ViewsWindow.hxx,v $
- * $Revision: 1.5.22.2 $
+ * $Revision: 1.5.22.3 $
  *
  * This file is part of OpenOffice.org.
  *
@@ -323,6 +323,10 @@
         // void MovAction2(const Point& rPnt,const OSectionView* _pSection);
 
         sal_uInt32 getMarkedObjectCount() const;
+        /** fills the vector with all selected control models
+            /param  _rSelection The vector will be filled and will not be 
cleared before.
+        */
+        void fillControlModelSelection(::std::vector< 
::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > >& 
_rSelection) const;
        };
 
//==============================================================================
 } // rptui

Directory: /dba/reportdesign/source/ui/report/
==============================================

File [changed]: DesignView.cxx
Url: 
http://dba.openoffice.org/source/browse/dba/reportdesign/source/ui/report/DesignView.cxx?r1=1.4.22.2&r2=1.4.22.3
Delta lines:  +18 -5
--------------------
--- DesignView.cxx      2008-04-16 06:30:20+0000        1.4.22.2
+++ DesignView.cxx      2008-05-15 12:29:39+0000        1.4.22.3
@@ -7,7 +7,7 @@
  * OpenOffice.org - a multi-platform office productivity suite
  *
  * $RCSfile: DesignView.cxx,v $
- * $Revision: 1.4.22.2 $
+ * $Revision: 1.4.22.3 $
  *
  * This file is part of OpenOffice.org.
  *
@@ -761,15 +761,28 @@
     ::boost::shared_ptr<OReportSection> pSection = getMarkedSection();
     if ( pSection )
     {
-        ::std::vector< uno::Reference< report::XReportComponent > > aSelection;
+        ::std::vector< uno::Reference< uno::XInterface > > aSelection;
         pSection->fillControlModelSelection(aSelection);
         if ( !aSelection.empty() )
-            aRet <<= uno::Sequence< uno::Reference< report::XReportComponent > 
>(&(*aSelection.begin()),aSelection.size());
-
+        {
+            ::std::vector< uno::Reference< uno::XInterface > >::iterator aIter 
= aSelection.begin();
+            uno::Sequence< uno::Reference< report::XReportComponent > > 
aSeq(aSelection.size());
+            for(sal_Int32 i = 0; i < aSeq.getLength(); ++i,++aIter)
+            {
+                aSeq[i].set(*aIter,uno::UNO_QUERY);
+            }
+            aRet <<= aSeq;
+        }
     }
     return aRet;
 }
 // 
-----------------------------------------------------------------------------
+void ODesignView::fillControlModelSelection(::std::vector< uno::Reference< 
uno::XInterface > >& _rSelection) const
+{
+    if ( m_pScrollWindow )
+        m_pScrollWindow->fillControlModelSelection(_rSelection);
+}
+// 
-----------------------------------------------------------------------------
 void ODesignView::setGridSnap(BOOL bOn)
 {
     if ( m_pScrollWindow )

File [changed]: ReportController.cxx
Url: 
http://dba.openoffice.org/source/browse/dba/reportdesign/source/ui/report/ReportController.cxx?r1=1.12.4.5&r2=1.12.4.6
Delta lines:  +262 -243
-----------------------
--- ReportController.cxx        2008-05-07 06:56:32+0000        1.12.4.5
+++ ReportController.cxx        2008-05-15 12:29:39+0000        1.12.4.6
@@ -7,7 +7,7 @@
  * OpenOffice.org - a multi-platform office productivity suite
  *
  * $RCSfile: ReportController.cxx,v $
- * $Revision: 1.12.4.5 $
+ * $Revision: 1.12.4.6 $
  *
  * This file is part of OpenOffice.org.
  *
@@ -187,10 +187,44 @@
                    return x.equals(y.Name);// ? true : false;
            }
     };
+
+    void lcl_setFontWPU_nothrow(const uno::Reference< 
report::XReportControlFormat>& _xReportControlFormat,const sal_Int32 _nId)
+    {
+        if ( _xReportControlFormat.is() )
+           {
+                   try
+                   {
+                           awt::FontDescriptor aFontDescriptor = 
_xReportControlFormat->getFontDescriptor();
+                switch(_nId)
+                {
+                    case SID_ATTR_CHAR_WEIGHT:
+                        aFontDescriptor.Weight = (awt::FontWeight::NORMAL + 
awt::FontWeight::BOLD) - aFontDescriptor.Weight;
+                        break;
+                    case SID_ATTR_CHAR_POSTURE:
+                        aFontDescriptor.Slant = 
static_cast<awt::FontSlant>(static_cast<sal_Int16>(awt::FontSlant_ITALIC) - 
static_cast<sal_Int16>(aFontDescriptor.Slant));
+                        break;
+                    case SID_ATTR_CHAR_UNDERLINE:
+                        aFontDescriptor.Underline = awt::FontUnderline::SINGLE 
- aFontDescriptor.Underline;
+                        break;
+                    default:
+                        OSL_ENSURE(0,"Illegal value in default!");
+                        break;
+                }
+
+                           
_xReportControlFormat->setFontDescriptor(aFontDescriptor);
+                   }
+                   catch(beans::UnknownPropertyException&)
+                   {
+                   }
+           } // if ( xReportControlFormat.is() )
+    }
 }
 
 // 
-----------------------------------------------------------------------------
-uno::Reference< report::XReportControlFormat> lcl_getReportControlFormat(const 
Sequence< PropertyValue >& aArgs,ODesignView* _pView,uno::Reference< 
awt::XWindow>& _xWindow)
+void lcl_getReportControlFormat(const Sequence< PropertyValue >& aArgs,
+                                 ODesignView* _pView,
+                                 uno::Reference< awt::XWindow>& _xWindow,
+                                 ::std::vector< uno::Reference< 
uno::XInterface > >& _rControlsFormats)
 {
        uno::Reference< report::XReportControlFormat> xReportControlFormat;
        if ( aArgs.getLength() )
@@ -200,10 +234,15 @@
                _xWindow = 
aMap.getUnpackedValueOrDefault(CURRENT_WINDOW,uno::Reference< awt::XWindow>());
        } // if ( aArgs.getLength() )
        if ( !xReportControlFormat.is() )
-               xReportControlFormat.set( 
_pView->getCurrentControlModel(),uno::UNO_QUERY);
+    {
+        _pView->fillControlModelSelection(_rControlsFormats);
+               //xReportControlFormat.set( 
_pView->getCurrentControlModel(),uno::UNO_QUERY);
+    } // if ( !xReportControlFormat.is() )
+    else
+        _rControlsFormats.push_back(xReportControlFormat);
+    
        if ( !_xWindow.is() )
                _xWindow = VCLUnoHelper::GetInterface(_pView);
-       return xReportControlFormat;
 }
 // 
-----------------------------------------------------------------------------
 ::rtl::OUString SAL_CALL OReportController::getImplementationName() throw( 
RuntimeException )
@@ -561,12 +600,7 @@
         case SID_DRAWTBX_CS_BASIC20:
         case SID_DRAWTBX_CS_BASIC21:
         case SID_DRAWTBX_CS_BASIC22:
-                       {
-                               aReturn.bEnabled = isEditable();
-                               rtl::OUString sShapeType = 
m_pMyOwnView->GetInsertObjString();
-                               aReturn.bChecked = m_pMyOwnView->GetInsertObj() 
== OBJ_CUSTOMSHAPE &&
-                                                                  
sShapeType.compareToAscii("diamond") == 0;
-                       }
+            impl_fillCustomShapeState_nothrow("diamond",aReturn);
                break;
         case SID_DRAWTBX_CS_SYMBOL:
                case SID_DRAWTBX_CS_SYMBOL1:
@@ -587,12 +621,7 @@
                case SID_DRAWTBX_CS_SYMBOL16:
                case SID_DRAWTBX_CS_SYMBOL17:
                case SID_DRAWTBX_CS_SYMBOL18:
-                       {
-                               aReturn.bEnabled = isEditable();
-                               rtl::OUString sShapeType = 
m_pMyOwnView->GetInsertObjString();
-                               aReturn.bChecked = m_pMyOwnView->GetInsertObj() 
== OBJ_CUSTOMSHAPE &&
-                                                                  
sShapeType.compareToAscii("smiley") == 0;
-                       }
+            impl_fillCustomShapeState_nothrow("smiley",aReturn);
             break;
         case SID_DRAWTBX_CS_ARROW:
                case SID_DRAWTBX_CS_ARROW1:
@@ -621,12 +650,7 @@
                case SID_DRAWTBX_CS_ARROW24:
                case SID_DRAWTBX_CS_ARROW25:
                case SID_DRAWTBX_CS_ARROW26:
-                       {
-                               aReturn.bEnabled = isEditable();
-                               rtl::OUString sShapeType = 
m_pMyOwnView->GetInsertObjString();
-                               aReturn.bChecked = m_pMyOwnView->GetInsertObj() 
== OBJ_CUSTOMSHAPE &&
-                                                                  
sShapeType.compareToAscii("left-right-arrow") == 0;
-                       }
+            impl_fillCustomShapeState_nothrow("left-right-arrow",aReturn);
             break;
         case SID_DRAWTBX_CS_STAR:
                case SID_DRAWTBX_CS_STAR1:
@@ -641,12 +665,7 @@
                case SID_DRAWTBX_CS_STAR10:
                case SID_DRAWTBX_CS_STAR11:
                case SID_DRAWTBX_CS_STAR12:
-                       {
-                               aReturn.bEnabled = isEditable();
-                               rtl::OUString sShapeType = 
m_pMyOwnView->GetInsertObjString();
-                               aReturn.bChecked = m_pMyOwnView->GetInsertObj() 
== OBJ_CUSTOMSHAPE &&
-                                                                  
sShapeType.compareToAscii("star5") == 0;
-                       }
+            impl_fillCustomShapeState_nothrow("star5",aReturn);
             break;
         case SID_DRAWTBX_CS_FLOWCHART:
                case SID_DRAWTBX_CS_FLOWCHART1:
@@ -677,12 +696,7 @@
                case SID_DRAWTBX_CS_FLOWCHART26:
                case SID_DRAWTBX_CS_FLOWCHART27:
                case SID_DRAWTBX_CS_FLOWCHART28:
-                       {
-                               aReturn.bEnabled = isEditable();
-                               rtl::OUString sShapeType = 
m_pMyOwnView->GetInsertObjString();
-                               aReturn.bChecked = m_pMyOwnView->GetInsertObj() 
== OBJ_CUSTOMSHAPE &&
-                                                                  
sShapeType.compareToAscii("flowchart-internal-storage") == 0;
-                       }
+            
impl_fillCustomShapeState_nothrow("flowchart-internal-storage",aReturn);
             break;
         case SID_DRAWTBX_CS_CALLOUT:
                case SID_DRAWTBX_CS_CALLOUT1:
@@ -692,12 +706,7 @@
                case SID_DRAWTBX_CS_CALLOUT5:
                case SID_DRAWTBX_CS_CALLOUT6:
                case SID_DRAWTBX_CS_CALLOUT7:
-                       {
-            aReturn.bEnabled = isEditable();
-                               rtl::OUString sShapeType = 
m_pMyOwnView->GetInsertObjString();
-                               aReturn.bChecked = m_pMyOwnView->GetInsertObj() 
== OBJ_CUSTOMSHAPE &&
-                                                                  
sShapeType.compareToAscii("round-rectangular-callout") == 0;
-                       }
+            
impl_fillCustomShapeState_nothrow("round-rectangular-callout",aReturn);
             break;
         case SID_RPT_SHOWREPORTEXPLORER:
             aReturn.bEnabled = m_xReportDefinition.is();
@@ -727,23 +736,11 @@
                        aReturn.bEnabled = isConnected() && isEditable();
                        break;
                case SID_EDITDOC:
-                       aReturn.bChecked = isEditable();
-                       break;
                case SID_PAGEDIALOG:
-                       aReturn.bEnabled = isEditable();
+                       aReturn.bChecked = isEditable();
                        break;
                case SID_BACKGROUND_COLOR:
-            aReturn.bEnabled = isEditable();
-                       {
-                uno::Reference< report::XReportComponent > 
xReportComponent(m_pMyOwnView->getCurrentControlModel());
-                               uno::Reference< report::XReportControlFormat> 
xReportControlFormat(xReportComponent,uno::UNO_QUERY);
-                               if ( xReportControlFormat.is() )
-                               {
-                    aReturn.bEnabled = 
xReportComponent->getPropertySetInfo()->hasPropertyByName(PROPERTY_CONTROLBACKGROUND);
-                    if ( aReturn.bEnabled )
-                                           aReturn.aValue <<= 
xReportControlFormat->getControlBackground();
-                               }
-                       }
+            impl_fillState_nothrow(PROPERTY_CONTROLBACKGROUND,aReturn);
                        break;
                case SID_ATTR_CHAR_COLOR_BACKGROUND:
             aReturn.bEnabled = isEditable();
@@ -753,7 +750,7 @@
                                        try
                                        {
                                                aReturn.aValue <<= 
xSection->getBackColor();
-                        uno::Reference< report::XReportControlModel> 
xControlModel(m_pMyOwnView->getCurrentControlModel(),uno::UNO_QUERY);
+                        const uno::Reference< report::XReportControlModel> 
xControlModel(m_pMyOwnView->getCurrentControlModel(),uno::UNO_QUERY);
                                                aReturn.bEnabled = 
!xControlModel.is();
                                        }
                                        catch(beans::UnknownPropertyException&)
@@ -770,78 +767,54 @@
                case SID_ATTR_CHAR_WEIGHT:
                case SID_ATTR_CHAR_POSTURE:
                case SID_ATTR_CHAR_UNDERLINE:
-                       aReturn.bEnabled = m_xReportDefinition.is() && 
isEditable() && m_pMyOwnView->getCurrentControlModel().is();
-                       aReturn.bChecked = 
isFormatCommandEnabled(_nId,uno::Reference< 
report::XReportControlFormat>(m_pMyOwnView->getCurrentControlModel(),uno::UNO_QUERY));
-                       break;
-               case SID_ATTR_CHAR_COLOR:
-               case SID_ATTR_CHAR_COLOR2:
-                       {
-                               uno::Reference< report::XReportControlFormat> 
xReportControlFormat(m_pMyOwnView->getCurrentControlModel(),uno::UNO_QUERY);
-                               aReturn.bEnabled = isEditable() && 
xReportControlFormat.is() && !uno::Reference< 
report::XFixedLine>(xReportControlFormat,uno::UNO_QUERY).is();
+                       impl_fillState_nothrow(PROPERTY_FONTDESCRIPTOR,aReturn);
                                if ( aReturn.bEnabled )
                 {
-                    try
-                    {
-                                           aReturn.aValue <<= 
xReportControlFormat->getCharColor();
-                    }
-                    catch(beans::UnknownPropertyException&)
+                awt::FontDescriptor aFontDescriptor;
+                aReturn.aValue >>= aFontDescriptor;
+                aReturn.aValue.clear();
+
+                           switch(_nId)
                     {
-                        aReturn.bEnabled = sal_False;
-                    }
-                }
+                                   case SID_ATTR_CHAR_WEIGHT:
+                                           aReturn.bChecked = 
awt::FontWeight::BOLD == aFontDescriptor.Weight;
+                                           break;
+                                   case SID_ATTR_CHAR_POSTURE:
+                                           aReturn.bChecked = 
awt::FontSlant_ITALIC == aFontDescriptor.Slant;
+                                           break;
+                                   case SID_ATTR_CHAR_UNDERLINE:
+                                           aReturn.bChecked = 
awt::FontUnderline::SINGLE == aFontDescriptor.Underline;
+                                           break;
+                                   default:
+                                           ;
+                               } // switch(_nCommand)
                        }
                        break;
+               case SID_ATTR_CHAR_COLOR:
+               case SID_ATTR_CHAR_COLOR2:
+            impl_fillState_nothrow(PROPERTY_CHARCOLOR,aReturn);
+                       break;
         case SID_ATTR_CHAR_FONT:
-            aReturn.bEnabled = m_xReportDefinition.is() && isEditable();
-            if ( aReturn.bEnabled )
-            {
-                uno::Reference< report::XReportControlModel> 
xControlModel(m_pMyOwnView->getCurrentControlModel(),uno::UNO_QUERY);
-                aReturn.bEnabled = xControlModel.is() && !uno::Reference< 
report::XFixedLine>(xControlModel,uno::UNO_QUERY).is();
-                if ( aReturn.bEnabled )
-                {
-                    try
-                    {
-                                           aReturn.aValue <<= 
xControlModel->getFontDescriptor();
-                    }
-                    catch(beans::UnknownPropertyException&)
-                    {
-                        aReturn.bEnabled = sal_False;
-                    }
-                }
-            }
+            impl_fillState_nothrow(PROPERTY_FONTDESCRIPTOR,aReturn);
             break;
         case SID_ATTR_CHAR_FONTHEIGHT:
-            aReturn.bEnabled = m_xReportDefinition.is() && isEditable();
-            if ( aReturn.bEnabled )
-            {
-                uno::Reference< report::XReportControlModel> 
xControlModel(m_pMyOwnView->getCurrentControlModel(),uno::UNO_QUERY);
-                aReturn.bEnabled = xControlModel.is() && !uno::Reference< 
report::XFixedLine>(xControlModel,uno::UNO_QUERY).is();
-                if ( aReturn.bEnabled )
-                {
-                    try
+            impl_fillState_nothrow(PROPERTY_CHARHEIGHT,aReturn);
+            if ( aReturn.aValue.hasValue() )
                     {
                         frame::status::FontHeight aFontHeight;
-                        aFontHeight.Height = xControlModel->getCharHeight();
-                                           aReturn.aValue <<= aFontHeight;
-                    }
-                    catch(beans::UnknownPropertyException&)
-                    {
-                        aReturn.bEnabled = sal_False;
-                    }
-                }
+                aReturn.aValue >>= aFontHeight.Height;
+                aReturn.aValue <<= aFontHeight; // another type is needed 
here, so 
             }
             break;
         case SID_ATTR_PARA_ADJUST_LEFT:
         case SID_ATTR_PARA_ADJUST_CENTER:
         case SID_ATTR_PARA_ADJUST_RIGHT:
-            aReturn.bEnabled = m_xReportDefinition.is() && isEditable();
+            impl_fillState_nothrow(PROPERTY_PARAADJUST,aReturn);
             if ( aReturn.bEnabled )
             {
-                uno::Reference< report::XReportControlModel> 
xControlModel(m_pMyOwnView->getCurrentControlModel(),uno::UNO_QUERY);
-                aReturn.bEnabled = xControlModel.is();
-                if ( aReturn.bEnabled )
+                ::sal_Int16 nParaAdjust;
+                if ( aReturn.aValue >>= nParaAdjust )
                 {
-                    ::sal_Int16 nParaAdjust = xControlModel->getParaAdjust();
                     switch(nParaAdjust)
                     {
                         case awt::TextAlign::LEFT:
@@ -854,7 +827,8 @@
                             aReturn.bChecked = _nId == 
SID_ATTR_PARA_ADJUST_RIGHT;
                             break;
                     }
-                }
+                } // if ( aReturn.aValue >>= nParaAdjust )
+                aReturn.aValue.clear();
             }
             break;
 
@@ -863,11 +837,23 @@
                        break;
         case SID_CHAR_DLG:
                case SID_SETCONTROLDEFAULTS:
-                       aReturn.bEnabled = m_xReportDefinition.is() && 
isEditable() && m_pMyOwnView->getCurrentControlModel().is();
+                       aReturn.bEnabled = m_xReportDefinition.is() && 
isEditable();// && m_pMyOwnView->getCurrentControlModel().is();
+            if ( aReturn.bEnabled )
+            {
+                ::std::vector< uno::Reference< uno::XInterface > > aSelection;
+                m_pMyOwnView->fillControlModelSelection(aSelection);
+                ::std::vector< uno::Reference< uno::XInterface > >::iterator 
aIter = aSelection.begin();
+                for(; aIter != aSelection.end()
+                    && !uno::Reference< report::XFixedLine 
>(*aIter,uno::UNO_QUERY).is()
+                    && !uno::Reference< report::XImageControl 
>(*aIter,uno::UNO_QUERY).is()
+                    && uno::Reference< report::XReportControlFormat 
>(*aIter,uno::UNO_QUERY).is() ;++aIter)
+                    ;
+                aReturn.bEnabled = !aSelection.empty() && aIter == 
aSelection.end();
+            }
                        break;
                case SID_CONDITIONALFORMATTING:
                        {
-                uno::Reference< report::XFormattedField> 
xFormattedField(m_pMyOwnView->getCurrentControlModel(),uno::UNO_QUERY);
+                const uno::Reference< report::XFormattedField> 
xFormattedField(m_pMyOwnView->getCurrentControlModel(),uno::UNO_QUERY);
                                aReturn.bEnabled = xFormattedField.is();
                        }
                        break;
@@ -989,7 +975,7 @@
         {
             const OXUndoEnvironment::OUndoEnvLock aLock( 
m_aReportModel->GetUndoEnv() );
             OReportController_BASE::Execute( _nId, aArgs );
-            InvalidateFeature( SID_UNDO );
+            InvalidateAll();
             updateFloater();
         }
         break;
@@ -1103,7 +1089,7 @@
                 {
                     uno::Reference< report::XFunctions> 
xFunctions(xFunction->getParent(),uno::UNO_QUERY_THROW);
                     sal_Int32 nIndex = 
getPositionInIndexAccess(xFunctions.get(),xFunction);
-                    String sUndoAction = 
String((ModuleRes(RID_STR_UNDO_REMOVE_FUNCTION)));
+                    const String sUndoAction = 
String((ModuleRes(RID_STR_UNDO_REMOVE_FUNCTION)));
                     UndoManagerListAction 
aListAction(m_aUndoManager,sUndoAction);
                     xFunctions->removeByIndex(nIndex);
                     select(uno::makeAny(xFunctions->getParent()));
@@ -1370,29 +1356,15 @@
                        break;
                case SID_BACKGROUND_COLOR:
                        {
-                               uno::Reference< awt::XWindow> xWindow;
-                               uno::Reference< report::XReportControlFormat> 
xReportControlFormat = lcl_getReportControlFormat(aArgs,m_pMyOwnView,xWindow);
-                               uno::Reference< report::XSection > xSection = 
m_pMyOwnView->getCurrentSection();
-                try
-                {
-                                   if ( xReportControlFormat.is() )
+                const util::Color aColor( lcl_extractBackgroundColor( aArgs ) 
);
+                if ( 
!impl_setPropertyAtControls_throw(RID_STR_UNDO_CHANGEFONT,PROPERTY_CONTROLBACKGROUND,uno::makeAny(aColor),aArgs)
 )
                                    {
-                                               util::Color aColor( 
lcl_extractBackgroundColor( aArgs ) );
-                                               
xReportControlFormat->setControlBackground( aColor );
-                                   }
-                                   else if ( xSection.is() )
+                    uno::Reference< report::XSection > xSection = 
m_pMyOwnView->getCurrentSection();
+                    if ( xSection.is() )
                                        {
-                                               util::Color aColor( 
lcl_extractBackgroundColor( aArgs ) );
                                                xSection->setBackColor( aColor 
);
                                        }
-                    else
-                        OSL_ENSURE( false, "OReportController::Execute: no 
object to apply this background color to!" );
-                }
-                catch( const Exception& )
-                {
-                       DBG_UNHANDLED_EXCEPTION();
                 }
-
                 bForceBroadcast = sal_True;
                        }
                        break;
@@ -1400,98 +1372,70 @@
                case SID_ATTR_CHAR_POSTURE:
         case SID_ATTR_CHAR_UNDERLINE:
                        {
+                ::std::auto_ptr<UndoManagerListAction> pListAction;
                                uno::Reference< awt::XWindow> xWindow;
-                               uno::Reference< report::XReportControlFormat> 
xReportControlFormat = lcl_getReportControlFormat(aArgs,m_pMyOwnView,xWindow);
-                               if ( xReportControlFormat.is() )
+                ::std::vector< uno::Reference< uno::XInterface > > 
aControlsFormats;
+                
lcl_getReportControlFormat(aArgs,m_pMyOwnView,xWindow,aControlsFormats);
+                bool bMulti = aControlsFormats.size() > 1;
+                ::std::vector< uno::Reference< uno::XInterface > >::iterator 
aIter = aControlsFormats.begin();
+                for(; aIter != aControlsFormats.end();++aIter)
                                {
-                                       try
-                                       {
-                                               awt::FontDescriptor 
aFontDescriptor = xReportControlFormat->getFontDescriptor();
-                        switch(_nId)
-                        {
-                            case SID_ATTR_CHAR_WEIGHT:
-                                aFontDescriptor.Weight = 
(awt::FontWeight::NORMAL + awt::FontWeight::BOLD) - aFontDescriptor.Weight;
-                                break;
-                            case SID_ATTR_CHAR_POSTURE:
-                                aFontDescriptor.Slant = 
static_cast<awt::FontSlant>(static_cast<sal_Int16>(awt::FontSlant_ITALIC) - 
static_cast<sal_Int16>(aFontDescriptor.Slant));
-                                break;
-                            case SID_ATTR_CHAR_UNDERLINE:
-                                aFontDescriptor.Underline = 
awt::FontUnderline::SINGLE - aFontDescriptor.Underline;
-                                break;
-                            default:
-                                OSL_ENSURE(0,"Illegal value in default!");
-                                break;
-                        }
-
-                                               
xReportControlFormat->setFontDescriptor(aFontDescriptor);
-                                       }
-                                       catch(beans::UnknownPropertyException&)
+                    if ( !pListAction.get() && bMulti)
                                        {
-                                       }
+                        const String 
sUndoAction(ModuleRes(RID_STR_UNDO_CHANGEFONT));
+                                       pListAction.reset(new 
UndoManagerListAction(m_aUndoManager,sUndoAction));
+                    } // if ( !pListAction.get() )
+                    uno::Reference< report::XReportControlFormat> 
xReportControlFormat(*aIter,uno::UNO_QUERY);
+                    lcl_setFontWPU_nothrow(xReportControlFormat,_nId);
                                }
                        }
                        break;
                case SID_ATTR_CHAR_COLOR:
                case SID_ATTR_CHAR_COLOR2:
                        {
-                               uno::Reference< awt::XWindow> xWindow;
-                               uno::Reference< report::XReportControlFormat> 
xReportControlFormat = lcl_getReportControlFormat(aArgs,m_pMyOwnView,xWindow);
-                               if ( xReportControlFormat.is() )
-                               {
-                                       SequenceAsHashMap aMap(aArgs);
-                    util::Color aColor = 
aMap.getUnpackedValueOrDefault(PROPERTY_FONTCOLOR,util::Color());
-                                       try
-                                       {
-                                               
xReportControlFormat->setCharColor(aColor);
+                const SequenceAsHashMap aMap(aArgs);
+                const util::Color aColor = 
aMap.getUnpackedValueOrDefault(PROPERTY_FONTCOLOR,util::Color());
+                
impl_setPropertyAtControls_throw(RID_STR_UNDO_CHANGEFONT,PROPERTY_CHARCOLOR,uno::makeAny(aColor),aArgs);
                         bForceBroadcast = sal_True;
                                        }
-                                       catch(beans::UnknownPropertyException&)
-                                       {
-                                       }
-                               }
-                       }
                        break;
         case SID_ATTR_CHAR_FONT:
             if ( aArgs.getLength() == 1 )
             {
-                uno::Reference< report::XReportControlModel> 
xControlModel(m_pMyOwnView->getCurrentControlModel(),uno::UNO_QUERY);
                 awt::FontDescriptor aFont;
-                if ( xControlModel.is() && ( aArgs[0].Value >>= aFont ) )
-                    xControlModel->setCharFontName(aFont.Name);
-                    //xControlModel->setFontDescriptor(aFont);
+                if ( aArgs[0].Value >>= aFont )
+                {
+                    
impl_setPropertyAtControls_throw(RID_STR_UNDO_CHANGEFONT,PROPERTY_CHARFONTNAME,uno::makeAny(aFont.Name),aArgs);
+                } // if ( aArgs[0].Value >>= aFont )
             }
             break;
         case SID_ATTR_CHAR_FONTHEIGHT:
             if ( aArgs.getLength() == 1 )
             {
-                uno::Reference< report::XReportControlModel> 
xControlModel(m_pMyOwnView->getCurrentControlModel(),uno::UNO_QUERY);
                 float fSelVal = 0.0;
-                if ( xControlModel.is() && ( aArgs[0].Value >>= fSelVal) )
-                {
-                    xControlModel->setCharHeight(fSelVal);
-                }
+                if ( aArgs[0].Value >>= fSelVal )
+                    
impl_setPropertyAtControls_throw(RID_STR_UNDO_CHANGEFONT,PROPERTY_CHARHEIGHT,aArgs[0].Value,aArgs);
             }
             break;
         case SID_ATTR_PARA_ADJUST_LEFT:
         case SID_ATTR_PARA_ADJUST_CENTER:
         case SID_ATTR_PARA_ADJUST_RIGHT:
             {
-                uno::Reference< report::XReportControlModel> 
xControlModel(m_pMyOwnView->getCurrentControlModel(),uno::UNO_QUERY);
-                if ( xControlModel.is() )
-                {
+                sal_Int16 nValue = awt::TextAlign::LEFT;
                     switch(_nId)
                     {
                         case SID_ATTR_PARA_ADJUST_LEFT:
-                            xControlModel->setParaAdjust(awt::TextAlign::LEFT);
+                        nValue = awt::TextAlign::LEFT;
                             break;
                         case SID_ATTR_PARA_ADJUST_CENTER:
-                            
xControlModel->setParaAdjust(awt::TextAlign::CENTER);
+                        nValue = awt::TextAlign::CENTER;
                             break;
                         case SID_ATTR_PARA_ADJUST_RIGHT:
-                            
xControlModel->setParaAdjust(awt::TextAlign::RIGHT);
+                        nValue = awt::TextAlign::RIGHT;
                             break;
-                    }
-                }
+                } // switch(_nId)
+                
impl_setPropertyAtControls_throw(RID_STR_UNDO_ALIGNMENT,PROPERTY_PARAADJUST,uno::makeAny(nValue),aArgs);
+
                 InvalidateFeature(SID_ATTR_PARA_ADJUST_LEFT);
                 InvalidateFeature(SID_ATTR_PARA_ADJUST_CENTER);
                 InvalidateFeature(SID_ATTR_PARA_ADJUST_RIGHT);
@@ -1499,18 +1443,29 @@
             break;
                case SID_CHAR_DLG:
                        {
+                ::std::auto_ptr<UndoManagerListAction> pListAction;
+                uno::Sequence< beans::NamedValue > aSettings;
                                uno::Reference< awt::XWindow> xWindow;
-                               uno::Reference< report::XReportControlFormat> 
xReportControlFormat = lcl_getReportControlFormat(aArgs,m_pMyOwnView,xWindow);
-                               if ( xReportControlFormat.is() )
+                ::std::vector< uno::Reference< uno::XInterface > > 
aControlsFormats;
+                
lcl_getReportControlFormat(aArgs,m_pMyOwnView,xWindow,aControlsFormats);
+                ::std::vector< uno::Reference< uno::XInterface > >::iterator 
aIter = aControlsFormats.begin();
+                for(; aIter != aControlsFormats.end();++aIter)
                 {
+                    uno::Reference< report::XReportControlFormat > 
xFormat(*aIter,uno::UNO_QUERY);
+                                   if ( xFormat.is() )
+                                   {
+                        if ( !pListAction.get() )
                     {
                         const String 
sUndoAction(ModuleRes(RID_STR_UNDO_CHANGEFONT));
-                                           UndoManagerListAction 
aListAction(m_aUndoManager,sUndoAction);
-                        rptui::openCharDialog(xReportControlFormat,xWindow);
+                                               pListAction.reset(new 
UndoManagerListAction(m_aUndoManager,sUndoAction));
+                            rptui::openCharDialog(xFormat,xWindow,aSettings);
+                        } // if ( !pListAction.get() )
+                        applyCharacterSettings( xFormat, aSettings );
                     }
+                } // for(; aIter != aControlsFormats.end();++aIter)
+                if ( !aControlsFormats.empty() )
                     InvalidateAll();
                 }
-                       }
                        break;
                //case SID_FM_DESIGN_MODE:
   //          break;
@@ -1585,7 +1540,7 @@
     //            ::boost::shared_ptr<OReportSection> pReportSection = 
m_pMyOwnView->getMarkedSection();
                                //if ( pReportSection.get() )
                                //{
-    //                ::std::vector< uno::Reference< report::XReportComponent 
> > aSelection;
+    //                ::std::vector< uno::Reference< uno::XInterface > > 
aSelection;
     //                uno::Reference<report::XSection> xSection = 
pReportSection->getSection();
     //                const String sUndoAction(ModuleRes(RID_STR_UNDO_GROUP));
     //                getUndoMgr()->EnterListAction( sUndoAction, String() );
@@ -2428,37 +2383,6 @@
        return 1L;
 }
 // 
-----------------------------------------------------------------------------
-sal_Bool OReportController::isFormatCommandEnabled(sal_uInt16 _nCommand,const 
uno::Reference< report::XReportControlFormat>& _xReportControlFormat) const
-{
-       sal_Bool bRet = sal_False;
-    if ( _xReportControlFormat.is() && !uno::Reference< 
report::XFixedLine>(_xReportControlFormat,uno::UNO_QUERY).is() ) // this 
command is really often called so we nedd a short cut here
-       {
-               try
-               {
-                       const awt::FontDescriptor aFontDescriptor = 
_xReportControlFormat->getFontDescriptor();
-
-                       switch(_nCommand)
-                       {
-                               case SID_ATTR_CHAR_WEIGHT:
-                                       bRet = awt::FontWeight::BOLD == 
aFontDescriptor.Weight;
-                                       break;
-                               case SID_ATTR_CHAR_POSTURE:
-                                       bRet = awt::FontSlant_ITALIC == 
aFontDescriptor.Slant;
-                                       break;
-                               case SID_ATTR_CHAR_UNDERLINE:
-                                       bRet = awt::FontUnderline::SINGLE == 
aFontDescriptor.Underline;
-                                       break;
-                               default:
-                                       ;
-                       } // switch(_nCommand)
-               }
-               catch(uno::Exception&)
-               {
-               }
-       }
-       return bRet;
-}
-// 
-----------------------------------------------------------------------------
 void OReportController::Notify(SfxBroadcaster & /*rBc*/, SfxHint const & rHint)
 {
     if (rHint.ISA(DlgEdHint)
@@ -3735,5 +3659,100 @@
     return xTitle->getTitle ();
 }
 // 
-----------------------------------------------------------------------------
+void OReportController::impl_fillState_nothrow(const ::rtl::OUString& 
_sProperty,dbaui::FeatureState& _rState) const
+{
+    _rState.bEnabled = isEditable();
+       if ( _rState.bEnabled )
+    {
+        ::std::vector< uno::Reference< uno::XInterface > > aSelection;
+        m_pMyOwnView->fillControlModelSelection(aSelection);
+        _rState.bEnabled = !aSelection.empty();
+        if ( _rState.bEnabled )
+        {
+            uno::Any aTemp;
+            ::std::vector< uno::Reference< uno::XInterface > >::iterator aIter 
= aSelection.begin();
+            for(; aIter != aSelection.end() && _rState.bEnabled ;++aIter)
+            {
+                uno::Reference< beans::XPropertySet> 
xProp(*aIter,uno::UNO_QUERY);
+                try
+                {
+                    uno::Any aTemp2 = xProp->getPropertyValue(_sProperty); 
+                    if ( aIter == aSelection.begin() )
+                    {
+                        aTemp = aTemp2;
+                    }
+                    else if ( !comphelper::compare(aTemp,aTemp2) )
+                        break;
+                }
+                catch(beans::UnknownPropertyException&)
+                {
+                    _rState.bEnabled = sal_False;
+                }
+            } // for(; aIter != aSelection.end();++aIter)
+            if ( aIter == aSelection.end() )
+                _rState.aValue = aTemp;
+        }
+    } // if ( _rState.bEnabled )
+}
+// 
-----------------------------------------------------------------------------
+sal_Bool OReportController::isFormatCommandEnabled(sal_uInt16 _nCommand,const 
uno::Reference< report::XReportControlFormat>& _xReportControlFormat) const
+{
+       sal_Bool bRet = sal_False;
+    if ( _xReportControlFormat.is() && !uno::Reference< 
report::XFixedLine>(_xReportControlFormat,uno::UNO_QUERY).is() ) // this 
command is really often called so we nedd a short cut here
+       {
+               try
+               {
+                       const awt::FontDescriptor aFontDescriptor = 
_xReportControlFormat->getFontDescriptor();
+
+                       switch(_nCommand)
+                       {
+                               case SID_ATTR_CHAR_WEIGHT:
+                                       bRet = awt::FontWeight::BOLD == 
aFontDescriptor.Weight;
+                                       break;
+                               case SID_ATTR_CHAR_POSTURE:
+                                       bRet = awt::FontSlant_ITALIC == 
aFontDescriptor.Slant;
+                                       break;
+                               case SID_ATTR_CHAR_UNDERLINE:
+                                       bRet = awt::FontUnderline::SINGLE == 
aFontDescriptor.Underline;
+                                       break;
+                               default:
+                                       ;
+                       } // switch(_nCommand)
+               }
+               catch(uno::Exception&)
+               {
+               }
+       }
+       return bRet;
+}
+// 
-----------------------------------------------------------------------------
+bool OReportController::impl_setPropertyAtControls_throw(const sal_Int32 
_nUndoResId,const ::rtl::OUString& _sProperty,const uno::Any& _aValue,const 
Sequence< PropertyValue >& _aArgs)
+{
+    ::std::auto_ptr<UndoManagerListAction> pListAction;
+    ::std::vector< uno::Reference< uno::XInterface > > aSelection;
+    uno::Reference< awt::XWindow> xWindow;
+    lcl_getReportControlFormat(_aArgs,m_pMyOwnView,xWindow,aSelection);
+    const bool bMultiSet = aSelection.size() > 1;
+    ::std::vector< uno::Reference< uno::XInterface > >::iterator aIter = 
aSelection.begin();
+    for(;  aIter != aSelection.end();++aIter)
+    {
+        if ( !pListAction.get() && _nUndoResId && bMultiSet )
+        {
+            const String sUndoAction = String(ModuleRes(_nUndoResId));
+               pListAction.reset(new 
UndoManagerListAction(m_aUndoManager,sUndoAction));
+        } // if ( !pListAction.get() )
+        const uno::Reference< beans::XPropertySet > 
xControlModel(*aIter,uno::UNO_QUERY);
+        if ( xControlModel.is() )
+            xControlModel->setPropertyValue(_sProperty,_aValue);
+    } // for(;  aIter != aSelection.end();++aIter)
+    return !aSelection.empty();
+}
+// 
-----------------------------------------------------------------------------
+void OReportController::impl_fillCustomShapeState_nothrow(const char* 
_pCustomShapeType,dbaui::FeatureState& _rState) const
+{
+    _rState.bEnabled = isEditable();
+       const rtl::OUString sShapeType = m_pMyOwnView->GetInsertObjString();
+       _rState.bChecked = m_pMyOwnView->GetInsertObj() == OBJ_CUSTOMSHAPE && 
sShapeType.compareToAscii(_pCustomShapeType) == 0;
+}
 // 
-----------------------------------------------------------------------------
 

File [changed]: ReportSection.cxx
Url: 
http://dba.openoffice.org/source/browse/dba/reportdesign/source/ui/report/ReportSection.cxx?r1=1.8.4.6&r2=1.8.4.7
Delta lines:  +2 -2
-------------------
--- ReportSection.cxx   2008-04-30 13:03:35+0000        1.8.4.6
+++ ReportSection.cxx   2008-05-15 12:29:39+0000        1.8.4.7
@@ -7,7 +7,7 @@
  * OpenOffice.org - a multi-platform office productivity suite
  *
  * $RCSfile: ReportSection.cxx,v $
- * $Revision: 1.8.4.6 $
+ * $Revision: 1.8.4.7 $
  *
  * This file is part of OpenOffice.org.
  *
@@ -668,7 +668,7 @@
        return xModel;
 }
 // 
-----------------------------------------------------------------------------
-void OReportSection::fillControlModelSelection(::std::vector< uno::Reference< 
report::XReportComponent > >& _rSelection) const
+void OReportSection::fillControlModelSelection(::std::vector< uno::Reference< 
uno::XInterface > >& _rSelection) const
 {
     if ( m_pView )
        {

File [changed]: ReportWindow.cxx
Url: 
http://dba.openoffice.org/source/browse/dba/reportdesign/source/ui/report/ReportWindow.cxx?r1=1.5.22.2&r2=1.5.22.3
Delta lines:  +8 -2
-------------------
--- ReportWindow.cxx    2008-04-16 06:30:40+0000        1.5.22.2
+++ ReportWindow.cxx    2008-05-15 12:29:39+0000        1.5.22.3
@@ -7,7 +7,7 @@
  * OpenOffice.org - a multi-platform office productivity suite
  *
  * $RCSfile: ReportWindow.cxx,v $
- * $Revision: 1.5.22.2 $
+ * $Revision: 1.5.22.3 $
  *
  * This file is part of OpenOffice.org.
  *
@@ -493,6 +493,12 @@
 {
     return m_pViews ? m_pViews->getMarkedObjectCount() : 0;
 }
+// 
-----------------------------------------------------------------------------
+void OReportWindow::fillControlModelSelection(::std::vector< uno::Reference< 
uno::XInterface > >& _rSelection) const
+{
+    if ( m_pViews )
+        m_pViews->fillControlModelSelection(_rSelection);
+}
 
 //==================================================================
 }      //rptui

File [changed]: ScrollHelper.cxx
Url: 
http://dba.openoffice.org/source/browse/dba/reportdesign/source/ui/report/ScrollHelper.cxx?r1=1.5.22.2&r2=1.5.22.3
Delta lines:  +8 -2
-------------------
--- ScrollHelper.cxx    2008-04-16 06:30:44+0000        1.5.22.2
+++ ScrollHelper.cxx    2008-05-15 12:29:39+0000        1.5.22.3
@@ -7,7 +7,7 @@
  * OpenOffice.org - a multi-platform office productivity suite
  *
  * $RCSfile: ScrollHelper.cxx,v $
- * $Revision: 1.5.22.2 $
+ * $Revision: 1.5.22.3 $
  *
  * This file is part of OpenOffice.org.
  *
@@ -461,6 +461,12 @@
     return m_pChild ? m_pChild->getMarkedObjectCount() : 0;
 }
 // 
-----------------------------------------------------------------------------
+void OScrollWindowHelper::fillControlModelSelection(::std::vector< 
uno::Reference< uno::XInterface > >& _rSelection) const
+{
+    if ( m_pChild )
+        m_pChild->fillControlModelSelection(_rSelection);
+}
+
 
//==============================================================================
 } // rptui
 
//==============================================================================

File [changed]: ViewsWindow.cxx
Url: 
http://dba.openoffice.org/source/browse/dba/reportdesign/source/ui/report/ViewsWindow.cxx?r1=1.7.22.4&r2=1.7.22.5
Delta lines:  +11 -1
--------------------
--- ViewsWindow.cxx     2008-04-30 13:03:35+0000        1.7.22.4
+++ ViewsWindow.cxx     2008-05-15 12:29:39+0000        1.7.22.5
@@ -7,7 +7,7 @@
  * OpenOffice.org - a multi-platform office productivity suite
  *
  * $RCSfile: ViewsWindow.cxx,v $
- * $Revision: 1.7.22.4 $
+ * $Revision: 1.7.22.5 $
  *
  * This file is part of OpenOffice.org.
  *
@@ -1852,6 +1852,16 @@
     ::std::for_each(m_aSections.begin(),m_aSections.end(),
                
::std::compose1(::boost::mem_fn(&OReportSection::stopScrollTimer),TReportPairHelper()));
 }
+// 
-----------------------------------------------------------------------------
+void OViewsWindow::fillControlModelSelection(::std::vector< uno::Reference< 
uno::XInterface > >& _rSelection) const
+{
+    TSectionsMap::const_iterator aIter = m_aSections.begin();
+    TSectionsMap::const_iterator aEnd = m_aSections.end();
+    for(;aIter != aEnd; ++aIter)
+    {
+        aIter->first.first->fillControlModelSelection(_rSelection);
+    }
+}
 
//==============================================================================
 } // rptui
 
//==============================================================================




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to