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

de.alpharogroup.wicket.behaviors.datetime.CurrentDatetimeBehavior Maven / Gradle / Ivy

The newest version!
/**
 * 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.behaviors.datetime;

import java.util.HashMap;
import java.util.Map;

import lombok.NoArgsConstructor;

import org.apache.wicket.Application;
import org.apache.wicket.Component;
import org.apache.wicket.behavior.Behavior;
import org.apache.wicket.markup.head.IHeaderResponse;
import org.apache.wicket.markup.head.JavaScriptHeaderItem;
import org.apache.wicket.markup.head.OnLoadHeaderItem;
import org.apache.wicket.request.resource.JavaScriptResourceReference;
import org.apache.wicket.request.resource.ResourceReference;
import org.apache.wicket.util.template.PackageTextTemplate;
import org.apache.wicket.util.template.TextTemplate;

/**
 * This behavior adds the current time to a component.
 */
@NoArgsConstructor
public class CurrentDatetimeBehavior extends Behavior
{

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

	/**
	 * The {@link org.apache.wicket.request.resource.ResourceReference} constant for the js-file
	 * from the jquery-datetime-plugin.
	 */
	public static final ResourceReference DATETIME_PLUGIN_REFERENCE = new JavaScriptResourceReference(
		CurrentDatetimeBehavior.class, "jquery-datetime-plugin.js");

	/** The component. */
	private Component component;

	/** The popupoverlay template. */
	private final TextTemplate datetimeTemplate = new PackageTextTemplate(
		CurrentDatetimeBehavior.class, "datetime-plugin.js.tmpl");

	/**
	 * {@inheritDoc}
	 */
	@Override
	public void bind(final Component component)
	{
		super.bind(component);
		this.component = component;
		this.component.setOutputMarkupId(true);
	}

	/**
	 * Generate js.
	 *
	 * @param textTemplate
	 *            the text template
	 * @return the string
	 */
	protected String generateJS(final TextTemplate textTemplate)
	{
		final Map variables = new HashMap<>();
		variables.put("componentId", this.component.getMarkupId());
		textTemplate.interpolate(variables);
		return textTemplate.asString();
	}

	/**
	 * {@inheritDoc}
	 */
	@Override
	public void renderHead(final Component component, final IHeaderResponse response)
	{
		super.renderHead(component, response);
		response.render(JavaScriptHeaderItem.forReference(Application.get()
			.getJavaScriptLibrarySettings().getJQueryReference()));
		response.render(JavaScriptHeaderItem
			.forReference(CurrentDatetimeBehavior.DATETIME_PLUGIN_REFERENCE));
		final String js = generateJS(datetimeTemplate);
		System.out.println(js);
		response.render(OnLoadHeaderItem.forScript(generateJS(datetimeTemplate)));
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy