Project

General

Profile

Download (3.34 KB) Statistics
| Branch: | Tag: | Revision:
1
/*******************************************************************************
2
 * Copyright (c) 2000, 2007 IBM Corporation and others.
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
6
 * http://www.eclipse.org/legal/epl-v10.html
7
 *
8
 * Contributors:
9
 *     IBM Corporation - initial API and implementation
10
 *******************************************************************************/
11
package org.eclipse.pde.internal.runtime.logview;
12

    
13
import java.text.DateFormat;
14
import java.text.SimpleDateFormat;
15
import java.util.ArrayList;
16

    
17
import org.eclipse.core.runtime.IStatus;
18
import org.eclipse.jface.viewers.ITableLabelProvider;
19
import org.eclipse.jface.viewers.LabelProvider;
20
import org.eclipse.pde.internal.runtime.PDERuntimeMessages;
21
import org.eclipse.pde.internal.runtime.PDERuntimePluginImages;
22
import org.eclipse.swt.graphics.Image;
23

    
24
public class LogViewLabelProvider
25
	extends LabelProvider
26
	implements ITableLabelProvider {
27
	
28
	private static int MAX_LABEL_LENGTH = 200;
29
	
30
	private Image infoImage;
31
	private Image okImage;
32
	private Image errorImage;
33
	private Image warningImage;
34
	private Image errorWithStackImage;
35
	ArrayList consumers = new ArrayList();
36

    
37
	public LogViewLabelProvider() {
38
		errorImage = PDERuntimePluginImages.DESC_ERROR_ST_OBJ.createImage();
39
		warningImage = PDERuntimePluginImages.DESC_WARNING_ST_OBJ.createImage();
40
		infoImage = PDERuntimePluginImages.DESC_INFO_ST_OBJ.createImage();
41
		okImage = PDERuntimePluginImages.DESC_OK_ST_OBJ.createImage();
42
		errorWithStackImage = PDERuntimePluginImages.DESC_ERROR_STACK_OBJ.createImage();
43
	}
44
	public void dispose() {
45
		if (consumers.size() == 0){
46
//			errorImage.dispose();
47
//			infoImage.dispose();
48
//			okImage.dispose();
49
//			warningImage.dispose();
50
//			errorWithStackImage.dispose();
51
			super.dispose();
52
		}
53
	}
54
	public Image getColumnImage(Object element, int columnIndex) {
55
		LogEntry entry = (LogEntry) element;
56
		if (columnIndex == 0) {
57
			switch (entry.getSeverity()) {
58
				case IStatus.INFO :
59
					return infoImage;
60
				case IStatus.OK :
61
					return okImage;
62
				case IStatus.WARNING :
63
					return warningImage;
64
				default :
65
					return (entry.getStack() == null ? errorImage : errorWithStackImage);
66
			}
67
		}
68
		return null;
69
	}
70
	
71
	public String getColumnText(Object element, int columnIndex) {
72
		LogEntry entry = (LogEntry) element;
73
		switch (columnIndex) {
74
		case 0:
75
			if (entry.getMessage() != null) {
76
				String message = entry.getMessage();
77
				if (message.length() > MAX_LABEL_LENGTH) {
78
					String warning = PDERuntimeMessages.get().LogViewLabelProvider_truncatedMessage;
79
					StringBuffer sb = new StringBuffer(message.substring(0, MAX_LABEL_LENGTH - warning.length()));
80
					sb.append(warning);
81
					return sb.toString();
82
				}
83
				return entry.getMessage();
84
			}
85
		case 1:
86
			if (entry.getPluginId() != null)
87
				return entry.getPluginId();
88
		case 2:
89
			if (entry.getDate() != null) {
90
				DateFormat formatter = new SimpleDateFormat(LogEntry.F_DATE_FORMAT);
91
				return formatter.format(entry.getDate());
92
			}
93
		}
94
		return ""; //$NON-NLS-1$
95
	}
96

    
97
	public void connect(Object consumer) {
98
		if (!consumers.contains(consumer))
99
			consumers.add(consumer);
100
	}
101
	
102
	public void disconnect(Object consumer) {
103
		consumers.remove(consumer);
104
		if (consumers.size() == 0) {
105
			dispose();
106
		}
107
	}
108
}
(9-9/12)