public void action(GraphData graphData) {

        GraphModel g1 = graphData.getGraph();
        GraphModel g2 = new GraphModel(false);
        g2.setIsEdgesCurved(true);

        for(Vertex v : g1.getVertexArray()) {
            Vertex tmp = new Vertex();
            tmp.setLocation(v.getLocation());
            g2.addVertex(tmp);
        }

        for(Edge e : g1.getEdges()) {
            GraphPoint v1 = e.source.getLocation();
            GraphPoint v2 = e.target.getLocation();
            double dis = v1.distance(v2);
            GraphPoint v3 = GraphPoint.sub(v2, v1);
            v3 = GraphPoint.div(v3, k+1);

            Vertex src = g2.getVertex(e.source.getId());
            for (int i = 0; i < k; i++) {
                Vertex tmp = new Vertex();
                tmp.getProp().obj=e;
                GraphPoint v4 = new GraphPoint(v3);
                v4.multiply(i + 1);
                v4.add(v1);
                tmp.setLocation(v4);
                g2.addVertex(tmp);
                g2.addEdge(new Edge(src,tmp));
                src=tmp;
            }
            g2.addEdge(new Edge(src, g2.getVertex(e.target.getId())));
            Edge ee = new Edge(g2.getVertex(e.source.getId()),
                    g2.getVertex(e.target.getId()));
            GraphPoint vector = GraphPoint.sub(g2.getVertex(e.target.getId()).getLocation(),
                    g2.getVertex(e.source.getId()).getLocation());
            vector=GraphPoint.div(vector,vector.norm());
            GraphPoint ppVec = new GraphPoint(-vector.y,vector.x);
            ppVec.multiply(30.0);
            ee.setCurveControlPoint(ppVec);
            g2.addEdge(ee);

        }

        for(Vertex v1 : g2.getVertexArray()) {
            for (Vertex v2 : g2.getVertexArray()) {
                if(v1.getProp().obj!=null) {
                    if (v2.getProp().obj != null) {
                        Edge e1 = (Edge) v1.getProp().obj;
                        Edge e2 = (Edge) v2.getProp().obj;
                        if(edgeConnects(e1,e2)) {
                            Edge ee = new Edge(v1,v2);
                            GraphPoint vector =
                                    GraphPoint.sub(v1.getLocation(),v2.getLocation());
                            vector=GraphPoint.div(vector,vector.norm());
                            GraphPoint ppVec = new GraphPoint(-vector.y,vector.x);
                            ppVec.multiply(30.0);
                            ee.setCurveControlPoint(ppVec);
                            g2.addEdge(ee);
                        }
                    }
                }
            }
        }


       graphData.core.showGraph(g2);
    }