1 /*******************************************************************************
2 * Copyright (c) 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
;
18 import java
.util
.Vector
;
20 import org
.eclipse
.jface
.viewers
.ColumnLabelProvider
;
21 import org
.eclipse
.jface
.viewers
.Viewer
;
22 import org
.eclipse
.jface
.viewers
.ViewerComparator
;
23 import org
.eclipse
.linuxtools
.tmf
.ui
.views
.statistics
.Messages
;
24 import org
.eclipse
.linuxtools
.tmf
.ui
.views
.statistics
.model
.TmfBaseColumnData
.ITmfColumnPercentageProvider
;
25 import org
.eclipse
.swt
.SWT
;
26 import org
.eclipse
.swt
.graphics
.Image
;
27 import org
.eclipse
.ui
.ISharedImages
;
28 import org
.eclipse
.ui
.PlatformUI
;
31 * Create a basic list of columns with providers
33 public class TmfBaseColumnDataProvider
implements ITmfColumnDataProvider
{
36 * Contains the list of the columns
38 private static Vector
<TmfBaseColumnData
> fColumnData
= null;
43 private final static String LEVEL_COLUMN
= Messages
.TmfStatisticsView_LevelColumn
;
45 * Number of events column names
47 private final static String EVENTS_COUNT_COLUMN
= Messages
.TmfStatisticsView_NbEventsColumn
;
50 * Level column tooltips
52 private final static String LEVEL_COLUMN_TIP
= Messages
.TmfStatisticsView_LevelColumnTip
;
54 * Number of events column tooltips
56 private final static String EVENTS_COUNT_COLUMN_TIP
= Messages
.TmfStatisticsView_NbEventsTip
;
59 * Level for which statistics should not be displayed.
61 private static 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
);
84 }, new ViewerComparator() {
86 public int compare(Viewer viewer
, Object e1
, Object e2
) {
87 TmfStatisticsTreeNode n1
= (TmfStatisticsTreeNode
) e1
;
88 TmfStatisticsTreeNode n2
= (TmfStatisticsTreeNode
) e2
;
90 return n1
.getKey().compareTo(n2
.getKey());
94 fColumnData
.add(new TmfBaseColumnData(EVENTS_COUNT_COLUMN
, 125, SWT
.LEFT
, EVENTS_COUNT_COLUMN_TIP
, new ColumnLabelProvider() {
96 public String
getText(Object element
) {
97 TmfStatisticsTreeNode node
= (TmfStatisticsTreeNode
) element
;
98 if (!fFolderLevels
.contains(node
.getKey())) {
99 return Long
.toString(node
.getValue().nbEvents
);
101 return ""; //$NON-NLS-1$
104 }, new ViewerComparator() {
106 public int compare(Viewer viewer
, Object e1
, Object e2
) {
107 TmfStatisticsTreeNode n1
= (TmfStatisticsTreeNode
) e1
;
108 TmfStatisticsTreeNode n2
= (TmfStatisticsTreeNode
) e2
;
110 return (int) (n1
.getValue().nbEvents
- n2
.getValue().nbEvents
);
112 }, new ITmfColumnPercentageProvider() {
115 public double getPercentage(TmfStatisticsTreeNode node
) {
116 TmfStatisticsTreeNode parent
= node
;
118 parent
= parent
.getParent();
119 } while (parent
!= null && parent
.getValue().nbEvents
== 0);
121 if (parent
== null) {
124 return (double) node
.getValue().nbEvents
/ parent
.getValue().nbEvents
;
131 * Provide the columns to represent statistics data
134 public Vector
<TmfBaseColumnData
> getColumnData() {