diff options
author | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2015-07-23 01:20:45 +0200 |
---|---|---|
committer | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2015-07-26 00:26:55 +0200 |
commit | 0635208edf1cdee4235ea87666a473ac81007555 (patch) | |
tree | 164c60a651094636e11ef665019e3d47c6e8430b /chart2 | |
parent | cfac266d061c4fe83bebe203519b746538e47157 (diff) |
handle more than one chart with chart sidebar
Change-Id: I4998904a9273f2c67114a246d7f234843602573c
Diffstat (limited to 'chart2')
11 files changed, 86 insertions, 2 deletions
diff --git a/chart2/source/controller/main/ChartController.cxx b/chart2/source/controller/main/ChartController.cxx index 9c51cf5a6bae..138fc65cdac5 100644 --- a/chart2/source/controller/main/ChartController.cxx +++ b/chart2/source/controller/main/ChartController.cxx @@ -421,6 +421,7 @@ void SAL_CALL ChartController::attachFrame( { sfx2::sidebar::SidebarController* pSidebar = dynamic_cast<sfx2::sidebar::SidebarController*>(xSidebar.get()); sfx2::sidebar::SidebarController::registerSidebarForFrame(pSidebar, this); + pSidebar->updateModel(getModel()); } if(m_xFrame.is()) //what happens, if we do have a Frame already?? diff --git a/chart2/source/controller/sidebar/ChartAreaPanel.cxx b/chart2/source/controller/sidebar/ChartAreaPanel.cxx index 945e5059cf18..897d8ad61cae 100644 --- a/chart2/source/controller/sidebar/ChartAreaPanel.cxx +++ b/chart2/source/controller/sidebar/ChartAreaPanel.cxx @@ -170,6 +170,18 @@ void ChartAreaPanel::modelInvalid() { } +void ChartAreaPanel::updateModel( + css::uno::Reference<css::frame::XModel> xModel) +{ + css::uno::Reference<css::util::XModifyBroadcaster> xBroadcaster(mxModel, css::uno::UNO_QUERY_THROW); + xBroadcaster->removeModifyListener(mxListener); + + mxModel = xModel; + + css::uno::Reference<css::util::XModifyBroadcaster> xBroadcasterNew(mxModel, css::uno::UNO_QUERY_THROW); + xBroadcasterNew->addModifyListener(mxListener); +} + } } diff --git a/chart2/source/controller/sidebar/ChartAreaPanel.hxx b/chart2/source/controller/sidebar/ChartAreaPanel.hxx index f5b45aed7e6e..7a0875b4b97c 100644 --- a/chart2/source/controller/sidebar/ChartAreaPanel.hxx +++ b/chart2/source/controller/sidebar/ChartAreaPanel.hxx @@ -12,6 +12,7 @@ #include <vcl/ctrl.hxx> #include <sfx2/sidebar/ControllerItem.hxx> +#include <sfx2/sidebar/SidebarModelUpdate.hxx> #include <svx/xgrad.hxx> #include <svx/itemwin.hxx> #include <svx/xfillit0.hxx> @@ -44,7 +45,9 @@ class ChartController; namespace sidebar { class ChartAreaPanel : public svx::sidebar::AreaPropertyPanelBase, - public ChartSidebarModifyListenerParent + public sfx2::sidebar::SidebarModelUpdate, + public ChartSidebarModifyListenerParent, + public sfx2::sidebar::SidebarModelUpdate { public: static VclPtr<vcl::Window> Create( @@ -74,6 +77,8 @@ public: virtual void dispose() SAL_OVERRIDE; + virtual void updateModel(css::uno::Reference<css::frame::XModel> xModel) SAL_OVERRIDE; + private: css::uno::Reference<css::frame::XModel> mxModel; diff --git a/chart2/source/controller/sidebar/ChartAxisPanel.cxx b/chart2/source/controller/sidebar/ChartAxisPanel.cxx index e6fa2e322f26..ba1a5e7ec2aa 100644 --- a/chart2/source/controller/sidebar/ChartAxisPanel.cxx +++ b/chart2/source/controller/sidebar/ChartAxisPanel.cxx @@ -281,6 +281,18 @@ void ChartAxisPanel::modelInvalid() { } +void ChartAxisPanel::updateModel( + css::uno::Reference<css::frame::XModel> xModel) +{ + css::uno::Reference<css::util::XModifyBroadcaster> xBroadcaster(mxModel, css::uno::UNO_QUERY_THROW); + xBroadcaster->removeModifyListener(mxListener); + + mxModel = xModel; + + css::uno::Reference<css::util::XModifyBroadcaster> xBroadcasterNew(mxModel, css::uno::UNO_QUERY_THROW); + xBroadcasterNew->addModifyListener(mxListener); +} + IMPL_LINK(ChartAxisPanel, CheckBoxHdl, CheckBox*, pCheckbox) { OUString aCID = getCID(mxModel); diff --git a/chart2/source/controller/sidebar/ChartAxisPanel.hxx b/chart2/source/controller/sidebar/ChartAxisPanel.hxx index 8737ab4762d3..5c1177fed392 100644 --- a/chart2/source/controller/sidebar/ChartAxisPanel.hxx +++ b/chart2/source/controller/sidebar/ChartAxisPanel.hxx @@ -13,6 +13,7 @@ #include <sfx2/sidebar/ControllerItem.hxx> #include <sfx2/sidebar/IContextChangeReceiver.hxx> +#include <sfx2/sidebar/SidebarModelUpdate.hxx> #include <svx/sidebar/PanelLayout.hxx> #include "ChartSidebarModifyListener.hxx" @@ -32,6 +33,7 @@ namespace sidebar { class ChartAxisPanel : public PanelLayout, public ::sfx2::sidebar::IContextChangeReceiver, public ::sfx2::sidebar::ControllerItem::ItemUpdateReceiverInterface, + public sfx2::sidebar::SidebarModelUpdate, public ChartSidebarModifyListenerParent { public: @@ -63,6 +65,8 @@ public: virtual void updateData() SAL_OVERRIDE; virtual void modelInvalid() SAL_OVERRIDE; + virtual void updateModel(css::uno::Reference<css::frame::XModel> xModel) SAL_OVERRIDE; + private: //ui controls VclPtr<CheckBox> mpCBShowLabel; diff --git a/chart2/source/controller/sidebar/ChartElementsPanel.cxx b/chart2/source/controller/sidebar/ChartElementsPanel.cxx index 1cbec9ec9b87..fd498ff25f46 100644 --- a/chart2/source/controller/sidebar/ChartElementsPanel.cxx +++ b/chart2/source/controller/sidebar/ChartElementsPanel.cxx @@ -451,6 +451,18 @@ void ChartElementsPanel::modelInvalid() } +void ChartElementsPanel::updateModel( + css::uno::Reference<css::frame::XModel> xModel) +{ + css::uno::Reference<css::util::XModifyBroadcaster> xBroadcaster(mxModel, css::uno::UNO_QUERY_THROW); + xBroadcaster->removeModifyListener(mxListener); + + mxModel = xModel; + + css::uno::Reference<css::util::XModifyBroadcaster> xBroadcasterNew(mxModel, css::uno::UNO_QUERY_THROW); + xBroadcasterNew->addModifyListener(mxListener); +} + IMPL_LINK(ChartElementsPanel, CheckBoxHdl, CheckBox*, pCheckBox) { bool bChecked = pCheckBox->IsChecked(); diff --git a/chart2/source/controller/sidebar/ChartElementsPanel.hxx b/chart2/source/controller/sidebar/ChartElementsPanel.hxx index 32ffb7d0f41f..766915c1e64e 100644 --- a/chart2/source/controller/sidebar/ChartElementsPanel.hxx +++ b/chart2/source/controller/sidebar/ChartElementsPanel.hxx @@ -21,6 +21,7 @@ #include <sfx2/sidebar/ControllerItem.hxx> #include <sfx2/sidebar/IContextChangeReceiver.hxx> +#include <sfx2/sidebar/SidebarModelUpdate.hxx> #include <svx/sidebar/PanelLayout.hxx> #include "ChartSidebarModifyListener.hxx" @@ -39,6 +40,7 @@ namespace sidebar { class ChartElementsPanel : public PanelLayout, public ::sfx2::sidebar::IContextChangeReceiver, public ::sfx2::sidebar::ControllerItem::ItemUpdateReceiverInterface, + public sfx2::sidebar::SidebarModelUpdate, public ChartSidebarModifyListenerParent { public: @@ -70,6 +72,8 @@ public: virtual void updateData() SAL_OVERRIDE; virtual void modelInvalid() SAL_OVERRIDE; + virtual void updateModel(css::uno::Reference<css::frame::XModel> xModel) SAL_OVERRIDE; + private: //ui controls VclPtr<CheckBox> mpCBTitle; diff --git a/chart2/source/controller/sidebar/ChartErrorBarPanel.cxx b/chart2/source/controller/sidebar/ChartErrorBarPanel.cxx index b5a5075a9e99..3163f956e142 100644 --- a/chart2/source/controller/sidebar/ChartErrorBarPanel.cxx +++ b/chart2/source/controller/sidebar/ChartErrorBarPanel.cxx @@ -381,6 +381,18 @@ void ChartErrorBarPanel::modelInvalid() { } +void ChartErrorBarPanel::updateModel( + css::uno::Reference<css::frame::XModel> xModel) +{ + css::uno::Reference<css::util::XModifyBroadcaster> xBroadcaster(mxModel, css::uno::UNO_QUERY_THROW); + xBroadcaster->removeModifyListener(mxListener); + + mxModel = xModel; + + css::uno::Reference<css::util::XModifyBroadcaster> xBroadcasterNew(mxModel, css::uno::UNO_QUERY_THROW); + xBroadcasterNew->addModifyListener(mxListener); +} + IMPL_LINK_NOARG(ChartErrorBarPanel, RadioBtnHdl) { OUString aCID = getCID(mxModel); diff --git a/chart2/source/controller/sidebar/ChartErrorBarPanel.hxx b/chart2/source/controller/sidebar/ChartErrorBarPanel.hxx index 84d4b9ccd896..e9c102b4d5e0 100644 --- a/chart2/source/controller/sidebar/ChartErrorBarPanel.hxx +++ b/chart2/source/controller/sidebar/ChartErrorBarPanel.hxx @@ -13,6 +13,7 @@ #include <sfx2/sidebar/ControllerItem.hxx> #include <sfx2/sidebar/IContextChangeReceiver.hxx> +#include <sfx2/sidebar/SidebarModelUpdate.hxx> #include <svx/sidebar/PanelLayout.hxx> #include "ChartSidebarModifyListener.hxx" @@ -33,6 +34,7 @@ namespace sidebar { class ChartErrorBarPanel : public PanelLayout, public ::sfx2::sidebar::IContextChangeReceiver, public ::sfx2::sidebar::ControllerItem::ItemUpdateReceiverInterface, + public sfx2::sidebar::SidebarModelUpdate, public ChartSidebarModifyListenerParent { public: @@ -64,6 +66,8 @@ public: virtual void updateData() SAL_OVERRIDE; virtual void modelInvalid() SAL_OVERRIDE; + virtual void updateModel(css::uno::Reference<css::frame::XModel> xModel) SAL_OVERRIDE; + private: //ui controls VclPtr<RadioButton> mpRBPosAndNeg; diff --git a/chart2/source/controller/sidebar/ChartSeriesPanel.cxx b/chart2/source/controller/sidebar/ChartSeriesPanel.cxx index 483ae91b4bbc..0cb9aeed2bf2 100644 --- a/chart2/source/controller/sidebar/ChartSeriesPanel.cxx +++ b/chart2/source/controller/sidebar/ChartSeriesPanel.cxx @@ -269,7 +269,9 @@ OUString getCID(css::uno::Reference<css::frame::XModel> xModel) return OUString(); uno::Any aAny = xSelectionSupplier->getSelection(); - assert(aAny.hasValue()); + if (!aAny.hasValue()) + return OUString(); + OUString aCID; aAny >>= aCID; #ifdef DBG_UTIL @@ -410,6 +412,18 @@ void ChartSeriesPanel::modelInvalid() } +void ChartSeriesPanel::updateModel( + css::uno::Reference<css::frame::XModel> xModel) +{ + css::uno::Reference<css::util::XModifyBroadcaster> xBroadcaster(mxModel, css::uno::UNO_QUERY_THROW); + xBroadcaster->removeModifyListener(mxListener); + + mxModel = xModel; + + css::uno::Reference<css::util::XModifyBroadcaster> xBroadcasterNew(mxModel, css::uno::UNO_QUERY_THROW); + xBroadcasterNew->addModifyListener(mxListener); +} + IMPL_LINK(ChartSeriesPanel, CheckBoxHdl, CheckBox*, pCheckBox) { bool bChecked = pCheckBox->IsChecked(); diff --git a/chart2/source/controller/sidebar/ChartSeriesPanel.hxx b/chart2/source/controller/sidebar/ChartSeriesPanel.hxx index 7c951f636dff..10d73ee8e15e 100644 --- a/chart2/source/controller/sidebar/ChartSeriesPanel.hxx +++ b/chart2/source/controller/sidebar/ChartSeriesPanel.hxx @@ -21,6 +21,7 @@ #include <sfx2/sidebar/ControllerItem.hxx> #include <sfx2/sidebar/IContextChangeReceiver.hxx> +#include <sfx2/sidebar/SidebarModelUpdate.hxx> #include <svx/sidebar/PanelLayout.hxx> #include "ChartSidebarModifyListener.hxx" @@ -40,6 +41,7 @@ namespace sidebar { class ChartSeriesPanel : public PanelLayout, public ::sfx2::sidebar::IContextChangeReceiver, public ::sfx2::sidebar::ControllerItem::ItemUpdateReceiverInterface, + public sfx2::sidebar::SidebarModelUpdate, public ChartSidebarModifyListenerParent { public: @@ -71,6 +73,8 @@ public: virtual void updateData() SAL_OVERRIDE; virtual void modelInvalid() SAL_OVERRIDE; + virtual void updateModel(css::uno::Reference<css::frame::XModel> xModel) SAL_OVERRIDE; + private: //ui controls VclPtr<CheckBox> mpCBLabel; |