function mxWebColaAdaptor(graph, dimension, movableVertices, options)
/**
 * Constructs a WebCola adaptor for mxGraph
 * @param graph mxGraph instance
 * @param dimension array containing [width, height] of drawing canvas in points
 * @param movableVertices set containing IDs of vertices that are movable; if undefined all vertices are movable
 * @param options WebCola options for layout/adapter
 * @constructor
 */
{
  this.graph = graph;
  this.dimension = dimension;
  if (typeof dimension === 'undefined')
  {
    this.dimension = [600, 600];
  }
  // compute vertex/group degrees from incidence
  this.vertexDegrees = new mxDictionary();
  this.groupDegrees = new mxDictionary();
  this.computeVertexDegrees();
  // convert draw.io graph to WebCola's nodes/links
  var layoutResult = this.graphToLayout(graph, movableVertices);
  this.nodes = layoutResult.nodes;
  this.links = layoutResult.links;
  this.groups = layoutResult.groups;
  this.cellToNode = layoutResult.cellToNode;
  this.isStopped = false;
  this.options = {};
  // assign default values
  for (var key in this.defaultValues)
  {
    this.options[key] = this.defaultValues[key];
  }
  // if options were passed, override defaults for keys available in options
  if (options != null)
  {
    for (var key in options)
    {
      this.options[key] = options[key];
    }
  }
}
Empty method for default event handlers