org.icepdf.ri.common.tools.PanningHandler Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of icepdf-viewer Show documentation
Show all versions of icepdf-viewer Show documentation
ICEpdf PDF Viewer Reference Implementation (RI)
/*
* Copyright 2006-2016 ICEsoft Technologies Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the
* License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an "AS
* IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the License for the specific language
* governing permissions and limitations under the License.
*/
package org.icepdf.ri.common.tools;
import org.icepdf.ri.common.views.AbstractDocumentView;
import org.icepdf.ri.common.views.DocumentViewController;
import org.icepdf.ri.common.views.DocumentViewModel;
import java.awt.*;
import java.awt.event.MouseEvent;
/**
* Container logic used for view panning via mouse dragging for page views.
* Panning can be handle in the view and doesn't need to be handled by the
* page components.
*
* @since 4.0
*/
public class PanningHandler implements ToolHandler {
// page mouse event manipulation
private Point lastMousePosition = new Point();
private DocumentViewController documentViewController;
private DocumentViewModel documentViewModel;
private AbstractDocumentView parentComponent;
public PanningHandler(DocumentViewController documentViewController,
DocumentViewModel documentViewModel,
AbstractDocumentView parentComponent) {
this.documentViewController = documentViewController;
this.documentViewModel = documentViewModel;
this.parentComponent = parentComponent;
}
/**
* Mouse dragged, initiates page panning if the tool is selected.
*
* @param e awt mouse event
*/
public void mouseDragged(MouseEvent e) {
if (documentViewController != null) {
// Get data about the current view port position
Adjustable verticalScrollbar =
documentViewController.getVerticalScrollBar();
Adjustable horizontalScrollbar =
documentViewController.getHorizontalScrollBar();
if (verticalScrollbar != null && horizontalScrollbar != null) {
// calculate how much the view port should be moved
Point p = new Point(
(int) e.getPoint().getX() - horizontalScrollbar.getValue(),
(int) e.getPoint().getY() - verticalScrollbar.getValue());
int x = (int) (horizontalScrollbar.getValue() - (p.getX() - lastMousePosition.getX()));
int y = (int) (verticalScrollbar.getValue() - (p.getY() - lastMousePosition.getY()));
// apply the pan
horizontalScrollbar.setValue(x);
verticalScrollbar.setValue(y);
// update last position holder
lastMousePosition.setLocation(p);
}
}
}
public void mouseMoved(MouseEvent e) {
if (documentViewController != null) {
Adjustable verticalScrollbar =
documentViewController.getVerticalScrollBar();
Adjustable horizontalScrollbar =
documentViewController.getHorizontalScrollBar();
lastMousePosition.setLocation(
e.getPoint().getX() - horizontalScrollbar.getValue(),
e.getPoint().getY() - verticalScrollbar.getValue());
}
}
/**
* Invoked when the mouse button has been clicked (pressed
* and released) on a component.
*/
public void mouseClicked(MouseEvent e) {
documentViewController.clearSelectedAnnotations();
if (parentComponent != null) {
parentComponent.requestFocus();
}
}
/**
* Invoked when a mouse button has been pressed on a component.
*/
public void mousePressed(MouseEvent e) {
if (documentViewController != null &&
documentViewController.getDocumentViewModel()
.isViewToolModeSelected(DocumentViewModel.DISPLAY_TOOL_PAN)) {
documentViewController.setViewCursor(DocumentViewController.CURSOR_HAND_CLOSE);
}
}
/**
* Invoked when a mouse button has been released on a component.
*/
public void mouseReleased(MouseEvent e) {
if (documentViewController != null &&
documentViewController.getDocumentViewModel().getViewToolMode()
== DocumentViewModel.DISPLAY_TOOL_PAN) {
documentViewController.setViewCursor(DocumentViewController.CURSOR_HAND_OPEN);
}
}
/**
* Invoked when the mouse enters a component.
*/
public void mouseEntered(MouseEvent e) {
}
/**
* Invoked when the mouse exits a component.
*/
public void mouseExited(MouseEvent e) {
}
public void paintTool(Graphics g) {
// nothing to paint for paning.
}
public void installTool() {
}
public void uninstallTool() {
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy