Status fields are set either manually by the user or by an external event; for example, the purchase order status is changed based on status change of the associated purchase order lines.
In the case where a status field is set manually by the user, which is our case, it is not normally appropriate to allow the user to edit this field directly. A change in status is an important event, and we should make this more of a deliberate action.
There are two patterns we can choose to edit a status: a menu item per status that is added to the form in a button group, or a drop dialog with a drop-down list control.
The menu item method gives us scope to disable or enable the buttons based on the current record. ...