Example usage for org.apache.wicket.markup.html.form HiddenField HiddenField

List of usage examples for org.apache.wicket.markup.html.form HiddenField HiddenField

Introduction

In this page you can find the example usage for org.apache.wicket.markup.html.form HiddenField HiddenField.

Prototype

public HiddenField(String id, IModel<T> model) 

Source Link

Document

Construct.

Usage

From source file:au.org.theark.lims.web.component.button.PrinterListPanel.java

License:Open Source License

private void initPanel() {
    DropDownChoice<String> printerListDdc = new DropDownChoice<String>("printerList",
            new PropertyModel<String>(this, "selected"), PRINTERLIST);
    printerListDdc.add(new AttributeModifier("name", "printerList"));
    printerListDdc.add(new AttributeModifier("onchange", "changeHiddenInput(this)"));
    printerListDdc.setOutputMarkupPlaceholderTag(true);
    this.add(printerListDdc);

    selectedPrinter = new HiddenField<String>("selectedPrinter", new PropertyModel<String>(this, "selected"));
    selectedPrinter.setOutputMarkupPlaceholderTag(true);
    selectedPrinter.add(new AttributeModifier("name", "selectedPrinter"));
    selectedPrinter.add(new AbstractDefaultAjaxBehavior() {
        private static final long serialVersionUID = 1L;

        @Override/*from  w  w w  . j  av  a 2 s.co m*/
        protected void respond(AjaxRequestTarget arg0) {
            StringValue selectedPrinter = RequestCycle.get().getRequest().getQueryParameters()
                    .getParameterValue("selectedPrinter");
            selected = selectedPrinter.toString();
        }
    });
    this.add(selectedPrinter);

    StringBuilder javaScript = new StringBuilder();
    javaScript.append("function findPrinters() {");
    javaScript.append("\n");
    javaScript.append("   var applet = document.jZebra;");
    javaScript.append("\n");
    javaScript.append("   if (applet != null) {");
    javaScript.append("\n");
    javaScript.append("      document.getElementById('");
    javaScript.append(printerListDdc.getMarkupId());
    javaScript.append("').disabled = false;");
    javaScript.append("\n");
    javaScript.append("      var listing = applet.getPrinters();");
    javaScript.append("\n");
    javaScript.append("      var printers = listing.split(',');\n");
    javaScript.append("      var objHidden = document.getElementById('");
    javaScript.append(selectedPrinter.getMarkupId());
    javaScript.append("');\n");
    javaScript.append("\n");
    javaScript.append("      for ( var i in printers) {");
    javaScript.append("\n");
    javaScript.append("         if(objHidden.value == printers[i]) {\n");
    javaScript.append("            document.getElementById('");
    javaScript.append(printerListDdc.getMarkupId());
    javaScript.append("').options[i] = new Option(printers[i], printers[i], true, true);\n");
    javaScript.append("         } else {\n");
    javaScript.append("            document.getElementById('");
    javaScript.append(printerListDdc.getMarkupId());
    javaScript.append("').options[i] = new Option(printers[i], printers[i], false, false);\n");
    javaScript.append("         }\n");
    javaScript.append("      }");
    javaScript.append("\n");
    javaScript.append("   } else {");
    javaScript.append("\n");
    javaScript.append("      document.getElementById('");
    javaScript.append(printerListDdc.getMarkupId());
    javaScript.append("').options[i] = new Option('N/A');");
    javaScript.append("\n");
    javaScript.append("      document.getElementById('");
    javaScript.append(printerListDdc.getMarkupId());
    javaScript.append("').disabled = true;");
    javaScript.append("\n");
    javaScript.append("   }");
    javaScript.append("\n");
    javaScript.append("}");
    javaScript.append("\n");
    javaScript.append("\n");
    javaScript.append("function changeHiddenInput (objDropDown) {");
    javaScript.append("\n");
    javaScript.append("   var objHidden = document.getElementById('");
    javaScript.append(selectedPrinter.getMarkupId());
    javaScript.append("');\n");
    javaScript.append("   objHidden.value = objDropDown.value;");
    javaScript.append("\n");
    javaScript.append("   callWicket(objDropDown.value);");
    javaScript.append("}");

    final Label script = new Label("script", javaScript.toString());
    script.setOutputMarkupPlaceholderTag(true);
    script.add(new AttributeModifier("onload", "findPrinters()"));
    script.setEscapeModelStrings(false); // do not HTML escape JavaScript code
    this.add(script);
}

From source file:com.doculibre.constellio.wicket.panels.search.advanced.AbstractSearchRulePanel.java

License:Open Source License

@SuppressWarnings("unchecked")
public AbstractSearchRulePanel(String id, final SimpleSearch search, final T rule, IModel ruleTypesChoice) {
    super(id);/*ww  w  . j  a  v a 2  s  .co  m*/

    enabledRuleModel = new LoadableDetachableModel() {

        @Override
        protected Object load() {
            return getEnabledRuleFor(rule, search);
        }
    };

    SimpleSearch clonedSearch = search.clone();

    SimpleParams currentRuleParams = rule.toSimpleParams(true);

    List<RuleTypeChoice> baseChoices = (List<RuleTypeChoice>) ruleTypesChoice.getObject();
    RuleTypeChoice selectedChoice = null;
    List<RuleTypeChoice> adaptedChoices = new ArrayList<RuleTypeChoice>();
    for (RuleTypeChoice baseChoice : baseChoices) {
        boolean isSelected = true;
        RuleTypeChoice adaptedChoice = new RuleTypeChoice();
        adaptedChoice.name = baseChoice.name;
        clonedSearch.setAdvancedSearchRule(rule.getRootSearchRule());
        adaptedChoice.params.addAll(search.toSimpleParams(true));
        for (String param : baseChoice.params.keySet()) {
            String paramName = param.replace(SearchRule.ROOT_PREFIX, "");
            String adaptedName = rule.getPrefix() + paramName;
            String value = baseChoice.params.getString(param);

            adaptedChoice.params.remove(adaptedName);
            adaptedChoice.params.add(adaptedName, value);
            isSelected &= value.equals(currentRuleParams.getString(adaptedName));
        }

        if (isSelected) {
            selectedChoice = adaptedChoice;
        }
        adaptedChoices.add(adaptedChoice);
    }
    IChoiceRenderer renderer = new IChoiceRenderer() {

        @Override
        public Object getDisplayValue(Object object) {
            RuleTypeChoice choice = (RuleTypeChoice) object;
            return choice.name;
        }

        @Override
        public String getIdValue(Object object, int index) {
            RuleTypeChoice choice = (RuleTypeChoice) object;

            String url = urlFor(getPage().getClass(), SimpleParamsUtils.toPageParameters(choice.params))
                    .toString();
            return url;
        }

    };
    DropDownChoice typeSelect = new DropDownChoice("type", new Model(selectedChoice), adaptedChoices, renderer);
    typeSelect.add(new SimpleAttributeModifier("onChange",
            "goToUrl(this.value, '" + SearchRule.ROOT_PREFIX + "', '" + rule.getPrefix() + "')"));
    //We dont want this value to be submit, because it is very long and not usefull
    typeSelect.add(new SimpleAttributeModifier("name", ""));
    add(typeSelect);

    HiddenField searchRuleTypeHiddenField = new HiddenField("searchRuleType", new Model(getSearchRuleType()));
    searchRuleTypeHiddenField.add(
            new SimpleAttributeModifier("name", rule.getPrefix() + SearchRule.DELIM + SearchRule.PARAM_TYPE));
    add(searchRuleTypeHiddenField);
}

From source file:com.doculibre.constellio.wicket.panels.search.advanced.searchRulePanels.AbstractIndexFieldSearchRulePanel.java

License:Open Source License

public AbstractIndexFieldSearchRulePanel(String id, SimpleSearch search, T rule, IModel ruleTypesChoice) {
    super(id, search, rule, ruleTypesChoice);

    HiddenField searchRuleIndexFieldHiddenField = new HiddenField("searchRuleIndexField",
            new Model(rule.getIndexFieldName()));
    searchRuleIndexFieldHiddenField.add(new SimpleAttributeModifier("name",
            rule.getPrefix() + SearchRule.DELIM + IndexFieldSearchRule.PARAM_INDEX_FIELD));
    add(searchRuleIndexFieldHiddenField);

}

From source file:com.doculibre.constellio.wicket.panels.search.advanced.searchRulePanels.SearchRulesGroupPanel.java

License:Open Source License

public SearchRulesGroupPanel(String id, SimpleSearch search, final SearchRulesGroup rule) {
    super(id);/*ww  w .  j ava  2  s .c om*/
    HiddenField searchRuleTypeHiddenField = new HiddenField("searchRuleType", new Model(SearchRulesGroup.TYPE));
    searchRuleTypeHiddenField.add(
            new SimpleAttributeModifier("name", rule.getPrefix() + SearchRule.DELIM + SearchRule.PARAM_TYPE));
    add(searchRuleTypeHiddenField);
    DropDownChoice equationSelect = new DropDownChoice("equation", new Model(rule.getEquation()),
            Arrays.asList(BooleanEquation.values()), new IChoiceRenderer() {

                @Override
                public String getIdValue(Object object, int index) {
                    return ((BooleanEquation) object).name();
                }

                @Override
                public Object getDisplayValue(Object object) {
                    return new StringResourceModel(((BooleanEquation) object).name(),
                            SearchRulesGroupPanel.this, null).getString();
                }
            });
    equationSelect.add(new SimpleAttributeModifier("name",
            rule.getPrefix() + SearchRule.DELIM + SearchRulesGroup.PARAM_EQUATION));
    add(equationSelect);

    IModel labelModel = new LoadableDetachableModel() {

        @Override
        protected Object load() {
            String label = new StringResourceModel("theseRules", SearchRulesGroupPanel.this, null).getString();
            return label.replace("#", "" + rule.getNestedRules().size());
        }
    };

    add(new Label("theseRules", labelModel));
}

From source file:com.gmail.volodymyrdotsenko.jqxwicket.core.panel.FormSubmittingPanel.java

License:Apache License

@Override
protected void onInitialize() {
    super.onInitialize();

    // As the Form is posted, Form#findSubmittingButton() expect to retrieve this component by the request parameter 'name'.
    // But as this component is not an input, it does not have a name attribute. Thus, it should match the #getInputName() path
    this.add(new HiddenField<Serializable>("submitter", new Model<Serializable>())
            .add(AttributeModifier.replace("name", this.getInputName())));
}

From source file:com.googlecode.wicket.jquery.ui.panel.FormSubmittingPanel.java

License:Apache License

/**
 * Initialization/*  ww  w.j  a v a2  s.c om*/
 */
private void init() {
    //As the Form is posted, Form#findSubmittingButton() expect to retrieve this component by the request parameter 'name'.
    //But as this component is not an input, it does not have a name attribute. Thus, it should match the #getInputName() path
    this.add(new HiddenField<Serializable>("submitter", new Model<Serializable>())
            .add(AttributeModifier.replace("name", this.getId())));
}

From source file:com.googlecode.wicketwebbeans.containers.BeanForm.java

License:Apache License

/**
 * Construct a new BeanForm.// www .  jav  a  2s  . c om
 *
 * @param id the Wicket id for the panel.
 * @param bean the bean to be displayed. This may be an IModel or regular bean object.
 *  The bean may be a List or, if an IModel, a model that returns a List. If so, the bean is display is
 *  displayed using BeanTablePanel. Otherwise BeanGridPanel is used.
 * @param beanMetaData the meta data for the bean. If bean is a List or model of a List, then this must be
 *  the BeanMetaData for a single element (row) of the List.
 * @param container an optional container to use in place of the default BeanGridPanel or BeanTablePanel. This container must must be a Panel and
 *   implement a constructor of the form: <p>
 *   <code>public Constructor(String id, final Object bean, BeanMetaData beanMetaData, TabMetaData tabMetaData)</code>
 *   <p>
 *   where id = Wicket component ID<br>
 *   bean = the bean, or IModel containing the bean<br>
 *   beanMetaData = the BeanMetaData for bean<br>
 *   tabMetaData = the tab metadata<p>
 *   May be null.
 */
@SuppressWarnings("serial")
public BeanForm(String id, final Object bean, final BeanMetaData beanMetaData,
        final Class<? extends Panel> container) {
    super(id);

    this.bean = bean;
    this.beanMetaData = beanMetaData;
    this.container = container;

    form = new Form("f") {
        // Track whether the form is in submit processing.
        @Override
        public boolean process() {
            ++submitCnt;
            try {
                return super.process();
            } finally {
                --submitCnt;
            }
        }
    };

    form.setOutputMarkupId(true);
    add(form);

    String title = beanMetaData.getLabel();
    form.add(new Label("title", title));

    form.add(new Label("beanFormIndicatorErrorLabel", new ResourceModel("beanFormError.msg",
            "An error occurred on the server. Your session may have timed out.")));

    beanMetaData.consumeParameter(PARAM_ROWS);

    final HiddenField hiddenFocusField = new HiddenField<String>("focusField",
            new PropertyModel<String>(this, "focusField"));
    hiddenFocusField.add(new AbstractBehavior() {
        @Override
        public void onComponentTag(Component component, ComponentTag tag) {
            tag.put("id", "bfFocusField");
            super.onComponentTag(component, tag);
        }
    });

    form.add(hiddenFocusField);

    formVisitor = new FormVisitor();

    createTabs(bean, beanMetaData, container);

    // Use a FeedbackMessageFilter to handle messages for multiple BeanForms on a page. This is because messages are stored on the session.
    IFeedbackMessageFilter feedbackFilter = new IFeedbackMessageFilter() {
        public boolean accept(FeedbackMessage message) {
            // If the reporter is a field and this is refreshing because of a non-Ajax form submit, it's very likely that the field has been detached
            // from its parent because it is in a list view. As a result, findParent doesn't return the BeanForm.
            Component reporter = message.getReporter();
            AbstractField reporterField = (AbstractField) (reporter instanceof AbstractField ? reporter
                    : reporter.findParent(AbstractField.class));
            if (reporterField != null) {
                return reporterField.getBeanForm().getId().equals(BeanForm.this.getId());
            }

            Component parent = (reporter instanceof BeanForm ? reporter : reporter.findParent(BeanForm.class));
            return reporter == BeanForm.this || parent == null || parent == BeanForm.this;
        }
    };

    feedback = new FeedbackPanel("feedback", feedbackFilter);
    feedback.setOutputMarkupId(true);
    form.add(feedback);

    createGlobalActions();
}

From source file:com.hubeleon.wicketlist.HomePage.java

License:Open Source License

public HomePage() {

    final WebMarkupContainer divList = new WebMarkupContainer("ochConfirmCDRsTable");
    divList.setOutputMarkupId(true);//from   w w  w. j ava  2 s  .c  o m
    divList.setOutputMarkupPlaceholderTag(true);
    setVersioned(false);

    final List<CDRInfo> cdrInfoArray = new ArrayList();
    if (SystemProperty.environment.value() == SystemProperty.Environment.Value.Development) {
        try (Closeable closeable = ObjectifyService.begin()) {
            System.out.println(" #######  get all cdr list");
            List<CDRInfo> ths = ofy().load().type(CDRInfo.class).list();
            cdrInfoArray.addAll(ths);
        }
    }

    final ListView list = new ListView<CDRInfo>("listview", cdrInfoArray) {

        protected void populateItem(final ListItem<CDRInfo> listItem) {

            final CDRInfo cdr = (CDRInfo) listItem.getModelObject();

            System.out.println("Populating List for  " + cdr.getCdrId() + " with status  "
                    + cdr.getCdrStatusType() + " retrieved from database ");

            listItem.setOutputMarkupId(true);
            listItem.setOutputMarkupPlaceholderTag(true);

            listItem.add(new Label("cdr", (cdr.getCdrId() != null ? cdr.getCdrId() : "")));
            listItem.add(new Label("evseId", (cdr.getEvseId() != null ? cdr.getEvseId() : "")));
            final Label lblStatus = new Label("status", new PropertyModel<String>(cdr, "cdrStatusType"));
            lblStatus.setOutputMarkupId(true);
            lblStatus.setOutputMarkupPlaceholderTag(true);

            listItem.add(lblStatus);

            listItem.add(new Label("startDateTime",
                    (cdr.getStartDateTime().toString() != null ? cdr.getStartDateTime().toString() : "")));
            listItem.add(new Label("endDateTime",
                    (cdr.getEndDateTime().toString() != null ? cdr.getEndDateTime().toString() : "")));
            listItem.add(new Label("duration", (cdr.getDuration() != null ? cdr.getDuration() : "")));

            listItem.add(new Label("instance", cdr.getInstance() != null ? cdr.getInstance() : ""));
            listItem.add(new Label("tokenType", cdr.getTokenType() != null ? cdr.getTokenType() : ""));
            listItem.add(new Label("tokenSubType", cdr.getTokenSubType() != null ? cdr.getTokenSubType() : ""));
            listItem.add(new Label("contractId", cdr.getContractId() != null ? cdr.getContractId() : ""));
            listItem.add(new Label("liveAuthId", cdr.getLiveAuthId() != null ? cdr.getLiveAuthId() : ""));

            final Form<CDRInfo> form = new Form<CDRInfo>("myForm", new Model(cdr)) {

                /**
                 * 
                 */
                private static final long serialVersionUID = 1L;

                protected void onSubmit(AjaxRequestTarget target, Form<CDRInfo> form) {
                    CDRInfo c = (CDRInfo) this.getModelObject();
                    System.err.println("######## STATUS:" + c.getCdrStatusType());
                    //this.setResponsePage(new MovieDisplayPage(movie));
                };
            };

            form.setOutputMarkupId(true);
            form.setOutputMarkupPlaceholderTag(true);

            final HiddenField currentState = new HiddenField("currentState",
                    new PropertyModel<String>(cdr, "cdrStatusType"));
            currentState.setOutputMarkupId(true);
            form.add(currentState);

            final HiddenField hcdr = new HiddenField("cdrId", new PropertyModel<String>(cdr, "cdrId"));
            hcdr.setOutputMarkupId(true);
            form.add(hcdr);

            final Model<String> btnStyle = new Model<String>("btn-warning");

            AjaxButton btn = new AjaxButton("stateAcceptButton",
                    new PropertyModel<String>(cdr, "cdrStatusType"), form) {

                protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
                    super.updateAjaxAttributes(attributes);
                    attributes.setWicketAjaxResponse(false);
                }

                protected void onClick(AjaxRequestTarget target, Form form) {

                }

                protected void onSubmit(AjaxRequestTarget target, Form form) {
                    System.out.println(" ####### " + hcdr.getDefaultModelObjectAsString() + " - "
                            + currentState.getDefaultModelObjectAsString());
                    if (SystemProperty.environment.value() == SystemProperty.Environment.Value.Development) {
                        try (Closeable closeable = ObjectifyService.begin()) {
                            CDRInfo result = (CDRInfo) ofy().load().type(CDRInfo.class)
                                    .id(hcdr.getDefaultModelObjectAsString()).now();
                            result.setCdrStatusType("Accepted");
                            System.out.println("Persisting to database " + result.getCdrId() + " - "
                                    + result.getCdrStatusType() + " ::: " + target.getLastFocusedElementId());
                            ofy().save().entity(result).now();
                            setReuseItems(true);
                            addStateChange();
                            modelChanging();
                            // Remove item and invalidate listView
                            List<CDRInfo> currentList = (List<CDRInfo>) getList();
                            for (CDRInfo i : currentList) {
                                if (i.getCdrId().equalsIgnoreCase(result.getCdrId())) {
                                    System.out.println("#### Found entry and updating state to : "
                                            + result.getCdrStatusType());
                                    currentList.remove(i);
                                    i.setCdrStatusType(result.getCdrStatusType());
                                    System.out.println("#### set list " + currentList);
                                    setList(currentList);
                                    target.appendJavaScript(" document.getElementById('" + lblStatus.getId()
                                            + "').value='" + result.getCdrStatusType() + "';");
                                    System.out.println("#### model changed ");
                                    modelChanged();
                                    System.out.println("#### remove all ");
                                    removeAll();
                                    break;
                                } else {
                                    System.out.println("#### NOT FOUND as charge record " + i.getCdrId()
                                            + ", while we are looking for " + result.getCdrId());
                                }
                            }
                        }
                    }
                    target.add(lblStatus);
                    setResponsePage(HomePage.class);
                }

            };

            btn.add(AttributeModifier.append("class", btnStyle));

            btn.add(new AttributeModifier("cdrStatusType", cdr) {
                protected String newValue(final String currentValue, final String replacementValue) {
                    System.out
                            .println("######## New Value 1:" + replacementValue + " old value " + currentValue);
                    return currentValue + replacementValue;
                }

            });

            form.add(btn);

            AjaxButton btnReject = new AjaxButton("stateRejectButton",
                    new PropertyModel<String>(cdr, "cdrStatusType"), form) {

                protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
                    super.updateAjaxAttributes(attributes);
                    attributes.setWicketAjaxResponse(false);
                    System.out.println("########updateAjaxAttributes");
                }

                protected void onSubmit(AjaxRequestTarget target, Form form) {
                    System.out.println(" ####### " + hcdr.getDefaultModelObjectAsString() + " - "
                            + currentState.getDefaultModelObjectAsString());
                    if (SystemProperty.environment.value() == SystemProperty.Environment.Value.Development) {
                        try (Closeable closeable = ObjectifyService.begin()) {
                            CDRInfo result = (CDRInfo) ofy().load().type(CDRInfo.class)
                                    .id(hcdr.getDefaultModelObjectAsString()).now();
                            result.setCdrStatusType("Rejected");
                            System.out.println("Persisting to database " + result.getCdrId() + " - "
                                    + result.getCdrStatusType() + " ::: " + target.getLastFocusedElementId());
                            ofy().save().entity(result).now();
                            getList().remove(result);
                        }
                    }
                    target.add(divList);
                }

            };

            btnReject.add(AttributeModifier.append("class", btnStyle));

            btnReject.add(new AttributeModifier("cdrStatusType", cdr) {
                protected String newValue(final String currentValue, final String replacementValue) {
                    System.out.println("######## New Value Reject Button:" + replacementValue + " old value "
                            + currentValue);
                    return currentValue + replacementValue;
                }

            });

            form.add(btnReject);
            listItem.add(form);

        }
    };
    list.setOutputMarkupId(true);
    list.setOutputMarkupPlaceholderTag(true);
    divList.setOutputMarkupId(true);
    divList.setOutputMarkupPlaceholderTag(true);
    divList.add(list);

    add(divList);

}

