private void addNewRule(final int ruleNumber) {
        final DataRetentionRule newRule = DataRetentionRule.foreverRule(0,
                System.currentTimeMillis(),
                "",
                true,
                ExpressionOperator.builder().build());

        final DataRetentionRulePresenter editRulePresenter = editRulePresenterProvider.get();
        editRulePresenter.read(newRule);

        final PopupSize popupSize = PopupSize.resizable(800, 600);
        ShowPopupEvent.builder(editRulePresenter)
                .popupType(PopupType.OK_CANCEL_DIALOG)
                .popupSize(popupSize)
                .caption("Add New Rule")
                .onShow(e -> editRulePresenter.focus())
                .onHideRequest(e -> {
                    if (e.isOk()) {
                        final DataRetentionRule rule = editRulePresenter.write();
                        visibleRules.add(ruleNumber, rule);

                        update();
                        setDirty(true);
                        listPresenter.getSelectionModel().setSelected(visibleRules.get(0));
                    }
                    e.hide();
                })
                .fire();
    }
@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