public void performAction(String eventName, Object value) {
        SubGraph sd = Select.getSelection(blackboard);
        if (sd == null)
            sd = new SubGraph();
        for (Vertex v : sd.vertices)
            if (!last.vertices.contains(v)) {
                select(v);
                last.vertices.add(v);
            }
        Vector<Vertex> rm = new Vector<Vertex>();
        for (Vertex v : last.vertices)
            if (!sd.vertices.contains(v)) {
                deselect(v);
                rm.add(v);
            }
        last.vertices.removeAll(rm);
        for (Edge e : sd.edges)
            if (!last.edges.contains(e)) {
                select(e);
                last.edges.add(e);
            }
        Vector<Edge> rme = new Vector<Edge>();
        for (Edge e : last.edges)
            if (!sd.edges.contains(e)) {
                deselect(e);
                rme.add(e);
            }
        last.edges.removeAll(rme);
        //last=sd;
        //last.vertices=(HashSet<Vertex>) sd.vertices.clone();
        //last.edges=(HashSet<Edge>) sd.edges.clone();
    }