From 5919ca54190dcc4eb00e9a0bb2feef4a2b9caf3b Mon Sep 17 00:00:00 2001 From: tkellner Date: Wed, 31 Oct 2012 16:36:39 +0000 Subject: Allow dragging the signature git-svn-id: https://svn.iaik.tugraz.at/svn/egiz/prj/current/12PDF-OVER-4.0@12704 3a0b52a2-8410-0410-bc02-ff6273a87459 --- .../pdfover/gui/composites/SignaturePanel.java | 37 ++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) (limited to 'trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/SignaturePanel.java') diff --git a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/SignaturePanel.java b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/SignaturePanel.java index 4c83e57f..6eb014d6 100644 --- a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/SignaturePanel.java +++ b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/SignaturePanel.java @@ -26,6 +26,8 @@ import java.awt.event.MouseEvent; import java.awt.geom.AffineTransform; import java.awt.geom.NoninvertibleTransformException; import java.awt.geom.Point2D; +import java.awt.geom.Rectangle2D; +import java.awt.geom.Point2D.Double; import javax.swing.JPanel; @@ -258,6 +260,8 @@ public class SignaturePanel extends JPanel { private MouseAdapter mouseListener = new MouseAdapter() { private boolean doDrag = false; + private int dragXOffset = 0; + private int dragYOffset = 0; private void updateSigPos(int sigx, int sigy) { if (SignaturePanel.this.currentImage == null) @@ -276,8 +280,20 @@ public class SignaturePanel extends JPanel { public void mousePressed(MouseEvent evt) { if (evt.getButton() == MouseEvent.BUTTON1) { - updateSigPos(evt.getX(), evt.getY()); this.doDrag = true; + if (isOnSignature(evt.getX(), evt.getY())) { + this.dragXOffset = (int) + (SignaturePanel.this.sigScreenPos.getX() - + (evt.getX() - SignaturePanel.this.offx)); + this.dragYOffset = (int) + (SignaturePanel.this.sigScreenPos.getY() - + (evt.getY() - SignaturePanel.this.offy)); + } + else { + this.dragXOffset = 0; + this.dragYOffset = 0; + } + updateSigPos(evt.getX() + this.dragXOffset, evt.getY() + this.dragYOffset); } } @@ -293,10 +309,27 @@ public class SignaturePanel extends JPanel { @Override public void mouseDragged(MouseEvent evt) { if (this.doDrag) - updateSigPos(evt.getX(), evt.getY()); + updateSigPos(evt.getX() + this.dragXOffset, evt.getY() + this.dragYOffset); } }; + /** + * Check whether given point is on signature placeholder + * @param x x coordinate + * @param y y coordinate + * @return true if given point is on signature placeholder + */ + boolean isOnSignature(int x, int y) + { + Rectangle2D sig = new Rectangle2D.Double( + this.sigScreenPos.getX() + this.offx, + this.sigScreenPos.getY() + this.offy, + this.sigPlaceholder.getWidth(null), + this.sigPlaceholder.getHeight(null)); + Point2D pos = new Point2D.Double(x, y); + return (sig.contains(pos)); + } + /** * Clamp x to be within [min-max] * @param x int to clamp -- cgit v1.2.3