1 /*******************************************************************************
2 * Copyright (c) 2011, 2011 Ericsson
4 * All rights reserved. This program and the accompanying materials are
5 * made available under the terms of the Eclipse Public License v1.0 which
6 * accompanies this distribution, and is available at
7 * http://www.eclipse.org/legal/epl-v10.html
10 * Mathieu Denis <mathieu.denis@polymtl.ca> - Implementation and Initial API
11 *******************************************************************************/
13 package org
.eclipse
.linuxtools
.tmf
.ui
.views
.statistics
.model
;
15 import java
.util
.Arrays
;
16 import java
.util
.HashSet
;
17 import java
.util
.List
;
19 import java
.util
.Vector
;
21 import org
.eclipse
.jface
.viewers
.ColumnLabelProvider
;
22 import org
.eclipse
.jface
.viewers
.Viewer
;
23 import org
.eclipse
.jface
.viewers
.ViewerComparator
;
24 import org
.eclipse
.linuxtools
.tmf
.ui
.views
.statistics
.Messages
;
25 import org
.eclipse
.linuxtools
.tmf
.ui
.views
.statistics
.model
.TmfBaseColumnData
.ITmfColumnPercentageProvider
;
26 import org
.eclipse
.swt
.SWT
;
27 import org
.eclipse
.swt
.graphics
.Image
;
28 import org
.eclipse
.ui
.ISharedImages
;
29 import org
.eclipse
.ui
.PlatformUI
;
32 * Create a basic list of columns with providers.
35 * @author Mathieu Denis
37 public class TmfBaseColumnDataProvider
implements ITmfColumnDataProvider
{
40 * Contains the list of the columns
42 protected List
<TmfBaseColumnData
> fColumnData
= null;
46 protected final static String LEVEL_COLUMN
= Messages
.TmfStatisticsView_LevelColumn
;
48 * Number of events column names
50 protected final static String EVENTS_COUNT_COLUMN
= Messages
.TmfStatisticsView_NbEventsColumn
;
52 * Level column tooltips
54 protected final static String LEVEL_COLUMN_TIP
= Messages
.TmfStatisticsView_LevelColumnTip
;
56 * Number of events column tooltips
58 protected final static String EVENTS_COUNT_COLUMN_TIP
= Messages
.TmfStatisticsView_NbEventsTip
;
60 * Level for which statistics should not be displayed.
62 protected Set
<String
> fFolderLevels
= new HashSet
<String
>(Arrays
.asList(new String
[] { "Event Types" })); //$NON-NLS-1$
64 * Create basic columns to represent the statistics data
66 public TmfBaseColumnDataProvider() {
67 // List that will be used to create the table.
68 fColumnData
= new Vector
<TmfBaseColumnData
>();
69 fColumnData
.add(new TmfBaseColumnData(LEVEL_COLUMN
, 200, SWT
.LEFT
, LEVEL_COLUMN_TIP
, new ColumnLabelProvider() {
71 public String
getText(Object element
) {
72 return ((TmfStatisticsTreeNode
) element
).getKey();
76 public Image
getImage(Object element
) {
77 TmfStatisticsTreeNode node
= (TmfStatisticsTreeNode
) element
;
78 if (fFolderLevels
.contains(node
.getKey())) {
79 return PlatformUI
.getWorkbench().getSharedImages().getImage(ISharedImages
.IMG_OBJ_FOLDER
);
81 return PlatformUI
.getWorkbench().getSharedImages().getImage(ISharedImages
.IMG_OBJ_ELEMENT
);
83 }, new ViewerComparator() {
85 public int compare(Viewer viewer
, Object e1
, Object e2
) {
86 TmfStatisticsTreeNode n1
= (TmfStatisticsTreeNode
) e1
;
87 TmfStatisticsTreeNode n2
= (TmfStatisticsTreeNode
) e2
;
89 return n1
.getKey().compareTo(n2
.getKey());
93 fColumnData
.add(new TmfBaseColumnData(EVENTS_COUNT_COLUMN
, 125, SWT
.LEFT
, EVENTS_COUNT_COLUMN_TIP
, new ColumnLabelProvider() {
95 public String
getText(Object element
) {
96 TmfStatisticsTreeNode node
= (TmfStatisticsTreeNode
) element
;
97 if (!fFolderLevels
.contains(node
.getKey())) {
98 return Long
.toString(node
.getValue().nbEvents
);
100 return ""; //$NON-NLS-1$
102 }, new ViewerComparator() {
104 public int compare(Viewer viewer
, Object e1
, Object e2
) {
105 TmfStatisticsTreeNode n1
= (TmfStatisticsTreeNode
) e1
;
106 TmfStatisticsTreeNode n2
= (TmfStatisticsTreeNode
) e2
;
108 return (int) (n1
.getValue().nbEvents
- n2
.getValue().nbEvents
);
110 }, new ITmfColumnPercentageProvider() {
113 public double getPercentage(TmfStatisticsTreeNode node
) {
114 TmfStatisticsTreeNode parent
= node
;
116 parent
= parent
.getParent();
117 } while (parent
!= null && parent
.getValue().nbEvents
== 0);
119 if (parent
== null) {
122 return (double) node
.getValue().nbEvents
/ parent
.getValue().nbEvents
;
128 * Provide the columns to represent statistics data
131 public List
<TmfBaseColumnData
> getColumnData() {