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 { //int AnnotationTypeID; //string AnnotationNameStr = ""; 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(); } // Move all items to lstSelected. private void btnSelectAll_Click(object sender, EventArgs e) { MoveAllItems(lstUnselected, lstSelected); } // Move all items to lstUnselected. private void btnDeselectAll_Click(object sender, EventArgs e) { MoveAllItems(lstSelected, lstUnselected); } // Move all items from one ListBox to another. private void MoveAllItems(ListBox lstFrom, ListBox lstTo) { lstTo.Items.AddRange(lstFrom.Items); lstFrom.Items.Clear(); SetButtonsEditable(); } // 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) { int AnnotationTypeID; string AnnotationNameStr = ""; // dltFlg flag is used to notify SQL SP to deleted all the entries for the user before entering the annotation type selections. int dltFlg = 1; foreach (AnnotataionItem item in lstSelected.Items.OfType()) { AnnotationTypeID = item.TypeID; AnnotationNameStr = item.NameStr; VEPROMS.CSLA.Library.AnnotationstypeSelections.Update(UserID, AnnotationTypeID, dltFlg, AnnotationNameStr); dltFlg = 0; } } 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); if (lstSelectedTbl.Rows.Count > 0) { foreach (DataRow lstSelectedRow in lstSelectedTbl.Rows) { lstSelected.Items.Add(new AnnotataionItem(lstSelectedRow["Name"].ToString(), (int)lstSelectedRow["TypeID"])); } } } private void btnCancel_Click_1(object sender, EventArgs e) { this.Close(); } } }