Welcome

This is the home of the DSL Editor ‘PowerToy’ project - a DSL enhancement PowerToy for displaying multiple customized views of a domain specific languages (DSL's).

Quick links

Current Release: M1 Released
Documentation
What is this release?
How to install and use it?
How to customize it?
Next Release: What is the next release?
All Releases

What is it?

This PowerToy aims to provide a new capability that will provide an enhanced user experience for displaying and interacting with different aspects of a domain model in multiple dedicated 'editors'.

The PowerToy will provide your DSL with a new tool-window containing one or more editors that manage configurable 'views' of domain classes, and their relationships. The PowerToy displays these various views by hosting windows controls that display the view, and manage the users interaction with them.

For example, the following screenshot displays one such editor (bottom-half of the screen) specific for manipulating 'Data Contracts' of an existing example DSL used for authoring Web Services.

[image:DataContractEditor(Small).jpg]

You can also see a similar example of an editor specific for 'Service Operations' of the same DSL here.
Another example of an alternative implementation used for Data Contracts in another DSL here.

The Basic Idea

The PowerToy will be available for download (also in source form), and will be installed by a DSL developer on their development machine. The DSL author will, within their existing DSL solution, add and configure one or more custom editors to display some aspect of the domain model of their DSL. At runtime these editors will be displayed to the user of their DSL.

The PowerToy will provide (as one choice of editor) a tree-grid-like control that displays a hierarchy of domain models elements and their child relationships. This control then allows the user to interact with and manipulate the domain classes and their properties.

Please check our example User Scenario for more details for one requirement for this kind of editor, and what drove the existing implementation for it.

Benefits

The benefits of the PowerToy include:
  • Provides a means to view/edit relationships and domain classes that have no visible representation on the diagram
  • Reduces shape clutter on the diagram surface
  • Provides a hierarchical view of (possibly hidden) child relationships
  • Provides a better UX (keyboard navigation) for editing multiple properties of domain classes as part of hierarchical relationships, bulk editing.
  • Also improves visibility of key properties and enables better comparisons of related instances alongside each other.
  • Allows aspect focused editors (one editor per aspect)
  • Each aspect or 'view' on the domain model would have a separate editor.
  • Can replace the grpahical designer of the DSL, with forms based editors where a box-line user interface is not optimal for the domain.

Increased Usability!

In essence, this power toy primarily provides a better User Experience (UX) for the DSL user by exposing relationships potentially with no visibility on the diagram (i.e. in shapes or connectors), reducing shape clutter, and giving the user the ability to rapidly configuration the exposed domain classes and properties in the editor.

Essentially this PowerToy provides the ability to expose hierarchical 'views' of the underlying domain model, that can be displayed using any windows control or other display technology

The Approach

We are providing a staged approach to completing the implementation this PowerToy. At each stage (milestone) will deliver working code that adds a new capability to a DSL.
Each release is designed to build upon the previous release and enhance it with a new capability and infrastructure to support that capability.
The intention is to provide a DSL developer, using the PowerToy, deliverables that can be taken and customized to solve incremental problems that the PowerToy encounters in its development, that are expected to encounter anyone implementing this type of functionality.

Please see the Milestones page of this project to see what releases we have and what they will deliver.

Last edited Jul 28, 2007 at 5:40 PM by jezzsa, version 52