119 lines
No EOL
3.8 KiB
C#
119 lines
No EOL
3.8 KiB
C#
using System.ComponentModel;
|
|
using System.Runtime.CompilerServices;
|
|
using JD.Timeline.View;
|
|
using JD.Timeline.View.ScoreView;
|
|
using JD.Timeline.View.SnipeView;
|
|
using JetBrains.Annotations;
|
|
using TeaBox.ObjectModel;
|
|
using PropertyChangedEventArgs = JD.PropertyService.PropertyChangedEventArgs;
|
|
|
|
namespace JD.Timeline.Document
|
|
{
|
|
/// <summary>
|
|
/// DanceTapeDocumentView is responsible of viewing and editing a Dance-Tape (.dtape). The view consist of a single TRecControl
|
|
/// </summary>
|
|
public class DanceTapeDocumentView : TapeDocumentView, INotifyPropertyChanged
|
|
{
|
|
#region Fields and Properties
|
|
|
|
private ScoreViewType _scoreViewTypeSelected;
|
|
private ScoringPlatform _platformSelected;
|
|
|
|
public ScoreViewManager ScoreViewManager { get; set; }
|
|
|
|
public event PropertyChangedEventHandler PropertyChanged;
|
|
|
|
/// <summary>
|
|
/// Represents whether currently viewed Score Data is Sniping or Scre Tweaking
|
|
/// </summary>
|
|
public ScoreViewType ScoreViewTypeSelected
|
|
{
|
|
get
|
|
{
|
|
return _scoreViewTypeSelected;
|
|
}
|
|
set
|
|
{
|
|
_scoreViewTypeSelected = value;
|
|
|
|
if (PropertyChanged != null)
|
|
{
|
|
PropertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs("ScoreViewTypeSelected"));
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Shows Platform on which currently the Score view is representing its Sniping/ Score Tweaking data
|
|
/// </summary>
|
|
public ScoringPlatform PlatformSelected
|
|
{
|
|
get { return _platformSelected; }
|
|
set
|
|
{
|
|
_platformSelected = value;
|
|
if (PropertyChanged != null)
|
|
{
|
|
PropertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs("PlatformSelected"));
|
|
}
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Constructor
|
|
|
|
public DanceTapeDocumentView(TapeDocument document)
|
|
: base(document)
|
|
{
|
|
ScoreViewTypeSelected = PropertyService.PropertyService.Properties.Get("ScoreViewType", ScoreViewType.ScoreTweaking);
|
|
|
|
// from the application properties get the selected platform.
|
|
PlatformSelected = PropertyService.PropertyService.Properties.Get("ScoringPlatform", ScoringPlatform.Orbis);
|
|
|
|
PropertyService.PropertyService.Properties.PropertyChanged += OnScoreViewOrPlatformPropertyChanged;
|
|
|
|
if (ScoreViewTypeSelected == ScoreViewType.ScoreTweaking)
|
|
{
|
|
ScoreViewManager = new TweakViewManager(this);
|
|
}
|
|
else
|
|
{
|
|
ScoreViewManager = new SnipeViewManager(this);
|
|
}
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region EventHandlers
|
|
|
|
private void OnScoreViewOrPlatformPropertyChanged(object sender, PropertyChangedEventArgs e)
|
|
{
|
|
if (e.PropertyName == "ScoreViewType")
|
|
{
|
|
ScoreViewTypeSelected = (ScoreViewType)e.NewValue;
|
|
|
|
if (ScoreViewManager != null)
|
|
{
|
|
ScoreViewManager.ClearView();
|
|
}
|
|
|
|
ScoreViewManager = new TweakViewManager(this);
|
|
}
|
|
else if (e.PropertyName == "ScoringPlatform")
|
|
{
|
|
PlatformSelected = (ScoringPlatform)e.NewValue;
|
|
}
|
|
}
|
|
|
|
[NotifyPropertyChangedInvocator]
|
|
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
|
|
{
|
|
var handler = PropertyChanged;
|
|
if (handler != null) handler(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
} |