2 * Copyright (C) 2007-2012 Argeo GmbH
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
16 package org
.argeo
.cms
.ui
.workbench
.useradmin
;
18 import java
.util
.ArrayList
;
20 import org
.argeo
.cms
.ui
.workbench
.WorkbenchUiPlugin
;
21 import org
.argeo
.node
.ArgeoLogger
;
22 import org
.eclipse
.jface
.resource
.JFaceResources
;
23 import org
.eclipse
.jface
.viewers
.LabelProvider
;
24 import org
.eclipse
.jface
.viewers
.TableViewer
;
25 import org
.eclipse
.swt
.SWT
;
26 import org
.eclipse
.swt
.graphics
.Font
;
27 import org
.eclipse
.swt
.widgets
.Composite
;
28 import org
.eclipse
.swt
.widgets
.Table
;
29 import org
.eclipse
.ui
.part
.ViewPart
;
32 * Display log lines for all users with a virtual table.
34 public class AdminLogView
extends ViewPart
{
35 public static String ID
= WorkbenchUiPlugin
.PLUGIN_ID
+ ".adminLogView";
37 private TableViewer viewer
;
39 private LogContentProvider logContentProvider
;
40 private ArgeoLogger argeoLogger
;
43 public void createPartControl(Composite parent
) {
44 // FIXME doesn't return a monospace font in RAP
45 Font font
= JFaceResources
.getTextFont();
46 Table table
= new Table(parent
, SWT
.VIRTUAL
| SWT
.MULTI
| SWT
.H_SCROLL
47 | SWT
.V_SCROLL
| SWT
.FULL_SELECTION
| SWT
.BORDER
);
50 viewer
= new TableViewer(table
);
51 viewer
.setLabelProvider(new LabelProvider());
52 logContentProvider
= new LogContentProvider(viewer
) {
53 private static final long serialVersionUID
= -3401776448301180724L;
56 protected StringBuffer
prefix(String username
, Long timestamp
,
57 String level
, String category
, String thread
) {
59 .prefix(username
, timestamp
, level
, category
, thread
)
60 .append(norm(level
, 5))
62 .append(norm(username
!= null ? username
63 : "<anonymous>", 16)).append(' ');
66 viewer
.setContentProvider(logContentProvider
);
67 // viewer.setUseHashlookup(true);
68 viewer
.setInput(new ArrayList
<String
>());
70 if (argeoLogger
!= null)
71 argeoLogger
.registerForAll(logContentProvider
, 1000, true);
75 public void setFocus() {
76 viewer
.getTable().setFocus();
80 public void dispose() {
81 if (argeoLogger
!= null)
82 argeoLogger
.unregisterForAll(logContentProvider
);
85 public void setArgeoLogger(ArgeoLogger argeoLogger
) {
86 this.argeoLogger
= argeoLogger
;