Right mouse button doesn't work on the Scene after i've added mouse listener for middle mouse button and i cant rotate the scene using right mouse button now. Left click still works and i can move on the scene.
sceneView.setInteractionListener(new DefaultInteractionListener(sceneView)
{
public void onMousePressed(javafx.scene.input.MouseEvent e)
{
if(e.getButton() == MouseButton.MIDDLE)
{
javafx.geometry.Point2D screenPoint = new javafx.geometry.Point2D(Math.round(e.getX()), Math.round(e.getY()));
com.esri.arcgisruntime.geometry.Point surfacePoint = sceneView.screenToBaseSurface(screenPoint);
JOptionPane.showMessageDialog(null, "Elevation: "+surfacePoint.getZ()+" Longitude: "+surfacePoint.getX()+" Latitude: "+surfacePoint.getY());
}
}
});
Solved! Go to Solution.
You can fix this easily. What has happened is that you've created your own interaction listener and taken over the onMousePressed event with your own logic. What you need to do is pass the event back to the base class onMousePressed event if you are not pressing the middle mouse button. See the "super" addition I've made to your code below:
if(e.getButton() == MouseButton.MIDDLE)
{
javafx.geometry.Point2D screenPoint = new javafx.geometry.Point2D(Math.round(e.getX()), Math.round(e.getY()));
com.esri.arcgisruntime.geometry.Point surfacePoint = sceneView.screenToBaseSurface(screenPoint);
//JOptionPane.showMessageDialog(null, "Elevation: "+surfacePoint.getZ()+" Longitude: "+surfacePoint.getX()+" Latitude: "+surfacePoint.getY());
System.out.println("Elevation: "+surfacePoint.getZ()+" Longitude: "+surfacePoint.getX()+" Latitude: "+surfacePoint.getY());
// consume the event as you don't want any more to happen.
e.consume();
} else {
// let the default listener you've overridden deal with other events
super.onMousePressed(e);
}
You can fix this easily. What has happened is that you've created your own interaction listener and taken over the onMousePressed event with your own logic. What you need to do is pass the event back to the base class onMousePressed event if you are not pressing the middle mouse button. See the "super" addition I've made to your code below:
if(e.getButton() == MouseButton.MIDDLE)
{
javafx.geometry.Point2D screenPoint = new javafx.geometry.Point2D(Math.round(e.getX()), Math.round(e.getY()));
com.esri.arcgisruntime.geometry.Point surfacePoint = sceneView.screenToBaseSurface(screenPoint);
//JOptionPane.showMessageDialog(null, "Elevation: "+surfacePoint.getZ()+" Longitude: "+surfacePoint.getX()+" Latitude: "+surfacePoint.getY());
System.out.println("Elevation: "+surfacePoint.getZ()+" Longitude: "+surfacePoint.getX()+" Latitude: "+surfacePoint.getY());
// consume the event as you don't want any more to happen.
e.consume();
} else {
// let the default listener you've overridden deal with other events
super.onMousePressed(e);
}
Thank you!