You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ti...@apache.org on 2020/12/05 11:47:52 UTC
svn commit: r1884125 -
/pdfbox/branches/2.0/debugger/src/main/java/org/apache/pdfbox/debugger/pagepane/PagePane.java
Author: tilman
Date: Sat Dec 5 11:47:52 2020
New Revision: 1884125
URL: http://svn.apache.org/viewvc?rev=1884125&view=rev
Log:
PDFBOX-2941: change mouse cursor to hand when URI, launch URI when clicked
Modified:
pdfbox/branches/2.0/debugger/src/main/java/org/apache/pdfbox/debugger/pagepane/PagePane.java
Modified: pdfbox/branches/2.0/debugger/src/main/java/org/apache/pdfbox/debugger/pagepane/PagePane.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/debugger/src/main/java/org/apache/pdfbox/debugger/pagepane/PagePane.java?rev=1884125&r1=1884124&r2=1884125&view=diff
==============================================================================
--- pdfbox/branches/2.0/debugger/src/main/java/org/apache/pdfbox/debugger/pagepane/PagePane.java (original)
+++ pdfbox/branches/2.0/debugger/src/main/java/org/apache/pdfbox/debugger/pagepane/PagePane.java Sat Dec 5 11:47:52 2020
@@ -18,6 +18,8 @@ package org.apache.pdfbox.debugger.pagep
import java.awt.Color;
import java.awt.Component;
+import java.awt.Cursor;
+import java.awt.Desktop;
import java.awt.Font;
import java.awt.GraphicsEnvironment;
import java.awt.event.ActionEvent;
@@ -28,6 +30,8 @@ import java.awt.event.MouseMotionListene
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.io.IOException;
+import java.net.URI;
+import java.net.URISyntaxException;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
@@ -49,6 +53,7 @@ import org.apache.pdfbox.pdmodel.PDDocum
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.rendering.PDFRenderer;
import org.apache.pdfbox.debugger.PDFDebugger;
+import org.apache.pdfbox.debugger.ui.ErrorDialog;
import org.apache.pdfbox.debugger.ui.HighResolutionImageIcon;
import org.apache.pdfbox.debugger.ui.ImageTypeMenu;
import org.apache.pdfbox.debugger.ui.RenderDestinationMenu;
@@ -87,6 +92,7 @@ public class PagePane implements ActionL
private final JLabel statuslabel;
private final PDPage page;
private String labelText = "";
+ private String currentURI = "";
private final Map<PDRectangle, String> rectMap = new HashMap<PDRectangle, String>();
private final AffineTransform defaultTransform = GraphicsEnvironment.getLocalGraphicsEnvironment().
getDefaultScreenDevice().getDefaultConfiguration().getDefaultTransform();
@@ -351,15 +357,24 @@ public class PagePane implements ActionL
}
String text = "x: " + x1 + ", y: " + y1;
- // are we in a field widget?
- for (Map.Entry<PDRectangle, String> entry : rectMap.entrySet())
+ // are we in a field widget or a link annotation?
+ Cursor cursor = Cursor.getDefaultCursor();
+ currentURI = "";
+ for (Map.Entry<PDRectangle,String> entry : rectMap.entrySet())
{
if (entry.getKey().contains(x1, y1))
{
- text += ", " + rectMap.get(entry.getKey());
+ String s = rectMap.get(entry.getKey());
+ text += ", " + s;
+ if (s.startsWith("URI: "))
+ {
+ currentURI = s.substring(5);
+ cursor = Cursor.getPredefinedCursor(Cursor.HAND_CURSOR);
+ }
break;
}
}
+ panel.setCursor(cursor);
statuslabel.setText(text);
}
@@ -367,7 +382,24 @@ public class PagePane implements ActionL
@Override
public void mouseClicked(MouseEvent e)
{
- // do nothing
+ if (!currentURI.isEmpty())
+ {
+ if (Desktop.isDesktopSupported() && Desktop.getDesktop().isSupported(Desktop.Action.BROWSE))
+ {
+ try
+ {
+ Desktop.getDesktop().browse(new URI(currentURI));
+ }
+ catch (URISyntaxException ex)
+ {
+ new ErrorDialog(ex).setVisible(true);
+ }
+ catch (IOException ex)
+ {
+ new ErrorDialog(ex).setVisible(true);
+ }
+ }
+ }
}
@Override