Skip to content

Collapse what does not help when focusing the state machine on an error, and show the ways to fix it #170

Open

Description

@CatarinaGamboa

Problem

When the State Machine view opens on a state error, focus mode dims what does not help with the error (#158) but keeps every label's text, so the layout does not move. On a large machine the dimmed label stacks still take up the space. In the UDP chat client (DatagramSocket), 11 and 13 dimmed methods sit next to unbound and bound. The state the error is about, closed, ends up below the fold, so the user has to scroll the panel to find it.

#117 first asked for a reduced initial view. #158 chose dimming so that toggling would not re-lay out the diagram.

The view also shows where a call is rejected but not how to get to a state that accepts it. The verifier's hints only appear in the Verification tab.

Proposal

Keep the full diagram and never remove a state. In focus mode, collapse what is dimmed instead of only fading it:

  • Collapse the dimmed methods of each label into a count, with their names in a tooltip: receive · +9 more, 2 methods. Overloads count once. Hovering the count lists those methods next to it, and a click keeps the list open.
  • Merge the constructors of each state into one arrow.
  • Lay the diagram out again, and shrink a tall diagram to fit the panel, but not below a readable scale (60%).
  • Show all stays exactly as it is today.

Include the possible ways to fix the error, from the verifier: the state hints of the error (liquid-java/liquidjava#411 and the PRs after it), listed in the State Machine view as in the Verification tab. They may say "(and possibly others)".

Ways read from the diagram alone were tried and dropped. A shortest path along the transitions ignores their conditions and the code. For a state that no call leaves, such as closed, it could only suggest creating a new object. In the UDP case the real fix is in the control flow, which the verifier's hint already says.

Not in scope

  • Using the error categories to choose what to show (Label errors with the kind of mistake they show liquidjava#418). This was discussed. The categories are right for 34 of 52 exercises, and most wrong labels are "argument picks the state" bugs reported as Out of order. A diagram reduced by category would hide the evidence in exactly those cases. Categories can add emphasis later, but never remove parts.
  • Drawing a selected hint on the diagram (Show hints in state machine #156). The hints are text, and their states are combinations of state sets, while the diagrams have one machine per state set.

Acceptance

  • On DatagramSocket in the UDP chat client, the focused view shows closed and bound without scrolling.
  • Focus mode keeps the failed method bright. Every state is still drawn, and every collapsed label can be expanded.
  • Show all is unchanged.
  • The view lists the verifier's hints.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions