public override void KeyDown(KeyEvent ev) { //Rotate through each clock hand if (ev.Key == Gdk.Key.Right) { switch (_selected) { case AnalogClockHandSelected.Hour: _selected = AnalogClockHandSelected.Minute; break; case AnalogClockHandSelected.Minute: _selected = AnalogClockHandSelected.Second; break; case AnalogClockHandSelected.Second: _selected = AnalogClockHandSelected.Hour; break; } //Update clock value } else if (ev.Key == Gdk.Key.Up) { switch (_selected) { case AnalogClockHandSelected.Hour: if (_figure.Hour == 23) _figure.Hour = 0; else _figure.Hour = _figure.Hour + 1; break; case AnalogClockHandSelected.Minute: if (_figure.Minute == 59) _figure.Minute = 0; else _figure.Minute = _figure.Minute + 1; break; case AnalogClockHandSelected.Second: if (_figure.Second == 59) _figure.Second = 0; else _figure.Second = _figure.Second + 1; break; } } else if (ev.Key == Gdk.Key.Down) { switch (_selected) { case AnalogClockHandSelected.Hour: if (_figure.Hour == 0) _figure.Hour = 24; else _figure.Hour = _figure.Hour - 1; break; case AnalogClockHandSelected.Minute: if (_figure.Minute == 0) _figure.Minute = 59; else _figure.Minute = _figure.Minute - 1; break; case AnalogClockHandSelected.Second: if (_figure.Second == 0) _figure.Second = 59; else _figure.Second = _figure.Second - 1; break; } } DefaultTool.KeyUp (ev); }
public AnalogClockTool(IDrawingEditor editor, AnalogClockFigure fig, ITool dt) : base(editor, fig, dt) { _figure = fig; _selected = AnalogClockHandSelected.Hour; }