Bug 272416 - [WorkingSets] Usability problems in Working Set Configs dialog
Summary: [WorkingSets] Usability problems in Working Set Configs dialog
Status: RESOLVED FIXED
Alias: None
Product: CDT
Classification: Tools
Component: cdt-build (show other bugs)
Version: 5.0.2   Edit
Hardware: PC All
: P3 normal (vote)
Target Milestone: 6.0   Edit
Assignee: Elena Laskavaia CLA
QA Contact: Elena Laskavaia CLA
URL: http://wiki.eclipse.org/CDT/designs/w...
Whiteboard:
Keywords: usability
Depends on:
Blocks:
 
Reported: 2009-04-15 19:31 EDT by Christian Damus CLA
Modified: 2010-05-28 13:21 EDT (History)
1 user (show)

See Also:


Attachments
New working set configs dialog and build menu (206.01 KB, patch)
2009-04-21 17:34 EDT, Christian Damus CLA
no flags Details | Diff
Updates to add menus and property page to working sets (241.96 KB, patch)
2009-04-23 10:13 EDT, Christian Damus CLA
elaskavaia.cdt: iplog+
elaskavaia.cdt: review+
Details | Diff
Small increment for mutability of a read-only API (2.50 KB, patch)
2009-04-24 13:07 EDT, Christian Damus CLA
elaskavaia.cdt: iplog+
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Christian Damus CLA 2009-04-15 19:31:50 EDT
CDT 5.0.2, 6.0 M7

The CDT provides support for defining build configurations of working
sets, in the "Configs for working sets" action in the "Project -> Build Configurations" menu.  This is very useful.

However, the user interface for these configurations is awkward:
  - the "-- CURRENT --" configuration looks like a normal configuration.
    It would be more intuitive to simply put a check-mark in the list
    to make and indicate the selection (as in the project configuration
    selection on the right side of the dialog)
  - the "Update config set" button must be pressed in order to persist
    changes.  Simply closing the dialog with the "Close" button should
    do the same
  - the words "config set" are redundant in every button
  - "Apply" should be used instead of "Update"
  - the "Save, Build, and Exit" button is confusing.  It isn't clear
    what it saves, nor why it closes the dialog

I elaborate further in the design doc referenced in this bug's URL, with a proposal for a new dialog that I would like to contribute.  I invite comment on this proposal on the wiki page's discussion page.
Comment 1 Christian Damus CLA 2009-04-21 17:34:34 EDT
Created attachment 132680 [details]
New working set configs dialog and build menu

Attached a patch implementing:

  - the new Manage Working Set Configurations dialog
  - the dynamic "build working set configuration" menu

as described in today's update of the Wiki document linked by this bug's URL.

Please, review both the document and the patch, and consider adopting it for this release.  I understand that M7 is fast approaching ... I will respond promptly to any comments or requests for alteration.

Thanks!

