73 lines
1.8 KiB
Java
73 lines
1.8 KiB
Java
|
package com.minres.scviewer.e4.application.parts.txTableTree;
|
||
|
|
||
|
import org.eclipse.jface.viewers.Viewer;
|
||
|
import org.eclipse.jface.viewers.ViewerComparator;
|
||
|
|
||
|
import com.minres.scviewer.database.ITxAttribute;
|
||
|
|
||
|
/**
|
||
|
* The Class TxAttributeViewerSorter.
|
||
|
*/
|
||
|
public class TxAttributeViewerSorter extends ViewerComparator {
|
||
|
|
||
|
/** The Constant ASCENDING. */
|
||
|
private static final int ASCENDING = 0;
|
||
|
|
||
|
/** The Constant DESCENDING. */
|
||
|
private static final int DESCENDING = 1;
|
||
|
|
||
|
/** The column. */
|
||
|
private int column;
|
||
|
|
||
|
/** The direction. */
|
||
|
private int direction;
|
||
|
|
||
|
/**
|
||
|
* Does the sort. If it's a different column from the previous sort, do an
|
||
|
* ascending sort. If it's the same column as the last sort, toggle the sort
|
||
|
* direction.
|
||
|
*
|
||
|
* @param column the column
|
||
|
*/
|
||
|
public void doSort(int column) {
|
||
|
if (column == this.column) {
|
||
|
// Same column as last sort; toggle the direction
|
||
|
direction = 1 - direction;
|
||
|
} else {
|
||
|
// New column; do an ascending sort
|
||
|
this.column = column;
|
||
|
direction = ASCENDING;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Compares the object for sorting.
|
||
|
*
|
||
|
* @param viewer the viewer
|
||
|
* @param e1 the e1
|
||
|
* @param e2 the e2
|
||
|
* @return the int
|
||
|
*/
|
||
|
public int compare(Viewer viewer, Object e1, Object e2) {
|
||
|
int rc = 0;
|
||
|
if(e1 instanceof ITxAttribute && e2 instanceof ITxAttribute){
|
||
|
ITxAttribute p1 = (ITxAttribute) e1;
|
||
|
ITxAttribute p2 = (ITxAttribute) e2;
|
||
|
// Determine which column and do the appropriate sort
|
||
|
switch (column) {
|
||
|
case 0:
|
||
|
rc = getComparator().compare(p1.getName(), p2.getName());
|
||
|
break;
|
||
|
case 1:
|
||
|
rc = getComparator().compare(p1.getDataType().name(), p2.getDataType().name());
|
||
|
break;
|
||
|
case 2:
|
||
|
rc = getComparator().compare(p1.getValue().toString(), p2.getValue().toString());
|
||
|
break;
|
||
|
}
|
||
|
// If descending order, flip the direction
|
||
|
if (direction == DESCENDING) rc = -rc;
|
||
|
}
|
||
|
return rc;
|
||
|
}
|
||
|
}
|