The DJ controller should be used to control the current window only. For that, we need a context-based approach for command handling - each window either specifies its own context or parent from which to inherit the context; the command processor looks up the context and controls the UI based on that context.
Windows and dialogs register handlers within their context, e. g. context "PlayerWindow" command "NavigateUp" should move the playlist selection up
DJControllers queries the app's focused window, builds the context from there and uses it to dispatch the message to the registered handler.
The DJ controller should be used to control the current window only. For that, we need a context-based approach for command handling - each window either specifies its own context or parent from which to inherit the context; the command processor looks up the context and controls the UI based on that context.
DJControllers
queries the app's focused window, builds the context from there and uses it to dispatch the message to the registered handler.