protected void FormatCell(BaseTimetableDataElement data, Station sta, bool arrival, TextBox tb) { string val = tb.Text; if (val == null || val == "") { data.SetError(sta, arrival, null); data.SetTime(sta, arrival, "0"); return; } val = normalizer.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 void CellSelected(BaseTimetableDataElement data, Station sta, bool arrival);
protected abstract Point GetNextEditingPosition(BaseTimetableDataElement data, GridView view, KeyEventArgs e);
public TimetableCellRenderProperties(Func <ArrDep, TimeSpan> time, Station sta, bool arrival, BaseTimetableDataElement data) { if (fn == null || fb == null || errorColor == null) { fb = SystemFonts.Bold(); fn = SystemFonts.Default(); errorColor = new Color(Colors.Red, 0.4f); } Background = Colors.White; Font = fn; var ardp = data.ArrDeps[sta]; if (!data.HasError(sta, arrival)) { Text = time(ardp) != default ? time(ardp).ToShortTimeString() : ""; } 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("Die erste Station darf keinen Trapeztafelhalt beinhalten!"); } Background = ardp.TrapeztafelHalt ? Colors.LightGrey : Colors.White; if (ardp.Zuglaufmeldung != null && ardp.Zuglaufmeldung != "") { Font = fb; } } if (data.HasError(sta, arrival)) { Background = errorColor; } }