package org.eparapher.rcp.statusline; import java.util.Timer; import java.util.TimerTask; import org.eclipse.jface.action.IStatusLineManager; import org.eclipse.jface.action.StatusLineManager; import org.eclipse.swt.widgets.Display; import org.eparapher.core.tools.OODaemonManager; import org.eparapher.rcp.tools.GUIIcons; import org.eparapher.rcp.tools.StatusLineContributionItem; public class OpenOfficeStatus { private final static String ITEM_ID = "OpenOfficeStatus"; final StatusLineContributionItem oofficeStatus; boolean oostatus; long delay = 3; //Wait for 6 sec long period = 1; // and execute every 1 sec public OpenOfficeStatus(IStatusLineManager statusLine) { super(); oofficeStatus = new StatusLineContributionItem( ITEM_ID, true, 16); displayOOfficeStatus(oofficeStatus); oofficeStatus.setText("OpenOffice"); oofficeStatus.setVisible(true); statusLine.appendToGroup(StatusLineManager.MIDDLE_GROUP, oofficeStatus); oofficeStatus.setImage(GUIIcons.KO_ICON_IMAGE); oostatus = false; // Wait 6 seconds, and refresh status every 3 Seconds OpenOfficeTimerTask oostatustimer= new OpenOfficeTimerTask(); Timer timer = new Timer(true); timer.scheduleAtFixedRate(oostatustimer, delay * 1000, period * 10000); } private void displayOOfficeStatus(StatusLineContributionItem timeStatus) { boolean isrunning = OODaemonManager.getInstance().isOpenOfficeRunning(); if ( isrunning && !oostatus) { timeStatus.setToolTipText("OpenOffice started"); timeStatus.setImage(GUIIcons.OK_ICON_IMAGE); oostatus = true; } if (!isrunning && oostatus) { timeStatus.setToolTipText("OpenOffice not started"); timeStatus.setImage(GUIIcons.KO_ICON_IMAGE); oostatus = false; } } class OpenOfficeTimerTask extends TimerTask { public void run() { Display.getDefault().asyncExec( new Runnable() { public void run() { displayOOfficeStatus(oofficeStatus); } } ); } } }