// Copyright (c) 2017 schick Informatik // Description: // using System.Windows; using bsmd.database; using ENI2.EditControls; using ENI2.Util; using System.Windows.Controls; using System; using System.Windows.Media.Imaging; namespace ENI2.DetailViewControls { /// /// Interaction logic for TowageDetailControl.xaml /// public partial class TowageDetailControl : DetailBaseControl { private Message _towaMessage; private Message _towdMessage; private bool _ctxInitialized = false; public TowageDetailControl() { InitializeComponent(); this.Loaded += TowageDetailControl_Loaded; } private void TowageDetailControl_Loaded(object sender, RoutedEventArgs e) { if (!_ctxInitialized) { this.dataGridTowageOnArrival.ContextMenu.Items.Add(new Separator()); MenuItem copyItem = new MenuItem(); copyItem.Header = Properties.Resources.textCopyTOWATOWD; copyItem.Icon = new Image { Source = new BitmapImage(new Uri("pack://application:,,,/Resources/documents.png")) }; copyItem.Click += new RoutedEventHandler(this.copyItem); this.dataGridTowageOnArrival.ContextMenu.Items.Add(copyItem); _ctxInitialized = true; } } private void copyItem(object sender, RoutedEventArgs e) { // aus dem aktuell selektierten TOWA Element ein neues TOWD Element machen if (this.dataGridTowageOnArrival.SelectedItems != null) { foreach(TOWA selectedTOWA in this.dataGridTowageOnArrival.SelectedItems) { TOWD copyTOWD = new TOWD(); copyTOWD.MessageHeader = _towdMessage; copyTOWD.CopyFromTOWA(selectedTOWA); copyTOWD.Identifier = TOWD.GetNewIdentifier(this._towdMessage.Elements); this._towdMessage.Elements.Add(copyTOWD); this.dataGridTowageOnDeparture.Items.Refresh(); this.SublistElementChanged(Message.NotificationClass.TOWD); } } } public override void Initialize() { base.Initialize(); foreach (Message aMessage in this.Messages) { if (aMessage.MessageNotificationClass == Message.NotificationClass.TOWA) { this._towaMessage = aMessage; this.ControlMessages.Add(aMessage); } if (aMessage.MessageNotificationClass == Message.NotificationClass.TOWD) { this._towdMessage = aMessage; this.ControlMessages.Add(aMessage); } } #region TOWA if (this._towaMessage == null) { this._towaMessage = this.Core.CreateMessage(Message.NotificationClass.TOWA); this.Messages.Add(this._towaMessage); } this.dataGridTowageOnArrival.Initialize(); this.dataGridTowageOnArrival.ItemsSource = this._towaMessage.Elements; this.dataGridTowageOnArrival.AddingNewItem += DataGridTowageOnArrival_AddingNewItem; this.dataGridTowageOnArrival.EditRequested += DataGridTowageOnArrival_EditRequested; this.dataGridTowageOnArrival.DeleteRequested += DataGridTowageOnArrival_DeleteRequested; this.dataGridTowageOnArrival.CreateRequested += DataGridTowageOnArrival_CreateRequested; #endregion #region TOWD if (this._towdMessage == null) { this._towdMessage = this.Core.CreateMessage(Message.NotificationClass.TOWD); this.Messages.Add(this._towdMessage); } this.dataGridTowageOnDeparture.Initialize(); this.dataGridTowageOnDeparture.ItemsSource = this._towdMessage.Elements; this.dataGridTowageOnDeparture.AddingNewItem += DataGridTowageOnDeparture_AddingNewItem; this.dataGridTowageOnDeparture.EditRequested += DataGridTowageOnDeparture_EditRequested; this.dataGridTowageOnDeparture.DeleteRequested += DataGridTowageOnDeparture_DeleteRequested; this.dataGridTowageOnDeparture.CreateRequested += DataGridTowageOnDeparture_CreateRequested; #endregion } #region TOWD grid private void DataGridTowageOnDeparture_CreateRequested() { EditTOWDialog ebd = new EditTOWDialog(); ebd.IsDeparture = true; ebd.TOWD = new TOWD(); ebd.TOWD.Identifier = TOWD.GetNewIdentifier(this._towdMessage.Elements); ebd.TOWD.MessageHeader = this._towdMessage; ebd.AddClicked += () => { ebd.CopyValuesToEntity(); if(!this._towdMessage.Elements.Contains(ebd.TOWD)) this._towdMessage.Elements.Add(ebd.TOWD); this.dataGridTowageOnDeparture.Items.Refresh(); ebd.TOWD = new TOWD(); ebd.TOWD.MessageHeader = _towdMessage; ebd.TOWD.Identifier = TOWD.GetNewIdentifier(this._towdMessage.Elements); this.SublistElementChanged(Message.NotificationClass.TOWD); }; if (ebd.ShowDialog() ?? false) { if(!this._towdMessage.Elements.Contains(ebd.TOWD)) _towdMessage.Elements.Add(ebd.TOWD); this.dataGridTowageOnDeparture.Items.Refresh(); this.SublistElementChanged(Message.NotificationClass.TOWD); } } private void DataGridTowageOnDeparture_DeleteRequested(DatabaseEntity obj) { TOWD towd = obj as TOWD; if (towd != null) { // are you sure dialog is in base class this._towdMessage.Elements.Remove(towd); DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(towd); DatabaseEntity.ResetIdentifiers(this._towdMessage.Elements); this.SublistElementChanged(Message.NotificationClass.TOWD); this.dataGridTowageOnDeparture.Items.Refresh(); } } private void DataGridTowageOnDeparture_EditRequested(DatabaseEntity obj) { EditTOWDialog eld = new EditTOWDialog(); eld.IsDeparture = true; eld.TOWD = obj as TOWD; eld.AddClicked += () => { eld.CopyValuesToEntity(); if(!_towdMessage.Elements.Contains(eld.TOWD)) _towdMessage.Elements.Add(eld.TOWD); this.dataGridTowageOnDeparture.Items.Refresh(); eld.TOWD = new TOWD(); eld.TOWD.Identifier = TOWD.GetNewIdentifier(this._towdMessage.Elements); eld.TOWD.MessageHeader = _towdMessage; this.SublistElementChanged(Message.NotificationClass.TOWD); }; if (eld.ShowDialog() ?? false) { if (!this._towdMessage.Elements.Contains(eld.TOWD)) this._towdMessage.Elements.Add(eld.TOWD); this.dataGridTowageOnDeparture.Items.Refresh(); this.SublistElementChanged(Message.NotificationClass.TOWD); } } private void DataGridTowageOnDeparture_AddingNewItem(object sender, System.Windows.Controls.AddingNewItemEventArgs e) { this.DataGridTowageOnDeparture_CreateRequested(); } #endregion #region TOWA grid private void DataGridTowageOnArrival_CreateRequested() { EditTOWDialog ebd = new EditTOWDialog(); ebd.IsDeparture = false; ebd.TOWA = new TOWA(); ebd.TOWA.Identifier = TOWA.GetNewIdentifier(this._towaMessage.Elements); ebd.TOWA.MessageHeader = this._towaMessage; ebd.AddClicked += () => { ebd.CopyValuesToEntity(); if(!this._towaMessage.Elements.Contains(ebd.TOWA)) this._towaMessage.Elements.Add(ebd.TOWA); this.dataGridTowageOnArrival.Items.Refresh(); ebd.TOWA = new TOWA(); ebd.TOWA.MessageHeader = _towaMessage; ebd.TOWA.Identifier = TOWA.GetNewIdentifier(this._towaMessage.Elements); this.SublistElementChanged(Message.NotificationClass.TOWA); }; if (ebd.ShowDialog() ?? false) { if(!this._towaMessage.Elements.Contains(ebd.TOWA)) _towaMessage.Elements.Add(ebd.TOWA); this.dataGridTowageOnArrival.Items.Refresh(); this.SublistElementChanged(Message.NotificationClass.TOWA); } } private void DataGridTowageOnArrival_DeleteRequested(DatabaseEntity obj) { TOWA towa = obj as TOWA; if (towa != null) { // are you sure dialog is in base class this._towaMessage.Elements.Remove(towa); DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(towa); DatabaseEntity.ResetIdentifiers(this._towaMessage.Elements); this.SublistElementChanged(Message.NotificationClass.TOWA); this.dataGridTowageOnArrival.Items.Refresh(); } } private void DataGridTowageOnArrival_EditRequested(DatabaseEntity obj) { EditTOWDialog eld = new EditTOWDialog(); eld.IsDeparture = false; eld.TOWA = obj as TOWA; eld.AddClicked += () => { eld.CopyValuesToEntity(); if(!_towaMessage.Elements.Contains(eld.TOWA)) _towaMessage.Elements.Add(eld.TOWA); this.dataGridTowageOnArrival.Items.Refresh(); eld.TOWA = new TOWA(); eld.TOWA.Identifier = TOWA.GetNewIdentifier(this._towaMessage.Elements); eld.TOWA.MessageHeader = _towaMessage; this.SublistElementChanged(Message.NotificationClass.TOWA); }; if (eld.ShowDialog() ?? false) { if (!this._towaMessage.Elements.Contains(eld.TOWA)) this._towaMessage.Elements.Add(eld.TOWA); this.dataGridTowageOnArrival.Items.Refresh(); this.SublistElementChanged(Message.NotificationClass.TOWA); } } private void DataGridTowageOnArrival_AddingNewItem(object sender, System.Windows.Controls.AddingNewItemEventArgs e) { this.DataGridTowageOnArrival_CreateRequested(); } #endregion #region Highlighting public override void HighlightErrorMessageContainer() { if (this._towaMessage.HasErrors) HighlightService.HighlightControl(this.groupBoxTowageOnArrival, HighlightService.HighlightStyle.ERROR, this._towaMessage); if (this._towdMessage.HasErrors) HighlightService.HighlightControl(this.groupBoxTowageOnDeparture, HighlightService.HighlightStyle.ERROR, this._towdMessage); } public override void HighlightViolationMessageContainer() { if (this._towaMessage.HasViolations) HighlightService.HighlightControl(this.groupBoxTowageOnArrival, HighlightService.HighlightStyle.VIOLATION, this._towaMessage); if (this._towdMessage.HasViolations) HighlightService.HighlightControl(this.groupBoxTowageOnDeparture, HighlightService.HighlightStyle.VIOLATION, this._towdMessage); } #endregion #region mouse wheel private void ScrollViewer_PreviewMouseWheel(object sender, System.Windows.Input.MouseWheelEventArgs e) { ScrollViewer scv = (ScrollViewer)sender; scv.ScrollToVerticalOffset(scv.VerticalOffset - e.Delta); e.Handled = true; } #endregion } }