]> git.argeo.org Git - lgpl/argeo-commons.git/blob - security/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/views/AdminLogView.java
Improve system execution
[lgpl/argeo-commons.git] / security / plugins / org.argeo.security.ui / src / main / java / org / argeo / security / ui / views / AdminLogView.java
1 package org.argeo.security.ui.views;
2
3 import java.util.ArrayList;
4
5 import org.argeo.security.log4j.SecureLogger;
6 import org.argeo.security.ui.SecurityUiPlugin;
7 import org.eclipse.jface.resource.JFaceResources;
8 import org.eclipse.jface.viewers.LabelProvider;
9 import org.eclipse.jface.viewers.TableViewer;
10 import org.eclipse.swt.SWT;
11 import org.eclipse.swt.graphics.Font;
12 import org.eclipse.swt.widgets.Composite;
13 import org.eclipse.swt.widgets.Display;
14 import org.eclipse.swt.widgets.Table;
15 import org.eclipse.ui.part.ViewPart;
16
17 /**
18 * Display log lines for all users with a virtual table.
19 */
20 public class AdminLogView extends ViewPart {
21 public static String ID = SecurityUiPlugin.PLUGIN_ID + ".adminLogView";
22
23 private TableViewer viewer;
24
25 private LogContentProvider logContentProvider;
26 private SecureLogger argeoLogger;
27
28 @Override
29 public void createPartControl(Composite parent) {
30 // FIXME doesn't return a monospace font in RAP
31 Font font = JFaceResources.getTextFontDescriptor().setHeight(8)
32 .createFont(Display.getCurrent());
33 Table table = new Table(parent, SWT.VIRTUAL | SWT.MULTI | SWT.H_SCROLL
34 | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER);
35 table.setFont(font);
36
37 viewer = new TableViewer(table);
38 viewer.setLabelProvider(new LabelProvider());
39 logContentProvider = new LogContentProvider(viewer) {
40
41 @Override
42 protected StringBuffer prefix(String username, Long timestamp,
43 String level, String category, String thread) {
44 return super
45 .prefix(username, timestamp, level, category, thread)
46 .append(norm(level, 5))
47 .append(' ')
48 .append(norm(username != null ? username
49 : "<anonymous>", 16)).append(' ');
50 }
51 };
52 viewer.setContentProvider(logContentProvider);
53 // viewer.setUseHashlookup(true);
54 viewer.setInput(new ArrayList<String>());
55
56 if (argeoLogger != null)
57 argeoLogger.registerForAll(logContentProvider, 1000, true);
58 }
59
60 @Override
61 public void setFocus() {
62 viewer.getTable().setFocus();
63 }
64
65 @Override
66 public void dispose() {
67 if (argeoLogger != null)
68 argeoLogger.unregisterForAll(logContentProvider);
69 }
70
71 public void setArgeoLogger(SecureLogger argeoLogger) {
72 this.argeoLogger = argeoLogger;
73 }
74
75 }