package sk.stuba.fiit.perconik.eclipse.swt.widgets;
import java.util.Comparator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import javax.annotation.Nullable;
import org.eclipse.swt.widgets.Table;
import static com.google.common.collect.Maps.newLinkedHashMap;
import static sk.stuba.fiit.perconik.utilities.MoreMaps.putAll;
public abstract class MapTableSorter<K, V> extends TableSorter<Entry<K, V>> {
protected MapTableSorter(final Table table) {
super(table);
}
protected MapTableSorter(final Table table, @Nullable final Comparator<? super Entry<K, V>> comparator) {
super(table, comparator);
}
@Override
public final Set<Entry<K, V>> loadData() {
return this.loadMap().entrySet();
}
@Override
public final void updateData(final Iterable<? extends Entry<K, V>> data) {
Map<K, V> update = newLinkedHashMap();
putAll(update, data);
this.updateMap(update);
}
protected abstract Map<K, V> loadMap();
protected abstract void updateMap(Map<K, V> map);
}