code: public void onClick(MenuItemClickEvent event) {
  		if (feature != null && feature.isSelected()) {
  			FeatureTransaction ft = mapWidget.getMapModel().getFeatureEditor().startEditing(
  					new Feature[] { feature.clone() }, new Feature[] { feature.clone() });
  			mapWidget.render(ft, RenderGroup.VECTOR, RenderStatus.ALL);
  			VectorLayer vLayer = feature.getLayer();
  			if (vLayer.getLayerInfo().getLayerType() == LayerType.POINT) {
  				controller.setController(new PointEditController(mapWidget, controller));
  			} else if (vLayer.getLayerInfo().getLayerType() == LayerType.MULTIPOINT) {
  				mapWidget.getMapModel().getFeatureEditor().stopEditing();
  				mapWidget.render(ft, RenderGroup.VECTOR, RenderStatus.DELETE);
  				SC.warn("Editing of MultiPoint layers is not supported yet....");
  			} else if (vLayer.getLayerInfo().getLayerType() == LayerType.LINESTRING) {
  				controller.setController(new LineStringEditController(mapWidget, controller));
  			} else if (vLayer.getLayerInfo().getLayerType() == LayerType.MULTILINESTRING) {
  				controller.setController(new MultiLineStringEditController(mapWidget, controller));
  			} else if (vLayer.getLayerInfo().getLayerType() == LayerType.POLYGON) {
  				controller.setController(new PolygonEditController(mapWidget, controller));
  			} else if (vLayer.getLayerInfo().getLayerType() == LayerType.MULTIPOLYGON) {
  				controller.setController(new MultiPolygonEditController(mapWidget, controller));
  			}
  			controller.setEditMode(EditMode.DRAG_MODE);
  		}
  	}
docs: Activate editing, and set the correct child editing controller on the parent editing controller.