diff --git a/WpfApp1/MainWindow.xaml.cs b/WpfApp1/MainWindow.xaml.cs index aa2d9db..a0ed87c 100644 --- a/WpfApp1/MainWindow.xaml.cs +++ b/WpfApp1/MainWindow.xaml.cs @@ -34,6 +34,8 @@ namespace WpfApp1 public bool aChanger = false; //Booléen qui permet de savoir si l'utilisateur a déjà changer la zone de la listBox + List lesZones = new List() { Zone.ARCTIQUE, Zone.ATLANTIQUE, Zone.INDIEN, Zone.PACIFIQUE }; + public MainWindow() { @@ -45,8 +47,79 @@ namespace WpfApp1 Mgr.Requins.CollectionChanged += Requins_CollectionChanged; + var ucAccueil = new userControlAcceuil { zone = zonePage }; + contentControl.Content = ucAccueil; + ucAccueil.AccueilWeChange += UcAccueil_AccueilWeChange; + + } + + /// + /// Evénement associé à l'EventHandler AccueilWeChange de l'UserControlAccueil + /// + /// + /// + private void UcAccueil_AccueilWeChange(object sender, AccueilWeChangeEventArgs e) + { + var ucAccueil = new userControlAcceuil { zone = zonePage }; + contentControl.Content = ucAccueil; + ucAccueil.AccueilWeChange += UcAccueil_AccueilWeChange; + ChangeRegionAvecMap(e.Zone); + } + + + /// + /// Evénement associé à l'EventHandler AccueilWeGo de l'UserControlRequin + /// + /// + /// + private void UcDesc_AccueilWeGo(object sender, AccueilWeGoEventArgs e) + { + var ucAccueil = new userControlAcceuil { zone = zonePage }; + contentControl.Content = ucAccueil; + ucAccueil.AccueilWeChange += UcAccueil_AccueilWeChange; + + } + + /// + /// Evénement associé à l'EventHandler EditWeGo de l'UserControlDescription + /// + /// + /// + private void UcDesc_EditWeGo(object sender, EditWeGoEventArgs e) + { + var ucEdit = new UserControlEdit { requin = e.Requin }; + contentControl.Content = ucEdit; //Change le content control + ucEdit.DescWeGo += UcEdit_DescWeGo; //lie l'événement DescWeGo à l'UserControlEdit + } + + /// + /// Evénement associé à l'EventHandler DescriptionWeGo de l'UserControlRequin + /// + /// + /// + private void GoDesc_DescriptionWeGo(object sender, DescriptionWeGoEventArgs args) + { + var ucDesc = new userControlDescription { requin = args.Requin, zone = zonePage }; + contentControl.Content = ucDesc; //Change le content control + ucDesc.EditWeGo += UcDesc_EditWeGo; //lie l'événement EditWeGo à l'UserControlDescription + ucDesc.AccueilWeGo += UcDesc_AccueilWeGo; //lie l'événement EditWeGo à l'UserControlAccueil + } + + /// + /// Evénement associé à l'EventHandler DescWeGo de l'UserControlEdit + /// + /// + /// + private void UcEdit_DescWeGo(object sender, DescWeGoEventArgs e) + { + var ucDesc = new userControlDescription { requin = e.Requin, zone = zonePage }; + contentControl.Content = ucDesc; //Change le content control + ucDesc.EditWeGo += UcDesc_EditWeGo; //lie l'événement EditWeGo à l'UserControlDescription + ucDesc.AccueilWeGo += UcDesc_AccueilWeGo; //lie l'événement EditWeGo à l'UserControlAccueil } + + /// /// Evénement qui est déclenché lorsque l'ObservableCollection change pour mettre à jour l'affichage /// @@ -134,34 +207,6 @@ namespace WpfApp1 ChangerAffichage(z); } - /// - /// Méthode qui permet de changer le content control en userControlDescription - /// - /// - public void ContentControlSwapDes(Requin req) - { - contentControl.Content = new userControlDescription { requin = req }; - } - - - /// - /// Méthode qui permet de changer le content control en userControlAcceuil - /// - public void ContentControlSwapAcc() - { - - contentControl.Content = new userControlAcceuil { zone = zonePage }; - } - - - /// - /// Méthode qui permet de changer le content control en userControlEdit - /// - /// - public void ContentControlSwapEdit(Requin req) - { - contentControl.Content = new UserControlEdit { requin = req }; - } /// @@ -186,7 +231,9 @@ namespace WpfApp1 viderListBox(); foreach (Requin req in Mgr.Requins) { - laListe.Items.Add(new UserControlRequin { requin = req , type = UCrequinType.normal }) ; + var goDesc = new UserControlRequin { requin = req, type = UCrequinType.normal }; + goDesc.DescriptionWeGo += GoDesc_DescriptionWeGo; //lie l'événement DescriptionWeGo à tous les UserControlRequin de la listBox + laListe.Items.Add(goDesc); } } @@ -215,12 +262,16 @@ namespace WpfApp1 if (test > 0) { //Ajoute un userControlRequin si le requin a bien une zone en commun avec la zone donnée en paramètre - laListe.Items.Add(new UserControlRequin { requin = req }); + var goDesc = new UserControlRequin { requin = req, type = UCrequinType.normal }; + goDesc.DescriptionWeGo += GoDesc_DescriptionWeGo; //lie l'événement DescriptionWeGo à tous les UserControlRequin de la listBox + laListe.Items.Add(goDesc); } test = 0; } //Change le content control en userControlAcceuil - contentControl.Content = new userControlAcceuil { zone = zone }; + var ucAccueil = new userControlAcceuil { zone = zone }; + contentControl.Content = ucAccueil; + ucAccueil.AccueilWeChange += UcAccueil_AccueilWeChange; //Lie l'événement AccueilWeChange au nouvel userControlAccueil } /// @@ -249,7 +300,9 @@ namespace WpfApp1 nvReq = Mgr.RechercherRequins(Mgr.Requins, zonePage, rech); foreach(Requin req in nvReq) { - laListe.Items.Add(new UserControlRequin { requin = req }); + var goDesc = new UserControlRequin { requin = req, type = UCrequinType.normal }; + goDesc.DescriptionWeGo += GoDesc_DescriptionWeGo; //lie l'événement DescriptionWeGo à tous les UserControlRequin de la listBox + laListe.Items.Add(goDesc); } } else @@ -258,7 +311,10 @@ namespace WpfApp1 } if (rech == "Shrek" || rech=="shrek") { - laListe.Items.Add(new UserControlRequin { requin = new Requin("Shrek", "Ogre", "I see you are a person of culture as well.\n\nFais ton grrrrr", "Images/shrekin.png", "Videos/shrekin.mp4", "Images/shrekMap.png", Conservation.EW, null, "GET OUT OF MY SEA") }); + Requin req = new Requin("Shrek", "Ogre", "I see you are a person of culture as well.\n\nFais ton grrrrr", "Images/shrekin.png", "Videos/shrekin.mp4", "Images/shrekMap.png", Conservation.EW, null, "GET OUT OF MY SEA"); + var goDesc = new UserControlRequin { requin = req, type = UCrequinType.normal }; + goDesc.DescriptionWeGo += GoDesc_DescriptionWeGo; //lie l'événement DescriptionWeGo à tous les UserControlRequin de la listBox + laListe.Items.Add(goDesc); } } } diff --git a/WpfApp1/UserControlEdit.xaml.cs b/WpfApp1/UserControlEdit.xaml.cs index f5e6240..0bc5861 100644 --- a/WpfApp1/UserControlEdit.xaml.cs +++ b/WpfApp1/UserControlEdit.xaml.cs @@ -17,6 +17,14 @@ using System.Windows.Shapes; namespace WpfApp1 { + public class DescWeGoEventArgs : EventArgs + { + public Requin Requin { get; private set; } + + public DescWeGoEventArgs(Requin requin) => Requin = requin; + } + + /// /// Logique d'interaction pour UserControlEdit.xaml /// @@ -60,6 +68,12 @@ namespace WpfApp1 Conservation.NE }; + public event EventHandler DescWeGo; + + protected virtual void OnDescWeGo(DescWeGoEventArgs args) + => DescWeGo?.Invoke(this, args); + + /// /// Méthode qui permet de mettre à jour l'affichage de la page à partir d'un requin @@ -123,7 +137,7 @@ namespace WpfApp1 private void exit_Click(object sender, RoutedEventArgs e) { //Change le content control de la main window en UserControlDescription - ((MainWindow)System.Windows.Application.Current.MainWindow).ContentControlSwapDes(requin); + OnDescWeGo(new DescWeGoEventArgs(requin)); } @@ -216,7 +230,7 @@ namespace WpfApp1 Mgr.ModifieRequin(Mgr.Requins.SingleOrDefault(r => r.Equals(req)), req); } //Change le content control de la main window en UserControlDesscription - ((MainWindow)System.Windows.Application.Current.MainWindow).ContentControlSwapDes(requin); + OnDescWeGo(new DescWeGoEventArgs(requin)); } else { @@ -229,7 +243,7 @@ namespace WpfApp1 { Mgr.ModifieRequin(Mgr.Requins.SingleOrDefault(r => r.Equals(req)), req); } - ((MainWindow)System.Windows.Application.Current.MainWindow).ContentControlSwapDes(requin); + OnDescWeGo(new DescWeGoEventArgs(requin)); } } diff --git a/WpfApp1/UserControlPosition.xaml.cs b/WpfApp1/UserControlPosition.xaml.cs index 9a4308f..a2f2f2f 100644 --- a/WpfApp1/UserControlPosition.xaml.cs +++ b/WpfApp1/UserControlPosition.xaml.cs @@ -19,6 +19,7 @@ namespace WpfApp1 { /// /// Logique d'interaction pour UserControlPosition.xaml + /// Le userControl que l'on aurait utilisé pour afficher les zones des requins sur la carte /// public partial class UserControlPosition : UserControl { diff --git a/WpfApp1/UserControlRequin.xaml.cs b/WpfApp1/UserControlRequin.xaml.cs index 7a6b22c..0356272 100644 --- a/WpfApp1/UserControlRequin.xaml.cs +++ b/WpfApp1/UserControlRequin.xaml.cs @@ -18,6 +18,19 @@ using System.Windows.Shapes; namespace WpfApp1 { + + /// + /// Classe DescriptionWeGoEventArgs qui implémente EventArgs + /// Elle permet de créer un argument qui permet de transformer le content control de la main window en USerControlDescription après avoir cliquer sur le UserControlRequin + /// + public class DescriptionWeGoEventArgs : EventArgs + { + public Requin Requin { get; private set; } + + public DescriptionWeGoEventArgs(Requin requin) => Requin = requin; + } + + /// /// Logique d'interaction pour UserControlRequin.xaml /// @@ -30,25 +43,40 @@ namespace WpfApp1 public UserControlRequin() { InitializeComponent(); - } + /// + /// Event Handler de DescriptionWeGoEventArgs + /// + public event EventHandler DescriptionWeGo; + + //L'événement qui permet de passer à l'UserControlDescription + protected virtual void OnDescriptionWeGo(DescriptionWeGoEventArgs args) + => DescriptionWeGo?.Invoke(this, args); + + + + /// + /// Evénement qui est déclencher quand l'utilisateur clique sur l'userControl + /// + /// + /// public void UserControlReq_MouseDown(object sender, MouseButtonEventArgs e) { Mgr.SelectedRequin = requin; if (type == UCrequinType.normal) { - ((MainWindow)System.Windows.Application.Current.MainWindow).ContentControlSwapDes(requin); + OnDescriptionWeGo(new DescriptionWeGoEventArgs(requin)); //Déclenche l'événement OnDescriptionWeGo } else if (type == UCrequinType.edit) { - var descEdit = new DescriptionEdit { requin = requin, requinOld = Mgr.GetRequin(requin) }; + var descEdit = new DescriptionEdit { requin = requin, requinOld = Mgr.GetRequin(requin) }; //Ouvre la page DescriptionEdit descEdit.ShowDialog(); } else if (type == UCrequinType.add) { - var descAdd = new DescriptionAdd { requin = requin }; + var descAdd = new DescriptionAdd { requin = requin }; //Ouvre la page DescriptionAdd descAdd.ShowDialog(); } } @@ -65,11 +93,18 @@ namespace WpfApp1 public UCrequinType type; + + /// + /// Méthode qui permet de mettre à jour l'affichage de l'userControl + /// + /// public void uptadeUi(Requin requin) { nameReq.Text = requin.Nom; sciName.Text = requin.NomSci; var url = "@" + requin.Photo; + + //Test si l'image viens du dossier Image ou d'internet if (requin.Photo.Contains("Images/")) { image.Source = new BitmapImage(new Uri(requin.Photo, UriKind.Relative)); diff --git a/WpfApp1/ValiderSubmit.xaml.cs b/WpfApp1/ValiderSubmit.xaml.cs index dc92027..cd90f35 100644 --- a/WpfApp1/ValiderSubmit.xaml.cs +++ b/WpfApp1/ValiderSubmit.xaml.cs @@ -29,20 +29,30 @@ namespace WpfApp1 { InitializeComponent(); - Mgr.RequinsEdit.CollectionChanged += RequinsEdit_CollectionChanged; - Mgr.RequinsAdd.CollectionChanged += RequinsAdd_CollectionChanged; + Mgr.RequinsEdit.CollectionChanged += RequinsEdit_CollectionChanged; //Lie l'événement RequinsEdit_CollectionChanged à la ObservableCollection RequinsEdit + Mgr.RequinsAdd.CollectionChanged += RequinsAdd_CollectionChanged; //Lie l'événement RequinsEdit_CollectionChanged à la ObservableCollection RequinsAdd ChargerUCAdd(); ChargerUCEdit(); } + /// + /// Evénement qui se déclenche quand l'ObservableCollection RequinsAdd change puis met à jour l'affichage + /// + /// + /// private void RequinsAdd_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e) { laListeAdd.Items.Clear(); ChargerUCAdd(); } + /// + /// Evénement qui se déclenche quand l'ObservableCollection RequinsEdit change puis met à jour l'affichage + /// + /// + /// private void RequinsEdit_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e) { laListeEdit.Items.Clear(); @@ -54,7 +64,10 @@ namespace WpfApp1 Close(); } - public void ChargerUCAdd() + /// + /// Méthode qui permet de remplir la listBox des requins ajoutés + /// + private void ChargerUCAdd() { foreach (Requin req in Mgr.RequinsAdd) { @@ -62,7 +75,10 @@ namespace WpfApp1 } } - public void ChargerUCEdit() + /// + /// Méthode qui permet de remplir la listBox des requins modifiés + /// + private void ChargerUCEdit() { foreach (Requin req in Mgr.RequinsEdit) { @@ -70,7 +86,11 @@ namespace WpfApp1 } } - + /// + /// Evénement qui permet d'ouvrir la page AddAShark + /// + /// + /// private void addShark_Click(object sender, RoutedEventArgs e) { var AddSharkWindow = new AddAShark(); diff --git a/WpfApp1/userControlAcceuil.xaml.cs b/WpfApp1/userControlAcceuil.xaml.cs index 05492e3..f320be5 100644 --- a/WpfApp1/userControlAcceuil.xaml.cs +++ b/WpfApp1/userControlAcceuil.xaml.cs @@ -17,6 +17,20 @@ using System.Windows.Shapes; namespace WpfApp1 { + + + /// + /// Classe AccueilnWeChangeEventArgs qui implémente EventArgs + /// Elle permet de créer un argument qui permet de transformer le content control de la main window en UserControlAccueil après avoir cliquer sur la carte + /// + public class AccueilWeChangeEventArgs : EventArgs + { + public Zone Zone { get; private set; } + + public AccueilWeChangeEventArgs(Zone zone) => Zone = zone; + } + + /// /// Logique d'interaction pour userControlAcceuil.xaml /// UserControl qui permet d'afficher la carte du monde et le bandeau de l'application @@ -50,9 +64,17 @@ namespace WpfApp1 choixCarte(_zone); } } - + /// + /// Event Handler de DescriptionWeGoEventArgs + /// + public event EventHandler AccueilWeChange; + + //L'événement qui permet de passer à l'UserControlDescription + protected virtual void OnAccueilWeChange(AccueilWeChangeEventArgs args) + => AccueilWeChange?.Invoke(this, args); + /// @@ -117,7 +139,7 @@ namespace WpfApp1 private void Arctique_MouseDown(object sender, MouseButtonEventArgs e) { //Appelle la fonction ChangeRegionAvecMap de la main window - ((MainWindow)System.Windows.Application.Current.MainWindow).ChangeRegionAvecMap(Zone.ARCTIQUE); + OnAccueilWeChange(new AccueilWeChangeEventArgs(Zone.ARCTIQUE)); } /// /// Evénement qui est déclenché lorsque l'utilisateur appouye sur une partie de la carte correspondant à l'océan Atlantique @@ -127,7 +149,7 @@ namespace WpfApp1 private void Atlantique_MouseDown(object sender, MouseButtonEventArgs e) { //Appelle la fonction ChangeRegionAvecMap de la main window - ((MainWindow)System.Windows.Application.Current.MainWindow).ChangeRegionAvecMap(Zone.ATLANTIQUE); + OnAccueilWeChange(new AccueilWeChangeEventArgs(Zone.ATLANTIQUE)); } /// /// Evénement qui est déclenché lorsque l'utilisateur appouye sur une partie de la carte correspondant à l'océan Indien @@ -137,7 +159,7 @@ namespace WpfApp1 private void Indien_MouseDown(object sender, MouseButtonEventArgs e) { //Appelle la fonction ChangeRegionAvecMap de la main window - ((MainWindow)System.Windows.Application.Current.MainWindow).ChangeRegionAvecMap(Zone.INDIEN); + OnAccueilWeChange(new AccueilWeChangeEventArgs(Zone.INDIEN)); } /// /// Evénement qui est déclenché lorsque l'utilisateur appouye sur une partie de la carte correspondant à l'océan Pacifique @@ -147,7 +169,7 @@ namespace WpfApp1 private void Pacifique_MouseDown(object sender, MouseButtonEventArgs e) { //Appelle la fonction ChangeRegionAvecMap de la main window - ((MainWindow)System.Windows.Application.Current.MainWindow).ChangeRegionAvecMap(Zone.PACIFIQUE); + OnAccueilWeChange(new AccueilWeChangeEventArgs(Zone.PACIFIQUE)); } diff --git a/WpfApp1/userControlDescription.xaml.cs b/WpfApp1/userControlDescription.xaml.cs index 79a3b04..4b0e387 100644 --- a/WpfApp1/userControlDescription.xaml.cs +++ b/WpfApp1/userControlDescription.xaml.cs @@ -21,6 +21,22 @@ using VideoLibrary; namespace WpfApp1 { + + public class EditWeGoEventArgs : EventArgs + { + public Requin Requin { get; private set; } + + public EditWeGoEventArgs(Requin requin) => Requin = requin; + } + + + public class AccueilWeGoEventArgs : EventArgs + { + public Nullable Zone { get; private set; } + + public AccueilWeGoEventArgs(Zone? zone) => Zone = zone; + } + /// /// Logique d'interaction pour userControlDescription.xaml /// UserControl qui affiche la desription d'un requin @@ -45,6 +61,20 @@ namespace WpfApp1 } } + public Zone? zone { get; set; } + + public event EventHandler EditWeGo; + + protected virtual void OnEditWeGo(EditWeGoEventArgs args) + => EditWeGo?.Invoke(this, args); + + public event EventHandler AccueilWeGo; + + protected virtual void OnAccueilWeGo(AccueilWeGoEventArgs args) + => AccueilWeGo?.Invoke(this, args); + + + public int cmp = 0; @@ -56,7 +86,7 @@ namespace WpfApp1 private void exit_Click(object sender, RoutedEventArgs e) { //Change le content control en UserControlAcceuil - ((MainWindow)System.Windows.Application.Current.MainWindow).ContentControlSwapAcc(); + OnAccueilWeGo(new AccueilWeGoEventArgs(zone)); } @@ -78,7 +108,7 @@ namespace WpfApp1 else { //Si il l'est changer le content control en UserControlEdit - ((MainWindow)System.Windows.Application.Current.MainWindow).ContentControlSwapEdit(requin); + OnEditWeGo(new EditWeGoEventArgs(requin)); } } @@ -157,5 +187,7 @@ namespace WpfApp1 vid.Source = new Uri("Videos/requin_Ash ley.mp4", UriKind.Relative); } } + + } }