public WidgetApplication(IConsoleBox console, Func <IWidget> viewFactory) { Console = console; Context = new BuildContext(); factory = viewFactory; InputManager = new UserInputManager(); UI = new UIManager(console); // note: Order on wiring up events matters! // we want the UI to process the events prior to // firing off renders console.KeyEvent += (s, e) => { InputManager.OnKey(e); Render(); }; console.MouseMove += (s, e) => Render(); console.MouseButtonUp += (s, e) => Render(); console.MouseClick += (s, e) => Render(); console.MouseWheel += (s, e) => Render(); console.MouseButtonDown += (s, e) => Render(); console.ResizeEvent += (s, e) => { console.Clear(); Render(true); }; Context.State.Set(UserInputManager.STATE_KEY, InputManager); }