DO NOT MERGE: Implemented new in-canvas view buttons

The following indentation changes are because the use of new state machine properties (e.g. ```IsConnecting```) rather than the old ```StateMachine.State``` enumeration that is now made private. So no more ```switch-case``` is required.