Example usage for org.apache.wicket.request.resource DynamicImageResource DynamicImageResource

List of usage examples for org.apache.wicket.request.resource DynamicImageResource DynamicImageResource

Introduction

In this page you can find the example usage for org.apache.wicket.request.resource DynamicImageResource DynamicImageResource.

Prototype

public DynamicImageResource(String format) 

Source Link

Document

Creates a dynamic resource from for the given locale

Usage

From source file:com.github.cage.cage_e03_wicket.HomePage.java

License:Apache License

public HomePage() {
    super(new CompoundPropertyModel<Token>(new Token()));
    add(new WebMarkupContainer("goodResult") {
        private static final long serialVersionUID = -5279236538017405828L;

        @Override//  w  w w  .  j  ava2s. c  o m
        protected void onConfigure() {
            super.onConfigure();

            final Token token = HomePage.this.getToken();

            setVisible(token.showGoodResult);
            token.showGoodResult = false;
        }
    });
    add(new WebMarkupContainer("badResult") {
        private static final long serialVersionUID = -6479933043124566245L;

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

            final Token token = HomePage.this.getToken();

            setVisible(token.showBadResult);
            token.showBadResult = false;
        }
    });

    add(new Form<Token>("form") {
        private static final long serialVersionUID = -2783383042739263677L;

        @Override
        protected void onInitialize() {
            super.onInitialize();
            add(new RequiredTextField<String>("captcha") {
                private static final long serialVersionUID = 8416111619173955610L;

                @Override
                protected void onComponentTag(ComponentTag tag) {
                    super.onComponentTag(tag);
                    tag.put("value", "");
                };
            }.add(new StringValidator() {
                private static final long serialVersionUID = 3888825725858419028L;

                @Override
                public void validate(IValidatable<String> validatable) {
                    super.validate(validatable);
                    if (!validatable.isValid())
                        return;

                    final Token token = HomePage.this.getToken();

                    if (token.token == null || !token.token.equals(validatable.getValue())) {
                        LOGGER.error("There was no generated token, or it didn't match the user given one.");
                        validatable.error(decorate(new ValidationError(this), validatable));
                    }
                }
            }));
        }

        @Override
        protected void onSubmit() {
            super.onSubmit();
            onPost(true);
        }

        @Override
        protected void onError() {
            super.onError();
            onPost(false);
        }

        protected void onPost(boolean good) {
            final Token token = HomePage.this.getToken();

            token.showGoodResult = good;
            token.showBadResult = !good;
        }
    });

    add(new Image("captchaImage", new DynamicImageResource(cage.getFormat()) {
        private static final long serialVersionUID = -1475355045487272906L;

        @Override
        protected void configureResponse(ResourceResponse response, Attributes attributes) {
            super.configureResponse(response, attributes);
            final Token token = HomePage.this.getToken();

            LOGGER.info("Token: {}.", token);

            if (token.token == null || token.tokenUsed) {
                LOGGER.error("Requested captcha without token.");
                response.setError(HttpServletResponse.SC_NOT_FOUND, "Captcha not found.");
            }
            token.tokenUsed = true;

            response.disableCaching();
        }

        @Override
        protected byte[] getImageData(Attributes attributes) {
            final Token token = HomePage.this.getToken();

            return cage.draw(token.token);
        }
    }));
}