using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using VEPROMS.CSLA.Library; namespace VEPROMS { // C2025-027 Annotation Type Filtering public partial class dlgAnnotationsSelect : Form { public dlgAnnotationsSelect() { InitializeComponent(); } public dlgAnnotationsSelect(string userid) { InitializeComponent(); UserID = userid; } private int _MyItemID; public int MyItemID { get { return _MyItemID; } set { _MyItemID = value; } } private string _UserID; public string UserID { get { return _UserID; } set { _UserID = value; } } private void btnSelect_Click(object sender, EventArgs e) { MoveSelectedItems(lstUnselected, lstSelected); } // Move selected items to lstUnselected. private void btnDeselect_Click(object sender, EventArgs e) { MoveSelectedItems(lstSelected, lstUnselected); } // Move selected items from one ListBox to another. private void MoveSelectedItems(ListBox lstFrom, ListBox lstTo) { while (lstFrom.SelectedItems.Count > 0) { lstSelected.DisplayMember = "NameStr"; lstSelected.ValueMember = "TypeID"; AnnotataionItem item = (AnnotataionItem)lstFrom.SelectedItems[0]; lstTo.Items.Add(new AnnotataionItem(item.NameStr, item.TypeID)); lstFrom.Items.Remove(item); } SetButtonsEditable(); btnUpdate.Enabled = true; } // Move all items to lstSelected. private void btnSelectAll_Click(object sender, EventArgs e) { MoveAllItems(lstUnselected, lstSelected); btnUpdate.Enabled = true; } // Move all items to lstUnselected. private void btnDeselectAll_Click(object sender, EventArgs e) { MoveAllItems(lstSelected, lstUnselected); btnUpdate.Enabled = true; } // Move all items from one ListBox to another. private void MoveAllItems(ListBox lstFrom, ListBox lstTo) { lstTo.Items.AddRange(lstFrom.Items); lstFrom.Items.Clear(); SetButtonsEditable(); btnUpdate.Enabled = true; } // Enable and disable buttons. private void lst_SelectedIndexChanged(object sender, EventArgs e) { SetButtonsEditable(); } // Save selected list to DB. private void btnUpdate_Click(object sender, EventArgs e) { saveChanges(); } public class AnnotataionItem { private string _NameStr; private int _TypeID; public AnnotataionItem(string NameStr, int TypeID) { this._NameStr = NameStr; this._TypeID = TypeID; } public string NameStr { get { return _NameStr; } } public int TypeID { get { return _TypeID; } } } // Enable and disable buttons. private void SetButtonsEditable() { btnSelect.Enabled = (lstUnselected.SelectedItems.Count > 0); btnSelectAll.Enabled = (lstUnselected.Items.Count > 0); btnDeselect.Enabled = (lstSelected.SelectedItems.Count > 0); btnDeselectAll.Enabled = (lstSelected.Items.Count > 0); } private void DlgAnnotationsSelect_Load(object sender, EventArgs e) { lstUnselected.DisplayMember = "NameStr"; lstUnselected.ValueMember = "TypeID"; SetButtonsEditable(); DataTable AnnoType = AnnotationstypeSelections.GetAnnoTypes(UserID); foreach (DataRow dr in AnnoType.Rows) { lstUnselected.Items.Add(new AnnotataionItem(dr["Name"].ToString(), (int)dr["TypeID"])); } lstSelected.DisplayMember = "NameStr"; lstSelected.ValueMember = "TypeID"; DataTable lstSelectedTbl = VEPROMS.CSLA.Library.AnnotationstypeSelections.Retrieve(UserID); foreach (DataRow lstSelectedRow in lstSelectedTbl.Rows) { lstSelected.Items.Add(new AnnotataionItem(lstSelectedRow["Name"].ToString(), (int)lstSelectedRow["TypeID"])); } btnUpdate.Enabled = false; } private void btnCancel_Click_1(object sender, EventArgs e) { if (btnUpdate.Enabled == true) { string message = "Changes have not yet been saved. Do you want to save the changes prior to closing?"; string title = "Save Annotation Selections"; MessageBoxButtons buttons = MessageBoxButtons.YesNo; DialogResult result = MessageBox.Show(message, title, buttons); if (result == DialogResult.Yes) { saveChanges(); this.Close(); } else { this.Close(); } } else { this.Close(); } } private DataTable coverToTable() { DataTable dt = new DataTable(); dt.Columns.Add("TypeID", typeof(Int32)); foreach (AnnotataionItem item in lstSelected.Items.OfType()) { dt.Rows.Add(item.TypeID); } return dt; } private void saveChanges() { DataTable dt2 = coverToTable(); VEPROMS.CSLA.Library.AnnotationstypeSelections.Update(dt2, UserID); btnUpdate.Enabled = false; } } }