private void deleteGraphEdge(Edge edge) {
    // make sure we aren't deleting a null edge
    assert (edge != null);
    assert (edge.type == Edge.Type.GRAPH_EDGE);

    // deselect if necessary
    if (edge == selectedItem) selectEdge(null);

    queryGraph.removeEdge(edge.getQueryEdge());
    graphEdges.remove(edge);

    // signal deletion
    fireEvent(edge, GRAPH_CHANGED);
  }