Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "EMF Compare/Specifications/ExtensionPointForFiltersAndGroups"

(Metamodel Changes)
(Backward Compatibility and Migration Paths)
Line 42: Line 42:
 
=== API Changes  ===
 
=== API Changes  ===
  
TODO.  
+
New extension points:
(List every API addition, removal and deprecation. For each removal and deprecation, indicate the migration path for existing code.)
+
* org.eclipse.emf.compare.ide.ui
 +
** /schema/filters.exsd
 +
** /schema/groups.exsd
 +
 
 +
New filters:
 +
* org.eclipse.emf.compare.ide.ui
 +
** /src/org/eclipse/emf/compare/ide/ui/internal/actions/filter/AddedElementsFilterAction.java
 +
** /src/org/eclipse/emf/compare/ide/ui/internal/actions/filter/ChangedElementsFilterAction.java
 +
** /src/org/eclipse/emf/compare/ide/ui/internal/actions/filter/MovedElementsFilterAction.java
 +
** /src/org/eclipse/emf/compare/ide/ui/internal/actions/filter/RemovedElementsFilterAction.java
 +
 
 +
New groups:
 +
* org.eclipse.emf.compare.ide.ui
 +
** /src/org/eclipse/emf/compare/ide/ui/internal/actions/group/ThreeWayComparisonGroupProvider.java
 +
 
 +
New interfaces:
 +
* org.eclipse.emf.compare.ide.ui
 +
** /src/org/eclipse/emf/compare/ide/ui/internal/actions/filter/FilterActionProvider.java
  
 
=== User Interface Changes  ===
 
=== User Interface Changes  ===
  
TODO.
+
Every new group or filter will be visible under its category.
(List every user-visible change in the interface. Here "user" includes not only end-users but also developpers.)
+
 
 +
[[Image:EMFCompare2-Groups.png|alt Groups]]
 +
 
 +
[[Image:EMFCompare2-Filters.png|alt Filters]]
  
 
=== Documentation Changes  ===
 
=== Documentation Changes  ===

Revision as of 05:19, 28 January 2013

Evolution Specification: Extension point for filters and groups

Current status is DRAFT

Preamble

Add an extension point to EMF Compare so that users and extenders can provide their own filters and groups.

_Relevant tickets_ (links to the Bugzilla tickets which are related to the change):

Introduction

Detailed Specification

The filters and groups provided in the UI as depicted below are not extensible by the user.

alt Filters And Groups

  • Add an extension point to EMF Compare so that users and extenders can provide their own filters and groups.
  • Also rewrite the current filters as extension to the extension as examples of how to contribute these items.
  • Enhance the grouping facility to display the tree structure of the model below each group. Currently it displays a flat list of all differences that verify the grouping condition. This flat list display tends to be unusable as soon as the number of differences exceeds a few tens.
  • Another feature will be added to groups and filter. Groups and filters will have an activation state based on the comparison object. This way, it will be able to have some filters and groups in some contexts (e.g. “only on 3 ways comparisons”, “on a given scope”; “on a list of EPackage nsURIs”...). Groups and filters will also have a property to tell whether they should be selected by default.
  • EMF Compare will contribute a new group to group contribution in the case of 3 ways comparison. It will group differences according to their source (left or right) and whether they are conflictual or not.
  • EMF Compare will also contribute new filters. Currently there are a certain number of elements that are not displayed in the structure merge viewer UI that are coded within the *ItemProviders. Thes ItemProviders will migrate as filters activated by default:
    • Pseudo conflict (conflict of kind PSEUDO),
    • Match with no children (match with no differences in their content tree),
    • Empty match (match with null left, right and origin references, this will happen after merging deletions),
    • Implied changes.

The selected filters will be stored in the CompareConfiguration object to let the content viewer and the mergers be notified filtering changes. In addition, the current “Metaclass” group will be deleted since its semantic is not clear. It was more of an API example than a full-fledged group, and we will now have more meaningful samples.

Backward Compatibility and Migration Paths

Metamodel Changes

This evolution doesn't change the metamodel.

API Changes

New extension points:

  • org.eclipse.emf.compare.ide.ui
    • /schema/filters.exsd
    • /schema/groups.exsd

New filters:

  • org.eclipse.emf.compare.ide.ui
    • /src/org/eclipse/emf/compare/ide/ui/internal/actions/filter/AddedElementsFilterAction.java
    • /src/org/eclipse/emf/compare/ide/ui/internal/actions/filter/ChangedElementsFilterAction.java
    • /src/org/eclipse/emf/compare/ide/ui/internal/actions/filter/MovedElementsFilterAction.java
    • /src/org/eclipse/emf/compare/ide/ui/internal/actions/filter/RemovedElementsFilterAction.java

New groups:

  • org.eclipse.emf.compare.ide.ui
    • /src/org/eclipse/emf/compare/ide/ui/internal/actions/group/ThreeWayComparisonGroupProvider.java

New interfaces:

  • org.eclipse.emf.compare.ide.ui
    • /src/org/eclipse/emf/compare/ide/ui/internal/actions/filter/FilterActionProvider.java

User Interface Changes

Every new group or filter will be visible under its category.

alt Groups

alt Filters

Documentation Changes

TODO. (List every documentation needing an update here, starting by the New and Noteworthy documentation.)

Tests and Non-regression strategy

TODO. (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

TODO. (Any important tradeoff or choice made during the implementation should be referenced here with pros/cons leading to the final decision.)

Back to the top