package com.github.fabeclipse.timetrim; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Timer; import java.util.TimerTask; import org.eclipse.nebula.widgets.calendarcombo.CalendarCombo; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.DateTime; import org.eclipse.swt.widgets.ToolBar; import org.eclipse.swt.widgets.ToolItem; import org.eclipse.ui.menus.WorkbenchWindowControlContribution; public class TimeToolWorkbenchWindowControl extends WorkbenchWindowControlContribution { private final DateFormat df = new SimpleDateFormat("HH:mm"); private final DateFormat ttdf = new SimpleDateFormat("yyyy:MM:dd 'week' w"); public TimeToolWorkbenchWindowControl() { } public TimeToolWorkbenchWindowControl(String id) { super(id); } @Override protected Control createControl(Composite parent) { // final ToolItem item = new ToolItem((ToolBar) parent, SWT.DROP_DOWN); final Button item = new Button(parent, SWT.ARROW | SWT.FLAT); // item.setText(df.format(new Date())); // final DateTime item = new DateTime(parent, SWT.TIME); // final DateTime item = new DateTime(parent, SWT.TIME); // final CalendarCombo item = new CalendarCombo(parent, SWT.READ_ONLY | SWT.FLAT); // item.setDate(new Date()); Timer timeUpdater = new Timer(); TimerTask task = new TimerTask() { private String shown = ""; private String ttShown = ""; @Override public void run() { // if widget is disposed, cancel the timer if (item.isDisposed()) { this.cancel(); return; } Date date = new Date(); final String dateToShow = df.format(date); if (!shown.equals(dateToShow)) { shown = dateToShow; item.getDisplay().asyncExec(new Runnable() { @Override public void run() { if(!item.isDisposed()) // item.setText(dateToShow); ; } }); } final String ttDateToShow = ttdf.format(date); if (!ttShown.equals(ttDateToShow)) { ttShown = ttDateToShow; item.getDisplay().asyncExec(new Runnable() { @Override public void run() { if(!item.isDisposed()) item.setToolTipText(ttDateToShow); } }); } } }; timeUpdater.scheduleAtFixedRate(task, 1000, 1000); return item; } }