wiki:PRO_LIB_INSPECTOR_R0
Last modified 3 years ago Last modified on 01/22/09 17:26:17

Analysis

Overview

The PRO_LIB_INSPECTOR is a GUI tool that allows browsing the application state while it still works. The inspector should be improved in the appropriate way.

Task requirements

  • Make the inspector more useful.
  • Make the inspector not so complicated.

Task result

The result of this task should be code.

Implementation idea

  • More useful:
    • Add keyboard navigation features.
    • Add additional info besides Name, Value, State, Type.
  • Not complicated:
    • Remove (if possible) the recursively displayed things.
    • Examine all the things displayed and choose whether to display all of them. (may not be rational to have all this information since it may not be needed).

PRO_LIB_CORE_TUTORIAL_R0

How to demo

  • Open eclipse and run Sophie2.0.
  • Besides the main window of Sophie2.0 a separate window should be displayed which is the inspector itself.
  • Use the keyboard to navigate through the inspector.
  • Use the mouse to navigate through the inspector.
  • All the things that are present in Sophie2.0 should be displayed in the inspector as well.

Design

  • Key shortcuts:
    • Add а key listener so that expanding and collapsing rows as well as moving up/down is possible:
      • Using the up/down arrow keys goes up/down.
      • Using the enter key goes down (default behavior).
      • Using the right key extends a row (when the row is not expandable goes down).
      • Using the left key collapses a row (when the row is not collapsible goes up).
  • Setting panel:
    • Create check-boxes positioned in the bottom panel aligned on the left side of the refresh button by which one should be able to select things that are included in the Inspector fields.
      • class fields - all part of the properties themselves.
      • useful things that the different properties provide:
        • #value
        • #lastProblem
        • #size - this includes the "#i" (i = 1...n) index of every element in the list which size is displayed.
  • Things that should be excluded will not be defined because selecting what to be included provides a way to exclude things.
  • In order to provide the functionalities for including and excluding things a class should be provided which keeps what is selected and what is not.
    • The class should be accessed in a static way because the Nodes in the InspectorModel are static inner classes.
      • Class InspectorSettingsPanel having a !JCheckBox for class fields and several !JCheckBoxes for #value, #lastProblem, #size, etc.
      • The InspectorSettingsPanel should be singleton since it should be accessible from the ObjectNode in the InspectorModel.
      • An enum can be used having a String and a boolean value. This way it will be exact mapping of the #value, #lastProblem, #size fields in the Inspector. The boolean will determine whether the field is visible or not.
    • Some more buttons should be listened in the KeyListener of the Inspector itself.
  • All the expanded paths before the refresh and should be restored after the refresh.
    • provide method that creates a List of Strings. Every String should represent the path to one expanded Node in the form "/parent/child/........."
    • the last selected row before the refresh DOES NOT remain after the refresh.

Implementation

  • done according to design. 542, 576
  • Logging level changed to DEBUG

Testing

User documentation

ITERATION_04/Release/UserDocumentation/01_PreReleaseSophie/04_SpecialFeatures

Release documentation

ITERATION_04/Release/UserDocumentation/01_PreReleaseSophie/04_SpecialFeatures

Manual tests

Testlink test ids: 42

Main tests

Testlink test ids: 42

Related tests

(none so far)

Reported bugs

(none so far)

Comments

Log

Analysis: Peko - 25mins
Review - 4 by Pap. It's fine.
Design:
Implementation:
Testing:
Comments: