package org.openlca.app.components.replace; import java.util.List; import java.util.function.Supplier; import org.eclipse.jface.viewers.ComboViewer; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.swt.events.KeyAdapter; import org.eclipse.swt.events.KeyEvent; import org.eclipse.swt.graphics.Point; import org.openlca.core.model.descriptors.FlowDescriptor; class FilterOnKey extends KeyAdapter { private boolean active = true; private final ComboViewer viewer; private final NameFilter filter; private final Supplier<List<?>> inputSupplier; FilterOnKey(ComboViewer viewer, NameFilter filter, Supplier<List<?>> inputSupplier) { this.viewer = viewer; this.filter = filter; this.inputSupplier = inputSupplier; } @Override public void keyReleased(KeyEvent e) { if (!active) return; active = false; String text = viewer.getCCombo().getText(); Point caret = viewer.getCCombo().getSelection(); filter.filter = text.toLowerCase(); viewer.setInput(inputSupplier.get()); viewer.setSelection(new StructuredSelection(new FlowDescriptor())); viewer.getCCombo().setText(text); viewer.getCCombo().setSelection(caret); active = true; } }