1 package org.eparapher.rcp.statusline;
2
3 import java.util.Timer;
4 import java.util.TimerTask;
5
6 import org.apache.log4j.Logger;
7 import org.eclipse.jface.action.IStatusLineManager;
8 import org.eclipse.jface.action.StatusLineManager;
9 import org.eclipse.swt.widgets.Display;
10 import org.eparapher.core.crypto.EPKeystoreManager;
11 import org.eparapher.core.crypto.keystore.HardwareKeyStore;
12 import org.eparapher.core.crypto.keystore.IUserKeystore;
13 import org.eparapher.rcp.tools.GUIIcons;
14 import org.eparapher.rcp.tools.StatusLineContributionItem;
15
16
17 public class TokenStatus {
18
19 private static Logger log = Logger.getLogger(TokenStatus.class);
20
21 private final static String ITEM_ID = "TokenStatus";
22
23 final StatusLineContributionItem tokenStatus;
24
25 boolean tokenstatus;
26
27 long delay = 6;
28 long period = 1;
29
30 public TokenStatus(IStatusLineManager statusLine) {
31
32 super();
33
34 tokenStatus = new StatusLineContributionItem( ITEM_ID, true, 21);
35 displayTokenStatus(tokenStatus);
36 tokenStatus.setText("PKCS#11 Token");
37 tokenStatus.setVisible(true);
38 statusLine.appendToGroup(StatusLineManager.END_GROUP, tokenStatus);
39 tokenStatus.setImage(GUIIcons.WARN_ICON_IMAGE);
40
41 tokenstatus = false;
42
43
44 Timer timer = new Timer(true);
45 TokenTimerTask tokentimer= new TokenTimerTask();
46 timer.scheduleAtFixedRate(tokentimer, delay * 1000, period * 1000);
47 }
48
49 private void displayTokenStatus(StatusLineContributionItem mtokenStatus) {
50 if (EPKeystoreManager.isPKCS11Used()) {
51
52 IUserKeystore myuserkeystore = EPKeystoreManager.getInstance().getUserkeystore();
53 if (myuserkeystore instanceof HardwareKeyStore) {
54 HardwareKeyStore usertoken = (HardwareKeyStore) myuserkeystore;
55 mtokenStatus.setVisible(true);
56 if (usertoken.isKeystoreLoaded() && !tokenstatus) {
57 mtokenStatus.setToolTipText("Token loaded");
58 mtokenStatus.setImage(GUIIcons.OK_ICON_IMAGE);
59 tokenstatus = true;
60 }
61 if (!usertoken.isKeystoreLoaded() && tokenstatus) {
62 mtokenStatus.setToolTipText("Token is removed");
63 mtokenStatus.setImage(GUIIcons.KO_ICON_IMAGE);
64 tokenstatus = false;
65 }
66 } else
67 log.error("Problem : PKCS11 configured but HardwareKeyStore not loaded");
68 } else {
69 if (tokenstatus) {
70 mtokenStatus.setVisible(false);
71 mtokenStatus.setToolTipText("Token not used");
72 mtokenStatus.setImage(GUIIcons.WARN_ICON_IMAGE);
73 tokenstatus = false;
74 }
75 }
76 }
77
78 class TokenTimerTask extends TimerTask {
79
80 public void run() {
81 Display.getDefault().asyncExec(
82 new Runnable() {
83 public void run() {
84 displayTokenStatus(tokenStatus);
85 }
86 }
87 );
88 }
89
90 }
91
92 }