Files
TradeBlotter/UIUtils/EditPositionDialogNoStop.xaml.cs

151 lines
5.1 KiB
C#

using MarketData.DataAccess;
using MarketData.MarketDataModel;
using MarketData.Utils;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using System.Windows.Threading;
using System.Media;
using Position=MarketData.Generator.CMTrend.Position;
using MarketData.Generator.Interface;
namespace TradeBlotter.UIUtils
{
/// <summary>
/// Interaction logic for EditPositionDialogNoStop.xaml
/// </summary>
public partial class EditPositionDialogNoStop : Window
{
private ManualResetEvent manualResetEvent=new ManualResetEvent(false);
private String Symbol { get; set; }
private DateTime PurchaseDate { get; set; }
private double PurchasePrice{get;set;}
private bool Result { get; set; }
private EditPositionDialogNoStop(String title,IPurePosition position)
{
this.Background=new SolidColorBrush(Colors.AliceBlue);
this.Owner=Application.Current.MainWindow;
InitializeComponent();
this.Loaded+=new RoutedEventHandler(EditPositionDialog_Loaded);
this.Closing+=Window_Closing;
dpPurchaseDate.SelectedDateChanged+=dpPurchaseDate_SelectionChanged;
Title=title;
Symbol=position.Symbol;
PurchaseDate=position.PurchaseDate;
PurchasePrice=position.PurchasePrice;
txtSymbol.Text=Symbol;
dpPurchaseDate.SelectedDate=PurchaseDate;
UpdatePurchasePrice();
UpdateCompanyName();
}
public ManualResetEvent Event { get { return manualResetEvent; } }
public static IPurePosition Prompt(string title,IPurePosition position)
{
EditPositionDialogNoStop editPositionDialog=new EditPositionDialogNoStop(title,position);
try { editPositionDialog.ShowDialog(); }
catch(Exception) { return null; }
editPositionDialog.Event.WaitOne();
if(editPositionDialog.Result)
{
position.PurchaseDate=editPositionDialog.PurchaseDate;
position.PurchasePrice=editPositionDialog.PurchasePrice;
return position;
}
return null;
}
void EditPositionDialog_Loaded(object sender,RoutedEventArgs e)
{
txtPurchasePrice.Focus();
}
private void btnOk_Click(object sender,RoutedEventArgs e)
{
Result=Validate();
if(!Result)
{
SystemSounds.Beep.Play();
return;
}
Close();
Event.Set();
return;
}
// *******************************************************************************************************************************************************************************
// ********************************************************************************** P U R C H A S E P R I C E ***************************************************************
// *******************************************************************************************************************************************************************************
private void txtPurchasePrice__OnLostFocusHandler(Object sender,RoutedEventArgs routedEventArgs)
{
HandlePurchasePriceEvents();
}
private void txtPurchasePrice_OnKeyDownHandler(object sender,KeyEventArgs e)
{
if(e.Key==Key.Return)
{
HandlePurchasePriceEvents();
}
}
private void HandlePurchasePriceEvents()
{
double value=0.00;
value=Utility.ParseCurrency(txtPurchasePrice.Text);
if(PurchasePrice.Equals(value)) return;
PurchasePrice=value;
UpdatePurchasePrice();
}
private void UpdatePurchasePrice()
{
txtPurchasePrice.Text=Utility.FormatCurrency(PurchasePrice,3);
}
// *********************************************************************************************************************************************************************************
private void dpPurchaseDate_SelectionChanged(object sender,RoutedEventArgs e)
{
if(null==dpPurchaseDate.SelectedDate) return;
PurchaseDate=dpPurchaseDate.SelectedDate.Value;
}
// ***********************************************************************************************************************************************************************************
private void Window_Closing(object sender,System.ComponentModel.CancelEventArgs e)
{
Event.Set();
}
private void btnCancel_Click(object sender,RoutedEventArgs e)
{
Result=false;
Close();
Event.Set();
}
private bool Validate()
{
DateGenerator dateGenerator=new DateGenerator();
if(null==Symbol) return false;
if(Utility.IsEpoch(PurchaseDate)) return false;
if(!dateGenerator.IsMarketOpen(PurchaseDate))return false;
if(double.IsNaN(PurchasePrice)) return false;
return true;
}
private void UpdateCompanyName()
{
CompanyProfile companyProfile=CompanyProfileDA.GetCompanyProfile(Symbol);
if(null==companyProfile||null==companyProfile.CompanyName) return;
lblCompanyName.Content=companyProfile.CompanyName.ToUpper();
}
}
}