private void pickAndShowVertex(V vertex, MutableSelectedState<V> selectedVertexState,
			VisualizationViewer<V, E> viewer) {

		// TODO animate; this requires a single view updater
		Point2D existingCenter = viewer.getRenderContext()
				.getMultiLayerTransformer()
				.inverseTransform(viewer.getCenter());
		Point vp = viewer.getVisualizationModel().getLayoutModel().get(vertex);
		Point2D newCenter = new Point2D.Double(vp.x, vp.y);
		CenterAnimationJob job = new CenterAnimationJob(viewer, existingCenter, newCenter);
		job.finished();

		selectedVertexState.clear();
		selectedVertexState.select(vertex);

		/*
		VisualGraphViewUpdater<V, E> updater = viewer.getViewUpdater();
		updater.moveVertexToCenterWithAnimation(vertex, isBusy -> {
		
			// pick the vertex after the animation has run
			if (!isBusy) {
				GPickedState<V> pickedStateWrapper = (GPickedState<V>) selectedVertexState;
				pickedStateWrapper.pickToActivate(vertex);
			}
		});
		*/
	}
Mouse plugin to allow for edge navigation

@param <V> the vertex type
@param <E> the edge type
Ghidra/Features/GraphServices/src/main/java/ghidra/graph/visualization/mouse/JgtEdgeNavigationPlugin.java