private void updateButtons() {
        final boolean loadedPolicy = visibleRules != null;
        final DataRetentionRule selection = listPresenter.getSelectionModel().getSelected();
        final boolean selected = loadedPolicy && selection != null;
        final boolean isDefaultRule = isDefaultRule(selection);
        int index = -1;
        if (selected) {
            index = visibleRules.indexOf(selection);
        }

        saveButton.setEnabled(loadedPolicy
                              && dirty);
        addButton.setEnabled(loadedPolicy);
        editButton.setEnabled(selected
                              && !isDefaultRule);
        copyButton.setEnabled(selected);
        deleteButton.setEnabled(selected
                                && !isDefaultRule);
        moveUpButton.setEnabled(selected
                                && !isDefaultRule
                                && index > 0);
        moveDownButton.setEnabled(selected
                                  && !isDefaultRule
                                  && index >= 0
                                  && index < visibleRules.size() - 2);
    }
@return The rules created by the users, ignoring the default retain all rule
stroom-core-client/src/main/java/stroom/receive/rules/client/presenter/DataRetentionPolicyPresenter.java