-package org.simantics.tests.modelled.ui;\r
-\r
-import java.util.HashMap;\r
-import java.util.Map;\r
-\r
-import org.eclipse.jface.viewers.TreeViewer;\r
-import org.eclipse.jface.viewers.TreeViewerColumn;\r
-import org.eclipse.jface.viewers.Viewer;\r
-import org.eclipse.jface.viewers.ViewerComparator;\r
-import org.eclipse.swt.SWT;\r
-import org.eclipse.swt.events.SelectionEvent;\r
-import org.eclipse.swt.events.SelectionListener;\r
-import org.eclipse.swt.widgets.TreeColumn;\r
-import org.simantics.scl.compiler.module.coverage.Coverage;\r
-\r
-class CoverageViewSorter extends ViewerComparator {\r
-\r
- private final TreeViewer viewer;\r
-\r
- public CoverageViewSorter(TreeViewer viewer) {\r
- this.viewer = viewer;\r
- }\r
-\r
- private Map<TreeColumn, Integer> columns = new HashMap<>();\r
- private int currentDirection;\r
- \r
- void addColumn(final TreeViewerColumn viewerColumn, final int columnidx) {\r
- final TreeColumn column = viewerColumn.getColumn();\r
- setSortColumnAndDirection(column, SWT.UP);\r
- column.addSelectionListener(new SelectionListener() {\r
-\r
- public void widgetSelected(SelectionEvent e) {\r
- TreeColumn current = column.getParent().getSortColumn();\r
- if (current.equals(column)) {\r
- int sortDirection = column.getParent().getSortDirection();\r
- setSortColumnAndDirection(column, sortDirection != SWT.DOWN ? SWT.DOWN : SWT.UP);\r
- } else {\r
- setSortColumnAndDirection(column, SWT.DOWN);\r
- }\r
- viewer.refresh();\r
- }\r
-\r
- public void widgetDefaultSelected(SelectionEvent e) {\r
- }\r
- });\r
- columns.put(column, columnidx);\r
- }\r
-\r
- private void setSortColumnAndDirection(TreeColumn sortColumn, int direction) {\r
- currentDirection = direction;\r
- sortColumn.getParent().setSortColumn(sortColumn);\r
- sortColumn.getParent().setSortDirection(direction);\r
- }\r
-\r
- \r
- @Override\r
- public int compare(Viewer viewer, Object e1, Object e2) {\r
-\r
- TreeViewer v = (TreeViewer) viewer;\r
- TreeColumn currentColumn = v.getTree().getSortColumn();\r
- \r
- int res = 0;\r
- if (e1 instanceof Coverage && e2 instanceof Coverage) {\r
- Coverage c1 = (Coverage) e1;\r
- Coverage c2 = (Coverage) e2;\r
- \r
- int indx = columns.get(currentColumn);\r
- switch (indx) {\r
- case STSTestRunnerView.COLUMN_ELEMENT:\r
- res = c1.getIdentifier().compareToIgnoreCase(c2.getIdentifier());\r
- break;\r
- case STSTestRunnerView.COLUMN_RATIO:\r
- res = Double.compare(c1.getCoverage(), c2.getCoverage());\r
- break;\r
- case STSTestRunnerView.COLUMN_COVERED:\r
- res = (int) (c1.getCoveredCodeSize() - c2.getCoveredCodeSize());\r
- break;\r
- case STSTestRunnerView.COLUMN_MISSED:\r
- res = (int) (c1.getMissedCodeSize()) - c2.getMissedCodeSize();\r
- break;\r
- case STSTestRunnerView.COLUMN_TOTAL:\r
- res = (int) (c1.getTotalCodeSize() - c2.getTotalCodeSize());\r
- break;\r
- }\r
- if (res == 0) {\r
- res = c1.getIdentifier().compareTo(c2.getIdentifier());\r
- } else {\r
- res = isReverseSort() ? -res : res;\r
- }\r
- }\r
- return res;\r
- }\r
-\r
- private boolean isReverseSort() {\r
- return currentDirection == SWT.DOWN;\r
- }\r
-}\r
+package org.simantics.tests.modelled.ui;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.viewers.TreeViewerColumn;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerComparator;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.widgets.TreeColumn;
+import org.simantics.scl.compiler.module.coverage.Coverage;
+
+class CoverageViewSorter extends ViewerComparator {
+
+ private final TreeViewer viewer;
+
+ public CoverageViewSorter(TreeViewer viewer) {
+ this.viewer = viewer;
+ }
+
+ private Map<TreeColumn, Integer> columns = new HashMap<>();
+ private int currentDirection;
+
+ void addColumn(final TreeViewerColumn viewerColumn, final int columnidx) {
+ final TreeColumn column = viewerColumn.getColumn();
+ setSortColumnAndDirection(column, SWT.UP);
+ column.addSelectionListener(new SelectionListener() {
+
+ public void widgetSelected(SelectionEvent e) {
+ TreeColumn current = column.getParent().getSortColumn();
+ if (current.equals(column)) {
+ int sortDirection = column.getParent().getSortDirection();
+ setSortColumnAndDirection(column, sortDirection != SWT.DOWN ? SWT.DOWN : SWT.UP);
+ } else {
+ setSortColumnAndDirection(column, SWT.DOWN);
+ }
+ viewer.refresh();
+ }
+
+ public void widgetDefaultSelected(SelectionEvent e) {
+ }
+ });
+ columns.put(column, columnidx);
+ }
+
+ private void setSortColumnAndDirection(TreeColumn sortColumn, int direction) {
+ currentDirection = direction;
+ sortColumn.getParent().setSortColumn(sortColumn);
+ sortColumn.getParent().setSortDirection(direction);
+ }
+
+
+ @Override
+ public int compare(Viewer viewer, Object e1, Object e2) {
+
+ TreeViewer v = (TreeViewer) viewer;
+ TreeColumn currentColumn = v.getTree().getSortColumn();
+
+ int res = 0;
+ if (e1 instanceof Coverage && e2 instanceof Coverage) {
+ Coverage c1 = (Coverage) e1;
+ Coverage c2 = (Coverage) e2;
+
+ int indx = columns.get(currentColumn);
+ switch (indx) {
+ case STSTestRunnerView.COLUMN_ELEMENT:
+ res = c1.getIdentifier().compareToIgnoreCase(c2.getIdentifier());
+ break;
+ case STSTestRunnerView.COLUMN_RATIO:
+ res = Double.compare(c1.getCoverage(), c2.getCoverage());
+ break;
+ case STSTestRunnerView.COLUMN_COVERED:
+ res = (int) (c1.getCoveredCodeSize() - c2.getCoveredCodeSize());
+ break;
+ case STSTestRunnerView.COLUMN_MISSED:
+ res = (int) (c1.getMissedCodeSize()) - c2.getMissedCodeSize();
+ break;
+ case STSTestRunnerView.COLUMN_TOTAL:
+ res = (int) (c1.getTotalCodeSize() - c2.getTotalCodeSize());
+ break;
+ }
+ if (res == 0) {
+ res = c1.getIdentifier().compareTo(c2.getIdentifier());
+ } else {
+ res = isReverseSort() ? -res : res;
+ }
+ }
+ return res;
+ }
+
+ private boolean isReverseSort() {
+ return currentDirection == SWT.DOWN;
+ }
+}