Example #1
0
        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);
        }
Example #2
0
        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));
        }
Example #3
0
        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);
        }
Example #5
0
        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);
        }
Example #7
0
        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);
        }
Example #8
0
        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);
        }
Example #9
0
        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);
        }
Example #11
0
        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);
        }