This discussion is very interesting but I’m afraid that some UI programming fundamentals are forgotten. I think that I should explain this more simply than I did above.
An application UI must be managed in a centralized way. Using a Finite State Machine will certainly help a lot but this approach is not mandatory. The basic idea is to clearly identify the various states in which the application currently is. In a given state, it must be determined whether a user action triggers a state change. If this is the case, this event must be immediately sent to the code managing the UI. This code will update the state of each UI element, according to the new state. This includes :
- disabling any UI element that cannot be used in the current state
- enabling all UI elements that are relevant for the new state
- clearly give feedback about the new application state (e.g. by changing the appearance of the relevant UI elements).
- possibly rearrange the whole UI if the current state needs this
The current discussion about the necessity of a GA or LA mode is actually a discussion about determining whether the application enters a different state when LA tools are activated. And the answer is IMHO, clearly yes.
Why ? Because when LA tools are active, a lot of user actions do not have the same result. Mouse click, mouse hovering of the image, click on a slider (or impossibility to click it). If the same user action doesn’t trigger the same result, the application is in a different state, period. Back to the necessary actions described above. Any UI that doesn’t respect this approach is doomed to create confusion for the user and will facilitate the apparition of bugs.
We can compare this to another key programming principle : a given information should always be provided by the same source. It’s the same for the UI : all user actions have to be managed in a centralized way. And the DPL 7 UI clearly demonstrates that it’s not the case.
As long as this situation persists, we’ll have problems with this UI.