A few noteworthy points for consideration:

  - the patch has all new API in internal packages, as it is now past
    M6 and there is no time to "soak" the API to test it with ISVs
    for suitability.  Nonetheless, I think the UI based on the new API
    is useful

  - extension points cannot really be flagged as "internal."  The
    description of the new org.eclipse.cdt.ui.workingSetConfigurations
    point does clearly indicate, though, that it is intended to be
    internal in this release.  Besides, I see from the host plug-in's
    build.properties that none of the schema files are included in the
    SDK build, so they might actually *all* be considered internal ;-)

  - in order to implement dynamic menu contributions, the cleanest
    solution (with the least possible nesting of menus) uses the
    org.eclipse.ui.menus extension point.  This point supports legacy
    action contributions, but it cannot contribute to legacy menu
    definitions.  Therefore, it was necessary to convert the definition
    of the "Project -> Build Configurations" menu to the newer extension
    point.  It seems to be compatible (all of the expected menu contents
    appear, and turning the action set on and off in the "Configure
    Perspective..." dialog has the expected results).  I will happily
    look for another solution if this change is not acceptable

  - I tried to preserve as many externalized strings as possible, but in
    the end, only two remain from the former dialog.  The UI changes
    required are simply too extensive to do otherwise

  - I tested the patch with a variety of different kinds of working sets
    combining these dimensions:
      - C/C++ working sets and Resource working sets
      - managed-make and custom-make projects
      - working sets including non-CDT projects
      - working sets including non-project resources
      - working sets comprising *only* non-project resources
    and also loading the initial working set configurations from the
    preference-string storage of the CDT 5.0 dialog
Comment 2 Christian Damus CLA 2009-04-23 10:13:26 EDT
Created attachment 132936 [details]
Updates to add menus and property page to working sets

Attached an update with the following enhancements from off-line feed-back:

- Add (active) decoration to active project configuration in the
  Projects Configurations tree
- Sort working set configurationss in the menus
- Set project node checked state greyed to indicate that they are
  not selectable items (as well as can be done in a tree control.
  It would have been nice to be able to suppress the check boxes
  on the top-level nodes)
- on dialog open, select first child node of a working set so that
  we can see the projects that it contains (selecting the working set
  is not useful)
- added a Build button to the dialog, that builds without activating
  the selected working set configuration
- replaced the dynamic working set sub-menus in the "Project -> Build
  Configurations" menu with "Set Active by Working Set" and "Build by
  Working Set" sub-menus, to make it clear what the menus actually do,
  and to add the missing activation capability
- heuristically make initial project configuration selections for new
  working set configurations by matching the working set configuration
  name to the project configuration names.  This makes it easier to
  create working set configurations for the conventional Debug and
  Release variants
- contribute a "C/C++ Build" property page to working sets for the
  management of the configurations of the selected working set.
  Re-uses the same block of controls as the dialog
- add "Build" and "Set Active" menus to working sets in Project Explorer
- added mnemonics for menus, including ordinal numbers for the
  dynamically-populated working set and configuration names
- defined a property tester for working sets, with so far one property:
  "hasCProjects".  Use to filter menu and property page contributions
  to relevant working sets
Comment 3 Elena Laskavaia CLA 2009-04-23 10:28:33 EDT
Good job! Now it suddenly a lot more usefull
a) It is accessible (in property page)
b) It is straight forward (build configuration menu contribution for working set)

I am going to commit it unless somebody has any concerns
Comment 4 Elena Laskavaia CLA 2009-04-23 10:59:59 EDT
-assigned to me
Comment 5 Elena Laskavaia CLA 2009-04-23 11:01:25 EDT
patch applied to head, thanks

Do we need to update docs too? It is probably not documented anyway...
Comment 6 Christian Damus CLA 2009-04-23 11:11:14 EDT
(In reply to comment #5)
> patch applied to head, thanks

Thank *you*!

> Do we need to update docs too? It is probably not documented anyway...

I had thought of that, but didn't find any existing documentation for the old dialog.  Actually, much of the documentation is quite out of date (especially the screenshots).

I'd be happy to contribute docs.  It might help people to discover these new features.  I'll raise a separate doc bug, for that, if I find that I have the resources to do it.
Comment 7 Elena Laskavaia CLA 2009-04-23 11:13:26 EDT
ok thanks
Comment 8 Christian Damus CLA 2009-04-24 13:07:08 EDT
Created attachment 133153 [details]
Small increment for mutability of a read-only API

Attached a patch with a small update to the API.  An interface that is supposed to be immutable has a misplaced setter operation.  The patch moves it to the mutable working-copy ("snapshot") interface.
Comment 9 Christian Damus CLA 2009-04-24 13:08:06 EDT
Reopening for the API fix in the latest patch.  Best to fix it now, while we can ...
Comment 10 Elena Laskavaia CLA 2009-04-24 13:45:52 EDT
patch applied