Index: Core/Common/src/Core.Common.Gui/Forms/MainWindow/MainWindow.xaml =================================================================== diff -u -rc6770db6573c4c1456d3faaba3ec1d65a9c3005e -r18a617da943368e8294aa31528d2e2379d7318cc --- Core/Common/src/Core.Common.Gui/Forms/MainWindow/MainWindow.xaml (.../MainWindow.xaml) (revision c6770db6573c4c1456d3faaba3ec1d65a9c3005e) +++ Core/Common/src/Core.Common.Gui/Forms/MainWindow/MainWindow.xaml (.../MainWindow.xaml) (revision 18a617da943368e8294aa31528d2e2379d7318cc) @@ -43,7 +43,7 @@ - + Index: Core/Components/src/Core.Components.Charting/IChart.cs =================================================================== diff -u -rfc0a61c81da4dcf9f436c8b8bd9c51c6b4d65ef8 -r18a617da943368e8294aa31528d2e2379d7318cc --- Core/Components/src/Core.Components.Charting/IChart.cs (.../IChart.cs) (revision fc0a61c81da4dcf9f436c8b8bd9c51c6b4d65ef8) +++ Core/Components/src/Core.Components.Charting/IChart.cs (.../IChart.cs) (revision 18a617da943368e8294aa31528d2e2379d7318cc) @@ -3,7 +3,7 @@ namespace Core.Components.Charting { - public interface IChart : IObservable { + public interface IChart { /// /// Gets a value representing whether the chart can be panned with the left mouse button. /// Index: Core/Components/src/Core.Components.OxyPlot.Forms/BaseChart.cs =================================================================== diff -u -r74cd1965818ae9b23da6cad8776b7da2868be4a7 -r18a617da943368e8294aa31528d2e2379d7318cc --- Core/Components/src/Core.Components.OxyPlot.Forms/BaseChart.cs (.../BaseChart.cs) (revision 74cd1965818ae9b23da6cad8776b7da2868be4a7) +++ Core/Components/src/Core.Components.OxyPlot.Forms/BaseChart.cs (.../BaseChart.cs) (revision 18a617da943368e8294aa31528d2e2379d7318cc) @@ -2,7 +2,6 @@ using System.Collections.ObjectModel; using System.ComponentModel; using System.Drawing; -using System.Linq; using System.Windows.Forms; using Core.Common.Base; using Core.Components.Charting; @@ -138,35 +137,5 @@ } #endregion - - #region IObservable - - public void Attach(IObserver observer) - { - observers.Add(observer); - } - - public void Detach(IObserver observer) - { - observers.Remove(observer); - } - - public void NotifyObservers() - { - // Iterate through a copy of the list of observers; an update of one observer might result in detaching - // another observer (which will result in a "list modified" exception over here otherwise) - foreach (var observer in observers.ToArray()) - { - // Ensure the observer is still part of the original list of observers - if (!observers.Contains(observer)) - { - continue; - } - - observer.UpdateObserver(); - } - } - - #endregion } } \ No newline at end of file Index: Core/Components/test/Core.Components.OxyPlot.Forms.Test/BaseChartTest.cs =================================================================== diff -u -r74cd1965818ae9b23da6cad8776b7da2868be4a7 -r18a617da943368e8294aa31528d2e2379d7318cc --- Core/Components/test/Core.Components.OxyPlot.Forms.Test/BaseChartTest.cs (.../BaseChartTest.cs) (revision 74cd1965818ae9b23da6cad8776b7da2868be4a7) +++ Core/Components/test/Core.Components.OxyPlot.Forms.Test/BaseChartTest.cs (.../BaseChartTest.cs) (revision 18a617da943368e8294aa31528d2e2379d7318cc) @@ -213,80 +213,5 @@ Assert.AreEqual(1, view.Model.Series.Count); Assert.AreNotSame(series[0], view.Model.Series[0]); } - - [Test] - public void NotifyObservers_WithObserverAttached_ObserverIsNotified() - { - // Setup - var mocks = new MockRepository(); - var observer = mocks.StrictMock(); - observer.Expect(o => o.UpdateObserver()); - mocks.ReplayAll(); - - var observable = new BaseChart(); - observable.Attach(observer); - - // Call - observable.NotifyObservers(); - - // Assert - mocks.VerifyAll(); - } - - [Test] - public void NotifyObserver_AttachedObserverDetachedAgain_ObserverNoLongerNotified() - { - // Setup - var mocks = new MockRepository(); - var observer = mocks.StrictMock(); - mocks.ReplayAll(); - - var observable = new BaseChart(); - observable.Attach(observer); - observable.Detach(observer); - - // Call - observable.NotifyObservers(); - - // Assert - mocks.VerifyAll(); // Expect no calls on 'observer' - } - - [Test] - public void NotifyObservers_MultipleObserversDetachingOrAttachingOthers_NoUpdatesForAttachedAndDetachedObservers() - { - // Setup - var mocks = new MockRepository(); - var testObservable = new BaseChart(); - - var observer1 = mocks.Stub(); - var observer2 = mocks.Stub(); - var observer3 = mocks.Stub(); - var observer4 = mocks.Stub(); - var observer5 = mocks.Stub(); - var observer6 = mocks.Stub(); - - testObservable.Attach(observer1); - testObservable.Attach(observer2); - testObservable.Attach(observer3); - testObservable.Attach(observer4); - testObservable.Attach(observer6); - - observer1.Expect(o => o.UpdateObserver()); - observer2.Expect(o => o.UpdateObserver()).Do((Action)(() => testObservable.Detach(observer3))); - observer3.Expect(o => o.UpdateObserver()).Repeat.Never(); // A detached observer should no longer be updated - observer4.Expect(o => o.UpdateObserver()).Do((Action)(() => testObservable.Attach(observer5))); - observer5.Expect(o => o.UpdateObserver()).Repeat.Never(); // An attached observer should not be updated either - observer6.Expect(o => o.UpdateObserver()); - - mocks.ReplayAll(); - - // Call - testObservable.NotifyObservers(); - - // Assert - mocks.VerifyAll(); - } - } } \ No newline at end of file Index: Core/Plugins/src/Core.Plugins.OxyPlot/ChartingRibbon.xaml.cs =================================================================== diff -u -reb44708823d5479991162f63376ae85dd944e513 -r18a617da943368e8294aa31528d2e2379d7318cc --- Core/Plugins/src/Core.Plugins.OxyPlot/ChartingRibbon.xaml.cs (.../ChartingRibbon.xaml.cs) (revision eb44708823d5479991162f63376ae85dd944e513) +++ Core/Plugins/src/Core.Plugins.OxyPlot/ChartingRibbon.xaml.cs (.../ChartingRibbon.xaml.cs) (revision 18a617da943368e8294aa31528d2e2379d7318cc) @@ -1,6 +1,5 @@ using System.Collections.Generic; using System.Windows; -using Core.Common.Base; using Core.Common.Controls.Commands; using Core.Common.Gui.Forms; using Core.Components.Charting; @@ -11,7 +10,7 @@ /// /// This class represents the ribbon interaction which has to do with charting. /// - public partial class ChartingRibbon : IRibbonCommandHandler, IObserver + public partial class ChartingRibbon : IRibbonCommandHandler { private IChart chart; @@ -31,7 +30,7 @@ } set { - SetChart(value); + chart = value; if (chart != null) { @@ -44,19 +43,6 @@ } } - private void SetChart(IChart value) - { - if (chart != null) - { - chart.Detach(this); - } - chart = value; - if (chart != null) - { - chart.Attach(this); - } - } - /// /// Sets the command used when the open chart button is clicked. /// @@ -133,23 +119,18 @@ private void ButtonTogglePanning_Click(object sender, RoutedEventArgs e) { Chart.TogglePanning(); - Chart.NotifyObservers(); + ValidateItems(); } private void ButtonToggleRectangleZooming_Click(object sender, RoutedEventArgs e) { Chart.ToggleRectangleZooming(); - Chart.NotifyObservers(); + ValidateItems(); } private void ButtonZoomToAll_Click(object sender, RoutedEventArgs e) { Chart.ZoomToAll(); } - - public void UpdateObserver() - { - ValidateItems(); - } } } \ No newline at end of file Index: Core/Plugins/src/Core.Plugins.OxyPlot/Legend/ChartNodePresenter.cs =================================================================== diff -u -r74cd1965818ae9b23da6cad8776b7da2868be4a7 -r18a617da943368e8294aa31528d2e2379d7318cc --- Core/Plugins/src/Core.Plugins.OxyPlot/Legend/ChartNodePresenter.cs (.../ChartNodePresenter.cs) (revision 74cd1965818ae9b23da6cad8776b7da2868be4a7) +++ Core/Plugins/src/Core.Plugins.OxyPlot/Legend/ChartNodePresenter.cs (.../ChartNodePresenter.cs) (revision 18a617da943368e8294aa31528d2e2379d7318cc) @@ -28,7 +28,7 @@ public override void OnDragDrop(object item, object itemParent, ChartDataCollection target, DragOperations operation, int position) { - var draggedData = item as ChartData; + var draggedData = (ChartData)item; target.List.Remove(draggedData); target.List.Insert(target.List.Count - position, draggedData); target.NotifyObservers(); Index: Core/Plugins/test/Core.Plugins.OxyPlot.Test/ChartingRibbonTest.cs =================================================================== diff -u -reb44708823d5479991162f63376ae85dd944e513 -r18a617da943368e8294aa31528d2e2379d7318cc --- Core/Plugins/test/Core.Plugins.OxyPlot.Test/ChartingRibbonTest.cs (.../ChartingRibbonTest.cs) (revision eb44708823d5479991162f63376ae85dd944e513) +++ Core/Plugins/test/Core.Plugins.OxyPlot.Test/ChartingRibbonTest.cs (.../ChartingRibbonTest.cs) (revision 18a617da943368e8294aa31528d2e2379d7318cc) @@ -134,7 +134,6 @@ var mocks = new MockRepository(); var chart = mocks.StrictMock(); - chart.Expect(c => c.Attach(ribbon)); chart.Expect(c => c.IsPanningEnabled).Return(true); chart.Expect(c => c.IsRectangleZoomingEnabled).Return(true); chart.Expect(c => c.ZoomToAll()); @@ -168,7 +167,6 @@ chart.Expect(c => c.IsPanningEnabled).Return(buttonChecked); chart.Expect(c => c.IsRectangleZoomingEnabled).Return(buttonChecked); - chart.Expect(c => c.Attach(ribbon)); mocks.ReplayAll(); @@ -260,7 +258,6 @@ chart.Expect(c => c.IsPanningEnabled).Return(buttonChecked).Repeat.Twice(); chart.Expect(c => c.IsRectangleZoomingEnabled).Return(buttonChecked).Repeat.Twice(); ; - chart.Expect(c => c.Attach(ribbon)); mocks.ReplayAll();