/**
   * Create an instance with passed parameters.
   *
   * @param model
   * @param renderer
   * @param preferredSize initial preferred size of the view
   */
  @SuppressWarnings("unchecked")
  public BasicVisualizationServer(VisualizationModel<V, E> model, Dimension preferredSize) {
    this.model = model;
    //        renderContext.setScreenDevice(this);
    model.addChangeListener(this);
    setDoubleBuffered(false);
    this.addComponentListener(new VisualizationListener(this));

    setPickSupport(new ShapePickSupport<V, E>(this));
    setPickedVertexState(new MultiPickedState<V>());
    setPickedEdgeState(new MultiPickedState<E>());

    renderContext.setEdgeDrawPaintTransformer(
        new PickableEdgePaintTransformer<E>(getPickedEdgeState(), Color.black, Color.cyan));
    renderContext.setVertexFillPaintTransformer(
        new PickableVertexPaintTransformer<V>(getPickedVertexState(), Color.red, Color.yellow));

    setPreferredSize(preferredSize);
    renderingHints.put(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);

    renderContext.getMultiLayerTransformer().addChangeListener(this);
  }