public void performAction(String eventName, Object value) {
        gv = blackboard.getData(AbstractGraphRenderer.EVENT_KEY);
        //while resizing the vertex it shouldn't move it
//resize
//        if (b == null || !b) {
        if (eventName == VertexEvent.EVENT_KEY) {

            VertexEvent vdd = blackboard.getData(VertexEvent.EVENT_KEY);


            SubGraph sd = Select.getSelection(blackboard);
            if (sd.vertices.contains(vdd.v))   //start if the vertex selected
            {
                if (vdd.eventType == VertexEvent.DRAGGING_STARTED) {
                    verticesPositionsBackUp = new GraphPoint[gd.getGraph().getVerticesCount()];
                    for (Vertex vertex : gd.getGraph()) {
                        verticesPositionsBackUp[vertex.getId()] = vertex.getLocation();
                    }
                    startx = vdd.v.getLocation().x;
                    starty = vdd.v.getLocation().y;
                    drag();
                }
                if (vdd.eventType == VertexEvent.RELEASED || vdd.eventType == VertexEvent.DROPPED) {
                    drop();
                    //add undo data
                    GraphPoint[] newPos = new GraphPoint[gd.getGraph().getVerticesCount()];
                    for (Vertex ver : gd.getGraph()) {
                        newPos[ver.getId()] = ver.getLocation();
                    }

                    blackboard.setData(SELECTION_MOVED, new GraphPoint(vdd.v.getLocation().x - startx, vdd.v.getLocation().y - starty));

                }
                if (vdd.eventType == VertexEvent.DRAGGING) {
//                    VertexMouseDraggingData d = blackboard.get(VertexMouseDraggingData.name);
                    xx = vdd.mousePos.x;
                    yy = vdd.mousePos.y;
                    moveVertices();
                }

            }
        }
    }