/******************************************************************************
* Copyright (C) 2008 Low Heng Sin *
* This program is free software; you can redistribute it and/or modify it *
* under the terms version 2 of the GNU General Public License as published *
* by the Free Software Foundation. This program is distributed in the hope *
* that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
* See the GNU General Public License for more details. *
* You should have received a copy of the GNU General Public License along *
* with this program; if not, write to the Free Software Foundation, Inc., *
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
*****************************************************************************/
package org.adempiere.webui.component;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.adempiere.webui.apps.AEnv;
import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zul.Timebox;
/**
*
* @author Low Heng Sin
*
*/
public class DatetimeBox extends Panel {
/**
*
*/
private static final long serialVersionUID = -1075410511739601354L;
private Datebox dateBox;
private Timebox timeBox;
public DatetimeBox() {
dateBox = new Datebox();
timeBox = new Timebox();
appendChild(dateBox);
appendChild(timeBox);
initComponents();
}
private void initComponents() {
dateBox.setStyle("display: inline;");
timeBox.setStyle("display: inline;");
timeBox.setButtonVisible(false);
timeBox.setZclass(dateBox.getZclass());
String style = AEnv.isFirefox2() ? "display: inline" : "display: inline-block";
style = style + ";white-space:nowrap";
this.setStyle(style);
}
/**
* @param date
*/
public void setValue(Date date) {
dateBox.setValue(date);
timeBox.setValue(date);
}
/**
* @param text
*/
public void setText(String text) {
if (text != null && text.trim().length() > 0)
{
String[] s = text.split("\\s");
dateBox.setText(s[0]);
timeBox.setText(s[1]);
}
else
{
dateBox.setValue(null);
timeBox.setValue(null);
}
}
/**
* @return String
*/
public String getText() {
return dateBox.getText() + " " + timeBox.getText();
}
@Override
public boolean addEventListener(String evtnm, EventListener listener) {
return dateBox.addEventListener(evtnm, listener) && timeBox.addEventListener(evtnm, listener);
}
/**
* @return boolean
*/
public boolean isEnabled() {
return !dateBox.isReadonly();
}
/**
* @param readWrite
*/
public void setEnabled(boolean readWrite) {
dateBox.setReadonly(!readWrite);
timeBox.setReadonly(!readWrite);
dateBox.setButtonVisible(readWrite);
}
/**
* @return date
*/
public Date getValue() {
Date d = dateBox.getValue();
Date t = timeBox.getValue();
if (d != null && t != null) {
d.setHours(t.getHours());
d.setMinutes(t.getMinutes());
d.setSeconds(t.getSeconds());
}
return d;
}
/**
*
* @param dateFormat
*/
public void setDateFormat(SimpleDateFormat dateFormat) {
dateBox.setFormat(dateFormat.toPattern());
}
/**
* @return dateBox
*/
public Datebox getDatebox()
{
return dateBox;
}
/**
* @return timeBox
*/
public Timebox getTimebox()
{
return timeBox;
}
}