1 /* 2 * "GEDKeeper", the personal genealogical database editor. 3 * Copyright (C) 2009-2018 by Sergey V. Zhdanovskih. 4 * 5 * This file is part of "GEDKeeper". 6 * 7 * This program is free software: you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License as published by 9 * the Free Software Foundation, either version 3 of the License, or 10 * (at your option) any later version. 11 * 12 * This program is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU General Public License for more details. 16 * 17 * You should have received a copy of the GNU General Public License 18 * along with this program. If not, see <http://www.gnu.org/licenses/>. 19 */ 20 21 using System; 22 using System.Windows.Forms; 23 using BSLib.Design.MVP.Controls; 24 using GDModel; 25 using GKCore; 26 using GKCore.Controllers; 27 using GKCore.Interfaces; 28 using GKCore.Lists; 29 using GKCore.MVP.Views; 30 using GKCore.Types; 31 using GKUI.Components; 32 33 namespace GKUI.Forms 34 { 35 public sealed partial class GroupEditDlg : EditorDialog, IGroupEditDlg 36 { 37 private readonly GroupEditDlgController fController; 38 39 private readonly GKSheetList fMembersList; 40 private readonly GKSheetList fNotesList; 41 private readonly GKSheetList fMediaList; 42 43 public GDMGroupRecord Group 44 { 45 get { return fController.Group; } 46 set { fController.Group = value; } 47 } 48 49 #region View Interface 50 51 ISheetList IGroupEditDlg.NotesList 52 { 53 get { return fNotesList; } 54 } 55 56 ISheetList IGroupEditDlg.MediaList 57 { 58 get { return fMediaList; } 59 } 60 61 ISheetList IGroupEditDlg.MembersList 62 { 63 get { return fMembersList; } 64 } 65 66 ITextBox IGroupEditDlg.Name 67 { 68 get { return GetControlHandler<ITextBox>(edName); } 69 } 70 71 #endregion 72 GroupEditDlg(IBaseWindow baseWin)73 public GroupEditDlg(IBaseWindow baseWin) 74 { 75 InitializeComponent(); 76 77 btnAccept.Image = UIHelper.LoadResourceImage("Resources.btn_accept.gif"); 78 btnCancel.Image = UIHelper.LoadResourceImage("Resources.btn_cancel.gif"); 79 80 fMembersList = new GKSheetList(pageMembers); 81 fMembersList.SetControlName("fMembersList"); // for purpose of tests 82 fMembersList.OnModify += ModifyMembersSheet; 83 84 fNotesList = new GKSheetList(pageNotes); 85 fMediaList = new GKSheetList(pageMultimedia); 86 87 // SetLocale() 88 Title = LangMan.LS(LSID.LSID_WinGroupEdit); 89 btnAccept.Text = LangMan.LS(LSID.LSID_DlgAccept); 90 btnCancel.Text = LangMan.LS(LSID.LSID_DlgCancel); 91 lblName.Text = LangMan.LS(LSID.LSID_Title); 92 pageMembers.Text = LangMan.LS(LSID.LSID_Members); 93 pageNotes.Text = LangMan.LS(LSID.LSID_RPNotes); 94 pageMultimedia.Text = LangMan.LS(LSID.LSID_RPMultimedia); 95 96 fController = new GroupEditDlgController(this); 97 fController.Init(baseWin); 98 99 fMembersList.ListModel = new GroupMembersSublistModel(baseWin, fController.LocalUndoman); 100 fNotesList.ListModel = new NoteLinksListModel(baseWin, fController.LocalUndoman); 101 fMediaList.ListModel = new MediaLinksListModel(baseWin, fController.LocalUndoman); 102 } 103 ModifyMembersSheet(object sender, ModifyEventArgs eArgs)104 private void ModifyMembersSheet(object sender, ModifyEventArgs eArgs) 105 { 106 if (eArgs.Action == RecordAction.raJump) { 107 fController.JumpToRecord(eArgs.ItemData as GDMIndividualRecord); 108 } 109 } 110 btnAccept_Click(object sender, EventArgs e)111 private void btnAccept_Click(object sender, EventArgs e) 112 { 113 DialogResult = fController.Accept() ? DialogResult.OK : DialogResult.None; 114 } 115 btnCancel_Click(object sender, EventArgs e)116 private void btnCancel_Click(object sender, EventArgs e) 117 { 118 DialogResult = fController.Cancel() ? DialogResult.Cancel : DialogResult.None; 119 } 120 OnFormClosing(FormClosingEventArgs e)121 protected override void OnFormClosing(FormClosingEventArgs e) 122 { 123 base.OnFormClosing(e); 124 e.Cancel = fController.CheckChangesPersistence(); 125 } 126 } 127 } 128