258 lines
9.5 KiB
C#
258 lines
9.5 KiB
C#
///
|
|
/// Copyright (c) 2013-2020 Sensus Slovensko a.s.
|
|
///
|
|
using System;
|
|
using System.Windows.Forms;
|
|
using log4net;
|
|
using Common;
|
|
using Common.Forms;
|
|
using TBF.Resources;
|
|
using TBF.UI.Shared;
|
|
|
|
namespace TBF.UI.Procedures
|
|
{
|
|
public partial class ProceduresDlg : Form
|
|
{
|
|
static readonly ILog log = LogManager.GetLogger(typeof(ProceduresDlg));
|
|
|
|
/// Used when re-scaling the dialog: 100% = 96dpi, 125% = 120dpi, 150% = 144dpi
|
|
public readonly int Dpi;
|
|
|
|
public ProceduresDlg()
|
|
{
|
|
/// Detect display setting: 100% = 96dpi, 125% = 120dpi, 150% = 144dpi.
|
|
Dpi = (int)this.CreateGraphics().DpiX;
|
|
|
|
InitializeComponent();
|
|
|
|
/// SharedDlgButtons configuration
|
|
sharedButtons.RequiredGroupMembership = new GID[] { GID.TestingSpecialists, GID.Metrologists };
|
|
|
|
#if TEST_PROFILES
|
|
sharedButtons.OptionalButtons = SharedButtons.Buttons.Add | SharedButtons.Buttons.Remove |
|
|
SharedButtons.Buttons.Up | SharedButtons.Buttons.Down |
|
|
SharedButtons.Buttons.Edit | SharedButtons.Buttons.Copy |
|
|
SharedButtons.Buttons.Export | SharedButtons.Buttons.Import |
|
|
SharedButtons.Buttons.Compare |SharedButtons.Buttons.Custom1;
|
|
sharedButtons.Custom1Caption = string.Format("Create from{0}test profiles", Environment.NewLine);
|
|
sharedButtons.Custom1Clicked += custom1Button_Click;
|
|
#else
|
|
sharedButtons.OptionalButtons = SharedButtons.Buttons.Add | SharedButtons.Buttons.Remove |
|
|
SharedButtons.Buttons.Up | SharedButtons.Buttons.Down |
|
|
SharedButtons.Buttons.Edit | SharedButtons.Buttons.Copy |
|
|
SharedButtons.Buttons.Export | SharedButtons.Buttons.Import |
|
|
SharedButtons.Buttons.Compare;
|
|
#endif
|
|
|
|
sharedButtons.Unlocked += Unlocked;
|
|
sharedButtons.OKClicked += okButton_Click;
|
|
sharedButtons.CancelClicked += cancelButton_Click;
|
|
sharedButtons.AddClicked += addButton_Click;
|
|
sharedButtons.RemoveClicked += removeButton_Click;
|
|
sharedButtons.UpClicked += upButton_Click;
|
|
sharedButtons.DownClicked += downButton_Click;
|
|
sharedButtons.EditClicked += proceduresCtrl.editButton_Click;
|
|
sharedButtons.CopyClicked += proceduresCtrl.copyButton_Click;
|
|
sharedButtons.ExportClicked += proceduresCtrl.exportButton_Click;
|
|
sharedButtons.ImportClicked += proceduresCtrl.importButton_Click;
|
|
sharedButtons.CompareClicked += proceduresCtrl.compareButton_Click;
|
|
}
|
|
|
|
private void ProceduresDlg_Load(object sender, EventArgs e)
|
|
{
|
|
LoadUISettings();
|
|
Text = Strings.Procedures;
|
|
proceduresCtrl.Initialize(this, splitContainer.Panel1);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Called from ProceduresCtrl when item editing is completed with OK.
|
|
/// Authorisation occurs in the editted ProcedureDlg dialog.
|
|
/// </summary>
|
|
public void Unlock()
|
|
{
|
|
sharedButtons.UnlockButtons();
|
|
proceduresCtrl.Unlock();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Called from sharedButtons when user clicks 'Unlock' button an is authorised.
|
|
/// </summary>
|
|
private void Unlocked(object sender, EventArgs e)
|
|
{
|
|
proceduresCtrl.Unlock();
|
|
}
|
|
|
|
/// <summary>
|
|
/// "OK" button and Windows 'x' buttom functions similarly r
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void okButton_Click(object sender, EventArgs e)
|
|
{
|
|
ProceduresDlg_FormClosed(sender, null);
|
|
|
|
DialogResult = DialogResult.OK;
|
|
Close();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Windows 'x' buttom functions similarly r
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void ProceduresDlg_FormClosed(object sender, FormClosedEventArgs e)
|
|
{
|
|
proceduresCtrl.OkBtnClicked();
|
|
SaveUISettings();
|
|
}
|
|
|
|
private void cancelButton_Click(object sender, EventArgs e)
|
|
{
|
|
proceduresCtrl.CancelBtnClicked();
|
|
SaveUISettings();
|
|
DialogResult = DialogResult.Cancel;
|
|
Close();
|
|
}
|
|
|
|
|
|
private void SaveUISettings()
|
|
{
|
|
/// Obtain ProceduresDlg dimensions, etc.
|
|
bool isMaximized = (WindowState == FormWindowState.Maximized);
|
|
int left = (WindowState == FormWindowState.Normal) ? Location.X : RestoreBounds.Left;
|
|
int top = (WindowState == FormWindowState.Normal) ? Location.Y : RestoreBounds.Top;
|
|
int width = (WindowState == FormWindowState.Normal) ? Size.Width : RestoreBounds.Width;
|
|
int height = (WindowState == FormWindowState.Normal) ? Size.Height : RestoreBounds.Height;
|
|
|
|
LocalSettings ls = Program.LocalSettings;
|
|
|
|
if (ls != null && (ls.ProceduresDlgMaximized != isMaximized ||
|
|
ls.ProceduresDlgLeft != left ||
|
|
ls.ProceduresDlgTop != top ||
|
|
ls.ProceduresDlgWidth != width ||
|
|
ls.ProceduresDlgHeight != height))
|
|
{
|
|
/// At least one ProceduresDlg dimension differs => Update local settings and save them
|
|
ls.ProceduresDlgMaximized = isMaximized;
|
|
ls.ProceduresDlgLeft = left;
|
|
ls.ProceduresDlgTop = top;
|
|
ls.ProceduresDlgWidth = width;
|
|
ls.ProceduresDlgHeight = height;
|
|
ls.Save();
|
|
}
|
|
}
|
|
|
|
private void LoadUISettings()
|
|
{
|
|
TBF.LocalSettings ls = Program.LocalSettings;
|
|
WindowState = (ls.ProceduresDlgMaximized ? FormWindowState.Maximized : FormWindowState.Normal);
|
|
Width = (ls.ProceduresDlgWidth > 0) ? ls.ProceduresDlgWidth : 600;
|
|
Height = (ls.ProceduresDlgHeight > 0) ? ls.ProceduresDlgHeight : 500;
|
|
Left = (ls.ProceduresDlgLeft != 0) ? ls.ProceduresDlgLeft : 200;
|
|
Top = (ls.ProceduresDlgTop != 0) ? ls.ProceduresDlgTop : 100;
|
|
}
|
|
|
|
|
|
private void addButton_Click(object sender, EventArgs e)
|
|
{
|
|
proceduresCtrl.AddOne();
|
|
}
|
|
|
|
private void removeButton_Click(object sender, EventArgs e)
|
|
{
|
|
proceduresCtrl.RemoveSelected();
|
|
}
|
|
|
|
private void upButton_Click(object sender, EventArgs e)
|
|
{
|
|
proceduresCtrl.MoveUpSelected();
|
|
}
|
|
|
|
private void downButton_Click(object sender, EventArgs e)
|
|
{
|
|
//if (DialogResult.Yes == MessageBox.Show("Chcete naplnit 'Publish' a 'Evaluate' vsetkych testov?", "Otazka", MessageBoxButtons.YesNo, MessageBoxIcon.Question))
|
|
//{
|
|
// UpgradeAllTests();
|
|
// return;
|
|
//}
|
|
proceduresCtrl.MoveDownSelected();
|
|
}
|
|
|
|
private void custom1Button_Click(object sender, EventArgs e)
|
|
{
|
|
proceduresCtrl.CreateFromProfile();
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// Common part for three xxxListViewEx_SelectedIndexChanged event handlers
|
|
/// </summary>
|
|
/// <param name="listViewEx"></param>
|
|
public void SelectedIndexChanged(ListView sender, bool isFilterAny)
|
|
{
|
|
var listViewEx = sender as ListViewEx;
|
|
if (listViewEx.SelectedItems.Count != 1)
|
|
{
|
|
/// No item selected
|
|
sharedButtons.DisableButtons(SharedButtons.Buttons.Remove | SharedButtons.Buttons.Up | SharedButtons.Buttons.Down);
|
|
}
|
|
else if (listViewEx.Items.Count == 1)
|
|
{
|
|
/// One (the first and the last) item selected
|
|
sharedButtons.EnableButtons(SharedButtons.Buttons.Remove);
|
|
sharedButtons.DisableButtons(SharedButtons.Buttons.Up | SharedButtons.Buttons.Down);
|
|
}
|
|
else if (listViewEx.SelectedIndices[0] == 0)
|
|
{
|
|
/// The first of many items selected
|
|
if (isFilterAny)
|
|
{
|
|
sharedButtons.EnableButtons(SharedButtons.Buttons.Remove | SharedButtons.Buttons.Down);
|
|
sharedButtons.DisableButtons(SharedButtons.Buttons.Up);
|
|
}
|
|
else
|
|
{
|
|
sharedButtons.EnableButtons(SharedButtons.Buttons.Remove);
|
|
sharedButtons.DisableButtons(SharedButtons.Buttons.Up | SharedButtons.Buttons.Down);
|
|
}
|
|
}
|
|
else if (listViewEx.SelectedIndices[0] == (listViewEx.Items.Count - 1))
|
|
{
|
|
/// The last of many items selected
|
|
if (isFilterAny)
|
|
{
|
|
sharedButtons.EnableButtons(SharedButtons.Buttons.Remove | SharedButtons.Buttons.Up);
|
|
sharedButtons.DisableButtons(SharedButtons.Buttons.Down);
|
|
}
|
|
else
|
|
{
|
|
sharedButtons.EnableButtons(SharedButtons.Buttons.Remove);
|
|
sharedButtons.DisableButtons(SharedButtons.Buttons.Up | SharedButtons.Buttons.Down);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
/// One of middle items selected
|
|
if (isFilterAny)
|
|
{
|
|
sharedButtons.EnableButtons(SharedButtons.Buttons.Remove | SharedButtons.Buttons.Up | SharedButtons.Buttons.Down);
|
|
}
|
|
else
|
|
{
|
|
sharedButtons.EnableButtons(SharedButtons.Buttons.Remove);
|
|
sharedButtons.DisableButtons(SharedButtons.Buttons.Up | SharedButtons.Buttons.Down);
|
|
}
|
|
}
|
|
}
|
|
|
|
public void UpdateButtonStates(SharedButtons.SelectedItemPos selectedItemPos)
|
|
{
|
|
if (selectedItemPos == SharedButtons.SelectedItemPos.None)
|
|
{
|
|
sharedButtons.DisableButtons(SharedButtons.Buttons.Remove | SharedButtons.Buttons.Up | SharedButtons.Buttons.Down);
|
|
}
|
|
}
|
|
}
|
|
}
|