code: function mxSelectionCellsHandler(graph)
  {
  	mxEventSource.call(this);
  	
  	this.graph = graph;
  	this.handlers = new mxDictionary();
  	this.graph.addMouseListener(this);
  	
  	this.refreshHandler = mxUtils.bind(this, function(sender, evt)
  	{
  		if (this.isEnabled())
  		{
  			this.refresh();
  		}
  	});
  	
  	this.graph.getSelectionModel().addListener(mxEvent.CHANGE, this.refreshHandler);
  	this.graph.getModel().addListener(mxEvent.CHANGE, this.refreshHandler);
  	this.graph.getView().addListener(mxEvent.SCALE, this.refreshHandler);
  	this.graph.getView().addListener(mxEvent.TRANSLATE, this.refreshHandler);
  	this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE, this.refreshHandler);
  	this.graph.getView().addListener(mxEvent.DOWN, this.refreshHandler);
  	this.graph.getView().addListener(mxEvent.UP, this.refreshHandler);
  }
docs: Copyright (c) 2006-2015, JGraph Ltd
  Copyright (c) 2006-2015, Gaudenz Alder
   
  Class: mxSelectionCellsHandler
  
  An event handler that manages cell handlers and invokes their mouse event
  processing functions.
  
  Group: Events
  
  Event: mxEvent.ADD
  
  Fires if a cell has been added to the selection. The <code>state</code>
  property contains the <mxCellState> that has been added.
  
  Event: mxEvent.REMOVE
  
  Fires if a cell has been remove from the selection. The <code>state</code>
  property contains the <mxCellState> that has been removed.
  
  Parameters:
  
  graph - Reference to the enclosing <mxGraph>.