BrolForm.cs
Description du code
BrolForm.cs est un fichier du projet BiblioBrol.Ce fichier est situé dans /var/www/bin/sniplets/bibliobrol/src/.
Projet BiblioBrol :
Gestion de media en CSharp.
Pour plus d'infos, vous pouvez consulter la brève analyse.
Code source ou contenu du fichier
Code c# (BrolForm.cs) (717 lignes)
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using be.gaudry.bibliobrol.model; using be.gaudry.bibliobrol.model.dao; using System.IO; using be.gaudry.bibliobrol.view.utils; using be.gaudry.bibliobrol.view.dialogs; using be.gaudry.observer; using be.gaudry.view; using be.gaudry.bibliobrol.view.controls.webInfo; using be.gaudry.view.utils; namespace be.gaudry.bibliobrol.view { public partial class BrolForm : MDIChildForm, IMDIChild { #region constructor and declarations /// <summary> /// if false, no updates are done on the brolInfoControl and BrolEditControl /// avoid view flickering on multiple brolsDGV_SelectionChanged call /// </summary> private bool viewUpdateAllowed = false; private BrolType brolType; private DataTable dataTable; private Brol brol; private int dGVColSerieNbr, dGVColIdNbr, dGVColTitleNbr; //private IBrolDao brolDao; private const String ALL_ACTORS = " -TOUS- "; private List<DAOUtils.BROL_FIELD> brolFields; //private List<DAOUtils.MEDIABROL_FIELD> mediabrolFields; /// <summary> /// Path of the persons images directory /// </summary> public BrolForm() { dGVColSerieNbr = -1; InitializeComponent(); this.SuspendLayout(); addToolStrip(mainTS); initBrolTypeMenu(); //ModelAdapter.Instance.addObserver(this); brol.Id = -1; //diaSetActorRole = new DiaSetActorRole(brolType,editActorsLB.Items); //brolInfoCtl.reset(); //cleanEditForm(); this.ResumeLayout(true); // Activates double buffering SetStyle(ControlStyles.UserPaint, true); SetStyle(ControlStyles.AllPaintingInWmPaint, true); SetStyle(ControlStyles.DoubleBuffer, true); } #endregion #region brolsDGV #region mediabrols /*private void initMediabrolsDGV() { mediabrolFields = new List<DAOUtils.MEDIABROL_FIELD>(); mediabrolFields.Add(DAOUtils.MEDIABROL_FIELD.name); mediabrolFields.Add(DAOUtils.MEDIABROL_FIELD.owner); mediabrolFields.Add(DAOUtils.MEDIABROL_FIELD.date); } private void fillMediabrolsDGV() { if (mediabrolFields == null) initMediabrolsDGV(); //mediabrolsDGV.Rows.Clear(); mediabrolsDGV.DataSource = DAOFactory.Instance.getMediaBrolDao().loadMediaBrols(brol, mediabrolFields); } */ #endregion private void sortDataTable() { { brolsDGV.Sort(brolsDGV.Columns[dGVColSerieNbr], ListSortDirection.Descending); } { brolsDGV.Sort(brolsDGV.Columns[dGVColTitleNbr], ListSortDirection.Ascending); } else { brolsDGV.Sort(brolsDGV.Columns[dGVColIdNbr], ListSortDirection.Descending); } } private void fillDataTable(bool sortIds) { viewUpdateAllowed = false; //todo : fill datatable in another thread dataTable = DAOFactory.Instance.getBrolDao().loadDataTableVos(brolFields, brolType.Id); brolsDGV.DataSource = dataTable; //a type of media is selected /*foreach (Control control in editTP.Controls) { control.Enabled = true; }*/ foreach (ToolStripItem tsi in mainTS.Items) { tsi.Enabled = true; } //editDelBrolBtn.Enabled = false; //editDelBrolTSBtn.Enabled = false; viewUpdateAllowed = true; if (sortIds) { sortDataTable(); } } private void initMediaTable() { this.startProgress(); viewUpdateAllowed = false; brolInfoCtl.Visible = false; this.SuspendLayout(); //mediaTC.SuspendLayout(); //brolInfoCtl.SuspendLayout(); brolsDGV.Columns.Clear(); brol.BrolType = brolType; multiWebInfoControl.setBrolType(brolType); brolFields.Add(DAOUtils.BROL_FIELD.id); brolFields.Add(DAOUtils.BROL_FIELD.title); { brolFields.Add(DAOUtils.BROL_FIELD.date); } { brolFields.Add(DAOUtils.BROL_FIELD.serie); } fillDataTable(false); int colCounter = 0; //brolsDGV.DataSource = dataTable; if (brolsDGV.ColumnCount > 0) { dGVColIdNbr = colCounter; brolsDGV.Columns[colCounter].Width = 25; brolsDGV.Columns[colCounter++].HeaderText = "N°"; dGVColTitleNbr = colCounter; brolsDGV.Columns[colCounter].FillWeight = 0.3F; brolsDGV.Columns[colCounter].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; brolsDGV.Columns[colCounter++].HeaderText = "Titre"; { brolsDGV.Columns[colCounter].HeaderText = "Date"; brolsDGV.Columns[colCounter++].Width = 75; } { dGVColSerieNbr = colCounter; brolsDGV.Columns[colCounter].HeaderText = "Série"; brolsDGV.Columns[colCounter].FillWeight = 0.2F; brolsDGV.Columns[colCounter].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; brolsDGV.Columns[colCounter++].Width = 75; } else { dGVColSerieNbr = -1; } } brolsDGV.RowsDefaultCellStyle.BackColor = Color.White; brolsDGV.AlternatingRowsDefaultCellStyle.BackColor = Color.WhiteSmoke; sortDataTable(); brolsDGV.Visible = true; viewUpdateAllowed = true; loadSelectedBrol(); //brolInfoCtl.ResumeLayout(true); //mediaTC.ResumeLayout(true); brolInfoCtl.Visible = brolsDGV.RowCount > 0; this.ResumeLayout(true); this.stopProgress(); } private void brolsDGV_CellClick(object sender, DataGridViewCellEventArgs e) { loadSelectedBrol(); } private void brolsDGV_SelectionChanged(object sender, EventArgs e) { loadSelectedBrol(); } private void loadSelectedBrol() { if (viewUpdateAllowed) { int id = (brolsDGV.RowCount > 0) ? (int)brolsDGV.CurrentRow.Cells["id"].Value : -1; //brolInfoCtl.Visible = id > 0; try { ModelAdapter.unlockBrol(brol.Id); brol = ModelAdapter.getBrol(id, true); saveEditedBrolBtn.Text = "Sauver"; editSaveTSBtn.Text = "Sauver"; if (brol.BrolLocked) { editSaveTSBtn.Enabled = false; saveEditedBrolBtn.Enabled = false; StaticObservable.notify(new Notification(Notification.VERBOSE.error, "Edition d'un ouvrage", "Impossible de modifier cet ouvrage car il est verrouillé par un autre utilisateur", this)); } editBrolControl.setBrol(brol, brol.BrolType); /* if (brol.Id > 0) { fillMediabrolsDGV(); } */ brolInfoCtl.setBrol(brol); multiWebInfoControl.setParam(brol.Title); } catch (Exception ex) { StaticObservable.notify(new Notification(Notification.VERBOSE.lowError, "Edition d'un ouvrage", "Aucun ouvrage sélectionné", ex, this)); } #region enable modifications only if needed /* try { switch (mediaTC.SelectedTab.Name) { case "editTP": brol = ModelAdapter.getBrol(id, true); saveEditedBrolBtn.Text = "Sauver"; editSaveTSBtn.Text = "Sauver"; if (brol.BrolLocked) { editSaveTSBtn.Enabled = false; saveEditedBrolBtn.Enabled = false; StaticObservable.notify(new Notification(Notification.VERBOSE.error, "Edition d'un ouvrage", "Impossible de modifier cet ouvrage car il est verrouillé par un autre utilisateur", this)); } editBrolControl.setBrol(brol, brol.BrolType); break; case "biblioBrolItemTP": ModelAdapter.unlockBrol(brol.Id); if (brol.Id > 0) { fillMediabrolsDGV(); } break; default: brol = ModelAdapter.getBrol(id, false); //fillInfoTP(); brolInfoCtl.fill(brol); break; } multiWebInfoControl.setParam(brol.Title); } catch (Exception ex) { StaticObservable.notify(new Notification(Notification.VERBOSE.lowError, "Edition d'un ouvrage", "Aucun ouvrage sélectionné",ex, this)); }*/ #endregion } } #endregion #region brolsDGV sort and display options /* private void refreshOnAddTsMi_Click(object sender, EventArgs e) { DialogResult r = MessageBox.Show( this, "Si vous sélectionnez cette option, la table des ouvrages sera mise à jour à chaque ajout d'un ouvrage," + " mais il ne sera plus possible de modifier les images associées aux ouvrages." + "\n\nDésirez-vous tout de même cocher cette option ?", "Rafraîchissement de la table des ouvrages", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2 ); if (r == DialogResult.OK) { refreshOnAddTsMi.Checked = true; editBrolControl.ImageEditable = false; } else { refreshOnAddTsMi.Checked = false; editBrolControl.ImageEditable = true; } } private void refreshOnUpdateTsMi_Click(object sender, EventArgs e) { DialogResult r = MessageBox.Show( this, "Si vous sélectionnez cette option, la table des ouvrages sera mise à jour à chaque modification d'un ouvrage,"+ " mais il ne sera plus possible de modifier les images associées aux ouvrages."+ "\n\nDésirez-vous tout de même cocher cette option ?", "Rafraîchissement de la table des ouvrages", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2 ); if (r == DialogResult.OK) { refreshOnUpdateTsMi.Checked = true; editBrolControl.ImageEditable = false; } else { refreshOnUpdateTsMi.Checked = false; editBrolControl.ImageEditable = true; } }*/ private void brolFieldIdTsMi_Click(object sender, EventArgs e) { } private void brolFieldDateTsMi_Click(object sender, EventArgs e) { initMediaTable(); } private void brolFieldSerieTsMi_Click(object sender, EventArgs e) { initMediaTable(); } private void brolSortSerieTsMi_Click(object sender, EventArgs e) { sortDataTable(); } private void brolSortTitleTsMi_Click(object sender, EventArgs e) { sortDataTable(); } private void brolIdTsMi_Click(object sender, EventArgs e) { sortDataTable(); } #endregion #region menu private void initBrolTypeMenu() { List<BrolType> types = ModelAdapter.getBrolTypes(); foreach (BrolType type in types) { /* * We must initialize a new BrolType object to avoid than all anonym methods * share the same local variable type. * All instances of our anonym methods are executed by different thread than initBrolTypeMenu iterator method. * That makes all delegates have the last brolType object return by the iterator. */ BrolType tempType = type; //get image if exists, or default image System.Drawing.Image img = Img.getTypeImage(type.Name); mainTS.Items.Add( type.Name.Trim(), img, delegate { brolType = tempType; initMediaTable(); } ); /* fetchTSMenuItem.DropDownItems.Add( new ToolStripMenuItem( type.Name, img, delegate { brolType = tempType; initMediaTable(); }, "dyn" + type.Name + "TSMenuItem" ) ); */ brolsTsMi.DropDownItems.Add( new ToolStripMenuItem( "Charger ("+type.Name+")", img, delegate { brolType = tempType; initMediaTable(); }, "dyn" + type.Name + "TSMenuItem" ) ); } } #endregion #region display media /*private void cleanInfoTP() { infoSynopsisRTB.Text = ""; infoTitleLbl.Text = ""; infoActorsLB.Items.Clear(); infoCategoriesLB.Items.Clear(); infoCotationLbl.Text = "Cote : "; } private void fillInfoTP() { coverPB.ImageLocation = Img.getBrolImgPath(brol); coverPB.Size = new System.Drawing.Size(111, 149); infoTitleLbl.Text = brol.Title; infoSynopsisRTB.Text = brol.Synopsis; infoCategoriesLB.Items.Clear(); infoCategoriesLB.Items.AddRange(brol.Categories.ToArray()); int i = infoCategoriesLB.Items.Count; if (i > 0) { infoCategoriesLbl.Text = i + " catégorie(s) : "; infoCategoriesLB.Visible = true; } else { infoCategoriesLbl.Text = "Aucune catégorie trouvée"; infoCategoriesLB.Visible = false; } infoActorsLB.Items.Clear(); infoActorsLB.Items.AddRange(brol.Actors.ToArray()); i = infoActorsLB.Items.Count; if (i > 0) { infoActorsLbl.Text = i + " personne(s) / rôle(s) : "; infoActorsLB.Visible = true; } else { infoActorsLbl.Text = "Aucune personne trouvée"; infoActorsLB.Visible = false; } infoCotationLbl.Text = "Cote : " + brol.Cotation + "/10"; }*/ #endregion #region edit media #region general edit page /* /// <summary> /// Used to reset all brol edit from fields /// </summary> private void cleanEditForm() { editSynopsisRTB.Text = ""; editTitleTB.Text = ""; editCotationCB.SelectedIndex = -1; editCategoriesLB.Items.Clear(); editActorsLB.Items.Clear(); persImg.Image = global::be.gaudry.bibliobrol.Properties.Resources.brolImg; editSpCommentRTB.Text = ""; }*/ private void EditTP_Leave(object sender, EventArgs e) { if (brolsDGV.RowCount > 0) { int id = (int)brolsDGV.SelectedRows[0].Cells["id"].Value; ModelAdapter.unlockBrol(id); } } /* /// <summary> /// Used to fill all brol values from edit from fields /// </summary> private void setBrolFromEditForm() { } /// <summary> /// Used to fill all brol edit from fields from brol values /// </summary> private void fillEditForm(Brol brol) { } */ private void editTitleTB_TextChanged(object sender, EventArgs e) { //multiWebInfoControl.setParam(editTitleTB.Text); } #endregion #endregion //end edit media #region edit private void editLoadBtn_Click(object sender, EventArgs e) { try { int id = (int)brolsDGV.SelectedRows[0].Cells["id"].Value; brol = ModelAdapter.getBrol(id, true); editBrolControl.setBrol(brol, brol.BrolType); mediaTC.SelectedTab = editTP; } catch (Exception ex) { StaticObservable.notify(new Notification(Notification.VERBOSE.lowError, "Impossible de charger l'élément sélectionné", ex, this)); } } #endregion #region manage image private void deleteBrolCover() { bool deleted = false; String path = Img.getBrolImgPath(brol); try { File.Delete(path); deleted = true; } catch (Exception e) { StaticObservable.notify(new Notification(Notification.VERBOSE.lowError, "Suppression de l'affiche", e, this)); deleted = false; } if (deleted) StaticObservable.notify(new Notification(Notification.VERBOSE.opsResult, "Affiche supprimée : " + path, this)); } private void delImageBtn_Click(object sender, EventArgs e) { deleteBrolCover(); } #endregion #region overrided methods public override String ToString() { return "BrolForm"; } public override int GetHashCode() { //todo : reimplement GetHashCode return this.ToString().GetHashCode(); } #endregion #region Form private void BrolForm_Enter(object sender, EventArgs e) { this.Icon = global::be.gaudry.bibliobrol.Properties.Resources.brolIcon; } #endregion #region edit brol actions private void saveEditedBrolBtn_Click(object sender, EventArgs e) { bool refresh; if (brol.Id >= 0) { } else { } brol = editBrolControl.saveBrol(!refresh); if (refresh) { fillDataTable(true); } } private void onDeleteBrol_Click(object sender, EventArgs e) { DialogResult dr = MessageBox.Show( this, string.Format( "Désirez-vous supprimer définitivement l'ouvrage ?\n\r{0}", brol.Title ), "Suppression d'un ouvrage", MessageBoxButtons.OKCancel, MessageBoxIcon.Question ); if ( dr== DialogResult.OK && ModelAdapter.deleteBrol(brol)) { deleteBrolCover(); } } private void onAddBrol_Click(object sender, EventArgs e) { brol.BrolType = brolType; editBrolControl.setBrol(brol, brol.BrolType); mediaTC.SelectedTab = editTP; } private void onDuplicateBrol_Click(object sender, EventArgs e) { str.Append(brol.Title.Trim()); str.Append("\" portant l'identifiant n°"); str.Append(brol.Id); str.Append(" est dupliqué.\n\nTant qu'il n'est pas sauvé, son identifiant est égal à -1."); brol.Id = -1; foreach (Actor actor in brol.Actors) { actor.Status = STATUS.toAdd; } foreach (BrolCategory category in brol.Categories) { category.Status = STATUS.toAdd; } //keep only serieItems without argument (like film production, book collection, etc.). foreach (SerieItem serieItem in brol.SerieItems) { if (string.Empty.Equals(serieItem.getRank())) { serieItem.getSerie().Status = STATUS.toAdd; } } brol.SerieItems.RemoveAll(removeIfStatusIsNotToAdd); //brol.SerieItems.Clear(); editBrolControl.setBrol(brol); } private static bool removeIfStatusIsNotToAdd(SerieItem serieItem) { return (serieItem.getSerie().Status != STATUS.toAdd); } #endregion private void addMediabrolTSBtn_Click(object sender, EventArgs e) { editBrolControl.promptInsertMediabrol(brol); } #region IObserver Membres /* public void update(Notification notification) { //if (notification.Level.Equals(Notification.VERBOSE.modified)) switch (notification.Msg) { case "insertBrol" : if (refreshOnAddTsMi.Checked) { fillDataTable(true); } break; case "deleteBrol": if (refreshOnDeleteTsMi.Checked) { fillDataTable(true); } break; case "updateBrol": if (refreshOnUpdateTsMi.Checked) { fillDataTable(true); } break; default: break; } } */ #endregion #region save and print DGV actions private void printDGVAction(object sender, EventArgs e) { DgvFactory.print(brolsDGV, "Ouvrages de BiblioBrol", this); } private void saveDGVAction(object sender, EventArgs e) { DgvFactory.save(brolsDGV, "Ouvrages de BiblioBrol", this); } #endregion #region IMDIChild Members public MenuStrip getMainMenuStrip() { return mainMenuStrip; } #endregion private void showMediabrolsTsMi_Click(object sender, EventArgs e) { if (brol != null) { form.setBrol(brol); form.ShowDialog(this); } else { MessageBox.Show("Veuillez sélectionner un ouvrage avant de consulter les exemplaires associés"); } } } }
Structure et Fichiers du projet
Afficher/masquer...Icône | Nom | Taille | Modification |
Icône | Nom | Taille | Modification |
| _ | Répertoire parent | 0 octets | 1731625736 15/11/2024 00:08:56 |
| _ | wizards | 0 octets | 1541007184 31/10/2018 18:33:04 |
| _ | utils | 0 octets | 1541007184 31/10/2018 18:33:04 |
| _ | controls | 0 octets | 1541007178 31/10/2018 18:32:58 |
| _ | dialogs | 0 octets | 1541007183 31/10/2018 18:33:03 |
Utilisation de l'explorateur de code
- Navigation :
- Un clic sur une icône de répertoire ouvre ce répertoire pour en afficher les fichiers.
- Lorsque le répertoire en cours ne contient pas de sous-répertoires il est possible de remonter vers le répertoire parent.
- La structure de répertoires en treetable (tableau en forme d'arborescence) n'est plus possibledans cette version.
- Un clic sur une icône de fichier ouvre ce fichier pour en afficher le code avec la coloration syntaxique adaptée en fonction du langage principal utilisé dans le fichier.
- Affichage :
- Il est possible de trier les répertoires ou les fichiers selon certains critères (nom, taille, date).
- Actions :
- Les actions possible sur les fichiers dépendent de vos droits d'utilisateur sur le site. Veuillez activer le mode utilisateur pour activer les actions.
Version en cache
15/11/2024 00:08:56 Cette version de la page est en cache (à la date du 15/11/2024 00:08:56) afin d'accélérer le traitement. Vous pouvez activer le mode utilisateur dans le menu en haut pour afficher la dernère version de la page.Document créé le 16/10/2009, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/cs-bibliobrol-source-rf-view/BrolForm.cs.html
L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.