I'm commonly working on GUIs where I want to directly prevent a user from doing things they should not be able to do by disabling controls on a form. For example maybe I don't want the "Process Widgets" button to be enabled unless the user currently has a "Widget Project" open in the application? Or the "Cancel Processing" button only becomes enabled when the widget processing is running.
Is there a commonly used design pattern to synchronize changes of state in the object model with the state of the GUI?