All Downloads are FREE. Search and download functionalities are using the official Maven repository.

uk.co.crystalmark.wicket.components.BootstrapTimePickerPanel Maven / Gradle / Ivy

The newest version!
package uk.co.crystalmark.wicket.components;

import org.apache.wicket.Component;
import org.apache.wicket.behavior.Behavior;
import org.apache.wicket.markup.head.CssHeaderItem;
import org.apache.wicket.markup.head.IHeaderResponse;
import org.apache.wicket.markup.head.JavaScriptHeaderItem;
import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
import org.apache.wicket.markup.html.IHeaderContributor;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.request.resource.CssResourceReference;
import org.apache.wicket.request.resource.JavaScriptResourceReference;

public class BootstrapTimePickerPanel extends Panel implements IHeaderContributor {
    private static final long serialVersionUID = 1L;

    public BootstrapTimePickerPanel(final String id, final IModel hourModel, final IModel minuteModel) {
        super(id, hourModel);

        final IModel timeModel = new IModel() {
            private static final long serialVersionUID = 1L;

            private String time;

            @Override
            public void detach() {
                time = null;
            }

            @Override
            public String getObject() {
                if (time == null) {
                    setTime();
                }
                return time;
            }

            private void setTime() {
                time = String.format("%02d", hourModel.getObject()) + ":" + String.format("%02d", minuteModel.getObject());
            }

            @Override
            public void setObject(final String time) {
                String[] hourmin = time.split(":");
                hourModel.setObject(Integer.parseInt(hourmin[0]));
                minuteModel.setObject(Integer.parseInt(hourmin[1]));
            }
        };

        final WebMarkupContainer timepicker = new WebMarkupContainer("timepicker");
        add(timepicker);

        timepicker.add(new TextField("time", timeModel));

        timepicker.add(new Behavior() {
            private static final long serialVersionUID = 1L;

            @Override
            public void renderHead(final Component component, final IHeaderResponse response) {
                response.render(OnDomReadyHeaderItem.forScript("    $('#" + timepicker.getMarkupId() + "').datetimepicker({\n" + "      pickDate: false\n" + "    });"));
            }

        });
    }

    @Override
    public void renderHead(final IHeaderResponse response) {

        response.render(CssHeaderItem.forReference(new CssResourceReference(BootstrapTimePickerPanel.class, "css/bootstrap-timepicker.css")));
        response.render(JavaScriptHeaderItem.forReference(new JavaScriptResourceReference(BootstrapTimePickerPanel.class, "js/bootstrap-timepicker.js")));
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy