View Javadoc

1   package org.eparapher.rcp.statusline;
2   
3   import java.util.Timer;
4   import java.util.TimerTask;
5   
6   import org.eclipse.jface.action.IStatusLineManager;
7   import org.eclipse.jface.action.StatusLineManager;
8   import org.eclipse.swt.widgets.Display;
9   import org.eparapher.core.tools.OODaemonManager;
10  import org.eparapher.rcp.tools.GUIIcons;
11  import org.eparapher.rcp.tools.StatusLineContributionItem;
12  
13  
14  public class OpenOfficeStatus {
15  	
16  
17  	private final static String ITEM_ID = "OpenOfficeStatus";
18  	
19  	final StatusLineContributionItem oofficeStatus;
20  	
21  	boolean oostatus;
22  	
23  	long delay = 3;  //Wait for 6 sec
24  	long period = 1; // and execute every 1 sec
25  	
26  	public OpenOfficeStatus(IStatusLineManager statusLine) {
27  
28  		super();
29  
30  		oofficeStatus = new StatusLineContributionItem( ITEM_ID, true, 16);
31  		displayOOfficeStatus(oofficeStatus);
32  		oofficeStatus.setText("OpenOffice");
33  		oofficeStatus.setVisible(true);
34  		statusLine.appendToGroup(StatusLineManager.MIDDLE_GROUP, oofficeStatus);
35  		oofficeStatus.setImage(GUIIcons.KO_ICON_IMAGE);
36  		
37  		oostatus = false;
38  
39  		// Wait 6 seconds, and refresh status every 3 Seconds
40  		OpenOfficeTimerTask oostatustimer= new OpenOfficeTimerTask();
41  		Timer timer = new Timer(true);
42  		timer.scheduleAtFixedRate(oostatustimer, delay * 1000, period * 10000);
43  	}
44  
45  	private void displayOOfficeStatus(StatusLineContributionItem timeStatus) {
46  		boolean isrunning = OODaemonManager.getInstance().isOpenOfficeRunning();
47  		if ( isrunning && !oostatus) {
48  			timeStatus.setToolTipText("OpenOffice started");
49  			timeStatus.setImage(GUIIcons.OK_ICON_IMAGE);
50  			oostatus = true;
51  		}
52  		if (!isrunning && oostatus) {
53  			timeStatus.setToolTipText("OpenOffice not started");
54  			timeStatus.setImage(GUIIcons.KO_ICON_IMAGE);
55  			oostatus = false;
56  		}
57  	}
58  		
59  	class OpenOfficeTimerTask extends TimerTask {
60  
61  		public void run() {
62  		    Display.getDefault().asyncExec(
63  		   		new Runnable() {
64  		   			public void run() {
65  		   				displayOOfficeStatus(oofficeStatus);
66  		   			}
67  		   		}
68  		   	);
69  		}
70  		
71  	}
72  	
73  	
74  }