use of net.sourceforge.usbdm.peripherals.model.ClusterModel in project usbdm-eclipse-plugins by podonoghue.
the class PeripheralsViewSorter method compare.
@Override
public int compare(Viewer viewer, Object e1, Object e2) {
BaseModel element1 = (BaseModel) e1;
BaseModel element2 = (BaseModel) e2;
int diff = 0;
// Fields - sort by bitOffset then name
if (e1 instanceof FieldModel) {
diff = ((FieldModel) e2).getBitOffset() - ((FieldModel) e1).getBitOffset();
if (diff != 0) {
return diff;
}
diff = ((FieldModel) e2).getBitWidth() - ((FieldModel) e1).getBitWidth();
if (diff != 0) {
return diff;
}
diff = element1.getName().compareTo(element2.getName());
return diff;
}
// Registers sorted by address then name
if ((e1 instanceof RegisterModel) || (e1 instanceof ClusterModel)) {
if (element1.getAddress() > element2.getAddress()) {
diff = 1;
} else if (element1.getAddress() < element2.getAddress()) {
diff = -1;
} else {
diff = element1.getName().compareTo(element2.getName());
}
return diff;
}
// Sort criteria affects how peripherals are sorted only
switch(criteria) {
case PeripheralNameOrder:
// Sort by name then address (unlikely!)
diff = element1.getName().compareTo(element2.getName());
if (diff == 0) {
if (element1.getAddress() > element2.getAddress()) {
diff = 1;
} else if (element1.getAddress() < element2.getAddress()) {
diff = -1;
} else {
diff = element1.getName().compareTo(element2.getName());
}
}
break;
case AddressOrder:
// Sort by address then name
if (element1.getAddress() > element2.getAddress()) {
diff = 1;
} else if (element1.getAddress() < element2.getAddress()) {
diff = -1;
} else {
diff = element1.getName().compareTo(element2.getName());
}
break;
}
return diff;
}
Aggregations