/*!
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License, version 2.1 as published by the Free Software
* Foundation.
*
* You should have received a copy of the GNU Lesser General Public License along with this
* program; if not, you can obtain a copy at http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html
* or from the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
* 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 Lesser General Public License for more details.
*
* Copyright (c) 2002-2017 Pentaho Corporation.. All rights reserved.
*/
package org.pentaho.mantle.client.dialogs.scheduling;
import org.pentaho.gwt.widgets.client.controls.DatePickerEx;
import org.pentaho.gwt.widgets.client.controls.TimePicker;
import org.pentaho.gwt.widgets.client.dialogs.MessageDialogBox;
import org.pentaho.gwt.widgets.client.ui.ICallback;
import org.pentaho.gwt.widgets.client.ui.IChangeHandler;
import org.pentaho.gwt.widgets.client.utils.TimeUtil;
import org.pentaho.mantle.client.messages.Messages;
import java.util.Date;
import com.google.gwt.i18n.client.DateTimeFormat;
import com.google.gwt.i18n.client.DateTimeFormat.PredefinedFormat;
import com.google.gwt.user.client.ui.CaptionPanel;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.datepicker.client.DateBox.DefaultFormat;
/**
* @author Steven Barkdull
*/
public class RunOnceEditor extends VerticalPanel implements IChangeHandler {
private static final String SCHEDULER_CAPTION_PANEL = "schedule-editor-caption-panel"; //$NON-NLS-1$
private static final String SCHEDULE_START_DATE_INPUT = "schedule-start-date-input";
protected TimePicker startTimePicker = null;
private DefaultFormat format = new DefaultFormat( DateTimeFormat.getFormat( PredefinedFormat.DATE_SHORT ) );
protected DatePickerEx startDatePicker = new DatePickerEx( format );
private ICallback<IChangeHandler> onChangeHandler = null;
private final MessageDialogBox errorBox =
new MessageDialogBox( Messages.getString( "error" ), "", false, false, true );
public RunOnceEditor( final TimePicker startTimePicker ) {
setWidth( "100%" ); //$NON-NLS-1$
CaptionPanel startDateCaptionPanel = new CaptionPanel( Messages.getString( "schedule.startDate" ) );
startDateCaptionPanel.setStyleName( SCHEDULER_CAPTION_PANEL );
startDateCaptionPanel.getElement().setId( SCHEDULE_START_DATE_INPUT );
startDateCaptionPanel.add( startDatePicker.getDatePicker() );
add( startDateCaptionPanel );
this.startTimePicker = startTimePicker;
configureOnChangeHandler();
}
public Date getStartDate() {
return startDatePicker.getSelectedDate();
}
public void setStartDate( Date d ) {
startDatePicker.getDatePicker().setValue( d );
}
public String getStartTime() {
return startTimePicker.getTime();
}
public void setStartTime( String strTime ) {
startTimePicker.setTime( strTime );
}
@SuppressWarnings( "deprecation" )
public void reset( Date d ) {
startTimePicker.setTimeOfDay( TimeUtil.getTimeOfDayBy0To23Hour( d.getHours() ) );
startTimePicker.setHour( TimeUtil.to12HourClock( d.getHours() ) );
startTimePicker.setMinute( d.getMinutes() );
startDatePicker.getDatePicker().setValue( d );
}
public void setOnChangeHandler( ICallback<IChangeHandler> handler ) {
this.onChangeHandler = handler;
}
private void changeHandler() {
if ( null != onChangeHandler ) {
onChangeHandler.onHandle( this );
}
}
private void configureOnChangeHandler() {
final RunOnceEditor localThis = this;
ICallback<IChangeHandler> handler = new ICallback<IChangeHandler>() {
public void onHandle( IChangeHandler o ) {
localThis.changeHandler();
}
};
startTimePicker.setOnChangeHandler( handler );
startDatePicker.setOnChangeHandler( handler );
}
}