Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 462779

Summary: Unify handling of properties in GEF4 Graph and GEF4 Layout
Product: [Tools] GEF Reporter: Alexander Nyßen <nyssen>
Component: MiscAssignee: Alexander Nyßen <nyssen>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: P3    
Version: unspecified   
Target Milestone: 4.0.0 / 3.11.0 (Neon) M5   
Hardware: All   
OS: All   
Whiteboard:

Description Alexander Nyßen CLA 2015-03-22 07:00:50 EDT
While DotProperties (graph-based), LayoutProperties (layout-based), and ZestProperties (graph-based) offer a unified pattern to get/set properties, the internal handling of how properties are stored and accessed is different in GEF4 Graph and Layout. That is, the Layout interfaces extend o.e.g4.PropertyStore, while GEF4 Graph provides observable attr() lists. We should IMHO unify this as well by consistently combining both approaches.

To realize this, we could rename attr() to getProperties() or properties() and add this to the PropertyStore abstraction, which could then be used by Graph and Layout.
Comment 1 Alexander Nyßen CLA 2015-12-16 13:05:05 EST
While the layout interfaces extend IPropertyStore, the graph classes only implement IPropertyChangeNotifier (not its sub-interface IPropertyStore). The graph classes furthermore only notify about changes of the attribute map as a whole, not about changes of individual properties. 

This is closely related to bug #467025, which is related to consistent usage of observable properties (the graph classes make use of observable collections provided by common).
Comment 2 Alexander Nyßen CLA 2015-12-20 11:49:24 EST
Pushed the following changes to origin/master:

- Introduced IAttributeStore interface to replace IPropertyStore. Ensure it is extended by the Layout interfaces and implemented by the Graph abstractions as well as the related Zest adapters.
- Changed that Zest adapters do not copy attributes of underlying Graph abstractions but instead delegate to them (and forward all property change events).

Resolving as fixed in 3.11.0 M5.