KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > mountainminds > eclemma > internal > ui > coverageview > CoverageViewSorter


1 /*******************************************************************************
2  * Copyright (c) 2006 Mountainminds GmbH & Co. KG
3  * This software is provided under the terms of the Eclipse Public License v1.0
4  * See http://www.eclipse.org/legal/epl-v10.html.
5  *
6  * $Id: CoverageViewSorter.java 12 2006-08-28 20:07:13Z mho $
7  ******************************************************************************/

8 package com.mountainminds.eclemma.internal.ui.coverageview;
9
10 import org.eclipse.jdt.ui.JavaElementSorter;
11 import org.eclipse.jface.viewers.Viewer;
12 import org.eclipse.jface.viewers.ViewerSorter;
13 import org.eclipse.swt.events.SelectionEvent;
14 import org.eclipse.swt.events.SelectionListener;
15 import org.eclipse.swt.widgets.TreeColumn;
16
17 import com.mountainminds.eclemma.core.CoverageTools;
18 import com.mountainminds.eclemma.core.analysis.ICounter;
19 import com.mountainminds.eclemma.internal.ui.coverageview.ViewSettings.ICounterMode;
20
21 /**
22  * Internal sorter for the coverage view.
23  *
24  * @author Marc R. Hoffmann
25  * @version $Revision: 12 $
26  */

27 class CoverageViewSorter extends ViewerSorter {
28
29   private final ViewSettings settings;
30   private final CoverageView view;
31   private final ViewerSorter elementsorter = new JavaElementSorter();
32     
33   public CoverageViewSorter(ViewSettings settings, CoverageView view) {
34     this.settings = settings;
35     this.view = view;
36   }
37   
38   void addColumn(TreeColumn column, final int columnidx) {
39     column.addSelectionListener(new SelectionListener() {
40       public void widgetSelected(SelectionEvent e) {
41         settings.toggleSortColumn(columnidx);
42         view.refreshViewer();
43       }
44       public void widgetDefaultSelected(SelectionEvent e) { }
45     });
46   }
47   
48   public int compare(Viewer viewer, Object JavaDoc e1, Object JavaDoc e2) {
49     ICounterMode mode = settings.getCounterMode();
50     ICounter c1 = mode.getCounter(CoverageTools.getCoverageInfo(e1));
51     ICounter c2 = mode.getCounter(CoverageTools.getCoverageInfo(e2));
52     int res = 0;
53     switch (settings.getSortColumn()) {
54       case CoverageView.COLUMN_ELEMENT:
55         res = elementsorter.compare(viewer, e1, e2);
56         break;
57       case CoverageView.COLUMN_RATIO:
58         res = Double.compare(c1.getRatio(), c2.getRatio());
59         break;
60       case CoverageView.COLUMN_COVERED:
61         res = (int) (c1.getCoveredCount() - c2.getCoveredCount());
62         break;
63       case CoverageView.COLUMN_TOTAL:
64         res = (int) (c1.getTotalCount() - c2.getTotalCount());
65         break;
66     }
67     if (res == 0) {
68       res = elementsorter.compare(viewer, e1, e2);
69     } else {
70       res = settings.isReverseSort() ? -res : res;
71     }
72     return res;
73   }
74  
75 }
76
Popular Tags