From 678b291306af3f913bb77b63a93e5124a6894218 Mon Sep 17 00:00:00 2001 From: Jakob Heher Date: Thu, 6 Oct 2022 08:47:07 +0200 Subject: BKUSelectionComposite cleanup --- .../java/at/asit/pdfover/gui/utils/SWTUtils.java | 28 +++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) (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 c82e0309..792b2414 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 @@ -11,6 +11,9 @@ import javax.annotation.Nullable; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.ScrolledComposite; +import org.eclipse.swt.events.MouseAdapter; +import org.eclipse.swt.events.MouseEvent; +import org.eclipse.swt.events.MouseListener; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; @@ -172,7 +175,7 @@ public final class SWTUtils { Method m = swtObj.getClass().getMethod("addSelectionListener", SelectionListener.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); + log.error("Attempted to pass object of type {} to addSelectionListener; 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); } @@ -185,6 +188,29 @@ public final class SWTUtils { addSelectionListener(swtObj, (e) -> { callback.run(); }); } + /** + * functional-interface wrapper around swtObj.addMouseListener + * @param swtObj SWT widget supporting addMouseListener + * @param callback mouseDown method + */ + public static void addMouseDownListener(Object swtObj, Consumer callback) { + try { + Method m = swtObj.getClass().getMethod("addMouseListener", MouseListener.class); + m.invoke(swtObj, new MouseAdapter() { @Override public void mouseDown (MouseEvent e) { callback.accept(e); } }); + } catch (NoSuchMethodException | IllegalAccessException e) { + log.error("Attempted to pass object of type {} to addMouseDownListener; object does not have an accessible addMouseListener method", swtObj.getClass().getSimpleName(), e); + } catch (InvocationTargetException e) { + log.error("Failed to add selection listeer on object of type {}", swtObj.getClass().getSimpleName(), e); + } + } + + /** + * @see SWTUtils#addMouseDownListener(Object, Consumer) + */ + public static void addMouseDownListener(Object swtObj, Runnable callback) { + addMouseDownListener(swtObj, (e) -> { callback.run(); }); + } + public static void openURL(@Nullable URI uri) { try { if (uri == null) return; -- cgit v1.2.3