protected override Point GetNextEditingPosition(BaseTimetableDataElement data, GridView view, KeyEventArgs e) { var arrival = data.IsSelectedArrival; var isTime = data.SelectedTextBox == null; int idx = (arrival ? 1 : 2) + (isTime ? 2 : 0); int row = view.SelectedRow; if (!e.Control) { idx++; if (idx > 4) { idx = 1; row++; } } else { idx--; if (idx < 1) { idx = 4; row--; } } return(new Point(row, idx)); }
protected override void CellSelected(BaseTimetableDataElement data, Station sta, bool arrival) { trapeztafelToggle.Checked = data.ArrDeps[sta].TrapeztafelHalt; requestToggle.Checked = data.ArrDeps[sta].RequestStop || sta.RequestStop; trapeztafelToggle.Enabled = requestToggle.Enabled = arrival && !data.IsFirst(sta) && !sta.RequestStop; zlmButton.Enabled = arrival ^ data.IsFirst(sta); }
protected void FormatCell(BaseTimetableDataElement data, Station sta, bool arrival, TextBox tb) { string val = tb.Text; if (string.IsNullOrEmpty(val)) { data.SetError(sta, arrival, null); data.SetTime(sta, arrival, "0"); return; } val = timeNormalizer.Normalize(val); bool error = true; if (val != null) { tb.Text = val; data.SetTime(sta, arrival, val); error = false; } data.SetError(sta, arrival, error ? tb.Text : null); }
protected abstract Point GetNextEditingPosition(BaseTimetableDataElement data, GridView view, KeyEventArgs e);
protected abstract void CellSelected(BaseTimetableDataElement data, Station sta, bool arrival);
public TimetableCellRenderProperties(Func <ArrDep, TimeEntry> time, Station sta, bool arrival, BaseTimetableDataElement data) { if (!initialized) { fb = SystemFonts.Bold(); fn = SystemFonts.Default(); fc = SystemFonts.Cached(SystemFont.Default, null, FontDecoration.Underline); fbc = SystemFonts.Cached(SystemFont.Bold, null, FontDecoration.Underline); var errorHsl = Colors.Red.ToHSL(); errorHsl.L *= 0.8f; errorColor = errorHsl.ToColor(); bgColor = SystemColors.ControlBackground; textColor = SystemColors.ControlText; initialized = true; } Background = bgColor; Font = fn; var ardp = data.ArrDeps[sta]; if (!data.HasError(sta, arrival)) { Text = time(ardp) != default ? time(ardp).ToTimeString() : ""; } else { Text = data.GetErrorText(sta, arrival); } var first = data.IsFirst(sta); if ((!arrival && data.IsLast(sta)) || (arrival && first)) { ReadOnly = true; Background = Colors.DarkGray; } else if (arrival ^ first) { if (first && ardp.TrapeztafelHalt) { throw new Exception(T._("Die erste Station darf keinen Trapeztafelhalt beinhalten!")); } Background = ardp.TrapeztafelHalt ? Colors.LightGrey : bgColor; if (ardp.RequestStop) { Font = fc; } if (!string.IsNullOrEmpty(ardp.Zuglaufmeldung) && !ardp.RequestStop) { Font = fb; } if (!string.IsNullOrEmpty(ardp.Zuglaufmeldung) && ardp.RequestStop) { Font = fbc; } } if (data.HasError(sta, arrival)) { Background = errorColor; } }