/*******************************************************************************
*
* The authorship of this code and the accompanying materials is held by
* medshare GmbH, Switzerland. All rights reserved.
* http://medshare.net
*
* This code and the accompanying materials are made available under
* the terms of the Eclipse Public License v1.0
*
* Year of publication: 2012
*
*******************************************************************************/
package com.hilotec.elexis.messwerte.v2.views;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.viewers.ViewerComparator;
import org.eclipse.swt.SWT;
import ch.rgw.tools.TimeTool;
import com.hilotec.elexis.messwerte.v2.data.Messung;
public class MessungenComparator extends ViewerComparator {
private int propertyIndex;
private static final int DESCENDING = 1;
private int direction = DESCENDING;
public MessungenComparator(){
this.propertyIndex = 0;
direction = DESCENDING;
}
public int getDirection(){
return direction == 1 ? SWT.DOWN : SWT.UP;
}
public void setColumn(int column){
if (column == this.propertyIndex) {
// Same column as last sort; toggle the direction
direction = 1 - direction;
} else {
// New column; do an ascending sort
this.propertyIndex = column;
direction = DESCENDING;
}
}
@Override
public int compare(Viewer viewer, Object e1, Object e2){
Messung m1 = (Messung) e1;
Messung m2 = (Messung) e2;
int rc = 0;
switch (propertyIndex) {
case 0:
TimeTool t1 = new TimeTool(m1.getDatum());
TimeTool t2 = new TimeTool(m2.getDatum());
rc = t1.compareTo(t2);
break;
default:
rc = 0;
}
// If descending order, flip the direction
if (direction == DESCENDING) {
rc = -rc;
}
return rc;
}
}