diff options
Diffstat (limited to 'pdf-over-gui/src/main/java/at/asit/pdfover/gui/utils/SWTUtils.java')
-rw-r--r-- | pdf-over-gui/src/main/java/at/asit/pdfover/gui/utils/SWTUtils.java | 28 |
1 files changed, 28 insertions, 0 deletions
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 ef93e3e9..d276ecd6 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 @@ -1,9 +1,14 @@ package at.asit.pdfover.gui.utils; +import java.awt.Desktop; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +import java.net.URI; +import java.net.URISyntaxException; import java.util.function.Consumer; +import javax.annotation.Nullable; + import org.eclipse.swt.SWT; import org.eclipse.swt.custom.ScrolledComposite; import org.eclipse.swt.events.SelectionAdapter; @@ -14,6 +19,7 @@ import org.eclipse.swt.graphics.FontData; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.layout.FormAttachment; import org.eclipse.swt.layout.FormData; +import org.eclipse.swt.program.Program; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Event; @@ -171,4 +177,26 @@ public final class SWTUtils { log.error("Failed to add selection listener on object of type {}", swtObj.getClass().getSimpleName(), e); } } + + public static void openURL(@Nullable URI uri) { + try { + if (uri == null) return; + if (Desktop.isDesktopSupported()) { + Desktop.getDesktop().browse(uri); + } else { + Program.launch(uri.toURL().toExternalForm()); + } + } catch (Exception e) { + log.warn("Failed to open URI: {}", uri, e); + } + } + + public static void openURL(@Nullable String uri) { + if (uri == null) return; + try { + openURL(new URI(uri)); + } catch (URISyntaxException e) { + log.warn("Failed to open URI: {}", uri, e); + } + } } |