From 57bc038357209e6fa2fe9704054ac783af323a6b Mon Sep 17 00:00:00 2001
From: Thomas Hilscher <thomas.hilscher@gmail.com>
Date: Fri, 31 Mar 2023 22:29:02 +0200
Subject: [PATCH] Fixed AreaCommitmentWindow buttons

---
 Elwig/Windows/AreaCommAdminWindow.xaml    |  26 ++--
 Elwig/Windows/AreaCommAdminWindow.xaml.cs | 152 ++++++++++++++++------
 2 files changed, 127 insertions(+), 51 deletions(-)

diff --git a/Elwig/Windows/AreaCommAdminWindow.xaml b/Elwig/Windows/AreaCommAdminWindow.xaml
index cb82cf2..5d296e6 100644
--- a/Elwig/Windows/AreaCommAdminWindow.xaml
+++ b/Elwig/Windows/AreaCommAdminWindow.xaml
@@ -81,7 +81,7 @@
             <Button x:Name="ContractSaveButton" Content="Speichern" Click="ContractSaveButton_Click" IsEnabled="False" Visibility="Hidden"
                     HorizontalAlignment="Left" VerticalAlignment="Bottom" Margin="10,10,0,10" Width="110" Grid.Column="0"/>
             <Button x:Name="ContractCancelButton" Content="Abbrechen" Click="ContractCancelButton_Click" IsEnabled="False" Visibility="Hidden" IsCancel="True"
-                    HorizontalAlignment="Right" VerticalAlignment="Bottom" Margin="0,10,10,10" Width="110" Grid.Column="1"/>
+                    HorizontalAlignment="Left" VerticalAlignment="Bottom" Margin="5,10,0,10" Width="110" Grid.Column="1"/>
 
 
 
@@ -121,16 +121,16 @@
                 </Grid.ColumnDefinitions>
 
                 <Label Content="VNr.:" Margin="10,10,0,0" Grid.Column="0"/>
-                <TextBox x:Name="VNr" Margin="0,10,0,0" Width="48" Grid.Column="1" TextAlignment="Right" HorizontalAlignment="Left"/>
+                <TextBox x:Name="VNrInput" Margin="0,10,0,0" Width="48" Grid.Column="1" TextAlignment="Right" HorizontalAlignment="Left"/>
                 
                 <Label Content="MgNr.:" Margin="10,40,0,0" Grid.Column="0"/>
-                <TextBox x:Name="MgNr" Margin="0,40,0,0" Width="48" Grid.Column="1" TextAlignment="Right" HorizontalAlignment="Left"/>
+                <TextBox x:Name="MgNrInput" Margin="0,40,0,0" Width="48" Grid.Column="1" TextAlignment="Right" HorizontalAlignment="Left"/>
                 
                 <Label Content="Von:" Margin="10,10,0,0" Grid.Column="2"/>
-                <TextBox x:Name="YearFrom" Margin="0,10,0,0" Width="100" Grid.Column="3" TextAlignment="Right" HorizontalAlignment="Left"/>
+                <TextBox x:Name="YearFromInput" Margin="0,10,0,0" Width="100" Grid.Column="3" TextAlignment="Right" HorizontalAlignment="Left"/>
                 
                 <Label Content="Bis:" Margin="10,40,0,0" Grid.Column="2"/>
-                <TextBox x:Name="YearTo" Margin="0,40,0,0" Width="100" Grid.Column="3" TextAlignment="Right" HorizontalAlignment="Left"/>
+                <TextBox x:Name="YearToInput" Margin="0,40,0,0" Width="100" Grid.Column="3" TextAlignment="Right" HorizontalAlignment="Left"/>
             </Grid>
         </GroupBox>
         
@@ -143,19 +143,19 @@
 
                 <Label Content="Gemeinde:" Margin="10,10,0,0" Grid.Column="0"/>
                 <ComboBox x:Name="KgInput" ItemTemplate="{StaticResource KgTemplate}" TextSearch.TextPath="Name"
