code: public JsHandlerRegistration addGeometryEditChangeStateHandler(final GeometryEditChangeStateHandler handler) {
  		org.geomajas.plugin.editing.client.event.GeometryEditChangeStateHandler h;
  		h = new org.geomajas.plugin.editing.client.event.GeometryEditChangeStateHandler() {
  
  			public void onChangeEditingState(GeometryEditChangeStateEvent event) {
  				String state = "idle";
  				switch (event.getEditingState()) {
  					case INSERTING:
  						state = "inserting";
  						break;
  					case DRAGGING:
  						state = "dragging";
  				}
  				org.geomajas.plugin.editing.jsapi.client.event.GeometryEditChangeStateEvent e;
  				e = new org.geomajas.plugin.editing.jsapi.client.event.GeometryEditChangeStateEvent(state);
  				handler.onChangeEditingState(e);
  			}
  		};
  		HandlerRegistration registration = delegate.addGeometryEditChangeStateHandler(h);
  		return new JsHandlerRegistration(new HandlerRegistration[] { registration });
  	}
docs: Register a {@link GeometryEditChangeStateHandler} to listen to events the mark changes in the general editing
  state. This general state can say we're busy idling, dragging vertices/edges/geometries or inserting. The reason
  why this exists is for the general editing controllers to know how to behave.
  
  @param handler
  The {@link GeometryEditChangeStateHandler} to add as listener.
  @return The registration of the handler.