protected override void CellSelected(BaseTimetableDataElement data, Station sta, bool arrival)
        {
            trapeztafelToggle.Checked = data.ArrDeps[sta].TrapeztafelHalt;

            internalToggle.Enabled = arrival && !data.IsFirst(sta);
            zlmButton.Enabled      = arrival ^ data.IsFirst(sta);
        }
        protected override Point GetNextEditingPosition(BaseTimetableDataElement data, GridView view, KeyEventArgs e)
        {
            var path = data.Train.GetPath();
            int idx, row;

            if (!e.Control)
            {
                idx = path.IndexOf(data.GetStation()) * 2 + (data.IsSelectedArrival ? 1 : 2);
                row = view.SelectedRow;
                if (path.Last() == data.GetStation() && data.IsSelectedArrival)
                {
                    idx = 1;
                    row++;
                }
            }
            else
            {
                idx = path.IndexOf(data.GetStation()) * 2 - (data.IsSelectedArrival ? 1 : 0);
                row = view.SelectedRow;
                if (path.First() == data.GetStation() && !data.IsSelectedArrival)
                {
                    idx = (path.Count - 1) * 2;
                    row--;
                }
            }
            return(new Point(row, idx));
        }
        protected override Point GetNextEditingPosition(BaseTimetableDataElement data, GridView view, KeyEventArgs e)
        {
            var arrival = data.IsSelectedArrival;
            var idx     = arrival ? 2 : 1;
            int row;

            if (!e.Control)
            {
                row = view.SelectedRow + (arrival ? 0 : 1);
            }
            else
            {
                row = view.SelectedRow - (arrival ? 1 : 0);
            }
            return(new Point(row, idx));
        }