private void baseColumnCreator(CustomDataGridView <BooleanTally> table, ItemListFormBaseManager <BooleanTally> .ColumnDescriptorBuilderGetterDelegate builderGetterMethod) { CustomDataGridViewColumnDescriptorBuilder <BooleanTally> builder; // Column: ID, name idColumnCreator(table, builderGetterMethod); nameColumnCreator(table, builderGetterMethod); // Column: from boolean builder = builderGetterMethod(); builder.Type(DataGridViewColumnType.TextBox); builder.Header("From boolean"); builder.Width(150); builder.UpdaterMethod((booleanTally, cell) => { cell.Value = booleanTally.FromBoolean.Name; }); builder.AddMultilevelChangeEvent(nameof(BooleanTally.FromBoolean), nameof(IBoolean.Name)); // Column: to signal builder = builderGetterMethod(); builder.Type(DataGridViewColumnType.TextBox); builder.Header("To signal"); builder.Width(150); builder.UpdaterMethod((booleanTally, cell) => { cell.Value = booleanTally.ToSignal.SignalLabel; }); builder.AddMultilevelChangeEvent(nameof(BooleanTally.ToSignal), nameof(ISignalSourceRegistered.SignalLabel)); // Column: to color builder = builderGetterMethod(); builder.Type(DataGridViewColumnType.TextBox); builder.Header("To color"); builder.Width(70); builder.DividerWidth(DEFAULT_DIVIDER_WIDTH); builder.UpdaterMethod((booleanTally, cell) => { cell.Value = signalTallyColorTranslations.Convert(booleanTally.ToTallyColor); cell.Style.BackColor = booleanTally.ToTallyColor.ConvertToLightColor(); }); builder.AddChangeEvent(nameof(BooleanTally.ToTallyColor)); // Column: edit, delete editButtonColumnCreator(table, builderGetterMethod); deleteButtonColumnCreator(table, builderGetterMethod); }
private void baseColumnCreator(CustomDataGridView <IBoolean> table, ItemListFormBaseManager <IBoolean> .ColumnDescriptorBuilderGetterDelegate builderGetterMethod) { CustomDataGridViewColumnDescriptorBuilder <IBoolean> builder; // Custom styles DataGridViewCellStyle stateColumnStyle = BOLD_TEXT_CELL_STYLE.Clone(); stateColumnStyle.Alignment = DataGridViewContentAlignment.MiddleCenter; // Column: name builder = builderGetterMethod(); builder.Type(DataGridViewColumnType.TextBox); builder.Header("Name"); builder.CellStyle(BOLD_TEXT_CELL_STYLE); builder.Width(220); builder.UpdaterMethod((boolean, cell) => { cell.Value = boolean.Name; }); builder.AddChangeEvent(nameof(IBoolean.Name)); // Column: description builder = builderGetterMethod(); builder.Type(DataGridViewColumnType.TextBox); builder.Header("Description"); builder.Width(450); builder.UpdaterMethod((boolean, cell) => { cell.Value = boolean.Description; }); builder.AddChangeEvent(nameof(IBoolean.Description)); // Column: state builder = builderGetterMethod(); builder.Type(DataGridViewColumnType.TextBox); builder.Header("State"); builder.CellStyle(stateColumnStyle); builder.Width(80); builder.UpdaterMethod((boolean, cell) => { bool booleanCurrentState = boolean.CurrentState; cell.Value = booleanCurrentState ? "- on -" : ""; cell.Style.BackColor = booleanCurrentState ? boolean.Color : OFF_COLOR; }); builder.AddChangeEvent(nameof(IBoolean.CurrentState)); }
private void baseColumnCreator(CustomDataGridView <Macro> table, ItemListFormBaseManager <Macro> .ColumnDescriptorBuilderGetterDelegate builderGetterMethod) { CustomDataGridViewColumnDescriptorBuilder <Macro> builder; // Custom cell styles DataGridViewCellStyle runButtonCellStyle = table.DefaultCellStyle.Clone(); runButtonCellStyle.Font = new Font(runButtonCellStyle.Font, FontStyle.Bold); runButtonCellStyle.BackColor = Color.FromArgb(255, 145, 61); // Column: ID, name idColumnCreator(table, builderGetterMethod); nameColumnCreator(table, builderGetterMethod); // Column: command count builder = builderGetterMethod(); builder.Type(DataGridViewColumnType.TextBox); builder.Header("Commands"); builder.Width(70); builder.DividerWidth(DEFAULT_DIVIDER_WIDTH); builder.UpdaterMethod((macro, cell) => { cell.Value = macro.Commands.Count; }); // TODO: builder.AddChangeEvent(nameof(Macro.Commands)); // Column: run button builder = builderGetterMethod(); builder.Type(DataGridViewColumnType.Button); builder.Header("Run"); builder.Width(100); builder.ButtonText("Run"); builder.CellStyle(runButtonCellStyle); builder.CellContentClickHandlerMethod((macro, cell, e) => { macro.Run(); }); // Column: edit, delete editButtonColumnCreator(table, builderGetterMethod); deleteButtonColumnCreator(table, builderGetterMethod); }
private void baseColumnCreator(CustomDataGridView <CrosspointBoolean> table, ItemListFormBaseManager <CrosspointBoolean> .ColumnDescriptorBuilderGetterDelegate builderGetterMethod) { CustomDataGridViewColumnDescriptorBuilder <CrosspointBoolean> builder; // Column: ID, name idColumnCreator(table, builderGetterMethod); nameColumnCreator(table, builderGetterMethod); // Column: router builder = builderGetterMethod(); builder.Type(DataGridViewColumnType.TextBox); builder.Header("Router"); builder.Width(150); builder.UpdaterMethod((crosspointBoolean, cell) => { if (crosspointBoolean.WatchedRouter == null) { cell.Value = "-"; return; } cell.Value = string.Format("(#{0}) {1}", crosspointBoolean.WatchedRouter?.ID, crosspointBoolean.WatchedRouter?.Name); }); builder.AddMultilevelChangeEvent(nameof(CrosspointBoolean.WatchedRouter), nameof(Router.ID)); builder.AddMultilevelChangeEvent(nameof(CrosspointBoolean.WatchedRouter), nameof(Router.Name)); // Column: output builder = builderGetterMethod(); builder.Type(DataGridViewColumnType.TextBox); builder.Header("Output"); builder.Width(150); builder.UpdaterMethod((crosspointBoolean, cell) => { if (crosspointBoolean.WatchedOutput == null) { cell.Value = "-"; return; } cell.Value = string.Format("(#{0}) {1}", crosspointBoolean.WatchedOutput?.Index, crosspointBoolean.WatchedOutput?.Name); }); builder.AddMultilevelChangeEvent(nameof(CrosspointBoolean.WatchedOutput), nameof(RouterOutput.Index)); builder.AddMultilevelChangeEvent(nameof(CrosspointBoolean.WatchedOutput), nameof(RouterOutput.Name)); // Column: input builder = builderGetterMethod(); builder.Type(DataGridViewColumnType.TextBox); builder.Header("Input"); builder.Width(150); builder.DividerWidth(DEFAULT_DIVIDER_WIDTH); builder.UpdaterMethod((crosspointBoolean, cell) => { if (crosspointBoolean.WatchedInput == null) { cell.Value = "-"; return; } cell.Value = string.Format("(#{0}) {1}", crosspointBoolean.WatchedInput?.Index, crosspointBoolean.WatchedInput?.Name); }); builder.AddMultilevelChangeEvent(nameof(CrosspointBoolean.WatchedInput), nameof(RouterInput.Index)); builder.AddMultilevelChangeEvent(nameof(CrosspointBoolean.WatchedInput), nameof(RouterInput.Name)); // Column: edit, delete editButtonColumnCreator(table, builderGetterMethod); deleteButtonColumnCreator(table, builderGetterMethod); }
private void baseColumnCreator(CustomDataGridView <ISignalSourceRegistered> table, ItemListFormBaseManager <ISignalSourceRegistered> .ColumnDescriptorBuilderGetterDelegate builderGetterMethod) { CustomDataGridViewColumnDescriptorBuilder <ISignalSourceRegistered> builder; // Column: label builder = builderGetterMethod(); builder.Type(DataGridViewColumnType.TextBox); builder.Header("Label"); builder.Width(300); builder.DividerWidth(DEFAULT_DIVIDER_WIDTH); builder.CellStyle(BOLD_TEXT_CELL_STYLE); builder.UpdaterMethod((signal, cell) => { cell.Value = signal.SignalLabel; }); builder.AddChangeEvent(nameof(ISignalSourceRegistered.SignalLabel)); // Column: red tally builder = builderGetterMethod(); builder.Type(DataGridViewColumnType.TextBox); builder.Header("T(R)"); builder.Width(50); builder.UpdaterMethod((signal, cell) => { cell.Style.BackColor = (signal.RedTally.State ? Color.Red : Color.LightGray); }); builder.AddMultilevelChangeEvent(nameof(ExternalSignal.RedTally), nameof(IBidirectionalSignalTally.State)); // Column: yellow tally builder = builderGetterMethod(); builder.Type(DataGridViewColumnType.TextBox); builder.Header("T(Y)"); builder.Width(50); builder.UpdaterMethod((signal, cell) => { cell.Style.BackColor = (signal.YellowTally.State ? Color.Gold : Color.LightGray); }); builder.AddMultilevelChangeEvent(nameof(ExternalSignal.YellowTally), nameof(IBidirectionalSignalTally.State));; // Column: green tally builder = builderGetterMethod(); builder.Type(DataGridViewColumnType.TextBox); builder.Header("T(G)"); builder.Width(50); builder.UpdaterMethod((signal, cell) => { cell.Style.BackColor = (signal.GreenTally.State ? Color.ForestGreen : Color.LightGray); }); builder.AddMultilevelChangeEvent(nameof(ExternalSignal.GreenTally), nameof(IBidirectionalSignalTally.State)); }
private void baseColumnCreator(CustomDataGridView <ExternalSignalCategory> table, ItemListFormBaseManager <ExternalSignalCategory> .ColumnDescriptorBuilderGetterDelegate builderGetterMethod) { CustomDataGridViewColumnDescriptorBuilder <ExternalSignalCategory> builder; // Column: ID, name idColumnCreator(table, builderGetterMethod); nameColumnCreator(table, builderGetterMethod); // Column: color builder = builderGetterMethod(); builder.Type(DataGridViewColumnType.TextBox); builder.Header(""); builder.Width(30); builder.DividerWidth(DEFAULT_DIVIDER_WIDTH); builder.UpdaterMethod((category, cell) => { cell.Style.BackColor = category.Color; }); builder.AddChangeEvent(nameof(ExternalSignalCategory.Color)); // Column: edit, delete editButtonColumnCreator(table, builderGetterMethod); deleteButtonColumnCreator(table, builderGetterMethod); }
private void baseColumnCreator(CustomDataGridView <SerialPort> table, ItemListFormBaseManager <SerialPort> .ColumnDescriptorBuilderGetterDelegate builderGetterMethod) { CustomDataGridViewColumnDescriptorBuilder <SerialPort> builder; // Column: ID, name idColumnCreator(table, builderGetterMethod); nameColumnCreator(table, builderGetterMethod); // Column: com port name builder = builderGetterMethod(); builder.Type(DataGridViewColumnType.TextBox); builder.Header("COM port"); builder.Width(80); builder.UpdaterMethod((port, cell) => { cell.Value = port.ComPortName; }); builder.AddChangeEvent(nameof(SerialPort.ComPortName)); // Column: state (is initialized?) builder = builderGetterMethod(); builder.Type(DataGridViewColumnType.TextBox); builder.Header("State"); builder.Width(80); builder.UpdaterMethod((port, cell) => { cell.Style.BackColor = port.Initialized ? Color.LightGreen : Color.LightPink; cell.Value = port.Initialized ? "initialized" : "not initialized"; }); builder.AddChangeEvent(nameof(SerialPort.Initialized)); // Column: initialize button builder = builderGetterMethod(); builder.Type(DataGridViewColumnType.Button); builder.Header("Initialize"); builder.Width(70); builder.ButtonText("Initialize"); builder.CellContentClickHandlerMethod((port, cell, e) => port.Init()); // Column: deinitialize button builder = builderGetterMethod(); builder.Type(DataGridViewColumnType.Button); builder.Header("Deinitialize"); builder.Width(70); builder.DividerWidth(DEFAULT_DIVIDER_WIDTH); builder.ButtonText("Deinitialize"); builder.CellContentClickHandlerMethod((port, cell, e) => port.DeInit()); // Column: baudrate builder = builderGetterMethod(); builder.Type(DataGridViewColumnType.TextBox); builder.Header("Baudrate"); builder.Width(70); builder.UpdaterMethod((port, cell) => { cell.Value = port.BaudRate; }); builder.AddChangeEvent(nameof(SerialPort.BaudRate)); // Column: data bits builder = builderGetterMethod(); builder.Type(DataGridViewColumnType.TextBox); builder.Header("Data bits"); builder.Width(70); builder.UpdaterMethod((port, cell) => { cell.Value = port.DataBits; }); builder.AddChangeEvent(nameof(SerialPort.DataBits)); // Column: stop bits builder = builderGetterMethod(); builder.Type(DataGridViewColumnType.TextBox); builder.Header("Stop bits"); builder.Width(70); builder.UpdaterMethod((port, cell) => { cell.Value = stopBitsToStringConverter.Convert(port.StopBits); }); builder.AddChangeEvent(nameof(SerialPort.StopBits)); // Column: parity builder = builderGetterMethod(); builder.Type(DataGridViewColumnType.TextBox); builder.Header("Parity"); builder.Width(70); builder.DividerWidth(DEFAULT_DIVIDER_WIDTH); builder.UpdaterMethod((port, cell) => { cell.Value = parityToStringConverter.Convert(port.Parity); }); builder.AddChangeEvent(nameof(SerialPort.Parity)); // Column: edit, delete editButtonColumnCreator(table, builderGetterMethod); deleteButtonColumnCreator(table, builderGetterMethod); }
private void baseColumnCreator(CustomDataGridView <Mixer> table, ItemListFormBaseManager <Mixer> .ColumnDescriptorBuilderGetterDelegate builderGetterMethod) { CustomDataGridViewColumnDescriptorBuilder <Mixer> builder; // Custom cell styles DataGridViewCellStyle onProgramColumnCellStyle = table.DefaultCellStyle.Clone(); onProgramColumnCellStyle.ForeColor = Color.Red; DataGridViewCellStyle onPreviewColumnCellStyle = table.DefaultCellStyle.Clone(); onPreviewColumnCellStyle.ForeColor = Color.ForestGreen; // Column: ID, name idColumnCreator(table, builderGetterMethod); nameColumnCreator(table, builderGetterMethod); // Column: state builder = builderGetterMethod(); builder.Type(DataGridViewColumnType.TextBox); builder.Header("State"); builder.Width(100); builder.DividerWidth(DEFAULT_DIVIDER_WIDTH); builder.UpdaterMethod((mixer, cell) => { cell.Style.BackColor = stateColorConverter.Convert(mixer.State); cell.Value = mixer.StateString; }); builder.AddChangeEvent(nameof(Mixer.State)); builder.AddChangeEvent(nameof(Mixer.StateString)); // Column: inputs builder = builderGetterMethod(); builder.Type(DataGridViewColumnType.TextBox); builder.Header("Inputs"); builder.Width(50); builder.UpdaterMethod((mixer, cell) => { cell.Value = mixer.Inputs.Count; }); builder.AddChangeEvent(nameof(Mixer.Inputs)); // Column: program builder = builderGetterMethod(); builder.Type(DataGridViewColumnType.TextBox); builder.Header("Program"); builder.Width(110); builder.CellStyle(onProgramColumnCellStyle); builder.UpdaterMethod((mixer, cell) => { cell.Value = (mixer.OnProgramInputName ?? "-"); }); builder.AddChangeEvent(nameof(Mixer.OnProgramInputName)); // Column: preview builder = builderGetterMethod(); builder.Type(DataGridViewColumnType.TextBox); builder.Header("Preview"); builder.Width(110); builder.DividerWidth(DEFAULT_DIVIDER_WIDTH); builder.CellStyle(onPreviewColumnCellStyle); builder.UpdaterMethod((mixer, cell) => { cell.Value = (mixer.OnPreviewInputName ?? "-"); }); builder.AddChangeEvent(nameof(Mixer.OnPreviewInputName)); // Column: edit, delete editButtonColumnCreator(table, builderGetterMethod); deleteButtonColumnCreator(table, builderGetterMethod); }
private void baseColumnCreator(CustomDataGridView <Timer> table, ItemListFormBaseManager <Timer> .ColumnDescriptorBuilderGetterDelegate builderGetterMethod) { CustomDataGridViewColumnDescriptorBuilder <Timer> builder; // Column: ID, name idColumnCreator(table, builderGetterMethod); nameColumnCreator(table, builderGetterMethod); // Column: mode image builder = builderGetterMethod(); builder.Type(DataGridViewColumnType.Image); builder.Header(""); builder.Width(30); builder.CellStyle(TWO_PIXELS_PADDING_CELL_STYLE); builder.UpdaterMethod((timer, cell) => { cell.Value = modeImageConverter.Convert(timer.Mode); }); builder.AddChangeEvent(nameof(Timer.Mode)); // Column: mode label builder = builderGetterMethod(); builder.Type(DataGridViewColumnType.TextBox); builder.Header("Mode"); builder.Width(100); builder.DividerWidth(DEFAULT_DIVIDER_WIDTH); builder.UpdaterMethod((timer, cell) => { cell.Value = modeLabelConverter.Convert(timer.Mode); }); builder.AddChangeEvent(nameof(Timer.Mode)); // Column: running state builder = builderGetterMethod(); builder.Type(DataGridViewColumnType.Image); builder.Header(""); builder.Width(30); builder.CellStyle(TWO_PIXELS_PADDING_CELL_STYLE); builder.UpdaterMethod((timer, cell) => { if (timer.Mode == TimerMode.Clock) { cell.Value = STATE_IMAGE_NOTSHOWN; } else { cell.Value = timer.Running ? STATE_IMAGE_RUNNING : STATE_IMAGE_STOPPED; } }); builder.AddChangeEvent(nameof(Timer.Mode)); // Column: current value builder = builderGetterMethod(); builder.Type(DataGridViewColumnType.TextBox); builder.Header("Current value"); builder.Width(100); builder.CellStyle(BOLD_TEXT_CELL_STYLE); builder.UpdaterMethod((timer, cell) => { cell.Value = timer.TimeSpan.ToString(@"hh\:mm\:ss"); }); builder.AddChangeEvent(nameof(Timer.Seconds)); // Column: start value builder = builderGetterMethod(); builder.Type(DataGridViewColumnType.TextBox); builder.Header("Start value"); builder.Width(100); builder.DividerWidth(DEFAULT_DIVIDER_WIDTH); builder.UpdaterMethod((timer, cell) => { cell.Value = (timer.Mode == TimerMode.Backwards) ? TimeSpan.FromSeconds(timer.CountdownSeconds).ToString(@"hh\:mm\:ss") : ""; }); builder.AddChangeEvent(nameof(Timer.CountdownSeconds)); // Column: edit, delete editButtonColumnCreator(table, builderGetterMethod); deleteButtonColumnCreator(table, builderGetterMethod); // Column: start button builder = builderGetterMethod(); builder.Type(DataGridViewColumnType.ImageButton); builder.Header(""); builder.Width(40); builder.ButtonImage(BUTTON_IMAGE_START); builder.ButtonImagePadding(DEFAULT_IMAGE_BUTTON_PADDING); builder.UpdaterMethod((timer, cell) => { ((DataGridViewDisableButtonCell)cell).Enabled = timer.CanStart; }); builder.CellContentClickHandlerMethod((timer, cell, e) => { timer.Start(); }); builder.AddChangeEvent(nameof(Timer.Mode)); builder.AddChangeEvent(nameof(Timer.Running)); // Column: stop button builder = builderGetterMethod(); builder.Type(DataGridViewColumnType.ImageButton); builder.Header(""); builder.Width(40); builder.ButtonImage(BUTTON_IMAGE_STOP); builder.ButtonImagePadding(DEFAULT_IMAGE_BUTTON_PADDING); builder.UpdaterMethod((timer, cell) => { ((DataGridViewDisableButtonCell)cell).Enabled = timer.CanStop; }); builder.CellContentClickHandlerMethod((timer, cell, e) => { timer.Stop(); }); builder.AddChangeEvent(nameof(Timer.Mode)); builder.AddChangeEvent(nameof(Timer.Running)); // Column: reset button builder = builderGetterMethod(); builder.Type(DataGridViewColumnType.ImageButton); builder.Header(""); builder.Width(40); builder.DividerWidth(DEFAULT_DIVIDER_WIDTH); builder.ButtonImage(BUTTON_IMAGE_RESET); builder.ButtonImagePadding(DEFAULT_IMAGE_BUTTON_PADDING); builder.UpdaterMethod((timer, cell) => { ((DataGridViewDisableButtonCell)cell).Enabled = timer.CanReset; }); builder.CellContentClickHandlerMethod((timer, cell, e) => { timer.Reset(); }); builder.AddChangeEvent(nameof(Timer.Mode)); builder.AddChangeEvent(nameof(Timer.Running)); // Column: open timer window button builder = builderGetterMethod(); builder.Type(DataGridViewColumnType.Button); builder.Header("Open window"); builder.Width(100); builder.ButtonText("Open window"); builder.CellContentClickHandlerMethod((timer, cell, e) => { var timerWindow = new TimerWindow(timer); timerWindow.ShowAsChild(); }); }
private void baseColumnCreator(CustomDataGridView <ExternalSignal> table, ItemListFormBaseManager <ExternalSignal> .ColumnDescriptorBuilderGetterDelegate builderGetterMethod) { CustomDataGridViewColumnDescriptorBuilder <ExternalSignal> builder; // Column: ID, name idColumnCreator(table, builderGetterMethod); nameColumnCreator(table, builderGetterMethod); // Column: category builder = builderGetterMethod(); builder.Type(DataGridViewColumnType.TextBox); builder.Header("Category"); builder.Width(150); builder.DividerWidth(DEFAULT_DIVIDER_WIDTH); builder.UpdaterMethod((signal, cell) => { cell.Value = (signal.Category != null) ? string.Format("(#{0}) {1}", signal.Category.ID, signal.Category.Name) : "(not associated)"; cell.Style.BackColor = (signal.Category != null) ? signal.Category.Color : table.DefaultCellStyle.BackColor; }); builder.ExternalUpdateEventSubscriberMethod((signal, updateInvoker) => { PropertyChangedTwoValuesDelegate <IModel, int> signalCategoryIdChangedHandler = (_category, oldCategory, newCategory) => updateInvoker(); PropertyChangedTwoValuesDelegate <IModel, string> signalCategoryNameChangedHandler = (_category, oldName, newName) => updateInvoker(); PropertyChangedTwoValuesDelegate <ExternalSignalCategory, Color> signalCategoryColorChangedHandler = (_category, oldColor, newColor) => updateInvoker(); if (signal.Category != null) { signal.Category.IdChanged += signalCategoryIdChangedHandler; signal.Category.NameChanged += signalCategoryNameChangedHandler; signal.Category.ColorChanged += signalCategoryColorChangedHandler; } signal.CategoryChanged += (_signal, oldCategory, newCategory) => { if (oldCategory != null) { oldCategory.IdChanged -= signalCategoryIdChangedHandler; oldCategory.NameChanged -= signalCategoryNameChangedHandler; oldCategory.ColorChanged -= signalCategoryColorChangedHandler; } if (newCategory != null) { newCategory.IdChanged += signalCategoryIdChangedHandler; newCategory.NameChanged += signalCategoryNameChangedHandler; newCategory.ColorChanged += signalCategoryColorChangedHandler; } }; }); builder.AddChangeEvent(nameof(ExternalSignal.Category)); // Column: red tally builder = builderGetterMethod(); builder.Type(DataGridViewColumnType.TextBox); builder.Header("T(R)"); builder.Width(50); builder.UpdaterMethod((signal, cell) => { cell.Style.BackColor = (signal.RedTally.State ? Color.Red : Color.LightGray); }); builder.AddMultilevelChangeEvent(nameof(ExternalSignal.RedTally), nameof(IBidirectionalSignalTally.State)); // Column: yellow tally builder = builderGetterMethod(); builder.Type(DataGridViewColumnType.TextBox); builder.Header("T(Y)"); builder.Width(50); builder.UpdaterMethod((signal, cell) => { cell.Style.BackColor = (signal.YellowTally.State ? Color.Gold : Color.LightGray); }); builder.AddMultilevelChangeEvent(nameof(ExternalSignal.YellowTally), nameof(IBidirectionalSignalTally.State)); // Column: green tally builder = builderGetterMethod(); builder.Type(DataGridViewColumnType.TextBox); builder.Header("T(G)"); builder.Width(50); builder.DividerWidth(DEFAULT_DIVIDER_WIDTH); builder.UpdaterMethod((signal, cell) => { cell.Style.BackColor = (signal.GreenTally.State ? Color.ForestGreen : Color.LightGray); }); builder.AddMultilevelChangeEvent(nameof(ExternalSignal.GreenTally), nameof(IBidirectionalSignalTally.State)); // Column: edit, delete editButtonColumnCreator(table, builderGetterMethod); deleteButtonColumnCreator(table, builderGetterMethod); }
private void baseColumnCreator(CustomDataGridView <Vtr> table, ItemListFormBaseManager <Vtr> .ColumnDescriptorBuilderGetterDelegate builderGetterMethod) { CustomDataGridViewColumnDescriptorBuilder <Vtr> builder; // Column: ID, name idColumnCreator(table, builderGetterMethod); nameColumnCreator(table, builderGetterMethod); // Column: state image builder = builderGetterMethod(); builder.Type(DataGridViewColumnType.Image); builder.Header(""); builder.Width(30); builder.CellStyle(TWO_PIXELS_PADDING_CELL_STYLE); builder.UpdaterMethod((vtr, cell) => { cell.Value = stateImageConverter.Convert(vtr.State); }); builder.AddChangeEvent(nameof(Vtr.State)); // Column: state label builder = builderGetterMethod(); builder.Type(DataGridViewColumnType.TextBox); builder.Header("State"); builder.Width(60); builder.DividerWidth(DEFAULT_DIVIDER_WIDTH); builder.UpdaterMethod((vtr, cell) => { cell.Value = stateLabelConverter.Convert(vtr.State); }); builder.AddChangeEvent(nameof(Vtr.State)); // Column: title builder = builderGetterMethod(); builder.Type(DataGridViewColumnType.TextBox); builder.Header("Title"); builder.Width(200); builder.CellStyle(BOLD_TEXT_CELL_STYLE); builder.UpdaterMethod((vtr, cell) => { cell.Value = vtr.Title; }); builder.AddChangeEvent(nameof(Vtr.Title)); // Column: time (full) builder = builderGetterMethod(); builder.Type(DataGridViewColumnType.TextBox); builder.Header("Time (full)"); builder.Width(100); builder.UpdaterMethod((vtr, cell) => { cell.Value = vtr.TimeFull.ToString(@"hh\:mm\:ss"); }); builder.AddChangeEvent(nameof(Vtr.SecondsFull)); // Column: time (elapsed) builder = builderGetterMethod(); builder.Type(DataGridViewColumnType.TextBox); builder.Header("Time (elapsed)"); builder.Width(100); builder.UpdaterMethod((vtr, cell) => { cell.Value = vtr.TimeElapsed.ToString(@"hh\:mm\:ss"); }); builder.AddChangeEvent(nameof(Vtr.SecondsElapsed)); // Column: time (remaining) builder = builderGetterMethod(); builder.Type(DataGridViewColumnType.TextBox); builder.Header("Time (remaining)"); builder.Width(100); builder.DividerWidth(DEFAULT_DIVIDER_WIDTH); builder.UpdaterMethod((vtr, cell) => { cell.Value = vtr.TimeRemaining.ToString(@"hh\:mm\:ss"); }); builder.AddChangeEvent(nameof(Vtr.SecondsRemaining)); // Column: edit, delete editButtonColumnCreator(table, builderGetterMethod); deleteButtonColumnCreator(table, builderGetterMethod); }