public void cellsRemoved(Object[] cells)
{
if (cells != null && cells.length > 0)
{
double scale = view.getScale();
mxPoint tr = view.getTranslate();
model.beginUpdate();
try
{
for (int i = 0; i < cells.length; i++)
{
// Disconnects edges which are not in cells
Collection<Object> cellSet = new HashSet<Object>();
cellSet.addAll(Arrays.asList(cells));
Object[] edges = getConnections(cells[i]);
for (int j = 0; j < edges.length; j++)
{
if (!cellSet.contains(edges[j]))
{
mxGeometry geo = model.getGeometry(edges[j]);
if (geo != null)
{
mxCellState state = view.getState(edges[j]);
if (state != null)
{
geo = (mxGeometry) geo.clone();
boolean source = view.getVisibleTerminal(
edges[j], true) == cells[i];
int n = (source) ? 0 : state
.getAbsolutePointCount() - 1;
mxPoint pt = state.getAbsolutePoint(n);
geo.setTerminalPoint(new mxPoint(pt.getX()
/ scale - tr.getX(), pt.getY()
/ scale - tr.getY()), source);
model.setTerminal(edges[j], null, source);
model.setGeometry(edges[j], geo);
}
}