1 package org
.argeo
.cms
.e4
.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
.ui
.util
.CmsUiUtils
;
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 CmsUiUtils
.markup(logDisplay
);
41 Enumeration
<LogEntry
> logEntries
= (Enumeration
<LogEntry
>) logReader
.getLog();
42 while (logEntries
.hasMoreElements())
43 logDisplay
.append(printEntry(logEntries
.nextElement()));
46 private String
printEntry(LogEntry entry
) {
47 StringBuilder sb
= new StringBuilder();
48 GregorianCalendar calendar
= new GregorianCalendar(TimeZone
.getDefault());
49 calendar
.setTimeInMillis(entry
.getTime());
50 sb
.append(dateFormat
.format(calendar
.getTime())).append(' ');
51 sb
.append(entry
.getMessage());
57 public void logged(LogEntry entry
) {
58 if (display
.isDisposed())
60 display
.asyncExec(() -> {
61 if (logDisplay
.isDisposed())
63 logDisplay
.append(printEntry(entry
));
69 // public void dispose() {
71 // getService(LogReaderService.class).removeLogListener(this);