package org.openlca.app.cloud.ui.diff; import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.viewers.ViewerSorter; import org.openlca.app.navigation.ModelTypeComparison; import org.openlca.core.model.ModelType; class Sorter extends ViewerSorter { @Override public int compare(Viewer viewer, Object e1, Object e2) { DiffNode node1 = (DiffNode) e1; DiffNode node2 = (DiffNode) e2; return compare(viewer, node1, node2); } private int compare(Viewer viewer, DiffNode node1, DiffNode node2) { if (node1.isModelTypeNode() && node2.isModelTypeNode()) return compareModelTypes(node1, node2); if (node1.isCategoryNode() && node2.isModelNode()) return -1; if (node1.isModelNode() && node2.isCategoryNode()) return 1; return super.compare(viewer, node1, node2); } private int compareModelTypes(DiffNode node1, DiffNode node2) { ModelType type1 = (ModelType) node1.content; ModelType type2 = (ModelType) node2.content; return ModelTypeComparison.compare(type1, type2); } }