/** Removes the Object identified by the specified id from this Surface's {@link Layout}. */ @Override public void requestRemove(String id) { Node<T> node = layout.getNode(id); if (node == null) { return; } List<Node<T>> affectedNodes = engine.requestRemoveElement(this, node); if (!affectedNodes.isEmpty()) { engine.adjustWeights(this); // Signal the client to remove the object associated with the removed "node". node.force( this, /* isMoveOperation() ? ChangeType.REMOVE_RETAIN : */ ChangeType.REMOVE_DISCARD); for (Node<T> n : affectedNodes) { n.set(this, ChangeType.RESIZE_RELOCATE); } removeNodeReferences(node); getPathIterator().assemblePaths(layout.getRoot()); } else { ////////// VETO REMOVE ///////// } }