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);
		}
	}
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 ) ; } }
Activate editing, and set the correct child editing controller on the parent editing controller.