public Shape transform(VertexNode v) {
      int margin = 10;
      int width = v.getDim().width;
      int height = v.getDim().height;

      //    		    	 return new Rectangle(-105,-55,210,110);
      //      		    	 return new Rectangle(0,0, width+margin,height+margin);
      return new Rectangle(
          (width + margin) / -2, (height + margin) / -2, width + margin, height + margin);

      // return factory.getRegularPolygon(v, 4); //Return the Shape, in this case a square, ie. 4
      // sides.
    }
        @Override
        public Paint transform(VertexNode nn) {

          VertexNode source = g.getStartNode();
          if (source == null) {
            return Color.RED;
          }

          if (distances.getDistance(source, nn) == null) {
            return Color.RED;
          }

          if (nn.isStartNode() && nn.isEndNode()) {
            return Color.ORANGE;
          }
          if (nn.isStartNode() && nn.isRandomNode()) {
            return Color.YELLOW;
          }
          if (nn.isEndNode()) {
            return Color.MAGENTA;
          }
          if (nn.isStartNode()) {
            return Color.GREEN;
          }
          if (nn.isRandomNode()) {
            return Color.CYAN;
          }
          return Color.WHITE;
        }
  public AbstractCKGraphEditor(AbstractGraph g, VertexNode v, EdgeLink e) {
    super(new StaticLayout<VertexNode, EdgeLink>(g, locationTransformer), new Dimension(800, 900));

    this.g = g;
    distances = new DijkstraDistance<VertexNode, EdgeLink>(g);
    this.vFactory = v;
    this.eFactory = e;
    vFactory.setGraph(g);
    eFactory.setGraph(g);

    setRenderSettings();

    setMouseSettings();

    this.addChangeListener(
        new ChangeListener() {
          public void stateChanged(ChangeEvent e) {
            distances.reset();
          }
        });
  }
 @Override
 public Icon transform(VertexNode v) {
   return v.getIcon();
 }
 @Override
 public Point2D transform(VertexNode vertex) {
   return vertex.getPos();
 }