@Override
  public void redo() throws CannotRedoException {
    super.redo();

    if (imageEdit != null) {
      imageEdit.redo();
    }
    if (translationEdit != null) {
      translationEdit.redo();
    }
    // it is important to redo the canvas change edit
    // after the image and translation edits because
    // of the image covers canvas checks
    if (canvasChangeEdit != null) {
      canvasChangeEdit.redo();
    }
    if (selectionChangeEdit != null) {
      selectionChangeEdit.redo();
    }
    if (deselectEdit != null) {
      deselectEdit.redo();
    }

    updateGUI();
  }