Following is a list of general requirements for this PowerToy.


  • PowerToy should enhance an existing DSL solution to add one or more 'views' to the DSL (one 'view' for each desired 'aspect' of the domain model to expose)
  • Each view will be displayed using an editor which will be hosted in a tool-window specific to that DSL only, although the same tool-window may be used for all editors, using a toolbar and buttons/tabs to switch between editors.
  • PowerToy is expected to add various source artefacts to the DSL language, to be transformed and compiled with the DSL solution
  • PowerToy should be able to be removed from DSL with ease (i.e. removal of associated files and configuration)
  • The advanced provided hierarchical editors will enhanced standard windows control (such as a ListView/TreeView etc), and will not create a new custom control from scratch.
    • Custom code for this control should be judged clearly maintainable by an average enterprise developer (i.e. not pages and pages of 'terrifying Win32 message handlers etc.')
    • Should not break the default accessibility functionality of the base control.


  • Hosting:
    • Editors should be hosted either within a tool-window alongside the DSL, or replace the graphical designer of the DSL as
    • Host should have a configurable icon and title (and should reflect active editor)
    • Each editor should at least an icon and title associated to it
  • Advanced Editor
    • Configurable domain properties of domain class for each row
    • Per row column header text
    • Contextual column header naming to reflect current selected row(s)
    • Item(s) icon and Identifier (name)
    • Hierarchical domain relationships of any depth
    • Optional 'New' row (grayed out) with optional caption
    • Read-Only cells to reflect domain property state
    • Cell values and editors using TypeDescriptors on domain classes
    • Merged empty cells
    • Keyboard:
      • Full keyboard navigation in both X and Y axis and expand/collapse with left/right keys
      • Del/Insert, Move keys
    • Other:
      • Right-click context menu for common Add/Remove/Move operations


  • Single MSI installation package
    • Installs all PowerToy files to development machine
    • Installs a Guidance Package valid for all DSL Projects, that adds a single recipe to add PowerToy to the DSL solution.
    • Installs a configuration D


  • The integration of the PowerToy with the DSL solution should be achievable using some form of editable configuration, initially a recipe to configure single editor, and later a small DSL language to configure multiple editors.


  • Should be possible to easily customize all aspects of PowerToy
  • Should be possible, through 'Double-Derived' pattern and additional partial classes to customize most functionality points of the PowerToy, by simply adding code files to the DSL solution

Last edited May 16, 2007 at 8:44 AM by jezzsa, version 17


No comments yet.