All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jpedal.objects.acroforms.actions.JavaFX.JavaFXFormsListener Maven / Gradle / Ivy

/*
 * ===========================================
 * Java Pdf Extraction Decoding Access Library
 * ===========================================
 *
 * Project Info:  http://www.idrsolutions.com
 * Help section for developers at http://www.idrsolutions.com/support/
 *
 * (C) Copyright 1997-2017 IDRsolutions and Contributors.
 *
 * This file is part of JPedal/JPDF2HTML5
 *
     This library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Lesser General Public
    License as published by the Free Software Foundation; either
    version 2.1 of the License, or (at your option) any later version.

    This library is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    Lesser General Public License for more details.

    You should have received a copy of the GNU Lesser General Public
    License along with this library; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA


 *
 * ---------------
 * JavaFXFormsListener.java
 * ---------------
 */

package org.jpedal.objects.acroforms.actions.JavaFX;

import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.event.EventHandler;
import javafx.scene.Node;
import javafx.scene.input.KeyEvent;
import javafx.scene.input.MouseEvent;
import javafx.scene.input.TouchEvent;
import org.jpedal.objects.acroforms.actions.ActionHandler;
import org.jpedal.objects.acroforms.actions.PDFListener;
import org.jpedal.objects.raw.FormObject;

/**
 * Listener which listens to various actions on JavaFX Form objects and
 * executes the correct method in ActionHandler
 *
 * @author Simon
 */
public class JavaFXFormsListener extends PDFListener {
    private boolean debug;

    private final EventHandler mouseHandler;
    private EventHandler touchHandler;
    private final ChangeListener focusHandler;
    private final EventHandler keyHandler;

    public JavaFXFormsListener(final FormObject form, final ActionHandler handler) {
        super(form, handler);

        mouseHandler = new EventHandler() {
            @Override
            public void handle(final MouseEvent event) {
                handleMouseEvent(event);
            }
        };

        focusHandler = new ChangeListener() {
            @Override
            public void changed(final ObservableValue observable, final Boolean oldValue, final Boolean newValue) {
                handleFocusEvent(newValue);
            }
        };

        keyHandler = new EventHandler() {
            @Override
            public void handle(final KeyEvent event) {
                handleKeyEvent(event);
            }
        };
    }

    public EventHandler getMouseHandler() {
        return mouseHandler;
    }

    public EventHandler getTouchHandler() {
        return touchHandler;
    }

    public ChangeListener getFocusHandler() {
        return focusHandler;
    }

    public EventHandler getKeyHandler() {
        return keyHandler;
    }

    private void handleMouseEvent(final MouseEvent event) {
        if (debug) {
            System.out.println("JavaFXFormsMouseListener event: " + event.getEventType().getName());
        }

        if (event.getEventType() == MouseEvent.MOUSE_CLICKED) {
            super.mouseClicked(event);
        } else if (event.getEventType() == MouseEvent.MOUSE_PRESSED) {
            super.mousePressed(event);
        } else if (event.getEventType() == MouseEvent.MOUSE_RELEASED) {
            super.mouseReleased(event);
        } else if (event.getEventType() == MouseEvent.MOUSE_ENTERED) {
            handler.A(event, formObject, ActionHandler.MOUSEENTERED);
            handler.E(event, formObject);

            if (formObject.getCharacteristics()[8] && formObject.getGUIComponent() != null) { //togglenoView
                ((Node) formObject.getGUIComponent()).setVisible(true);
            }
        } else if (event.getEventType() == MouseEvent.MOUSE_EXITED) {
            handler.A(event, formObject, ActionHandler.MOUSEEXITED);
            handler.X(event, formObject);

            if (formObject.getCharacteristics()[8] && formObject.getGUIComponent() != null) { //togglenoView
                ((Node) formObject.getGUIComponent()).setVisible(false);
            }
        }
    }

    private void handleFocusEvent(final boolean gainedFocus) {
        if (gainedFocus) {
            super.focusGained(null);
        } else {
            super.focusLost(null);
        }
    }

    private void handleKeyEvent(final KeyEvent event) {
        if (event.getEventType().equals(KeyEvent.KEY_PRESSED)) {
            // Ignored at present
        } else if (event.getEventType().equals(KeyEvent.KEY_RELEASED)) {
            super.keyReleased(event);
        }
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy