cz.zcu.kiv.eegdatabase.wui.ui.licenses.components.ViewLicensePanel.java Source code

Java tutorial

Introduction

Here is the source code for cz.zcu.kiv.eegdatabase.wui.ui.licenses.components.ViewLicensePanel.java

Source

package cz.zcu.kiv.eegdatabase.wui.ui.licenses.components;

import cz.zcu.kiv.eegdatabase.wui.components.utils.ResourceUtils;

import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.form.AjaxButton;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.basic.MultiLineLabel;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.link.ExternalLink;
import org.apache.wicket.markup.html.link.ResourceLink;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.CompoundPropertyModel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.request.resource.ByteArrayResource;
import org.apache.wicket.spring.injection.annot.SpringBean;

import cz.zcu.kiv.eegdatabase.data.pojo.License;
import cz.zcu.kiv.eegdatabase.wui.core.license.LicenseFacade;

public class ViewLicensePanel extends Panel {

    private static final long serialVersionUID = 1794869820176582709L;

    @SpringBean
    private LicenseFacade facade;
    private IModel<License> model;

    private ExternalLink licenseLink;
    private ResourceLink<Void> downloadLink;
    private Form<Void> form;
    private AjaxButton button;

    public ViewLicensePanel(String id, final IModel<License> model, boolean showRemoveButton) {
        super(id, new CompoundPropertyModel<License>(model));
        this.model = model;

        add(new Label("title"));
        add(new Label("licenseType"));
        add(new MultiLineLabel("description"));

        IModel<String> link = new PropertyModel<String>(model, "link");
        licenseLink = new ExternalLink("link", link, link);
        add(licenseLink);

        add(new Label("attachmentFileName"));
        boolean isContent = model.getObject() != null && model.getObject().getAttachmentFileName() != null;
        ByteArrayResource res;
        if (isContent) {
            res = new ByteArrayResource("", facade.getLicenseAttachmentContent(model.getObject().getLicenseId()),
                    model.getObject().getAttachmentFileName());
        } else {
            res = new ByteArrayResource("");
        }
        downloadLink = new ResourceLink<Void>("download", res);
        downloadLink.setVisible(isContent);
        add(downloadLink);

        this.form = new Form<Void>("form");
        add(form);
        button = new AjaxButton("removeButton", ResourceUtils.getModel("button.remove")) {
            @Override
            protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
                onRemoveAction(model, target, form);
            }

            @Override
            protected void onConfigure() {
                super.onConfigure();
                this.setVisible(true);
            }
        };
        button.setVisibilityAllowed(showRemoveButton);
        form.add(button);

    }

    @SuppressWarnings("unchecked")
    @Override
    protected void onConfigure() {
        super.onConfigure();

        licenseLink.setVisible(model.getObject() != null && model.getObject().getLink() != null);

        boolean isContent = model.getObject() != null && model.getObject().getAttachmentFileName() != null;
        ByteArrayResource res;
        if (isContent) {
            res = new ByteArrayResource("", facade.getLicenseAttachmentContent(model.getObject().getLicenseId()),
                    model.getObject().getAttachmentFileName());
        } else {
            res = new ByteArrayResource("");
        }

        ResourceLink<Void> newLink = new ResourceLink<Void>("download", res);
        downloadLink = (ResourceLink<Void>) downloadLink.replaceWith(newLink);
        downloadLink.setVisible(isContent);
    }

    protected void onRemoveAction(IModel<License> model, AjaxRequestTarget target, Form<?> form) {
    }

}