using System.Collections.Generic; using System.Drawing; using System.Threading; using System.Windows.Forms; using DevExpress.XtraEditors; using GCAS.Code; using GCAS.Dto; using GCAS.Localization; using GCAS.Model; namespace GCAS { public partial class OperatorForm : XtraForm { private List L; private OperatorRepository operatorRepository; public OperatorModel currentUser; public OperatorForm() { InitializeComponent(); L = LocalizationHelper.GetSource(Thread.CurrentThread.CurrentUICulture); } private void DeviceForm_Load(object sender, System.EventArgs e) { operatorRepository = new OperatorRepository(); InitDataView(); } private async void InitDataView() { gridView1.LoadingPanelVisible = true; var list = await operatorRepository.GetList(Thread.CurrentThread.CurrentUICulture.Name); gridControl1.DataSource = list; gridView1.LoadingPanelVisible = false; } private async void contextMenuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e) { OperatorModel rowData; switch (e.ClickedItem.Name) { case "menu_new": using (NewOperatorForm form = new NewOperatorForm()) { form.Text = L.GetString("new"); form.currentOperator = currentUser; if (form.ShowDialog() == DialogResult.OK) InitDataView(); } break; case "menu_edit": rowData = gridView1.GetFocusedRow() as OperatorModel; if (rowData != null) { using (NewOperatorForm form = new NewOperatorForm()) { form.Text = L.GetString("edit"); form.operatorModel = rowData; form.currentOperator = currentUser; if (form.ShowDialog() == DialogResult.OK) InitDataView(); } } break; case "menu_delete": rowData = gridView1.GetFocusedRow() as OperatorModel; if (rowData != null) { if (XtraMessageBox.Show(string.Format(L.GetString("deleteOperatorMessage"), rowData.Name), L.GetString("notification"), MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK) { if (await operatorRepository.Delete(rowData.Id) > 0) InitDataView(); } } break; } } private void gridView1_PopupMenuShowing(object sender, DevExpress.XtraGrid.Views.Grid.PopupMenuShowingEventArgs e) { if (e.HitInfo.InRow) { int index = gridView1.FocusedRowHandle; if (index >= 0) { var rowData = gridView1.GetFocusedRow() as OperatorModel; if (rowData?.Id == currentUser.Id) menu_delete.Enabled = false; else menu_delete.Enabled = true; menu_edit.Enabled = true; } else { menu_delete.Enabled = false; menu_edit.Enabled = false; } } else { menu_delete.Enabled = false; menu_edit.Enabled = false; } } private void OperatorForm_FormClosed(object sender, FormClosedEventArgs e) { Dispose(); } private void gridView1_MouseDown(object sender, MouseEventArgs e) { if (e.Clicks != 2 || e.Button != MouseButtons.Left) return; if (gridView1.CalcHitInfo(new Point(e.X, e.Y)).InRow == false) { using (NewOperatorForm form = new NewOperatorForm()) { form.Text = L.GetString("new"); if (form.ShowDialog() == DialogResult.OK) InitDataView(); } } var rowData = gridView1.GetRow(gridView1.CalcHitInfo(new Point(e.X, e.Y)).RowHandle) as OperatorModel; if (rowData != null) { using (NewOperatorForm form = new NewOperatorForm()) { form.Text = L.GetString("edit"); form.operatorModel = rowData; form.currentOperator = currentUser; if (form.ShowDialog() == DialogResult.OK) InitDataView(); } } } } }