1 package org
.argeo
.cms
.maintenance
;
3 import java
.text
.DateFormat
;
4 import java
.text
.SimpleDateFormat
;
5 import java
.util
.Enumeration
;
6 import java
.util
.GregorianCalendar
;
7 import java
.util
.TimeZone
;
9 import org
.argeo
.cms
.util
.CmsUtils
;
10 import org
.eclipse
.swt
.SWT
;
11 import org
.eclipse
.swt
.layout
.GridData
;
12 import org
.eclipse
.swt
.widgets
.Composite
;
13 import org
.eclipse
.swt
.widgets
.Display
;
14 import org
.eclipse
.swt
.widgets
.Text
;
15 import org
.osgi
.service
.log
.LogEntry
;
16 import org
.osgi
.service
.log
.LogListener
;
17 import org
.osgi
.service
.log
.LogReaderService
;
19 class LogDeploymentUi
extends AbstractOsgiComposite
implements LogListener
{
20 private static final long serialVersionUID
= 590221539553514693L;
22 private DateFormat dateFormat
= new SimpleDateFormat("MMdd HH:mm");
24 private Display display
;
25 private Text logDisplay
;
27 public LogDeploymentUi(Composite parent
, int style
) {
32 protected void initUi(int style
) {
33 LogReaderService logReader
= getService(LogReaderService
.class);
34 // FIXME use server push
35 // logReader.addLogListener(this);
36 this.display
= getDisplay();
37 this.setLayoutData(new GridData(SWT
.FILL
, SWT
.FILL
, true, true));
38 logDisplay
= new Text(this, SWT
.WRAP
| SWT
.MULTI
| SWT
.READ_ONLY
);
39 logDisplay
.setLayoutData(new GridData(SWT
.FILL
, SWT
.FILL
, true, true));
40 CmsUtils
.markup(logDisplay
);
41 @SuppressWarnings("unchecked")
42 Enumeration
<LogEntry
> logEntries
= (Enumeration
<LogEntry
>) logReader
.getLog();
43 while (logEntries
.hasMoreElements())
44 logDisplay
.append(printEntry(logEntries
.nextElement()));
47 private String
printEntry(LogEntry entry
) {
48 StringBuilder sb
= new StringBuilder();
49 GregorianCalendar calendar
= new GregorianCalendar(TimeZone
.getDefault());
50 calendar
.setTimeInMillis(entry
.getTime());
51 sb
.append(dateFormat
.format(calendar
.getTime())).append(' ');
52 sb
.append(entry
.getMessage());
58 public void logged(LogEntry entry
) {
59 if (display
.isDisposed())
61 display
.asyncExec(() -> {
62 if (logDisplay
.isDisposed())
64 logDisplay
.append(printEntry(entry
));
70 // public void dispose() {
72 // getService(LogReaderService.class).removeLogListener(this);