de.alpharogroup.wicket.components.examples.notifications.NotificationExamplesPanel.java Source code

Java tutorial

Introduction

Here is the source code for de.alpharogroup.wicket.components.examples.notifications.NotificationExamplesPanel.java

Source

/**
 * Copyright (C) 2010 Asterios Raptis
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *         http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package de.alpharogroup.wicket.components.examples.notifications;

import org.apache.wicket.Application;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.behavior.AttributeAppender;
import org.apache.wicket.extensions.ajax.markup.html.IndicatingAjaxButton;
import org.apache.wicket.markup.head.IHeaderResponse;
import org.apache.wicket.markup.head.JavaScriptHeaderItem;
import org.apache.wicket.markup.html.form.Button;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;

import de.alpharogroup.resourcebundle.locale.ResourceBundleKey;
import de.alpharogroup.wicket.base.util.resource.ResourceModelFactory;
import de.alpharogroup.wicket.components.buttons.ButtonPanel;
import de.alpharogroup.wicket.js.addon.pnotify.PnotifyJsGenerator;
import de.alpharogroup.wicket.js.addon.pnotify.PnotifyJsReference;
import de.alpharogroup.wicket.js.addon.pnotify.PnotifySettings;
import de.alpharogroup.wicket.js.addon.toastr.Position;
import de.alpharogroup.wicket.js.addon.toastr.ToastJsGenerator;
import de.alpharogroup.wicket.js.addon.toastr.ToastrResourceReference;
import de.alpharogroup.wicket.js.addon.toastr.ToastrSettings;

public class NotificationExamplesPanel extends Panel {

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

    public NotificationExamplesPanel(final String id, final IModel<?> model) {
        super(id, model);
        final IModel<String> labelModel = ResourceModelFactory.newResourceModel(
                ResourceBundleKey.builder().key("button.toastr.label").defaultValue("Show toastr notice.").build(),
                this);
        final Form<Object> form = new Form<Object>("form");
        add(form);
        form.add(new ButtonPanel("toastrButtonPanel", labelModel, form) {

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

            @Override
            protected Button newButton(final String id) {
                final IndicatingAjaxButton indicatingAjaxButton = new IndicatingAjaxButton(id, getForm()) {
                    /**
                     * The serialVersionUID.
                     */
                    private static final long serialVersionUID = 1L;

                    @Override
                    protected void onError(final AjaxRequestTarget target, final Form<?> form) {
                    }

                    @Override
                    protected void onSubmit(final AjaxRequestTarget target, final Form<?> form) {
                        target.add(form);
                        final ToastJsGenerator jsGenerator = new ToastJsGenerator();

                        final ToastrSettings settings = jsGenerator.getSettings();
                        settings.getPositionClass().setValue(Position.TOP_RIGHT);
                        settings.getNotificationContent().setValue("This is a notification");
                        final String js = jsGenerator.generateJs();
                        target.prependJavaScript(js);
                    }
                };
                indicatingAjaxButton.add(new AttributeAppender("class", Model.of(" btn btn-primary")));
                return indicatingAjaxButton;
            }
        });
        final IModel<String> pnotifyLabelModel = ResourceModelFactory.newResourceModel(
                ResourceBundleKey.builder().key("button.label").defaultValue("Show pnotify notice.").build(), this);
        form.add(new ButtonPanel("pnotifyButtonPanel", pnotifyLabelModel, form) {

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

            @Override
            protected Button newButton(final String id) {
                final IndicatingAjaxButton indicatingAjaxButton = new IndicatingAjaxButton(id, getForm()) {
                    /**
                     * The serialVersionUID.
                     */
                    private static final long serialVersionUID = 1L;

                    @Override
                    protected void onError(final AjaxRequestTarget target, final Form<?> form) {
                    }

                    @Override
                    protected void onSubmit(final AjaxRequestTarget target, final Form<?> form) {
                        target.add(form);
                        final PnotifySettings pnotifySettings = PnotifySettings.builder().build();
                        pnotifySettings.getTitle().setValue("Test title");
                        pnotifySettings.getText().setValue("a text");
                        final PnotifyJsGenerator pnotifyJsGenerator = new PnotifyJsGenerator(pnotifySettings);
                        final String js = pnotifyJsGenerator.generateJs();
                        target.prependJavaScript(js);
                    }
                };
                indicatingAjaxButton.add(new AttributeAppender("class", Model.of(" btn btn-primary")));
                return indicatingAjaxButton;
            }
        });
    }

    @Override
    public void renderHead(final IHeaderResponse response) {
        super.renderHead(response);
        response.render(JavaScriptHeaderItem
                .forReference(Application.get().getJavaScriptLibrarySettings().getJQueryReference()));
        response.render(JavaScriptHeaderItem.forReference(ToastrResourceReference.INSTANCE));
        response.render(JavaScriptHeaderItem.forReference(PnotifyJsReference.INSTANCE));
    }

}