From 82c7b5dcc102b28277e4d880fb2c18612fa3c807 Mon Sep 17 00:00:00 2001 From: Jakob Heher Date: Tue, 9 Aug 2022 12:18:22 +0200 Subject: functional interfaces for readability --- .../main/java/at/asit/pdfover/gui/utils/SWTUtils.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'pdf-over-gui/src/main/java/at/asit/pdfover/gui/utils') diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/utils/SWTUtils.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/utils/SWTUtils.java index c89f12b8..ebeda252 100644 --- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/utils/SWTUtils.java +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/utils/SWTUtils.java @@ -2,7 +2,10 @@ package at.asit.pdfover.gui.utils; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +import java.util.function.Consumer; +import org.eclipse.swt.events.SelectionAdapter; +import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.graphics.FontData; import org.eclipse.swt.layout.FormAttachment; @@ -120,4 +123,19 @@ public final class SWTUtils { } public static AnchorSetter anchor(Control c) { return new AnchorSetter(c); } + /** + * functional-interface wrapper around swtObj.addSelectionListener + * @param swtObj SWT widget supporting addSelectionListener + * @param callback widgetSelected method + */ + public static void addSelectionListener(Object swtObj, Consumer callback) { + try { + Method m = swtObj.getClass().getMethod("addSelectionListener", SelectionAdapter.class); + m.invoke(swtObj, new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { callback.accept(e); } }); + } catch (NoSuchMethodException | IllegalAccessException e) { + log.error("Attempted to pass object of type {} to onSelectionChanged; object does not have an accessible addSelectionListener method", swtObj.getClass().getSimpleName(), e); + } catch (InvocationTargetException e) { + log.error("Failed to add selection listener on object of type {}", swtObj.getClass().getSimpleName(), e); + } + } } -- cgit v1.2.3