Search in sources :

Example 1 with ClusterModel

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;
}
Also used : RegisterModel(net.sourceforge.usbdm.peripherals.model.RegisterModel) ClusterModel(net.sourceforge.usbdm.peripherals.model.ClusterModel) BaseModel(net.sourceforge.usbdm.peripherals.model.BaseModel) FieldModel(net.sourceforge.usbdm.peripherals.model.FieldModel)

Aggregations

BaseModel (net.sourceforge.usbdm.peripherals.model.BaseModel)1 ClusterModel (net.sourceforge.usbdm.peripherals.model.ClusterModel)1 FieldModel (net.sourceforge.usbdm.peripherals.model.FieldModel)1 RegisterModel (net.sourceforge.usbdm.peripherals.model.RegisterModel)1