public synchronized void elementRemoved(Object source, int pos, int newSize) { LinearElement toBeRemoved = root.getVector().get(pos); shapes.getShapes().remove(toBeRemoved.getShape()); visualizer.removeLine(toBeRemoved.getVerticalLine()); visualizer.removeLine(toBeRemoved.getHorizontalLine()); LinearElement parent = root; LinearElement previousChild = toBeRemoved.getPreviousChild(); if (pos + 1 <= newSize) // If it is not the last element root.getVector().get(pos + 1).setPreviousChild(previousChild); parent.getVector().remove(toBeRemoved); root.focusPosition(); }