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 { /// /// Interaction logic for EditPositionDialogNoStop.xaml /// 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(); } } }