// ============================================================================ // // Copyright (C) 2006-2016 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 com.amalto.workbench.widgets; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Text; import org.eclipse.ui.forms.widgets.FormToolkit; import org.vafada.swtcalendar.SWTCalendarEvent; import org.vafada.swtcalendar.SWTCalendarListener; import com.amalto.workbench.dialogs.CalendarDialog; /** * * @author achen * */ public class CalendarSelectWidget { final SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd HH:mm:ss");//$NON-NLS-1$ Button btn; CalendarDialog calendar; private Text text; private CalendarDialog cal; public CalendarSelectWidget(FormToolkit toolkit, final Composite composite, boolean hasDefaultTime) { // from text = toolkit.createText(composite, "", SWT.BORDER);//$NON-NLS-1$ text.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, true, 1, 1)); ((GridData) text.getLayoutData()).widthHint = 100; if (hasDefaultTime) { Calendar c = Calendar.getInstance(); long yesterday = c.getTimeInMillis() - (1000 * 60 * 60 * 24); c.setTimeInMillis(yesterday); // text.setText(sdf.format(c.getTime())); text.pack(); } btn = toolkit.createButton(composite, "", SWT.CENTER | SWT.ARROW | SWT.DOWN);//$NON-NLS-1$ btn.addListener(SWT.Selection, new Listener() { public void handleEvent(Event event) { if (cal == null || (cal.getShell() != null && cal.getShell().isDisposed())) cal = new CalendarDialog(composite.getShell()); if (text.getText() != null && text.getText().length() > 0) { try { Date d = sdf.parse(text.getText()); cal.setDate(d); } catch (ParseException pe) { } } cal.addDateChangedListener(new SWTCalendarListener() { public void dateChanged(SWTCalendarEvent calendarEvent) { text.setText(sdf.format(calendarEvent.getCalendar().getTime())); } }); Point sbPoint = btn.getDisplay().map(btn.getParent(), null, btn.getLocation()); cal.create(); cal.getShell().setLocation(new Point(sbPoint.x, sbPoint.y + btn.getSize().y)); cal.open(); }; }); } public Button getBtn() { return btn; } public CalendarDialog getCalendar() { return calendar; } public Text getText() { return text; } }