Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Difference between revisions of "EMF Compare/Specifications/GraphicalComparison"
m (→Non conflicting cases) |
m (→Non conflicting cases) |
||
Line 94: | Line 94: | ||
*Local coordinates changes: | *Local coordinates changes: | ||
− | [[Image:ChangeCoordinatesLocal.png]] | + | {| width="100%" cellspacing="0" cellpadding="0" border="0" |
+ | |- | ||
+ | | width="70%" valign="middle" align="left" | | ||
+ | You can watch a local coordinate change on the left side of the comparison viewer. | ||
+ | |||
+ | The object concerned by this change is highlighted by a marker in gray color (default color). | ||
+ | |||
+ | On the other side or the ancestor version, the same object, at the old location, is marked with the same color too. | ||
+ | |||
+ | | width="30%" valign="middle" align="right" | [[Image:ChangeCoordinatesLocal.png|thumb|400px|Local coordinates change]] | ||
+ | |} | ||
+ | |||
*Remote coordinates changes: | *Remote coordinates changes: | ||
− | [[Image:ChangeCoordinatesRemote.png]] | + | {| width="100%" cellspacing="0" cellpadding="0" border="0" |
+ | |- | ||
+ | | width="70%" valign="middle" align="left" | | ||
+ | You can watch a remote coordinate change on the right side of the comparison viewer. | ||
+ | |||
+ | The object concerned by this change is highlighted by a marker in blue color (default color). | ||
+ | |||
+ | On the other side or the ancestor version, the same object, at the old location, is marked with the same color too. | ||
+ | |||
+ | | width="30%" valign="middle" align="right" | [[Image:ChangeCoordinatesRemote.png|thumb|400px|Remote coordinates change]] | ||
+ | |} | ||
+ | |||
*Local move (and potentially coordinates change): | *Local move (and potentially coordinates change): | ||
− | [[Image:MoveLocal.png]] | + | {| width="100%" cellspacing="0" cellpadding="0" border="0" |
+ | |- | ||
+ | | width="70%" valign="middle" align="left" | | ||
+ | You can watch a moved object from a container to another one, on the left side of the comparison viewer. | ||
+ | |||
+ | The object concerned by this move is highlighted by a marker in gray color (default color). | ||
+ | |||
+ | On the other side or the ancestor version, the same object, at the old location, is marked with the same color too. | ||
+ | |||
+ | | width="30%" valign="middle" align="right" | [[Image:MoveLocal.png|thumb|400px|Local move]] | ||
+ | |} | ||
=== Conflicting cases<br> === | === Conflicting cases<br> === |
Revision as of 10:31, 4 February 2013
Contents
Evolution Specification: Graphical Comparison
Current status is DRAFT
Preamble
Summary: This feature is about all topics around the comparison of graphical objects.
Links to the Bugzilla tickets which are related to the change:
PENDING
Introduction
PENDING This section should contain a summary of the proposed evolution, including why it is needed. Ideally it should be self-contained so that non-developers can get a quick overview of the evolution without reading the detailed specification.
Detailed Specification
The aim is to be the most consistent with the look of the "semantic" comparison (tree).
To put in relief the graphical differences, some decorators should be used.
- On one hand, it enables to focus on the impacted objects, highlighting them with markers.
- On the other hand, through phantoms, it enables to locate either the place where objects were deleted or the target location where objects should be added after merging.
On each difference selection, only the related markers will appear.
Below, different cases are detailed.
Non conflicting cases
- Locally added elements:
You can watch a locally added object on the left side of the comparison viewer. It is highlighted by a marker in gray color (default color). On the other side, a phantom with the same color is drawn, as place-holder, in order to locate the place where the related object would be added if the end-user merged from left to right. |
- Locally deleted elements:
You can watch a locally deleted object on the left side of the comparison viewer. It is represented by a phantom in gray color (default value), as place-holder. On the other side, the related object is highlighted by a marker with the same color. On the ancestor version, the origin object is marked too. |
- Remotely added elements:
You can watch a remotely added object on the right side of the comparison viewer. It is highlighted by a marker in blue color (default color). On the other side, a phantom with the same color is drawn, as place-holder, in order to locate the place where the related object would be added if the end-user merged from right to left. |
- Remotely deleted elements:
You can watch a remotely deleted object on the right side of the comparison viewer. It is represented by a phantom in blue color (default value), as place-holder. On the other side, the related object is highlighted by a marker with the same color. On the ancestor version, the origin object is marked too. |
- Local coordinates changes:
You can watch a local coordinate change on the left side of the comparison viewer. The object concerned by this change is highlighted by a marker in gray color (default color). On the other side or the ancestor version, the same object, at the old location, is marked with the same color too. |
- Remote coordinates changes:
You can watch a remote coordinate change on the right side of the comparison viewer. The object concerned by this change is highlighted by a marker in blue color (default color). On the other side or the ancestor version, the same object, at the old location, is marked with the same color too. |
- Local move (and potentially coordinates change):
You can watch a moved object from a container to another one, on the left side of the comparison viewer. The object concerned by this move is highlighted by a marker in gray color (default color). On the other side or the ancestor version, the same object, at the old location, is marked with the same color too. |
Conflicting cases
|
|
|
REMOTE | |||||||||||||||||||||||
|
|
|
ADD |
DELETE |
Coordinates Change (CHANGE) |
MOVE | ||||||||||||||||||||
|
|
|
nodes |
children nodes |
parent nodes |
edges |
connected edges |
connected nodes |
nodes |
children nodes |
parent nodes |
edges |
connected edges |
connected nodes |
nodes | children nodes |
parent nodes |
edges |
connected edges |
connected nodes |
nodes |
children nodes |
parent nodes |
edges |
connected edges |
connected nodes |
LOCAL |
ADD |
nodes |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
children nodes |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| ||
parent nodes |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| ||
edges |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| ||
connected edges |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| ||
connected nodes |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| ||
DELETE |
nodes |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
children nodes |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| ||
parent nodes |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| ||
edges |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| ||
connected edges |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| ||
connected nodes |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| ||
Coordinates Change (CHANGE) |
nodes |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
? |
|
|
|
|
| |
children nodes |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| ||
parent nodes |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| ||
edges |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
? | ||
connected edges |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
? |
|
|
|
|
| ||
connected nodes |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| ||
MOVE |
nodes |
|
|
|
|
|
|
|
|
|
|
|
|
? |
|
|
|
? |
|
|
|
|
|
|
| |
children nodes |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| ||
parent nodes |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| ||
edges |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| ||
connected edges |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| ||
connected nodes |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
? |
|
|
|
|
|
|
|
|
Conflict (or pseudo-conflict) | |
? | Is a conflict ? |
Potential pseudo-conflict |
- ADD nodes and DELETE parent nodes
- DELETE nodes and ADD children nodes
- ADD edges and DELETE connected nodes or edges
- DELETE nodes and ADD connected edges
- DELETE edges and CHANGE these edges or connected edges or connected nodes
- DELETE nodes and CHANGE connected edges
- CHANGE edges and DELETE connected nodes
- CHANGE nodes and CHANGE connected edges
- DELETE nodes and CHANGE these nodes or their children
- CHANGE nodes and DELETE these nodes or their parent
- MOVE nodes or their children and DELETE these nodes
- DELETE nodes or their parent and MOVE these nodes
- CHANGE nodes on each side
- CHANGE edges on each side
- CHANGE edges and CHANGE connected nodes
- MOVE nodes on each side
- The MOVE of a node may involve a CHANGE (coordinates) of it if the new container requires its own coordinate system.
- So, the MOVE would require the CHANGE. But does the CHANGE require the MOVE because it has no sense outside of the context of the MOVE (to merge the change location whereas the frame of reference is different) ?
- Is the MOVE in conflict with a CHANGE if the frame of reference is different ?
Backward Compatibility and Migration Paths
PENDING Every one of the sections below should be present. Even if there is no corresponding change (for example no API change), it should exist to mention explicitly "This evolution does not change any API."
Metamodel Changes
PENDING Document any change to the Viewpoint metamodel. If they require a migration operation, mention it and describe the general idea of how migration process. If any information can be lost during the migration, mention it clearly. If validation rules must be added/modified, mention it also.
API Changes
PENDING List every API addition, removal and deprecation. For each removal and deprecation, indicate the migration path for existing code.
User Interface Changes
PENDING List every user-visible change in the interface. Here "user" includes not only end-users but also developpers.
Documentation Changes
PENDING List every documentation needing an update here, starting by the New and Noteworthy documentation.
Tests and Non-regression strategy
PENDING This part of the document should describe the strategy to use to correctly test the evolution and guarantee the non-regression.
Implementation choices and tradeoffs
PENDING Any important tradeoff or choice made during the implementation should be referenced here with pros/cons leading to the final decision.