private GraphicsController createVertexController(GeometryIndex index) {
   CompositeGeometryIndexController controller =
       new CompositeGeometryIndexController(
           mapWidget,
           editingService,
           index,
           editingService.getEditingState() == GeometryEditState.DRAGGING);
   for (AbstractGeometryIndexMapHandler handler : EditingHandlerRegistry.getVertexHandlers()) {
     controller.addMapHandler(handler);
   }
   for (VertexMapHandlerFactory factory : customVertexFactories) {
     controller.addMapHandler(factory.create());
   }
   return controller;
 }
  private GraphicsController createGeometryController(GeometryIndex index) {
    List<AbstractGeometryIndexMapHandler> handlers = EditingHandlerRegistry.getGeometryHandlers();
    if (handlers == null || handlers.size() == 0) {
      return null;
    }

    CompositeGeometryIndexController controller =
        new CompositeGeometryIndexController(
            mapWidget,
            editingService,
            index,
            editingService.getEditingState() == GeometryEditState.DRAGGING);
    for (AbstractGeometryIndexMapHandler handler : handlers) {
      controller.addMapHandler(handler);
    }
    return controller;
  }
  private GraphicsController createEdgeController(GeometryIndex index) {
    CompositeGeometryIndexController controller =
        new CompositeGeometryIndexController(
            mapWidget,
            editingService,
            index,
            editingService.getEditingState() == GeometryEditState.DRAGGING);
    for (AbstractGeometryIndexMapHandler handler : EditingHandlerRegistry.getEdgeHandlers()) {
      controller.addMapHandler(handler);
    }
    for (EdgeMapHandlerFactory factory : customEdgeFactories) {
      controller.addMapHandler(factory.create());
    }

    EdgeMarkerHandler edgeMarkerHandler =
        new EdgeMarkerHandler(mapWidget, editingService, controller);
    controller.addMouseOutHandler(edgeMarkerHandler);
    controller.addMouseMoveHandler(edgeMarkerHandler);
    controller.addMapDownHandler(edgeMarkerHandler);
    return controller;
  }