-                          Width="200" HorizontalAlignment="Left"
+                          Width="200" HorizontalAlignment="Left" SelectionChanged="ComboBox_SelectionChanged"
                           Margin="0,10,10,0" Grid.Column="1"/>
                 
                 <Label Content="Ried:" Margin="10,40,0,0" Grid.Column="0"/>
                 <ComboBox x:Name="RdInput" ItemTemplate="{StaticResource KgTemplate}" TextSearch.TextPath="Name"
-                          Width="200" HorizontalAlignment="Left"
+                          Width="200" HorizontalAlignment="Left" SelectionChanged="ComboBox_SelectionChanged"
                           Margin="0,40,0,0" Grid.Column="1"/>
                 
                 <Label Content="Parzelle:" Margin="10,70,0,0" Grid.Column="0"/>
-                <TextBox x:Name="GstNr" Margin="0,70,0,0" Width="100" Grid.Column="1" TextAlignment="Right" HorizontalAlignment="Left"/>
+                <TextBox x:Name="GstNrInput" Margin="0,70,0,0" Width="100" Grid.Column="1" TextAlignment="Right" HorizontalAlignment="Left"/>
 
-                <Label Content="Fläche:" Margin="10,100,0,0" Grid.Column="0"/>
-                <TextBox x:Name="Area" Margin="0,100,0,0" Width="100" Grid.Column="1" TextAlignment="Right" HorizontalAlignment="Left"/>
+                <Label Content="Fläche (m²):" Margin="10,100,0,0" Grid.Column="0"/>
+                <TextBox x:Name="AreaInput" Margin="0,100,0,0" Width="100" Grid.Column="1" TextAlignment="Right" HorizontalAlignment="Left"/>
             </Grid>
 
         </GroupBox>
@@ -169,17 +169,17 @@
 
                 <Label Content="Sorte:" Margin="10,10,0,0" Grid.Column="0"/>
                 <ComboBox x:Name="SortInput" ItemTemplate="{StaticResource KgTemplate}" TextSearch.TextPath="Name"
-                          Width="200" HorizontalAlignment="Left"
+                          Width="200" HorizontalAlignment="Left" SelectionChanged="ComboBox_SelectionChanged"
                           Margin="0,10,10,0" Grid.Column="1"/>
 
                 <Label Content="Attribut:" Margin="10,40,0,0" Grid.Column="0"/>
                 <ComboBox x:Name="AttrInput" ItemTemplate="{StaticResource KgTemplate}" TextSearch.TextPath="Name"
-                          Width="200" HorizontalAlignment="Left"
+                          Width="200" HorizontalAlignment="Left" SelectionChanged="ComboBox_SelectionChanged"
                           Margin="0,40,10,0" Grid.Column="1"/>
 
                 <Label Content="Bewirt. Art:" Margin="10,70,0,0" Grid.Column="0"/>
                 <ComboBox x:Name="CultInput" ItemTemplate="{StaticResource KgTemplate}" TextSearch.TextPath="Name"
-                          Width="200" HorizontalAlignment="Left"
+                          Width="200" HorizontalAlignment="Left" SelectionChanged="ComboBox_SelectionChanged"
                           Margin="0,70,10,0" Grid.Column="1"/>
 
             </Grid>
