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.
GEF/New and Noteworthy/3.7
Contents
Draw2d
Refactoring of Geometry API
Geometry API was refactored to guarantee consistency between integer-precision and double-precision version of Point
/PrecisionPoint
, Dimension
/PrecisionDimension
, and Rectangle
/PrecisionRectangle
. Synchronization between the still exposed integer-precision fields (x, y, width, height) and the no-longer exposed double-precision fields (preciseX, preciseY, preciseWidth, preciseHeight) is performed automatically by precision classes now, so clients may use the precision versions transparently, being no longer forced to perform a manual update of the respective fields. See 124904, 142628, and 271235 for details.
GEF
Refactoring of Layout and PrimaryDrag edit policies to remove duplicate code and allow better extensibility
TODO: add details
ResizeTracker and CreationTool
Extended ResizeTracker
and CreationTool
so that they now offer means to enforce certain constraints (by default, minimum and maximum size constraints) during resize as well as size-on-drop (dragging during creation). This was realized by adding methods to enforce size constraints:
-
ResizeTracker#enforceConstraintsForResize(ChangeBoundsRequest)
-
CreationTool#enforceConstraintsForSizeOnDropCreate(CreateRequest)
which are called whenever the source respectively target request is updated. By default, both ensure that minimum and maximum size constraints, which are inferred via respective hook methods:
-
ResizeTracker#getMaximumSizeFor(ChangeBoundsRequest)
-
ResizeTracker#getMinimumSizeFor(ChangeBoundsRequest)
-
CreationTool#getMaximumSizeFor(CreateRequest)
-
CreationTool#getMinimumSizeFor(CreateRequest)
Clients may overwrite the respective hook methods to infer maximum and minimum sizes for certain requests, or overwrite and adjust the enforcement of constraints as a whole (in case additional constraints have to be ensured). While the CreationTool may easily be exchanged with a subclass by specifying a tool class upon construction of a CreationToolEntry, the ResizableEditPolicy was enhanced to allow clients to specify a custom ResizeTracker as well, which will be used for all resize handles.
The logic example was enhanced to demonstrate how the new features can be used.
MarqueeSelectionTool
MarqueeSelectionTool
was enhanced to now offer the following default marquee behaviors:
- BEHAVIOR_CONNECTIONS_TOUCHED (supported since 3.1)
- BEHAVIOR_CONNECTIONS_CONTAINED
- BEHAVIOR_NODES_TOUCHED
- BEHAVIOR_NODES_CONTAINED (supported since 3.1, default behavior)
- BEHAVIOR_NODES_TOUCHED_AND_RELATED_CONNECTIONS
- BEHAVIOR_NODES_CONTAINED_AND_RELATED_CONNECTIONS (supported since 3.1, formerly known as BEHAVIOR_NODES_AND_CONNECTIONS, which was in turn deprecated).
It was furthermore refactored to allow clients to customize marquee selection behavior via subclassing and overwriting one or more of the following methods:
- performMarqueeSelect()
- calculateMarqueeSelectedEditParts()
- isMarqueeSelectable(EditPart)
The following methods are now also exposed (protected visibility) so clients can use access the current tool mode and the selection rectangle in their customization code:
- getCurrentMarqueeSelectionRectangle()
- getCurrentSelectionMode()
See 67991 for details.
MatchSizeAction
Similar to MatchWidthAction
and MatchHeightAction
, a concrete MatchSizeAction
was now made available (see 107916).