diff options
| author | jmallet | 2017-06-12 17:36:22 +0000 |
|---|---|---|
| committer | Laurent Redor | 2017-07-04 12:09:03 +0000 |
| commit | a13ad58bbfd93f6c7cfca7d7415a95fbbac1cd2b (patch) | |
| tree | 63c5ada0c6520b5725149d88ace9721764713324 | |
| parent | c5e4b54aeb4049b929a08a69a641a7f4336563f3 (diff) | |
| download | org.eclipse.sirius-a13ad58bbfd93f6c7cfca7d7415a95fbbac1cd2b.tar.gz org.eclipse.sirius-a13ad58bbfd93f6c7cfca7d7415a95fbbac1cd2b.tar.xz org.eclipse.sirius-a13ad58bbfd93f6c7cfca7d7415a95fbbac1cd2b.zip | |
[518136] Remove bendpoints for rectilinear edge - Add specification.
Bug: 518136
Change-Id: I4b781118b5778b50f2ef1b1e5be0bb309bf0f5a7
Signed-off-by: jmallet <jessy.mallet@obeo.fr>
7 files changed, 158 insertions, 0 deletions
diff --git a/plugins/org.eclipse.sirius.doc/.settings/org.eclipse.core.resources.prefs b/plugins/org.eclipse.sirius.doc/.settings/org.eclipse.core.resources.prefs index 00ca73ddf7..a80cf58475 100644 --- a/plugins/org.eclipse.sirius.doc/.settings/org.eclipse.core.resources.prefs +++ b/plugins/org.eclipse.sirius.doc/.settings/org.eclipse.core.resources.prefs @@ -31,3 +31,4 @@ encoding//specs/archived/connections_to_figure_border/connections_between_figure encoding//specs/proposal/466598_improveResourceStrategy/466598.html=UTF-8 encoding//specs/proposal/491895_paste_special/491895.html=UTF-8 encoding//specs/proposal/506259_DecoratorDescription/506259_DecoratorDescription.html=UTF-8 +encoding//specs/proposal/518136_RemoveBendpoints/518136_RemoveBendpoints.html=UTF-8 diff --git a/plugins/org.eclipse.sirius.doc/specs/proposal/518136_RemoveBendpoints/518136_RemoveBendpoints.html b/plugins/org.eclipse.sirius.doc/specs/proposal/518136_RemoveBendpoints/518136_RemoveBendpoints.html new file mode 100644 index 0000000000..5c9718f76f --- /dev/null +++ b/plugins/org.eclipse.sirius.doc/specs/proposal/518136_RemoveBendpoints/518136_RemoveBendpoints.html @@ -0,0 +1,86 @@ +<?xml version='1.0' encoding='utf-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> + <head> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> + </head> + <body> + <h1 id="SiriusEvolutionSpecificationRemovebendpointsonrectilinearedges">Sirius Evolution Specification: Remove bend-points on rectilinear edges </h1> + <h2 id="Preamble">Preamble</h2> + <p> + <em>Summary</em>: Remove bend-points on rectilinear edges on diagram. + </p> + <table> + <tr> + <th>Version</th> + <th>Status</th> + <th>Date</th> + <th>Authors</th> + <th>Changes</th> + </tr> + <tr> + <td>v0.1</td> + <td>DRAFT</td> + <td>2017-06-12</td> + <td>jmallet</td> + <td>Initial version.</td> + </tr> + <tr> + <td>v1.0</td> + <td>PROPOSAL</td> + <td>2017-06-14</td> + <td>jmallet</td> + <td>Updated version.</td> + </tr> + </table> + <p> + <em>Relevant tickets</em>: + </p> + <ul> + <li> + <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=518136">Bugzilla #518136, Enable action to remove bend-points of rectilinear edges</a> + </li> + </ul> + <h2 id="Introduction">Introduction</h2> + <p>The goal of this evolution is to authorize end user to remove bend-points on a rectilinear edge to simplify the edge. The routing of the edge after the execution of the action is detailed just below.</p> + <h2 id="Stateoftheexisting">State of the existing</h2> + <p>Currently, there is already an action to remove bend-points. + <br/>This action has been added with + <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=443108">bugzilla 443108</a>. + <br/>It is only available on edges with a «Straight» routing style (see + <a href="https://www.eclipse.org/sirius/doc/user/diagrams/Diagrams.html#RemoveBendpoints">documentation</a> or + <a href="http://git.eclipse.org/c/sirius/org.eclipse.sirius.git/diff/plugins/org.eclipse.sirius.doc/doc/user/diagrams/Diagrams.textile?id=f9e3c2d55727e9f866a9a8e54fc6e5b60d3afc99">corresponding commit</a> ). + </p> + <h2 id="DetailedSpecification">Detailed Specification</h2> + <h3 id="Firstapproach">First approach</h3> + <p>There exist already a feature called «Closest Distance» in the appearance tab of properties view when edge is selected. This feature routes the edge by choosing the shortest distance. + <br/>However, the behavior of our action will not be the same as «Closest Distance», because this feature has only effect on DrawD2 (interpretation of GMF data to display edge) but not on GMF model. With experience, this is generally a bad idea. + </p> + <h3 id="MainProposedFix">Main Proposed Fix</h3> + <p>To realize this action, the following algorithm is proposed :</p> 1 – Compute starting (on source) and ending (on target) side according to the intersection between the source (and also the target) and the line from the center of the source and the center of the target. + <p> + <img border="0" src="images/ComputeStartingEnding.png"/> + </p> 2 – If the side are both horizontal or vertical, the resulting edge will have 3 segments. The second segment is localized on the middle of the first point and the last point of the edge. + <p> + <img border="0" src="images/EdgeWithThreeSegments.png"/> + </p> 3 – If the side are not both horizontal or vertical, the resulting edge will have 2 segments. + <p> + <img border="0" src="images/EdgeWithTwoSegments.png"/> + </p> 4 – If edge relies border nodes, the resulting edge will follow the two previous rules. Sometimes the resulting edge will cross over its container, there is no avoidance process when the new edge is computing. + <p> + <img border="0" src="images/BorderNodeWithSegment.png"/> + </p> + <h2 id="BackwardCompatibilityandMigrationPaths">Backward Compatibility and Migration Paths</h2> + <h3 id="MetamodelChanges">Metamodel Changes</h3> + <p>There is no change in metamodel for this evolution.</p> + <h3 id="UserInterfaceChanges">User Interface Changes</h3> + <p>«Remove Bend-points» action in the contextual menu when user click on a rectililinear edge will be enabled.</p> + <h3 id="DocumentationChanges">Documentation Changes</h3> + <p>Updates:</p> + <ul> + <li>The user documentation for the «Remove Bend-points» action</li> + <li>The release note</li> + </ul> + <h2 id="TestsandNonregressionstrategy">Tests and Non-regression strategy</h2> + <p>All cases described for rectilinear edge must be tested, i.e. one test where side are both horizontal or vertical, an other where side are not both horizontal or vertical and a last one using border node.</p> + </body> +</html>
\ No newline at end of file diff --git a/plugins/org.eclipse.sirius.doc/specs/proposal/518136_RemoveBendpoints/518136_RemoveBendpoints.textile b/plugins/org.eclipse.sirius.doc/specs/proposal/518136_RemoveBendpoints/518136_RemoveBendpoints.textile new file mode 100644 index 0000000000..27ba5afb22 --- /dev/null +++ b/plugins/org.eclipse.sirius.doc/specs/proposal/518136_RemoveBendpoints/518136_RemoveBendpoints.textile @@ -0,0 +1,71 @@ +h1. Sirius Evolution Specification: Remove bend-points on rectilinear edges + +h2. Preamble + +_Summary_: Remove bend-points on rectilinear edges on diagram. + +|_. Version |_. Status |_. Date |_. Authors |_. Changes | +| v0.1 | DRAFT | 2017-06-12 | jmallet | Initial version. | +| v1.0 | PROPOSAL | 2017-06-14 | jmallet | Updated version. | + +_Relevant tickets_: +* "Bugzilla #518136, Enable action to remove bend-points of rectilinear edges":https://bugs.eclipse.org/bugs/show_bug.cgi?id=518136 + +h2. Introduction + +The goal of this evolution is to authorize end user to remove bend-points on a rectilinear edge to simplify the edge. The routing of the edge after the execution of the action is detailed just below. + +h2. State of the existing + +Currently, there is already an action to remove bend-points. +This action has been added with "bugzilla 443108":https://bugs.eclipse.org/bugs/show_bug.cgi?id=443108. +It is only available on edges with a "Straight" routing style (see "documentation":https://www.eclipse.org/sirius/doc/user/diagrams/Diagrams.html#RemoveBendpoints or "corresponding commit":http://git.eclipse.org/c/sirius/org.eclipse.sirius.git/diff/plugins/org.eclipse.sirius.doc/doc/user/diagrams/Diagrams.textile?id=f9e3c2d55727e9f866a9a8e54fc6e5b60d3afc99 ). + + +h2. Detailed Specification + +h3. First approach + +There exist already a feature called "Closest Distance" in the appearance tab of properties view when edge is selected. This feature routes the edge by choosing the shortest distance. +However, the behavior of our action will not be the same as "Closest Distance", because this feature has only effect on DrawD2 (interpretation of GMF data to display edge) but not on GMF model. With experience, this is generally a bad idea. + +h3. Main Proposed Fix + +To realize this action, the following algorithm is proposed : + + 1 - Compute starting (on source) and ending (on target) side according to the intersection between the source (and also the target) and the line from the center of the source and the center of the target. + +!images/ComputeStartingEnding.png! + + 2 - If the side are both horizontal or vertical, the resulting edge will have 3 segments. The second segment is localized on the middle of the first point and the last point of the edge. + +!images/EdgeWithThreeSegments.png! + + 3 - If the side are not both horizontal or vertical, the resulting edge will have 2 segments. + +!images/EdgeWithTwoSegments.png! + + 4 - If edge relies border nodes, the resulting edge will follow the two previous rules. Sometimes the resulting edge will cross over its container, there is no avoidance process when the new edge is computing. + +!images/BorderNodeWithSegment.png! + +h2. Backward Compatibility and Migration Paths + +h3. Metamodel Changes + +There is no change in metamodel for this evolution. + +h3. User Interface Changes + +"Remove Bend-points" action in the contextual menu when user click on a rectililinear edge will be enabled. + +h3. Documentation Changes + +Updates: +* The user documentation for the "Remove Bend-points" action +* The release note + +h2. Tests and Non-regression strategy + +All cases described for rectilinear edge must be tested, i.e. one test where side are both horizontal or vertical, an other where side are not both horizontal or vertical and a last one using border node. + diff --git a/plugins/org.eclipse.sirius.doc/specs/proposal/518136_RemoveBendpoints/images/BorderNodeWithSegment.png b/plugins/org.eclipse.sirius.doc/specs/proposal/518136_RemoveBendpoints/images/BorderNodeWithSegment.png Binary files differnew file mode 100644 index 0000000000..b3d29fddd6 --- /dev/null +++ b/plugins/org.eclipse.sirius.doc/specs/proposal/518136_RemoveBendpoints/images/BorderNodeWithSegment.png diff --git a/plugins/org.eclipse.sirius.doc/specs/proposal/518136_RemoveBendpoints/images/ComputeStartingEnding.png b/plugins/org.eclipse.sirius.doc/specs/proposal/518136_RemoveBendpoints/images/ComputeStartingEnding.png Binary files differnew file mode 100644 index 0000000000..49dca51c49 --- /dev/null +++ b/plugins/org.eclipse.sirius.doc/specs/proposal/518136_RemoveBendpoints/images/ComputeStartingEnding.png diff --git a/plugins/org.eclipse.sirius.doc/specs/proposal/518136_RemoveBendpoints/images/EdgeWithThreeSegments.png b/plugins/org.eclipse.sirius.doc/specs/proposal/518136_RemoveBendpoints/images/EdgeWithThreeSegments.png Binary files differnew file mode 100644 index 0000000000..1e0db63586 --- /dev/null +++ b/plugins/org.eclipse.sirius.doc/specs/proposal/518136_RemoveBendpoints/images/EdgeWithThreeSegments.png diff --git a/plugins/org.eclipse.sirius.doc/specs/proposal/518136_RemoveBendpoints/images/EdgeWithTwoSegments.png b/plugins/org.eclipse.sirius.doc/specs/proposal/518136_RemoveBendpoints/images/EdgeWithTwoSegments.png Binary files differnew file mode 100644 index 0000000000..00abcc76e5 --- /dev/null +++ b/plugins/org.eclipse.sirius.doc/specs/proposal/518136_RemoveBendpoints/images/EdgeWithTwoSegments.png |
