code: public void setController(GraphicsController graphicsController) {
  		for (HandlerRegistration registration : handlers) {
  			registration.removeHandler();
  		}
  		if (controller != null) {
  			controller.onDeactivate();
  			controller = null;
  		}
  		handlers = new ArrayList<HandlerRegistration>();
  		if (null == graphicsController) {
  			graphicsController = fallbackController;
  		}
  		if (graphicsController != null) {
  			handlers.add(eventWidget.addMouseDownHandler(graphicsController));
  			handlers.add(eventWidget.addMouseMoveHandler(graphicsController));
  			handlers.add(eventWidget.addMouseOutHandler(graphicsController));
  			handlers.add(eventWidget.addMouseOverHandler(graphicsController));
  			handlers.add(eventWidget.addMouseUpHandler(graphicsController));
  			handlers.add(eventWidget.addMouseWheelHandler(graphicsController));
  			handlers.add(eventWidget.addDoubleClickHandler(graphicsController));
  			controller = graphicsController;
  			controller.onActivate();
  		}
  	}
docs: Apply a new <code>GraphicsController</code> on the graphics. When an old controller is to be removed for this new
  controller, its <code>onDeactivate</code> method will be called. For the new controller, its
  <code>onActivate</code> method will be called.
  
  @param graphicsController
  The new <code>GraphicsController</code> to be applied on the graphics.