| <!DOCTYPE HTML> |
| <html lang="en"> |
| <head> |
| <!-- Generated by javadoc (21) on Thu Oct 05 19:54:57 CEST 2023 --> |
| <title>GestureFollower (Apache SIS 1.4 API)</title> |
| <meta name="viewport" content="width=device-width, initial-scale=1"> |
| <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> |
| <meta name="dc.created" content="2023-10-05"> |
| <meta name="description" content="declaration: module: org.apache.sis.gui, package: org.apache.sis.gui.map, class: GestureFollower"> |
| <meta name="generator" content="javadoc/ClassWriterImpl"> |
| <meta name="keywords" content="org.apache.sis.gui.map.GestureFollower class"> |
| <meta name="keywords" content="transformEnabled"> |
| <meta name="keywords" content="cursorEnabled"> |
| <meta name="keywords" content="getSourceDisplayPOI()"> |
| <meta name="keywords" content="handle()"> |
| <meta name="keywords" content="filter()"> |
| <meta name="keywords" content="transformedSource()"> |
| <meta name="keywords" content="dispose()"> |
| <link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style"> |
| <link rel="stylesheet" type="text/css" href="../../../../../../sis.css" title="Style"> |
| <link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style"> |
| <script type="text/javascript" src="../../../../../../script.js"></script> |
| <script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.1.min.js"></script> |
| <script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script> |
| </head> |
| <body class="class-declaration-page"> |
| <script type="text/javascript">var pathtoroot = "../../../../../../"; |
| loadScripts(document, 'script');</script> |
| <noscript> |
| <div>JavaScript is disabled on your browser.</div> |
| </noscript> |
| <div class="flex-box"> |
| <header role="banner" class="flex-header"> |
| <nav role="navigation"> |
| <!-- ========= START OF TOP NAVBAR ======= --> |
| <div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon"> </span><span class="nav-bar-toggle-icon"> </span><span class="nav-bar-toggle-icon"> </span></button> |
| <div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div> |
| <ul id="navbar-top-firstrow" class="nav-list" title="Navigation"> |
| <li><a href="../../../../../../index.html">Overview</a></li> |
| <li><a href="../../../../../module-summary.html">Module</a></li> |
| <li><a href="package-summary.html">Package</a></li> |
| <li class="nav-bar-cell1-rev">Class</li> |
| <li><a href="package-tree.html">Tree</a></li> |
| <li><a href="../../../../../../deprecated-list.html">Deprecated</a></li> |
| <li><a href="../../../../../../index-all.html">Index</a></li> |
| <li><a href="../../../../../../help-doc.html#class">Help</a></li> |
| </ul> |
| <ul class="sub-nav-list-small"> |
| <li> |
| <p>Summary:</p> |
| <ul> |
| <li>Nested</li> |
| <li><a href="#field-summary">Field</a></li> |
| <li><a href="#constructor-summary">Constr</a></li> |
| <li><a href="#method-summary">Method</a></li> |
| </ul> |
| </li> |
| <li> |
| <p>Detail:</p> |
| <ul> |
| <li><a href="#field-detail">Field</a></li> |
| <li><a href="#constructor-detail">Constr</a></li> |
| <li><a href="#method-detail">Method</a></li> |
| </ul> |
| </li> |
| </ul> |
| </div> |
| <div class="sub-nav"> |
| <div id="navbar-sub-list"> |
| <ul class="sub-nav-list"> |
| <li>Summary: </li> |
| <li>Nested | </li> |
| <li><a href="#field-summary">Field</a> | </li> |
| <li><a href="#constructor-summary">Constr</a> | </li> |
| <li><a href="#method-summary">Method</a></li> |
| </ul> |
| <ul class="sub-nav-list"> |
| <li>Detail: </li> |
| <li><a href="#field-detail">Field</a> | </li> |
| <li><a href="#constructor-detail">Constr</a> | </li> |
| <li><a href="#method-detail">Method</a></li> |
| </ul> |
| </div> |
| <div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a> |
| <input type="text" id="search-input" disabled placeholder="Search"> |
| <input type="reset" id="reset-button" disabled value="reset"> |
| </div> |
| </div> |
| <!-- ========= END OF TOP NAVBAR ========= --> |
| <span class="skip-nav" id="skip-navbar-top"></span></nav> |
| </header> |
| <div class="flex-content"> |
| <main role="main"> |
| <!-- ======== START OF CLASS DATA ======== --> |
| <div class="header"> |
| <div class="sub-title"><span class="module-label-in-type">Module</span> <a href="../../../../../module-summary.html">org.apache.sis.gui</a></div> |
| <div class="sub-title"><span class="package-label-in-type">Package</span> <a href="package-summary.html">org.apache.sis.gui.map</a></div> |
| <h1 title="Class GestureFollower" class="title">Class GestureFollower</h1> |
| </div> |
| <div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a> |
| <div class="inheritance"><a href="../../../../../../org.apache.sis.portrayal/org/apache/sis/portrayal/CanvasFollower.html" title="class in org.apache.sis.portrayal">CanvasFollower</a> |
| <div class="inheritance">GestureFollower</div> |
| </div> |
| </div> |
| <section class="class-description" id="class-description"> |
| <dl class="notes"> |
| <dt>All Implemented Interfaces:</dt> |
| <dd><code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/java/beans/PropertyChangeListener.html" title="class or interface in java.beans" class="external-link">PropertyChangeListener</a></code>, <code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/EventListener.html" title="class or interface in java.util" class="external-link">EventListener</a></code>, <code><a href="https://openjfx.io/javadoc/21/javafx.base/javafx/event/EventHandler.html" title="class or interface in javafx.event" class="external-link">EventHandler</a><<a href="https://openjfx.io/javadoc/21/javafx.graphics/javafx/scene/input/MouseEvent.html" title="class or interface in javafx.scene.input" class="external-link">MouseEvent</a>></code>, <code><a href="../../../../../../org.apache.sis.util/org/apache/sis/util/Disposable.html" title="interface in org.apache.sis.util">Disposable</a></code></dd> |
| </dl> |
| <hr> |
| <div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">GestureFollower</span> |
| <span class="extends-implements">extends <a href="../../../../../../org.apache.sis.portrayal/org/apache/sis/portrayal/CanvasFollower.html" title="class in org.apache.sis.portrayal">CanvasFollower</a> |
| implements <a href="https://openjfx.io/javadoc/21/javafx.base/javafx/event/EventHandler.html" title="class or interface in javafx.event" class="external-link">EventHandler</a><<a href="https://openjfx.io/javadoc/21/javafx.graphics/javafx/scene/input/MouseEvent.html" title="class or interface in javafx.scene.input" class="external-link">MouseEvent</a>></span></div> |
| <div class="block">A listener of mouse or keyboard events in a source canvas which can be reproduced in a target canvas. |
| This listener can reproduce the "real world" displacements documented in <a href="../../../../../../org.apache.sis.portrayal/org/apache/sis/portrayal/CanvasFollower.html" title="class in org.apache.sis.portrayal">parent class</a>. |
| In addition, this class can also follow mouse movements in source canvas and move a cursor in the target canvas |
| at the same "real world" position. |
| |
| <h2 id="listeners-heading">Listeners</h2> |
| <code>GestureFollower</code> listeners need to be registered explicitly by a call to the <a href="../../../../../../org.apache.sis.portrayal/org/apache/sis/portrayal/CanvasFollower.html#initialize()"><code>CanvasFollower.initialize()</code></a> method. |
| The <a href="#dispose()"><code>dispose()</code></a> convenience method is provided for unregistering all those listeners. |
| |
| <h2 id="multi-threading-heading">Multi-threading</h2> |
| This class is <strong>not</strong> thread-safe. |
| All events should be processed in the JavaFX thread.</div> |
| <dl class="notes"> |
| <dt>Since:</dt> |
| <dd>1.3</dd> |
| </dl> |
| </section> |
| <section class="summary"> |
| <ul class="summary-list"> |
| <!-- =========== FIELD SUMMARY =========== --> |
| <li> |
| <section class="field-summary" id="field-summary"> |
| <h2>Field Summary</h2> |
| <div class="caption"><span>Fields</span></div> |
| <div class="summary-table three-column-summary"> |
| <div class="table-header col-first">Modifier and Type</div> |
| <div class="table-header col-second">Field</div> |
| <div class="table-header col-last">Description</div> |
| <div class="col-first even-row-color"><code>final <a href="https://openjfx.io/javadoc/21/javafx.base/javafx/beans/property/BooleanProperty.html" title="class or interface in javafx.beans.property" class="external-link">BooleanProperty</a></code></div> |
| <div class="col-second even-row-color"><code><a href="#cursorEnabled" class="member-name-link">cursorEnabled</a></code></div> |
| <div class="col-last even-row-color"> |
| <div class="block">Whether mouse position in source canvas should be shown by a cursor in the target canvas.</div> |
| </div> |
| <div class="col-first odd-row-color"><code>final <a href="https://openjfx.io/javadoc/21/javafx.base/javafx/beans/property/BooleanProperty.html" title="class or interface in javafx.beans.property" class="external-link">BooleanProperty</a></code></div> |
| <div class="col-second odd-row-color"><code><a href="#transformEnabled" class="member-name-link">transformEnabled</a></code></div> |
| <div class="col-last odd-row-color"> |
| <div class="block">Whether changes in the "objective to display" transforms should be propagated from source to target canvas.</div> |
| </div> |
| </div> |
| <div class="inherited-list"> |
| <h3 id="fields-inherited-from-class-CanvasFollower">Fields inherited from class <a href="../../../../../../org.apache.sis.portrayal/org/apache/sis/portrayal/CanvasFollower.html" title="class in org.apache.sis.portrayal">CanvasFollower</a></h3> |
| <code><a href="../../../../../../org.apache.sis.portrayal/org/apache/sis/portrayal/CanvasFollower.html#source">source</a>, <a href="../../../../../../org.apache.sis.portrayal/org/apache/sis/portrayal/CanvasFollower.html#target">target</a></code></div> |
| </section> |
| </li> |
| <!-- ======== CONSTRUCTOR SUMMARY ======== --> |
| <li> |
| <section class="constructor-summary" id="constructor-summary"> |
| <h2>Constructor Summary</h2> |
| <div class="caption"><span>Constructors</span></div> |
| <div class="summary-table two-column-summary"> |
| <div class="table-header col-first">Constructor</div> |
| <div class="table-header col-last">Description</div> |
| <div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(org.apache.sis.gui.map.MapCanvas,org.apache.sis.gui.map.MapCanvas)" class="member-name-link">GestureFollower</a><wbr>(<a href="MapCanvas.html" title="class in org.apache.sis.gui.map">MapCanvas</a> source, |
| <a href="MapCanvas.html" title="class in org.apache.sis.gui.map">MapCanvas</a> target)</code></div> |
| <div class="col-last even-row-color"> |
| <div class="block">Creates a new listener for synchronizing "objective to display" transform changes and cursor position |
| between the specified canvas.</div> |
| </div> |
| </div> |
| </section> |
| </li> |
| <!-- ========== METHOD SUMMARY =========== --> |
| <li> |
| <section class="method-summary" id="method-summary"> |
| <h2>Method Summary</h2> |
| <div id="method-summary-table"> |
| <div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div> |
| <div id="method-summary-table.tabpanel" role="tabpanel"> |
| <div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0"> |
| <div class="table-header col-first">Modifier and Type</div> |
| <div class="table-header col-second">Method</div> |
| <div class="table-header col-last">Description</div> |
| <div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div> |
| <div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#dispose()" class="member-name-link">dispose</a>()</code></div> |
| <div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> |
| <div class="block">Removes all listeners registered by this <code>GestureFollower</code> instance.</div> |
| </div> |
| <div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected boolean</code></div> |
| <div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#filter(org.apache.sis.portrayal.TransformChangeEvent)" class="member-name-link">filter</a><wbr>(<a href="../../../../../../org.apache.sis.portrayal/org/apache/sis/portrayal/TransformChangeEvent.html" title="class in org.apache.sis.portrayal">TransformChangeEvent</a> event)</code></div> |
| <div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> |
| <div class="block">Returns <code>true</code> if this listener should replicate the following changes on the target canvas.</div> |
| </div> |
| <div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Optional.html" title="class or interface in java.util" class="external-link">Optional</a><wbr><<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/java/awt/geom/Point2D.html" title="class or interface in java.awt.geom" class="external-link">Point2D</a>></code></div> |
| <div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getSourceDisplayPOI()" class="member-name-link">getSourceDisplayPOI</a>()</code></div> |
| <div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> |
| <div class="block">Returns the position for the mouse cursor in the source canvas if that position is known.</div> |
| </div> |
| <div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div> |
| <div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#handle(javafx.scene.input.MouseEvent)" class="member-name-link">handle</a><wbr>(<a href="https://openjfx.io/javadoc/21/javafx.graphics/javafx/scene/input/MouseEvent.html" title="class or interface in javafx.scene.input" class="external-link">MouseEvent</a> event)</code></div> |
| <div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> |
| <div class="block">Invoked when the mouse position changed.</div> |
| </div> |
| <div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div> |
| <div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#transformedSource(org.apache.sis.portrayal.TransformChangeEvent)" class="member-name-link">transformedSource</a><wbr>(<a href="../../../../../../org.apache.sis.portrayal/org/apache/sis/portrayal/TransformChangeEvent.html" title="class in org.apache.sis.portrayal">TransformChangeEvent</a> event)</code></div> |
| <div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> |
| <div class="block">Invoked after the source "objective to display" transform has been updated.</div> |
| </div> |
| </div> |
| </div> |
| </div> |
| <div class="inherited-list"> |
| <h3 id="methods-inherited-from-class-CanvasFollower">Methods inherited from class <a href="../../../../../../org.apache.sis.portrayal/org/apache/sis/portrayal/CanvasFollower.html" title="class in org.apache.sis.portrayal">CanvasFollower</a></h3> |
| <code><a href="../../../../../../org.apache.sis.portrayal/org/apache/sis/portrayal/CanvasFollower.html#getDisplayTransform()">getDisplayTransform</a>, <a href="../../../../../../org.apache.sis.portrayal/org/apache/sis/portrayal/CanvasFollower.html#getFollowRealWorld()">getFollowRealWorld</a>, <a href="../../../../../../org.apache.sis.portrayal/org/apache/sis/portrayal/CanvasFollower.html#getSourceObjectivePOI()">getSourceObjectivePOI</a>, <a href="../../../../../../org.apache.sis.portrayal/org/apache/sis/portrayal/CanvasFollower.html#initialize()">initialize</a>, <a href="../../../../../../org.apache.sis.portrayal/org/apache/sis/portrayal/CanvasFollower.html#isDisabled()">isDisabled</a>, <a href="../../../../../../org.apache.sis.portrayal/org/apache/sis/portrayal/CanvasFollower.html#propertyChange(java.beans.PropertyChangeEvent)">propertyChange</a>, <a href="../../../../../../org.apache.sis.portrayal/org/apache/sis/portrayal/CanvasFollower.html#setDisabled(boolean)">setDisabled</a>, <a href="../../../../../../org.apache.sis.portrayal/org/apache/sis/portrayal/CanvasFollower.html#setFollowRealWorld(boolean)">setFollowRealWorld</a>, <a href="../../../../../../org.apache.sis.portrayal/org/apache/sis/portrayal/CanvasFollower.html#transformDisplayCoordinates(org.apache.sis.portrayal.TransformChangeEvent,java.awt.geom.AffineTransform)">transformDisplayCoordinates</a>, <a href="../../../../../../org.apache.sis.portrayal/org/apache/sis/portrayal/CanvasFollower.html#transformedTarget(org.apache.sis.portrayal.TransformChangeEvent)">transformedTarget</a>, <a href="../../../../../../org.apache.sis.portrayal/org/apache/sis/portrayal/CanvasFollower.html#transformObjectiveCoordinates(org.apache.sis.portrayal.TransformChangeEvent,java.awt.geom.AffineTransform)">transformObjectiveCoordinates</a></code></div> |
| <div class="inherited-list"> |
| <h3 id="methods-inherited-from-class-Object">Methods inherited from class <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3> |
| <code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div> |
| </section> |
| </li> |
| </ul> |
| </section> |
| <section class="details"> |
| <ul class="details-list"> |
| <!-- ============ FIELD DETAIL =========== --> |
| <li> |
| <section class="field-details" id="field-detail"> |
| <h2>Field Details</h2> |
| <ul class="member-list"> |
| <li> |
| <section class="detail" id="transformEnabled"> |
| <h3>transformEnabled</h3> |
| <div class="member-signature"><span class="modifiers">public final</span> <span class="return-type"><a href="https://openjfx.io/javadoc/21/javafx.base/javafx/beans/property/BooleanProperty.html" title="class or interface in javafx.beans.property" class="external-link">BooleanProperty</a></span> <span class="element-name">transformEnabled</span></div> |
| <div class="block">Whether changes in the "objective to display" transforms should be propagated from source to target canvas. |
| The default value is <code>false</code>; this property needs to be enabled explicitly by caller if desired.</div> |
| </section> |
| </li> |
| <li> |
| <section class="detail" id="cursorEnabled"> |
| <h3>cursorEnabled</h3> |
| <div class="member-signature"><span class="modifiers">public final</span> <span class="return-type"><a href="https://openjfx.io/javadoc/21/javafx.base/javafx/beans/property/BooleanProperty.html" title="class or interface in javafx.beans.property" class="external-link">BooleanProperty</a></span> <span class="element-name">cursorEnabled</span></div> |
| <div class="block">Whether mouse position in source canvas should be shown by a cursor in the target canvas. |
| The default value is <code>false</code>; this property needs to be enabled explicitly by caller if desired.</div> |
| </section> |
| </li> |
| </ul> |
| </section> |
| </li> |
| <!-- ========= CONSTRUCTOR DETAIL ======== --> |
| <li> |
| <section class="constructor-details" id="constructor-detail"> |
| <h2>Constructor Details</h2> |
| <ul class="member-list"> |
| <li> |
| <section class="detail" id="<init>(org.apache.sis.gui.map.MapCanvas,org.apache.sis.gui.map.MapCanvas)"> |
| <h3>GestureFollower</h3> |
| <div class="member-signature"><span class="modifiers">public</span> <span class="element-name">GestureFollower</span><wbr><span class="parameters">(<a href="MapCanvas.html" title="class in org.apache.sis.gui.map">MapCanvas</a> source, |
| <a href="MapCanvas.html" title="class in org.apache.sis.gui.map">MapCanvas</a> target)</span></div> |
| <div class="block">Creates a new listener for synchronizing "objective to display" transform changes and cursor position |
| between the specified canvas. This is a unidirectional binding: changes in source are applied on target, |
| but not the converse. |
| |
| <p>Caller needs to register listeners by a call to the <a href="../../../../../../org.apache.sis.portrayal/org/apache/sis/portrayal/CanvasFollower.html#initialize()"><code>CanvasFollower.initialize()</code></a> method. |
| This is not done automatically by this constructor for allowing users to control |
| when to start listening to changes.</p></div> |
| <dl class="notes"> |
| <dt>Parameters:</dt> |
| <dd><code>source</code> - the canvas which is the source of zoom, pan or rotation events.</dd> |
| <dd><code>target</code> - the canvas on which to apply the changes of zoom, pan or rotation.</dd> |
| </dl> |
| </section> |
| </li> |
| </ul> |
| </section> |
| </li> |
| <!-- ============ METHOD DETAIL ========== --> |
| <li> |
| <section class="method-details" id="method-detail"> |
| <h2>Method Details</h2> |
| <ul class="member-list"> |
| <li> |
| <section class="detail" id="getSourceDisplayPOI()"> |
| <h3>getSourceDisplayPOI</h3> |
| <div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Optional.html" title="class or interface in java.util" class="external-link">Optional</a><<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/java/awt/geom/Point2D.html" title="class or interface in java.awt.geom" class="external-link">Point2D</a>></span> <span class="element-name">getSourceDisplayPOI</span>()</div> |
| <div class="block">Returns the position for the mouse cursor in the source canvas if that position is known. |
| This information is used when the source and target canvases do not use the same CRS. |
| <code>GestureFollower</code> tries to transform the canvas views in such a way that the |
| "real world" change is the same for both canvas at that location. |
| |
| <p>The returned value is "live"; it may change with mouse and gesture events. |
| Callers should not modify that value, and copy it if they need to keep it.</p></div> |
| <dl class="notes"> |
| <dt>Overrides:</dt> |
| <dd><code><a href="../../../../../../org.apache.sis.portrayal/org/apache/sis/portrayal/CanvasFollower.html#getSourceDisplayPOI()">getSourceDisplayPOI</a></code> in class <code><a href="../../../../../../org.apache.sis.portrayal/org/apache/sis/portrayal/CanvasFollower.html" title="class in org.apache.sis.portrayal">CanvasFollower</a></code></dd> |
| <dt>Returns:</dt> |
| <dd>mouse position in source canvas where displacements, zooms and rotations |
| applied on the source canvas should be mirrored exactly on the target canvas.</dd> |
| </dl> |
| </section> |
| </li> |
| <li> |
| <section class="detail" id="handle(javafx.scene.input.MouseEvent)"> |
| <h3>handle</h3> |
| <div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">handle</span><wbr><span class="parameters">(<a href="https://openjfx.io/javadoc/21/javafx.graphics/javafx/scene/input/MouseEvent.html" title="class or interface in javafx.scene.input" class="external-link">MouseEvent</a> event)</span></div> |
| <div class="block">Invoked when the mouse position changed. This method should be invoked only if |
| <a href="#cursorEnabled"><code>cursorEnabled</code></a> is <code>true</code> (this is not verified by this method).</div> |
| <dl class="notes"> |
| <dt>Specified by:</dt> |
| <dd><code><a href="https://openjfx.io/javadoc/21/javafx.base/javafx/event/EventHandler.html#handle(T)" title="class or interface in javafx.event" class="external-link">handle</a></code> in interface <code><a href="https://openjfx.io/javadoc/21/javafx.base/javafx/event/EventHandler.html" title="class or interface in javafx.event" class="external-link">EventHandler</a><<a href="https://openjfx.io/javadoc/21/javafx.graphics/javafx/scene/input/MouseEvent.html" title="class or interface in javafx.scene.input" class="external-link">MouseEvent</a>></code></dd> |
| <dt>Parameters:</dt> |
| <dd><code>event</code> - the enter, exit or move event.</dd> |
| </dl> |
| </section> |
| </li> |
| <li> |
| <section class="detail" id="filter(org.apache.sis.portrayal.TransformChangeEvent)"> |
| <h3>filter</h3> |
| <div class="member-signature"><span class="modifiers">protected</span> <span class="return-type">boolean</span> <span class="element-name">filter</span><wbr><span class="parameters">(<a href="../../../../../../org.apache.sis.portrayal/org/apache/sis/portrayal/TransformChangeEvent.html" title="class in org.apache.sis.portrayal">TransformChangeEvent</a> event)</span></div> |
| <div class="block">Returns <code>true</code> if this listener should replicate the following changes on the target canvas. |
| This implementation returns <code>true</code> if the transform reason is <a href="../../../../../../org.apache.sis.portrayal/org/apache/sis/portrayal/TransformChangeEvent.Reason.html#INTERIM"><code>TransformChangeEvent.Reason.INTERIM</code></a>. |
| It allows immediate feedback to users without waiting for the background thread to complete rendering.</div> |
| <dl class="notes"> |
| <dt>Overrides:</dt> |
| <dd><code><a href="../../../../../../org.apache.sis.portrayal/org/apache/sis/portrayal/CanvasFollower.html#filter(org.apache.sis.portrayal.TransformChangeEvent)">filter</a></code> in class <code><a href="../../../../../../org.apache.sis.portrayal/org/apache/sis/portrayal/CanvasFollower.html" title="class in org.apache.sis.portrayal">CanvasFollower</a></code></dd> |
| <dt>Parameters:</dt> |
| <dd><code>event</code> - a transform change event that occurred on the source canvas.</dd> |
| <dt>Returns:</dt> |
| <dd>whether to replicate that change on the target canvas.</dd> |
| </dl> |
| </section> |
| </li> |
| <li> |
| <section class="detail" id="transformedSource(org.apache.sis.portrayal.TransformChangeEvent)"> |
| <h3>transformedSource</h3> |
| <div class="member-signature"><span class="modifiers">protected</span> <span class="return-type">void</span> <span class="element-name">transformedSource</span><wbr><span class="parameters">(<a href="../../../../../../org.apache.sis.portrayal/org/apache/sis/portrayal/TransformChangeEvent.html" title="class in org.apache.sis.portrayal">TransformChangeEvent</a> event)</span></div> |
| <div class="block">Invoked after the source "objective to display" transform has been updated. |
| This implementation adjusts the cursor position for compensating the relative change in mouse position. |
| |
| <h4 id="details-heading">Details</h4> |
| If the map moved in the <a href="../../../../../../org.apache.sis.portrayal/org/apache/sis/portrayal/CanvasFollower.html#source">source</a> canvas without a change of mouse cursor position |
| (for example if the user navigates using the keyboard), then the mouse position changed relatively to |
| the map, so the cursor position on the <a href="../../../../../../org.apache.sis.portrayal/org/apache/sis/portrayal/CanvasFollower.html#target">target</a> canvas needs to be updated accordingly. |
| This is a temporary change applied until the next <a href="https://openjfx.io/javadoc/21/javafx.graphics/javafx/scene/input/MouseEvent.html" title="class or interface in javafx.scene.input" class="external-link"><code>MouseEvent</code></a> gives us new mouse coordinates relative |
| to the map.</div> |
| <dl class="notes"> |
| <dt>Overrides:</dt> |
| <dd><code><a href="../../../../../../org.apache.sis.portrayal/org/apache/sis/portrayal/CanvasFollower.html#transformedSource(org.apache.sis.portrayal.TransformChangeEvent)">transformedSource</a></code> in class <code><a href="../../../../../../org.apache.sis.portrayal/org/apache/sis/portrayal/CanvasFollower.html" title="class in org.apache.sis.portrayal">CanvasFollower</a></code></dd> |
| <dt>Parameters:</dt> |
| <dd><code>event</code> - the change which has been applied on the <a href="../../../../../../org.apache.sis.portrayal/org/apache/sis/portrayal/CanvasFollower.html#source">CanvasFollower.source</a> canvas.</dd> |
| </dl> |
| </section> |
| </li> |
| <li> |
| <section class="detail" id="dispose()"> |
| <h3>dispose</h3> |
| <div class="member-signature"><span class="modifiers">public</span> <span class="return-type">void</span> <span class="element-name">dispose</span>()</div> |
| <div class="block">Removes all listeners registered by this <code>GestureFollower</code> instance. |
| This method should be invoked when <code>GestureFollower</code> is no longer needed, |
| in order to avoid memory leak.</div> |
| <dl class="notes"> |
| <dt>Specified by:</dt> |
| <dd><code><a href="../../../../../../org.apache.sis.util/org/apache/sis/util/Disposable.html#dispose()">dispose</a></code> in interface <code><a href="../../../../../../org.apache.sis.util/org/apache/sis/util/Disposable.html" title="interface in org.apache.sis.util">Disposable</a></code></dd> |
| <dt>Overrides:</dt> |
| <dd><code><a href="../../../../../../org.apache.sis.portrayal/org/apache/sis/portrayal/CanvasFollower.html#dispose()">dispose</a></code> in class <code><a href="../../../../../../org.apache.sis.portrayal/org/apache/sis/portrayal/CanvasFollower.html" title="class in org.apache.sis.portrayal">CanvasFollower</a></code></dd> |
| <dt>See Also:</dt> |
| <dd> |
| <ul class="tag-list"> |
| <li><a href="../../../../../../org.apache.sis.portrayal/org/apache/sis/portrayal/CanvasFollower.html#initialize()"><code>CanvasFollower.initialize()</code></a></li> |
| </ul> |
| </dd> |
| </dl> |
| </section> |
| </li> |
| </ul> |
| </section> |
| </li> |
| </ul> |
| </section> |
| <!-- ========= END OF CLASS DATA ========= --> |
| </main> |
| </div> |
| </div> |
| </body> |
| </html> |