org.icepdf.ri.common.tools.ZoomInViewHandler 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-2017 ICEsoft Technologies Canada Corp.
*
* 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.AbstractPageViewComponent;
import org.icepdf.ri.common.views.DocumentViewController;
import org.icepdf.ri.common.views.DocumentViewModel;
import javax.swing.*;
import java.awt.*;
import java.awt.event.InputEvent;
import java.awt.event.MouseEvent;
import java.util.List;
import java.util.logging.Logger;
/**
* ZoomInViewHandler handles selection box zoom features when the mouse is
* dragged creating box which will be used to calculate a corresponding zoom
* level.
*
* @since 5.0
*/
public class ZoomInViewHandler extends SelectionBoxHandler implements ToolHandler {
private static final Logger logger =
Logger.getLogger(ZoomInPageHandler.class.toString());
private AbstractDocumentView parentComponent;
public ZoomInViewHandler(DocumentViewController documentViewController,
DocumentViewModel documentViewModel,
AbstractDocumentView parentComponent) {
super(documentViewController, null, documentViewModel);
this.parentComponent = parentComponent;
}
public void mouseDragged(MouseEvent e) {
// handle text selection drags.
if (documentViewController != null) {
// update the currently selected box
updateSelectionSize(e.getX(),e.getY(), parentComponent);
// add selection box to child pages
if (documentViewModel != null) {
java.util.List pages =
documentViewModel.getPageComponents();
for (AbstractPageViewComponent page : pages) {
Rectangle tmp = SwingUtilities.convertRectangle(
parentComponent, getRectToDraw(), page);
if (page.getBounds().intersects(tmp)) {
// convert the rectangle to the correct space
Rectangle selectRec =
SwingUtilities.convertRectangle(parentComponent,
rectToDraw,
page);
// set the selected region.
page.setSelectionRectangle(
SwingUtilities.convertPoint(parentComponent,
e.getPoint(), page),
selectRec);
}
}
}
}
}
public void mouseClicked(MouseEvent e) {
if ((e.getModifiers() & MouseEvent.MOUSE_PRESSED) != 0) {
if ((e.getModifiers() & InputEvent.BUTTON1_MASK) != 0) {
// zoom in
documentViewController.setZoomIn(e.getPoint());
}
}
if (parentComponent != null) {
parentComponent.requestFocus();
}
}
public void mousePressed(MouseEvent e) {
// start selection box.
if (documentViewController != null) {
resetRectangle(e.getX(), e.getY());
}
}
public void mouseReleased(MouseEvent e) {
if (documentViewController != null) {
// update selection rectangle
updateSelectionSize(e.getX(),e.getY(), parentComponent);
if (documentViewController.getViewPort() != null &&
rectToDraw.getWidth() > 0 &&
rectToDraw.getHeight() > 0) {
// zoom in on rectangle bounds.
float zoom = ZoomInPageHandler.calculateZoom(
documentViewController, rectToDraw, documentViewModel);
// scale the zoom box center to the new location
Point center = new Point((int) rectToDraw.getCenterX(),
(int) rectToDraw.getCenterY());
documentViewController.setZoomCentered(zoom, center, true);
}
// clear the rectangle
clearRectangle(parentComponent);
// clear the child rectangle
// deselect rectangles on other selected pages.
// consider only repainting visible pages.
List selectedPages =
documentViewModel.getPageComponents();
if (selectedPages != null &&
selectedPages.size() > 0) {
for (AbstractPageViewComponent pageComp : selectedPages) {
if (pageComp != null && pageComp.isVisible()) {
pageComp.clearSelectionRectangle();
}
}
}
}
}
public void installTool() {
}
public void uninstallTool() {
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void mouseMoved(MouseEvent e) {
}
@Override
public void setSelectionRectangle(Point cursorLocation, Rectangle selection) {
}
public void paintTool(Graphics g) {
paintSelectionBox(g, rectToDraw);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy