/*******************************************************************************
* Copyright (c) 2014, 2016 itemis AG and others.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Matthias Wienand (itemis AG) - initial API & implementation
*
*******************************************************************************/
package org.eclipse.gef.zest.fx;
import org.eclipse.gef.common.adapt.AdapterKey;
import org.eclipse.gef.common.adapt.inject.AdaptableScopes;
import org.eclipse.gef.common.adapt.inject.AdapterMaps;
import org.eclipse.gef.layout.LayoutContext;
import org.eclipse.gef.mvc.fx.MvcFxModule;
import org.eclipse.gef.mvc.fx.behaviors.ConnectionClickableAreaBehavior;
import org.eclipse.gef.mvc.fx.behaviors.HoverIntentBehavior;
import org.eclipse.gef.mvc.fx.behaviors.SelectionBehavior;
import org.eclipse.gef.mvc.fx.domain.IDomain;
import org.eclipse.gef.mvc.fx.handlers.FocusAndSelectOnClickHandler;
import org.eclipse.gef.mvc.fx.handlers.HoverOnHoverHandler;
import org.eclipse.gef.mvc.fx.handlers.NormalizeConnectedOnDragHandler;
import org.eclipse.gef.mvc.fx.handlers.ResizeTranslateFirstAnchorageOnHandleDragHandler;
import org.eclipse.gef.mvc.fx.handlers.RotateSelectedOnHandleDragHandler;
import org.eclipse.gef.mvc.fx.handlers.SelectFocusedOnTypeHandler;
import org.eclipse.gef.mvc.fx.handlers.TranslateSelectedOnDragHandler;
import org.eclipse.gef.mvc.fx.handlers.TraverseFocusOnTypeHandler;
import org.eclipse.gef.mvc.fx.parts.CircleSegmentHandlePart;
import org.eclipse.gef.mvc.fx.parts.DefaultFocusFeedbackPartFactory;
import org.eclipse.gef.mvc.fx.parts.DefaultHoverFeedbackPartFactory;
import org.eclipse.gef.mvc.fx.parts.DefaultHoverIntentHandlePartFactory;
import org.eclipse.gef.mvc.fx.parts.DefaultSelectionFeedbackPartFactory;
import org.eclipse.gef.mvc.fx.parts.DefaultSelectionHandlePartFactory;
import org.eclipse.gef.mvc.fx.parts.IContentPartFactory;
import org.eclipse.gef.mvc.fx.parts.SquareSegmentHandlePart;
import org.eclipse.gef.mvc.fx.policies.BendConnectionPolicy;
import org.eclipse.gef.mvc.fx.policies.ResizePolicy;
import org.eclipse.gef.mvc.fx.policies.TransformPolicy;
import org.eclipse.gef.mvc.fx.providers.GeometricOutlineProvider;
import org.eclipse.gef.mvc.fx.providers.ShapeBoundsProvider;
import org.eclipse.gef.mvc.fx.viewer.IViewer;
import org.eclipse.gef.zest.fx.behaviors.EdgeHidingBehavior;
import org.eclipse.gef.zest.fx.behaviors.EdgeLabelHidingBehavior;
import org.eclipse.gef.zest.fx.behaviors.EdgeLayoutBehavior;
import org.eclipse.gef.zest.fx.behaviors.GraphLayoutBehavior;
import org.eclipse.gef.zest.fx.behaviors.NodeHidingBehavior;
import org.eclipse.gef.zest.fx.behaviors.NodeLayoutBehavior;
import org.eclipse.gef.zest.fx.handlers.BendFirstAnchorageAndRelocateLabelsOnDragHandler;
import org.eclipse.gef.zest.fx.handlers.HideFirstAnchorageOnClickHandler;
import org.eclipse.gef.zest.fx.handlers.HideOnTypeHandler;
import org.eclipse.gef.zest.fx.handlers.OpenNestedGraphOnDoubleClickHandler;
import org.eclipse.gef.zest.fx.handlers.OpenParentGraphOnDoubleClickHandler;
import org.eclipse.gef.zest.fx.handlers.ShowHiddenNeighborsOfFirstAnchorageOnClickHandler;
import org.eclipse.gef.zest.fx.handlers.ShowHiddenNeighborsOnTypeHandler;
import org.eclipse.gef.zest.fx.handlers.TranslateSelectedAndRelocateLabelsOnDragHandler;
import org.eclipse.gef.zest.fx.models.HidingModel;
import org.eclipse.gef.zest.fx.models.NavigationModel;
import org.eclipse.gef.zest.fx.parts.EdgeLabelPart;
import org.eclipse.gef.zest.fx.parts.EdgePart;
import org.eclipse.gef.zest.fx.parts.GraphPart;
import org.eclipse.gef.zest.fx.parts.HideHoverHandlePart;
import org.eclipse.gef.zest.fx.parts.NodeLabelPart;
import org.eclipse.gef.zest.fx.parts.NodePart;
import org.eclipse.gef.zest.fx.parts.ShowHiddenNeighborsHoverHandlePart;
import org.eclipse.gef.zest.fx.parts.ZestFxContentPartFactory;
import org.eclipse.gef.zest.fx.parts.ZestFxHoverIntentHandlePartFactory;
import org.eclipse.gef.zest.fx.parts.ZestFxRootPart;
import org.eclipse.gef.zest.fx.parts.ZestFxSelectionFeedbackPartFactory;
import org.eclipse.gef.zest.fx.parts.ZestFxSelectionHandlePartFactory;
import org.eclipse.gef.zest.fx.policies.HidePolicy;
import org.eclipse.gef.zest.fx.policies.SemanticZoomPolicy;
import org.eclipse.gef.zest.fx.policies.ShowHiddenNeighborsPolicy;
import org.eclipse.gef.zest.fx.policies.TransformLabelPolicy;
import org.eclipse.gef.zest.fx.providers.NodePartAnchorProvider;
import com.google.inject.Binder;
import com.google.inject.Provider;
import com.google.inject.multibindings.MapBinder;
/**
* The {@link ZestFxModule} defines Zest.FX specific bindings additional to the
* bindings defined within {@link MvcFxModule}.
*
* @author mwienand
*
*/
public class ZestFxModule extends MvcFxModule {
@Override
protected void bindAbstractContentPartAdapters(MapBinder<AdapterKey<?>, Object> adapterMapBinder) {
super.bindAbstractContentPartAdapters(adapterMapBinder);
adapterMapBinder.addBinding(AdapterKey.defaultRole()).to(FocusAndSelectOnClickHandler.class);
adapterMapBinder.addBinding(AdapterKey.defaultRole()).to(SelectFocusedOnTypeHandler.class);
adapterMapBinder
.addBinding(AdapterKey.role(DefaultHoverIntentHandlePartFactory.HOVER_INTENT_HANDLES_GEOMETRY_PROVIDER))
.to(ShapeBoundsProvider.class);
}
@Override
protected void bindChangeViewportPolicyAsIRootPartAdapter(MapBinder<AdapterKey<?>, Object> adapterMapBinder) {
// overwrite default zoom policy to perform semantic zooming (navigating
// nested graphs on zoom level changes)
adapterMapBinder.addBinding(AdapterKey.defaultRole()).to(SemanticZoomPolicy.class);
}
/**
* Adds (default) adapter map bindings for {@link EdgeLabelPart} and all
* sub-classes. May be overwritten by sub-classes to change the default
* bindings.
*
* @param adapterMapBinder
* The {@link MapBinder} to be used for the binding registration.
* In this case, will be obtained from
* {@link AdapterMaps#getAdapterMapBinder(Binder, Class)} using
* {@link EdgeLabelPart} as a key.
*
* @see AdapterMaps#getAdapterMapBinder(Binder, Class)
*/
protected void bindEdgeLabelPartAdapters(MapBinder<AdapterKey<?>, Object> adapterMapBinder) {
// selection link feedback provider
adapterMapBinder
.addBinding(
AdapterKey.role(DefaultSelectionFeedbackPartFactory.SELECTION_LINK_FEEDBACK_GEOMETRY_PROVIDER))
.to(ShapeBoundsProvider.class);
// selection feedback provider
adapterMapBinder
.addBinding(AdapterKey.role(DefaultSelectionFeedbackPartFactory.SELECTION_FEEDBACK_GEOMETRY_PROVIDER))
.to(ShapeBoundsProvider.class);
// hover feedback provider
adapterMapBinder.addBinding(AdapterKey.role(DefaultHoverFeedbackPartFactory.HOVER_FEEDBACK_GEOMETRY_PROVIDER))
.to(ShapeBoundsProvider.class);
// transform policy
adapterMapBinder.addBinding(AdapterKey.defaultRole()).to(TransformLabelPolicy.class);
// hiding behavior
adapterMapBinder.addBinding(AdapterKey.defaultRole()).to(EdgeLabelHidingBehavior.class);
// hover on-hover policy
adapterMapBinder.addBinding(AdapterKey.defaultRole()).to(HoverOnHoverHandler.class);
// translate on drag
adapterMapBinder.addBinding(AdapterKey.defaultRole()).to(TranslateSelectedOnDragHandler.class);
}
/**
* Adds (default) adapter map bindings for {@link EdgePart} and all
* sub-classes. May be overwritten by sub-classes to change the default
* bindings.
*
* @param adapterMapBinder
* The {@link MapBinder} to be used for the binding registration.
* In this case, will be obtained from
* {@link AdapterMaps#getAdapterMapBinder(Binder, Class)} using
* {@link EdgePart} as a key.
*
* @see AdapterMaps#getAdapterMapBinder(Binder, Class)
*/
protected void bindEdgePartAdapters(MapBinder<AdapterKey<?>, Object> adapterMapBinder) {
// layout behavior
adapterMapBinder.addBinding(AdapterKey.defaultRole()).to(EdgeLayoutBehavior.class);
// hiding behavior
adapterMapBinder.addBinding(AdapterKey.defaultRole()).to(EdgeHidingBehavior.class);
// selection link feedback provider
adapterMapBinder
.addBinding(
AdapterKey.role(DefaultSelectionFeedbackPartFactory.SELECTION_LINK_FEEDBACK_GEOMETRY_PROVIDER))
.to(GeometricOutlineProvider.class);
// selection feedback provider
adapterMapBinder
.addBinding(AdapterKey.role(DefaultSelectionFeedbackPartFactory.SELECTION_FEEDBACK_GEOMETRY_PROVIDER))
.to(GeometricOutlineProvider.class);
// selection handles
adapterMapBinder
.addBinding(AdapterKey.role(DefaultSelectionHandlePartFactory.SELECTION_HANDLES_GEOMETRY_PROVIDER))
.to(GeometricOutlineProvider.class);
// hover feedback provider
adapterMapBinder.addBinding(AdapterKey.role(DefaultHoverFeedbackPartFactory.HOVER_FEEDBACK_GEOMETRY_PROVIDER))
.to(GeometricOutlineProvider.class);
// geometry provider for focus feedback
adapterMapBinder.addBinding(AdapterKey.role(DefaultFocusFeedbackPartFactory.FOCUS_FEEDBACK_GEOMETRY_PROVIDER))
.to(GeometricOutlineProvider.class);
// clickable area behavior
adapterMapBinder.addBinding(AdapterKey.defaultRole()).to(ConnectionClickableAreaBehavior.class);
// translate selected on-drag policy
adapterMapBinder.addBinding(AdapterKey.defaultRole()).to(TranslateSelectedAndRelocateLabelsOnDragHandler.class);
// hover on-hover policy
adapterMapBinder.addBinding(AdapterKey.defaultRole()).to(HoverOnHoverHandler.class);
adapterMapBinder.addBinding(AdapterKey.defaultRole()).to(BendConnectionPolicy.class);
}
/**
* Bind bend-on-drag policy to {@link CircleSegmentHandlePart}.
*
* @param adapterMapBinder
* The {@link MapBinder} to be used for the binding registration.
* In this case, will be obtained from
* {@link AdapterMaps#getAdapterMapBinder(Binder, Class)} using
* {@link CircleSegmentHandlePart} as a key.
*/
protected void bindFXCircleSegmentHandlePartAdapters(MapBinder<AdapterKey<?>, Object> adapterMapBinder) {
AdapterMaps.getAdapterMapBinder(binder(), CircleSegmentHandlePart.class).addBinding(AdapterKey.defaultRole())
.to(BendFirstAnchorageAndRelocateLabelsOnDragHandler.class);
}
/**
* Bind resize and rotate behavior to {@link SquareSegmentHandlePart}.
*
* @param adapterMapBinder
* The {@link MapBinder} to be used for the binding registration.
* In this case, will be obtained from
* {@link AdapterMaps#getAdapterMapBinder(Binder, Class)} using
* {@link SquareSegmentHandlePart} as a key.
*/
protected void bindFXSquareSegmentHandlePartAdapters(MapBinder<AdapterKey<?>, Object> adapterMapBinder) {
adapterMapBinder.addBinding(AdapterKey.role("resize-relocate-first-anchorage"))
.to(ResizeTranslateFirstAnchorageOnHandleDragHandler.class);
adapterMapBinder.addBinding(AdapterKey.role("rotate")).to(RotateSelectedOnHandleDragHandler.class);
}
/**
* Adds (default) adapter map bindings for {@link GraphPart} and all
* sub-classes. May be overwritten by sub-classes to change the default
* bindings.
*
* @param adapterMapBinder
* The {@link MapBinder} to be used for the binding registration.
* In this case, will be obtained from
* {@link AdapterMaps#getAdapterMapBinder(Binder, Class)} using
* {@link GraphPart} as a key.
*
* @see AdapterMaps#getAdapterMapBinder(Binder, Class)
*/
protected void bindGraphPartAdapters(MapBinder<AdapterKey<?>, Object> adapterMapBinder) {
adapterMapBinder.addBinding(AdapterKey.defaultRole()).to(LayoutContext.class);
adapterMapBinder.addBinding(AdapterKey.defaultRole()).to(GraphLayoutBehavior.class);
}
/**
* Adds (default) adapter map bindings for {@link HideHoverHandlePart} and
* all sub-classes. May be overwritten by sub-classes to change the default
* bindings.
*
* @param adapterMapBinder
* The {@link MapBinder} to be used for the binding registration.
* In this case, will be obtained from
* {@link AdapterMaps#getAdapterMapBinder(Binder, Class)} using
* {@link HideHoverHandlePart} as a key.
*
* @see AdapterMaps#getAdapterMapBinder(Binder, Class)
*/
protected void bindHidingHoverHandlePartAdapters(MapBinder<AdapterKey<?>, Object> adapterMapBinder) {
adapterMapBinder.addBinding(AdapterKey.role("hide")).to(HideFirstAnchorageOnClickHandler.class);
}
@Override
protected void bindHoverHandlePartFactoryAsContentViewerAdapter(MapBinder<AdapterKey<?>, Object> adapterMapBinder) {
adapterMapBinder.addBinding(AdapterKey.role(HoverIntentBehavior.HOVER_INTENT_HANDLE_PART_FACTORY))
.to(ZestFxHoverIntentHandlePartFactory.class);
}
/**
* Binds {@link IContentPartFactory} to {@link ZestFxContentPartFactory}.
*/
protected void bindIContentPartFactory() {
binder().bind(IContentPartFactory.class).to(ZestFxContentPartFactory.class)
.in(AdaptableScopes.typed(IViewer.class));
}
@Override
protected void bindIRootPartAdaptersForContentViewer(MapBinder<AdapterKey<?>, Object> adapterMapBinder) {
super.bindIRootPartAdaptersForContentViewer(adapterMapBinder);
adapterMapBinder.addBinding(AdapterKey.role("open-parent-graph")).to(OpenParentGraphOnDoubleClickHandler.class);
// keyboard focus traversal
adapterMapBinder.addBinding(AdapterKey.defaultRole()).to(TraverseFocusOnTypeHandler.class);
// select focused on type
adapterMapBinder.addBinding(AdapterKey.defaultRole()).to(SelectFocusedOnTypeHandler.class);
}
@Override
protected void bindIViewerAdaptersForContentViewer(MapBinder<AdapterKey<?>, Object> adapterMapBinder) {
super.bindIViewerAdaptersForContentViewer(adapterMapBinder);
bindNavigationModelAsContentViewerAdapter(adapterMapBinder);
adapterMapBinder.addBinding(AdapterKey.defaultRole()).to(HidingModel.class);
}
/**
* Adds a binding for {@link NavigationModel} to the given adapter map
* binder that will insert the bindings into {@link IViewer}s.
*
* @param adapterMapBinder
* The adapter map binder to which the binding is added.
*/
protected void bindNavigationModelAsContentViewerAdapter(MapBinder<AdapterKey<?>, Object> adapterMapBinder) {
adapterMapBinder.addBinding(AdapterKey.defaultRole()).to(NavigationModel.class);
}
/**
* Adds (default) adapter map bindings for {@link NodeLabelPart} and all
* sub-classes. May be overwritten by sub-classes to change the default
* bindings.
*
* @param adapterMapBinder
* The {@link MapBinder} to be used for the binding registration.
* In this case, will be obtained from
* {@link AdapterMaps#getAdapterMapBinder(Binder, Class)} using
* {@link NodeLabelPart} as a key.
*
* @see AdapterMaps#getAdapterMapBinder(Binder, Class)
*/
protected void bindNodeLabelPartAdapters(MapBinder<AdapterKey<?>, Object> adapterMapBinder) {
// selection link feedback provider
adapterMapBinder
.addBinding(
AdapterKey.role(DefaultSelectionFeedbackPartFactory.SELECTION_LINK_FEEDBACK_GEOMETRY_PROVIDER))
.to(ShapeBoundsProvider.class);
// selection feedback provider
adapterMapBinder
.addBinding(AdapterKey.role(DefaultSelectionFeedbackPartFactory.SELECTION_FEEDBACK_GEOMETRY_PROVIDER))
.to(ShapeBoundsProvider.class);
// hover feedback provider
adapterMapBinder.addBinding(AdapterKey.role(DefaultHoverFeedbackPartFactory.HOVER_FEEDBACK_GEOMETRY_PROVIDER))
.to(ShapeBoundsProvider.class);
// transform policy
adapterMapBinder.addBinding(AdapterKey.defaultRole()).to(TransformLabelPolicy.class);
// hover on-hover policy
adapterMapBinder.addBinding(AdapterKey.defaultRole()).to(HoverOnHoverHandler.class);
// translate on drag
adapterMapBinder.addBinding(AdapterKey.defaultRole()).to(TranslateSelectedOnDragHandler.class);
}
/**
* Adds (default) adapter map bindings for {@link NodePart} and all
* sub-classes. May be overwritten by sub-classes to change the default
* bindings.
*
* @param adapterMapBinder
* The {@link MapBinder} to be used for the binding registration.
* In this case, will be obtained from
* {@link AdapterMaps#getAdapterMapBinder(Binder, Class)} using
* {@link NodePart} as a key.
*
* @see AdapterMaps#getAdapterMapBinder(Binder, Class)
*/
protected void bindNodePartAdapters(MapBinder<AdapterKey<?>, Object> adapterMapBinder) {
// layout
adapterMapBinder.addBinding(AdapterKey.defaultRole()).to(NodeLayoutBehavior.class);
// pruning
adapterMapBinder.addBinding(AdapterKey.defaultRole()).to(HidePolicy.class);
adapterMapBinder.addBinding(AdapterKey.defaultRole()).to(ShowHiddenNeighborsPolicy.class);
adapterMapBinder.addBinding(AdapterKey.defaultRole()).to(NodeHidingBehavior.class);
// translate on-drag
adapterMapBinder.addBinding(AdapterKey.defaultRole()).to(TranslateSelectedAndRelocateLabelsOnDragHandler.class);
// show hidden neighbors on-type
adapterMapBinder.addBinding(AdapterKey.role("show-hidden-neighbors"))
.to(ShowHiddenNeighborsOnTypeHandler.class);
// hide on-type
adapterMapBinder.addBinding(AdapterKey.role("hide")).to(HideOnTypeHandler.class);
adapterMapBinder.addBinding(AdapterKey.role("open-nested-graph")).to(OpenNestedGraphOnDoubleClickHandler.class);
// transform policy for relocation
adapterMapBinder.addBinding(AdapterKey.defaultRole()).to(TransformPolicy.class);
// resize policy to resize nesting nodes
adapterMapBinder.addBinding(AdapterKey.defaultRole()).to(ResizePolicy.class);
// anchor provider
adapterMapBinder.addBinding(AdapterKey.defaultRole()).to(NodePartAnchorProvider.class);
// feedback and handles
adapterMapBinder
.addBinding(AdapterKey.role(DefaultSelectionHandlePartFactory.SELECTION_HANDLES_GEOMETRY_PROVIDER))
.toProvider(new Provider<ShapeBoundsProvider>() {
@Override
public ShapeBoundsProvider get() {
return new ShapeBoundsProvider(1);
}
});
// selection feedback provider
adapterMapBinder
.addBinding(AdapterKey.role(DefaultSelectionFeedbackPartFactory.SELECTION_FEEDBACK_GEOMETRY_PROVIDER))
.toProvider(new Provider<ShapeBoundsProvider>() {
@Override
public ShapeBoundsProvider get() {
return new ShapeBoundsProvider(0.5);
}
});
// selection link feedback provider
adapterMapBinder
.addBinding(
AdapterKey.role(DefaultSelectionFeedbackPartFactory.SELECTION_LINK_FEEDBACK_GEOMETRY_PROVIDER))
.toProvider(new Provider<ShapeBoundsProvider>() {
@Override
public ShapeBoundsProvider get() {
return new ShapeBoundsProvider(0.5);
}
});
// hover feedback provider
adapterMapBinder.addBinding(AdapterKey.role(DefaultHoverFeedbackPartFactory.HOVER_FEEDBACK_GEOMETRY_PROVIDER))
.to(ShapeBoundsProvider.class);
// focus feedback provider
adapterMapBinder.addBinding(AdapterKey.role(DefaultFocusFeedbackPartFactory.FOCUS_FEEDBACK_GEOMETRY_PROVIDER))
.toProvider(new Provider<ShapeBoundsProvider>() {
@Override
public ShapeBoundsProvider get() {
return new ShapeBoundsProvider(0.5);
}
});
// hover on-hover
adapterMapBinder.addBinding(AdapterKey.defaultRole()).to(HoverOnHoverHandler.class);
// normalize on drag
adapterMapBinder.addBinding(AdapterKey.defaultRole()).to(NormalizeConnectedOnDragHandler.class);
}
@Override
protected void bindRootPartAsContentViewerAdapter(MapBinder<AdapterKey<?>, Object> adapterMapBinder) {
adapterMapBinder.addBinding(AdapterKey.role(IDomain.CONTENT_VIEWER_ROLE)).to(ZestFxRootPart.class)
.in(AdaptableScopes.typed(IViewer.class));
}
@Override
protected void bindSelectionFeedbackPartFactoryAsContentViewerAdapter(
MapBinder<AdapterKey<?>, Object> adapterMapBinder) {
adapterMapBinder.addBinding(AdapterKey.role(SelectionBehavior.SELECTION_FEEDBACK_PART_FACTORY))
.to(ZestFxSelectionFeedbackPartFactory.class);
}
@Override
protected void bindSelectionHandlePartFactoryAsContentViewerAdapter(
MapBinder<AdapterKey<?>, Object> adapterMapBinder) {
adapterMapBinder.addBinding(AdapterKey.role(SelectionBehavior.SELECTION_HANDLE_PART_FACTORY))
.to(ZestFxSelectionHandlePartFactory.class);
}
/**
* Adds (default) adapter map bindings for
* {@link ShowHiddenNeighborsHoverHandlePart} and all sub-classes. May be
* overwritten by sub-classes to change the default bindings.
*
* @param adapterMapBinder
* The {@link MapBinder} to be used for the binding registration.
* In this case, will be obtained from
* {@link AdapterMaps#getAdapterMapBinder(Binder, Class)} using
* {@link ShowHiddenNeighborsHoverHandlePart} as a key.
*
* @see AdapterMaps#getAdapterMapBinder(Binder, Class)
*/
protected void bindShowHiddenNeighborsHoverHandlePartAdapters(MapBinder<AdapterKey<?>, Object> adapterMapBinder) {
bindShowHiddenNeighborsOfFirstAnchorageOnClickHandlerAsShowHiddenNeighborsHoverHandlePartAdapter(
adapterMapBinder);
}
/**
* Adds a binding for
* {@link ShowHiddenNeighborsOfFirstAnchorageOnClickHandler} to the given
* adapter map binder that will insert the bindings into
* {@link ShowHiddenNeighborsHoverHandlePart}s.
*
* @param adapterMapBinder
* The adapter map binder to which the binding is added.
*/
protected void bindShowHiddenNeighborsOfFirstAnchorageOnClickHandlerAsShowHiddenNeighborsHoverHandlePartAdapter(
MapBinder<AdapterKey<?>, Object> adapterMapBinder) {
adapterMapBinder.addBinding(AdapterKey.role("showHiddenNeighbors"))
.to(ShowHiddenNeighborsOfFirstAnchorageOnClickHandler.class);
}
@Override
protected void configure() {
super.configure();
bindIContentPartFactory();
bindGraphPartAdapters(AdapterMaps.getAdapterMapBinder(binder(), GraphPart.class));
bindNodePartAdapters(AdapterMaps.getAdapterMapBinder(binder(), NodePart.class));
bindEdgePartAdapters(AdapterMaps.getAdapterMapBinder(binder(), EdgePart.class));
bindEdgeLabelPartAdapters(AdapterMaps.getAdapterMapBinder(binder(), EdgeLabelPart.class));
bindNodeLabelPartAdapters(AdapterMaps.getAdapterMapBinder(binder(), NodeLabelPart.class));
bindFXSquareSegmentHandlePartAdapters(AdapterMaps.getAdapterMapBinder(binder(), SquareSegmentHandlePart.class));
bindFXCircleSegmentHandlePartAdapters(AdapterMaps.getAdapterMapBinder(binder(), CircleSegmentHandlePart.class));
bindHidingHoverHandlePartAdapters(AdapterMaps.getAdapterMapBinder(binder(), HideHoverHandlePart.class));
bindShowHiddenNeighborsHoverHandlePartAdapters(
AdapterMaps.getAdapterMapBinder(binder(), ShowHiddenNeighborsHoverHandlePart.class));
}
}