diff --git a/Elwig/Windows/AreaCommAdminWindow.xaml.cs b/Elwig/Windows/AreaCommAdminWindow.xaml.cs
index b4aae10..80b44bc 100644
--- a/Elwig/Windows/AreaCommAdminWindow.xaml.cs
+++ b/Elwig/Windows/AreaCommAdminWindow.xaml.cs
@@ -19,9 +19,20 @@ namespace Elwig.Windows {
             this.member = member;
             Title = $"Flächenbindungen - {member.FamilyName} {member.GivenName} - Elwig";
             RefreshContractList();
+            ExemptInputs = new Control[] {
+                ContractList, AreaCommitmentList, NewContractButton, DeleteContractButton,
+                ContractSaveButton, ContractCancelButton, NewAreaCommitmentButton, 
+                EditAreaCommitmentButton, DeleteAreaCommitmentButton, AreaCommitmentSaveButton,
+                AreaCommitmentResetButton, AreaCommitmentCancelButton
+            };
+            RequiredInputs = new Control[] {
+                VNrInput, MgNrInput, YearFromInput, YearToInput, KgInput,
+                GstNrInput, AreaInput, SortInput, CultInput
+            };
         }
 
         private void Window_Loaded(object sender, RoutedEventArgs e) {
+            //TODO Sources von Ried sollten sich auf Gemeinde beziehen
             KgInput.ItemsSource = Context.WbKgs.Select(k => k.Kg).OrderBy(k => k.Name).ToList();
             RdInput.ItemsSource = Context.WbRde.OrderBy(r => r.Name).ToList();
             SortInput.ItemsSource = Context.WineVarieties.OrderBy(s => s.Name).ToList();
@@ -58,34 +69,42 @@ namespace Elwig.Windows {
 
         private void RefreshInputs(bool validate = false) {
             ClearInputStates();
+            Contract? c = (Contract)ContractList.SelectedItem;
             AreaCommitment? a = (AreaCommitment)AreaCommitmentList.SelectedItem;
+
+            if (c != null) {
+                DeleteContractButton.IsEnabled = true;
+                NewAreaCommitmentButton.IsEnabled = true;
+            } else {
+                DeleteContractButton.IsEnabled = false;
+                NewAreaCommitmentButton.IsEnabled = false;
+            }
+
             if (a != null) {
-                //EditMemberButton.IsEnabled = true;
-                //DeleteMemberButton.IsEnabled = true;
-                //AreaCommitmentButton.IsEnabled = true;
+                EditAreaCommitmentButton.IsEnabled = true;
+                DeleteAreaCommitmentButton.IsEnabled = true;
                 FillInputs(a);
             } else {
-                //EditMemberButton.IsEnabled = false;
-                //DeleteMemberButton.IsEnabled = false;
-                //AreaCommitmentButton.IsEnabled = false;
+                EditAreaCommitmentButton.IsEnabled = false;
+                DeleteAreaCommitmentButton.IsEnabled = false;
                 ClearInputs();
             }
-            //if (!validate) ClearInputStates();
+            if (!validate) ClearInputStates();
             GC.Collect();
         }
 
         private void FillInputs(AreaCommitment a) {
             ClearOriginalValues();
 
-            VNr.Text = a.VNr.ToString();
-            MgNr.Text = a.Contract.MgNr.ToString();
-            YearFrom.Text = a.Contract.YearFrom.ToString();
-            YearTo.Text = a.Contract.YearTo.ToString();
+            VNrInput.Text = a.VNr.ToString();
+            MgNrInput.Text = a.Contract.MgNr.ToString();
+            YearFromInput.Text = a.Contract.YearFrom.ToString();
+            YearToInput.Text = a.Contract.YearTo.ToString();
 
             KgInput.SelectedItem = a.Kg.Kg;
             RdInput.SelectedItem = a.Rd;
-            GstNr.Text = a.GstNr;
-            Area.Text = a.Area.ToString() + "m²";
+            GstNrInput.Text = a.GstNr;
+            AreaInput.Text = a.Area.ToString();
 
             SortInput.SelectedItem = a.WineVar;
             AttrInput.SelectedItem = a.WineAttr;
@@ -98,8 +117,11 @@ namespace Elwig.Windows {
             IsCreating = true;
             AreaCommitmentList.IsEnabled = false;
             AreaCommitmentList.SelectedItem = null;
-            HideNewEditDeleteButtons();
-            ShowSaveResetCancelButtons();
+            ContractList.IsEnabled = false;
+            ContractList.SelectedItem = null;
+            HideAreaCommitmentNewEditDeleteButtons();
+            ShowAreaCommitmentSaveResetCancelButtons();
+            DisableContractNewDeleteButtons();
             UnlockInputs();
             InitInputs();
         }
@@ -111,8 +133,9 @@ namespace Elwig.Windows {
             IsEditing = true;
             AreaCommitmentList.IsEnabled = false;
 
-            HideNewEditDeleteButtons();
-            ShowSaveResetCancelButtons();
+            HideAreaCommitmentNewEditDeleteButtons();
+            ShowAreaCommitmentSaveResetCancelButtons();
+            DisableContractNewDeleteButtons();
             UnlockInputs();
         }
 
@@ -132,10 +155,13 @@ namespace Elwig.Windows {
 
         private void NewContractButton_Click(object sender, RoutedEventArgs evt) {
             IsCreating = true;
+            ContractList.IsEnabled = false;
+            ContractList.SelectedItem = null;
             AreaCommitmentList.IsEnabled = false;
             AreaCommitmentList.SelectedItem = null;
-            HideNewEditDeleteButtons();
-            ShowSaveResetCancelButtons();
+            HideContractNewDeleteButtons();
+            ShowContractSaveCancelButtons();
+            DisableAreaCommitmentNewEditDeleteButtons();
             UnlockInputs();
             InitInputs();
         }
@@ -150,7 +176,7 @@ namespace Elwig.Windows {
             if (r == MessageBoxResult.Yes) {
                 Context.Remove(c);
                 Context.SaveChanges();
-                RefreshAreaCommitmentList();
+                RefreshContractList();
             }
         }
 
@@ -165,7 +191,7 @@ namespace Elwig.Windows {
 
             a.KgNr = ((AT_Kg)KgInput.SelectedItem).KgNr;
             a.RdNr = ((WbRd)RdInput.SelectedItem).RdNr;
-            a.GstNr = GstNr.Text;
+            a.GstNr = GstNrInput.Text;
 
             try {
                 if (IsEditing)
@@ -182,10 +208,12 @@ namespace Elwig.Windows {
             IsEditing = false;
             IsCreating = false;
             AreaCommitmentList.IsEnabled = true;
-            HideSaveResetCancelButtons();
-            ShowNewEditDeleteButtons();
+            ContractList.IsEnabled = true;
+            HideAreaCommitmentSaveResetCancelButtons();
+            ShowAreaCommitmentNewEditDeleteButtons();
+            EnableContractNewDeleteButtons();
             LockInputs();
-            RefreshAreaCommitmentList();
+            RefreshContractList();
         }
 
         private void AreaCommitmentResetButton_Click(object sender, RoutedEventArgs evt) {
@@ -201,8 +229,10 @@ namespace Elwig.Windows {
             IsEditing = false;
             IsCreating = false;
             AreaCommitmentList.IsEnabled = true;
-            HideSaveResetCancelButtons();
-            ShowNewEditDeleteButtons();
+            ContractList.IsEnabled = true;
+            HideAreaCommitmentSaveResetCancelButtons();
+            ShowAreaCommitmentNewEditDeleteButtons();
+            EnableContractNewDeleteButtons();
             RefreshInputs();
             ClearInputStates();
             LockInputs();
@@ -216,8 +246,10 @@ namespace Elwig.Windows {
             IsEditing = false;
             IsCreating = false;
             ContractList.IsEnabled = true;
-            HideSaveResetCancelButtons();
-            ShowNewEditDeleteButtons();
+            AreaCommitmentList.IsEnabled = true;
+            HideContractSaveCancelButtons();
+            ShowContractNewDeleteButtons();
+            EnableAreaCommitmentNewEditDeleteButtons();
             RefreshInputs();
             ClearInputStates();
             LockInputs();
@@ -234,7 +266,55 @@ namespace Elwig.Windows {
             FillOriginalValues();
         }
 
-        private void ShowSaveResetCancelButtons() {
+        private void EnableContractNewDeleteButtons() {
+            NewContractButton.IsEnabled = true;
+            DeleteContractButton.IsEnabled = ContractList.SelectedItem != null;
+        }
+
+        private void DisableContractNewDeleteButtons() {
+            NewContractButton.IsEnabled = false;
+            DeleteContractButton.IsEnabled = false;
+        }
+
+        private void DisableAreaCommitmentNewEditDeleteButtons() {
+            NewAreaCommitmentButton.IsEnabled = false;
+            EditAreaCommitmentButton.IsEnabled = false;
+            DeleteAreaCommitmentButton.IsEnabled = false;
+        }
+
+        private void EnableAreaCommitmentNewEditDeleteButtons() {
+            NewAreaCommitmentButton.IsEnabled = ContractList.SelectedItem != null;
+            EditAreaCommitmentButton.IsEnabled = AreaCommitmentList.SelectedItem != null;
+            DeleteAreaCommitmentButton.IsEnabled = AreaCommitmentList.SelectedItem != null;
+        }
+
+        private void ShowContractSaveCancelButtons() {
+            ContractSaveButton.IsEnabled = false;
+            ContractCancelButton.IsEnabled = true;
+            ContractSaveButton.Visibility = Visibility.Visible;
+            ContractCancelButton.Visibility = Visibility.Visible;
+        }
+
+        private void HideContractSaveCancelButtons() {
+            ContractSaveButton.IsEnabled = false;
+            ContractCancelButton.IsEnabled = false;
+            ContractSaveButton.Visibility = Visibility.Hidden;
+            ContractCancelButton.Visibility = Visibility.Hidden;
+        }
+
+        private void ShowContractNewDeleteButtons() {
+            EnableContractNewDeleteButtons();
+            NewContractButton.Visibility = Visibility.Visible;
+            DeleteContractButton.Visibility = Visibility.Visible;
+        }
+
+        private void HideContractNewDeleteButtons() {
+            DisableContractNewDeleteButtons();
+            NewContractButton.Visibility = Visibility.Hidden;
+            DeleteContractButton.Visibility = Visibility.Hidden;
+        }
+
+        private void ShowAreaCommitmentSaveResetCancelButtons() {
             AreaCommitmentSaveButton.IsEnabled = false;
             AreaCommitmentResetButton.IsEnabled = false;
             AreaCommitmentCancelButton.IsEnabled = true;
@@ -243,7 +323,7 @@ namespace Elwig.Windows {
             AreaCommitmentCancelButton.Visibility = Visibility.Visible;
         }
 
-        private void HideSaveResetCancelButtons() {
+        private void HideAreaCommitmentSaveResetCancelButtons() {
             AreaCommitmentSaveButton.IsEnabled = false;
             AreaCommitmentResetButton.IsEnabled = false;
             AreaCommitmentCancelButton.IsEnabled = false;
@@ -252,19 +332,15 @@ namespace Elwig.Windows {
             AreaCommitmentCancelButton.Visibility = Visibility.Hidden;
         }
 
-        private void ShowNewEditDeleteButtons() {
-            NewAreaCommitmentButton.IsEnabled = true;
-            EditAreaCommitmentButton.IsEnabled = AreaCommitmentList.SelectedItem != null;
-            DeleteAreaCommitmentButton.IsEnabled = AreaCommitmentList.SelectedItem != null;
+        private void ShowAreaCommitmentNewEditDeleteButtons() {
+            EnableAreaCommitmentNewEditDeleteButtons();
             NewAreaCommitmentButton.Visibility = Visibility.Visible;
             EditAreaCommitmentButton.Visibility = Visibility.Visible;
             DeleteAreaCommitmentButton.Visibility = Visibility.Visible;
         }
 
-        private void HideNewEditDeleteButtons() {
-            NewAreaCommitmentButton.IsEnabled = false;
-            EditAreaCommitmentButton.IsEnabled = false;
-            DeleteAreaCommitmentButton.IsEnabled = false;
+        private void HideAreaCommitmentNewEditDeleteButtons() {
+            DisableAreaCommitmentNewEditDeleteButtons();
             NewAreaCommitmentButton.Visibility = Visibility.Hidden;
             EditAreaCommitmentButton.Visibility = Visibility.Hidden;
             DeleteAreaCommitmentButton.Visibility = Visibility.Hidden;