// ============================================================================ // // Copyright (C) 2006-2012 Talend Inc. - www.talend.com // // This source code is available under agreement available at // %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt // // You should have received a copy of the agreement // along with this program; if not, write to Talend SA // 9 rue Pages 92150 Suresnes, France // // ============================================================================ package org.talend.core.ui.context; import java.text.FieldPosition; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import org.apache.commons.lang.StringUtils; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Shell; import org.talend.commons.ui.runtime.exception.ExceptionHandler; import org.talend.commons.ui.swt.tableviewer.celleditor.DateDialog; import org.talend.core.model.process.IContextParameter; /** * DOC chuang class global comment. Detailled comment */ public class PatternCalendarDialog extends DateDialog { private IContextParameter param; private PatternCalendar time; /** * DOC chuang PatternCalendarDialog constructor comment. * * @param parentShell * @param param */ protected PatternCalendarDialog(Shell parentShell, IContextParameter param) { super(parentShell); setShellStyle(SWT.APPLICATION_MODAL | SWT.DIALOG_TRIM); this.param = param; } @Override protected Control createDialogArea(Composite parent) { final Composite control2 = new Composite(parent, SWT.NONE); final GridLayout layout = new GridLayout(); layout.numColumns = 1; layout.marginLeft = 0; layout.horizontalSpacing = 0; layout.verticalSpacing = 0; layout.marginWidth = 0; layout.marginHeight = 0; control2.setLayout(layout); control2.setLayoutData(new GridData(GridData.FILL_BOTH)); String value = param.getValue(); String pattern = null; Calendar calendar = null; if (!StringUtils.isEmpty(value)) { int pos = value.indexOf(";"); //$NON-NLS-1$ if (pos > -1) { pattern = value.substring(0, pos); String date = value.substring(pos + 1); calendar = getCalendar(pattern, date); } else { calendar = getCalendar("yyyy-MM-dd HH:mm:ss", value); //$NON-NLS-1$ } } time = new PatternCalendar(control2, SWT.NONE, pattern, calendar); return control2; } private Calendar getCalendar(String pattern, String value) { Calendar calendar = Calendar.getInstance(); SimpleDateFormat sdf = new SimpleDateFormat(pattern); try { calendar.setTime(sdf.parse(value)); } catch (ParseException e) { ExceptionHandler.process(e); return null; } return calendar; } @Override public Date getDate() { return time.getCalendar().getTime(); } @Override public String getTalendDateString() { StringBuffer result = new StringBuffer(); String pattern = time.getPatternText(); if (pattern == null || pattern == "") { //$NON-NLS-1$ pattern = "yyyy-MM-dd HH:mm:ss"; //$NON-NLS-1$ } else if (pattern.startsWith("\"")) { //$NON-NLS-1$ // remove quotes pattern = pattern.substring(1, pattern.length() - 1); } SimpleDateFormat sdf = new SimpleDateFormat(pattern); sdf.format(getDate(), result, new FieldPosition(0)); return pattern + ";" + result.toString(); //$NON-NLS-1$ } }