From source file:com.tysanclan.site.projectewok.pages.member.admin.PaymentRequestApprovalPage.java

License:Open Source License

public PaymentRequestApprovalPage() {
    super("Payment requests");

    if (!getUser().equals(roleService.getTreasurer())) {
        throw new RestartResponseAtInterceptPageException(AccessDeniedPage.class);
    }//from  ww w .j  a v  a 2  s . c  o m

    add(new ListView<PaymentRequest>("requests", ModelMaker.wrap(requestDAO.findAll())) {
        private static final long serialVersionUID = 1L;

        @Override
        protected void populateItem(ListItem<PaymentRequest> item) {
            PaymentRequest request = item.getModelObject();

            item.add(new Label("header", request.getItem()));
            item.add(new MemberListItem("requester", request.getRequester()));
            item.add(new Label("amount", new DollarSignModel(new Model<BigDecimal>(request.getAmount()))));

            item.add(new Label("desc", request.getItem()));

            item.add(new HiddenField<String>("paypalAddress",
                    new Model<String>(request.getRequester().getPaypalAddress()))
                            .add(AttributeModifier.replace("name", "business")));
            item.add(new HiddenField<String>("itemname", new Model<String>(request.getItem())));

            item.add(new HiddenField<String>("itemdesc",
                    new Model<String>("The Tysan Clan - " + request.getItem()))
                            .add(AttributeModifier.replace("name", "item_name"))); //
            item.add(new HiddenField<String>("amount2", new Model<String>(request.getAmount().toString()))
                    .add(AttributeModifier.replace("name", "amount")));
            item.add(new HiddenField<String>("returnUrl",
                    new Model<String>("https://www.tysanclan.com/processPaymentRequest/" + request.getId() + "/"
                            + requestDAO.getConfirmationKey(request) + "/"))
                                    .add(AttributeModifier.replace("name", "return")));
        }
    });
}

From source file:com.tysanclan.site.projectewok.pages.member.FinancePage.java

License:Open Source License

/**
 * /*from  www . ja  v  a2  s  .c  o  m*/
 */
public FinancePage() {
    super("Clan Finances");

    // Charts:
    // - cash flow
    // - annual expense breakdown
    // - cash reserves
    // - reserve expiration date
    // - donations
    // - contribution
    // - subscriptions
    List<Expense> expenses = expenseDAO.findAll();
    List<Expense> filtered = new LinkedList<Expense>();

    BigDecimal sum = new BigDecimal(0).setScale(2);

    DateTime now = new DateTime();
    DateTime oneMonthAgo = now.minusMonths(1);
    DateTime oneYearAgo = now.minusYears(1);
    DateTime year1997 = new DateTime(1997, 1, 1, 12, 0, 0, 0);

    for (Expense expense : expenses) {
        if (expense.getEnd() == null || expense.getEnd().after(now.toDate())) {
            switch (expense.getPeriod()) {
            case MONTHLY:
                sum = sum.add(expense.getAmount().multiply(factor12));
                break;
            case QUARTERLY:
                sum = sum.add(expense.getAmount().multiply(factor4));
                break;
            case SEMIANNUALLY:
                sum = sum.add(expense.getAmount().multiply(factor2));
                break;
            case ANNUALLY:
                sum = sum.add(expense.getAmount());
                break;
            case BIANNUALLY:
                sum = sum.add(expense.getAmount().divide(factor2, RoundingMode.HALF_UP));
                break;
            }

            filtered.add(expense);
        }
    }

    add(new ListView<Expense>("expenses", ModelMaker.wrap(filtered)) {
        private static final long serialVersionUID = 1L;

        /**
         * @see org.apache.wicket.markup.html.list.ListView#populateItem(org.apache.wicket.markup.html.list.ListItem)
         */
        @Override
        protected void populateItem(ListItem<Expense> item) {
            Expense expense = item.getModelObject();

            item.add(new Label("name", expense.getName()));
            String regularity = null;
            IModel<String> yearlyExpense = null;

            boolean amountPerTermVisible = true;

            switch (expense.getPeriod()) {
            case MONTHLY:
                regularity = "Monthly";
                yearlyExpense = new DollarSignModel(
                        new Model<BigDecimal>(expense.getAmount().multiply(factor12)));
                break;
            case QUARTERLY:
                regularity = "Quarterly";
                yearlyExpense = new DollarSignModel(
                        new Model<BigDecimal>(expense.getAmount().multiply(factor4)));
                break;
            case SEMIANNUALLY:
                regularity = "Semiannually";
                yearlyExpense = new DollarSignModel(
                        new Model<BigDecimal>(expense.getAmount().multiply(factor2)));
                break;
            case BIANNUALLY:
                regularity = "Biannually";
                yearlyExpense = new DollarSignModel(
                        new Model<BigDecimal>(expense.getAmount().divide(factor2, RoundingMode.HALF_UP)));
                break;
            default:
                amountPerTermVisible = false;
                regularity = "Annually";
                yearlyExpense = new DollarSignModel(new Model<BigDecimal>(expense.getAmount()));

            }

            item.add(new Label("regularity", regularity));

            item.add(new Label("amounteach", new DollarSignModel(new Model<BigDecimal>(expense.getAmount())))
                    .setVisible(amountPerTermVisible));
            item.add(new Label("annualfee", yearlyExpense));
        }
    });

    add(new Label("annualcost", new DollarSignModel(new Model<BigDecimal>(sum))));

    FinancialTimeline timeline = new FinancialTimeline(expenseDAO, donationDAO, subscriptionDAO,
            paidExpenseDAO);

    // Finance overview charts

    addLineChart("monthlychart", "Cash flow last month", 2, timeline.getCashFlow(oneMonthAgo, now));
    addLineChart("yearlychart", "Cash flow last year", 2, timeline.getCashFlow(oneYearAgo, now));
    addLineChart("alltimechart", "Cash flow all time", 2, timeline.getCashFlow(year1997, now));
    add(GraphUtil.makePieChart("monthlyparticipation", "Participation last month",
            timeline.getParticipation(oneMonthAgo, now)));
    add(GraphUtil.makePieChart("annualparticipation", "Participation last year",
            timeline.getParticipation(oneYearAgo, now)));
    add(GraphUtil.makePieChart("alltimeparticipation", "All time participation",
            timeline.getParticipation(year1997, now)));

    add(GraphUtil.makeReservesBarChart("reserves", "Cash reserves by donator", timeline.getReservesAt(now)));

    add(new BookmarkablePageLink<CharterPage>("charter", CharterPage.class));
    add(new WebMarkupContainer("un")
            .add(AttributeModifier.replace("value", "Tysan Donation by " + getUser().getUsername())));
    User treasurer = roleService.getTreasurer();

    add(new HiddenField<String>("paypalAddress",
            new Model<String>(treasurer != null ? treasurer.getPaypalAddress() : "disable"))
                    .add(AttributeModifier.replace("name", "business")));

    add(new ActivateSubscriptionPanel("activatesubscription", getUser(), new FinancePageLink()));
    add(new ViewSubscriptionPanel("viewsubscription", getUser(), new FinancePageLink()));
}