package org.jabref.gui.fieldeditors;
import java.util.ArrayList;
import java.util.List;
import javafx.util.StringConverter;
import com.google.common.collect.BiMap;
/**
* View model for a field editor that shows various options backed by a map.
*/
public abstract class MapBasedEditorViewModel<T> extends OptionEditorViewModel<T> {
protected abstract BiMap<String, T> getItemMap();
@Override
public StringConverter<T> getStringConverter() {
return new StringConverter<T>() {
@Override
public String toString(T object) {
if (object == null) {
return null;
} else {
return getItemMap().inverse().getOrDefault(object, "");
}
}
@Override
public T fromString(String string) {
if (string == null) {
return null;
} else {
return getItemMap().getOrDefault(string, null);
}
}
};
}
@Override
public List<T> getItems() {
return new ArrayList<>(getItemMap().values());
}
}