Opened 2 years ago
Closed 22 months ago
#22727 closed defect (fixed)
[PATCH] SOE in ImageviewerDialog#addButtonsForImageLayers
Reported by: | GerdP | Owned by: | team |
---|---|---|---|
Priority: | normal | Milestone: | 23.04 |
Component: | Core image mapping | Version: | |
Keywords: | template_report | Cc: |
Description
What steps will reproduce the problem?
- Probably not reproducabile. I was mapping with several layers of geotagged images and clicked on the "next image button" (hotkey is "Page Down").
What is the expected result?
no crash
What happens instead?
Please provide any additional information below. Attach a screenshot if possible.
I think there are other bugs with the dialog, e.g. a deleted image isn't handled as expected. If I got this right these errors were fixed a few weeks ago and then re-introduced with the change for the tabbed images.
Let me know if you need more details.
Relative:URL: ^/trunk Repository:UUID: 0c6e7542-c601-0410-84e7-c038aed88b3b Last:Changed Date: 2023-02-06 19:39:32 +0100 (Mon, 06 Feb 2023) Revision:18649 Build-Date:2023-02-07 02:30:55 URL:https://josm.openstreetmap.de/svn/trunk Identification: JOSM/1.5 (18649 en) Windows 10 64-Bit OS Build number: Windows 10 Home 2009 (19045) Memory Usage: 1513 MB / 1972 MB (324 MB allocated, but free) Java version: 17.0.4+8-LTS, Azul Systems, Inc., OpenJDK 64-Bit Server VM Look and Feel: com.sun.java.swing.plaf.windows.WindowsLookAndFeel Screen: \Display0 1920×1080 (scaling 1.00×1.00) Maximum Screen Size: 1920×1080 Best cursor sizes: 16×16→32×32, 32×32→32×32 System property file.encoding: Cp1252 System property sun.jnu.encoding: Cp1252 Locale info: en_DE Numbers with default locale: 1234567890 -> 1234567890 VM arguments: [-Djpackage.app-version=1.5.18531, --add-modules=java.scripting,java.sql,javafx.controls,javafx.media,javafx.swing,javafx.web, --add-exports=java.base/sun.security.action=ALL-UNNAMED, --add-exports=java.desktop/com.sun.imageio.plugins.jpeg=ALL-UNNAMED, --add-exports=java.desktop/com.sun.imageio.spi=ALL-UNNAMED, --add-opens=java.base/java.lang=ALL-UNNAMED, --add-opens=java.base/java.nio=ALL-UNNAMED, --add-opens=java.base/jdk.internal.loader=ALL-UNNAMED, --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED, --add-opens=java.desktop/javax.imageio.spi=ALL-UNNAMED, --add-opens=java.desktop/javax.swing.text.html=ALL-UNNAMED, --add-opens=java.prefs/java.util.prefs=ALL-UNNAMED, -Djpackage.app-path=%UserProfile%\AppData\Local\JOSM\HWConsole.exe] Dataset consistency test: No problems found Plugins: + OpeningHoursEditor (35924) + RoadSigns (36038) + apache-commons (36034) + buildings_tools (36011) + contourmerge (v0.1.9) + ejml (35924) + geotools (36028) + jackson (36034) + jaxb (35952) + jts (36004) + o5m (35893) + opendata (36025) + pbf (36034) + poly (35976) + reltoolbox (35976) + reverter (36043) + undelete (36011) + utilsplugin2 (36011) Validator rules: + c:\josm\core\resources\data\validator\combinations.mapcss + c:\josm\core\resources\data\validator\geometry.mapcss + c:\josm\core\resources\data\validator\unnecessary.mapcss + d:\java_tools\JOSM\mygeometry.mapcss + https://josm.openstreetmap.de/josmfile?page=Rules/GermanySpecific&zip=1 Last errors/warnings: - 00103.821 E: Failed to locate image 'Flag, Blue' - 00103.822 E: Failed to locate image 'Flag, Blue' - 00103.822 E: Failed to locate image 'Flag, Blue' - 00103.824 E: Failed to locate image 'Flag, Blue' - 00103.825 E: Failed to locate image 'Flag, Blue' - 00103.826 E: Failed to locate image 'Flag, Blue' - 01053.819 E: java.io.FileNotFoundException: F:\osm\bilder\2023-01-31\DSC_3978.JPG (Das System kann die angegebene Datei nicht finden) - 01261.299 W: Unsaved changes - <html>The relation has been changed.<br><br>Do you want to save your changes?</html> - 01360.051 W: org.openstreetmap.josm.data.osm.search.SearchParseError: Unexpected token: <equals> - 06170.839 E: Handled by bug report queue: java.lang.StackOverflowError === REPORTED CRASH DATA === BugReportExceptionHandler#handleException: No data collected. Warning issued by: BugReportExceptionHandler#handleException === STACK TRACE === Thread: AWT-EventQueue-0 (23) of main java.lang.StackOverflowError at java.desktop/javax.swing.UIDefaults.getFromHashtable(Unknown Source) at java.desktop/javax.swing.UIDefaults.get(Unknown Source) at java.desktop/javax.swing.MultiUIDefaults.get(Unknown Source) at java.desktop/javax.swing.UIDefaults.getInt(Unknown Source) at java.desktop/javax.swing.UIManager.getInt(Unknown Source) at java.desktop/javax.swing.plaf.basic.BasicButtonUI.installDefaults(Unknown Source) at java.desktop/com.sun.java.swing.plaf.windows.WindowsButtonUI.installDefaults(Unknown Source) at java.desktop/javax.swing.plaf.basic.BasicButtonUI.installUI(Unknown Source) at java.desktop/javax.swing.JComponent.setUI(Unknown Source) at java.desktop/javax.swing.AbstractButton.setUI(Unknown Source) at java.desktop/javax.swing.JButton.updateUI(Unknown Source) at java.desktop/javax.swing.AbstractButton.init(Unknown Source) at java.desktop/javax.swing.JButton.<init>(Unknown Source) at java.desktop/javax.swing.JButton.<init>(Unknown Source) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog$CloseableTab.<init>(ImageViewerDialog.java:699) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.addButtonsForImageLayers(ImageViewerDialog.java:314) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.updateLayers(ImageViewerDialog.java:273) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.displayImages(ImageViewerDialog.java:873) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog$MoveImgDisplayPanel.setVisible(ImageViewerDialog.java:753) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.lambda$addButtonsForImageLayers$18(ImageViewerDialog.java:342) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) at java.base/java.util.stream.IntPipeline$1$1.accept(Unknown Source) at java.base/java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Unknown Source) at java.base/java.util.Spliterator$OfInt.forEachRemaining(Unknown Source) at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.addButtonsForImageLayers(ImageViewerDialog.java:342) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.updateLayers(ImageViewerDialog.java:273) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.displayImages(ImageViewerDialog.java:873) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog$MoveImgDisplayPanel.setVisible(ImageViewerDialog.java:753) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.lambda$addButtonsForImageLayers$18(ImageViewerDialog.java:342) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) at java.base/java.util.stream.IntPipeline$1$1.accept(Unknown Source) at java.base/java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Unknown Source) at java.base/java.util.Spliterator$OfInt.forEachRemaining(Unknown Source) at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.addButtonsForImageLayers(ImageViewerDialog.java:342) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.updateLayers(ImageViewerDialog.java:273) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.displayImages(ImageViewerDialog.java:873) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog$MoveImgDisplayPanel.setVisible(ImageViewerDialog.java:753) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.lambda$addButtonsForImageLayers$18(ImageViewerDialog.java:342) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) at java.base/java.util.stream.IntPipeline$1$1.accept(Unknown Source) at java.base/java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Unknown Source) at java.base/java.util.Spliterator$OfInt.forEachRemaining(Unknown Source) at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.addButtonsForImageLayers(ImageViewerDialog.java:342) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.updateLayers(ImageViewerDialog.java:273) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.displayImages(ImageViewerDialog.java:873) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog$MoveImgDisplayPanel.setVisible(ImageViewerDialog.java:753) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.lambda$addButtonsForImageLayers$18(ImageViewerDialog.java:342) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) at java.base/java.util.stream.IntPipeline$1$1.accept(Unknown Source) at java.base/java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Unknown Source) at java.base/java.util.Spliterator$OfInt.forEachRemaining(Unknown Source) at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.addButtonsForImageLayers(ImageViewerDialog.java:342) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.updateLayers(ImageViewerDialog.java:273) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.displayImages(ImageViewerDialog.java:873) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog$MoveImgDisplayPanel.setVisible(ImageViewerDialog.java:753) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.lambda$addButtonsForImageLayers$18(ImageViewerDialog.java:342) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) at java.base/java.util.stream.IntPipeline$1$1.accept(Unknown Source) at java.base/java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Unknown Source) at java.base/java.util.Spliterator$OfInt.forEachRemaining(Unknown Source) at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.addButtonsForImageLayers(ImageViewerDialog.java:342) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.updateLayers(ImageViewerDialog.java:273) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.displayImages(ImageViewerDialog.java:873) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog$MoveImgDisplayPanel.setVisible(ImageViewerDialog.java:753) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.lambda$addButtonsForImageLayers$18(ImageViewerDialog.java:342) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) at java.base/java.util.stream.IntPipeline$1$1.accept(Unknown Source) at java.base/java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Unknown Source) at java.base/java.util.Spliterator$OfInt.forEachRemaining(Unknown Source) at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.addButtonsForImageLayers(ImageViewerDialog.java:342) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.updateLayers(ImageViewerDialog.java:273) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.displayImages(ImageViewerDialog.java:873) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog$MoveImgDisplayPanel.setVisible(ImageViewerDialog.java:753) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.lambda$addButtonsForImageLayers$18(ImageViewerDialog.java:342) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) at java.base/java.util.stream.IntPipeline$1$1.accept(Unknown Source) at java.base/java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Unknown Source) at java.base/java.util.Spliterator$OfInt.forEachRemaining(Unknown Source) at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.addButtonsForImageLayers(ImageViewerDialog.java:342) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.updateLayers(ImageViewerDialog.java:273) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.displayImages(ImageViewerDialog.java:873) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog$MoveImgDisplayPanel.setVisible(ImageViewerDialog.java:753) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.lambda$addButtonsForImageLayers$18(ImageViewerDialog.java:342) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) at java.base/java.util.stream.IntPipeline$1$1.accept(Unknown Source) at java.base/java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Unknown Source) at java.base/java.util.Spliterator$OfInt.forEachRemaining(Unknown Source) at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.addButtonsForImageLayers(ImageViewerDialog.java:342) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.updateLayers(ImageViewerDialog.java:273) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.displayImages(ImageViewerDialog.java:873) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog$MoveImgDisplayPanel.setVisible(ImageViewerDialog.java:753) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.lambda$addButtonsForImageLayers$18(ImageViewerDialog.java:342) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) at java.base/java.util.stream.IntPipeline$1$1.accept(Unknown Source) at java.base/java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Unknown Source) at java.base/java.util.Spliterator$OfInt.forEachRemaining(Unknown Source) at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.addButtonsForImageLayers(ImageViewerDialog.java:342) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.updateLayers(ImageViewerDialog.java:273) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.displayImages(ImageViewerDialog.java:873) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog$MoveImgDisplayPanel.setVisible(ImageViewerDialog.java:753) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.lambda$addButtonsForImageLayers$18(ImageViewerDialog.java:342) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) at java.base/java.util.stream.IntPipeline$1$1.accept(Unknown Source) at java.base/java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Unknown Source) at java.base/java.util.Spliterator$OfInt.forEachRemaining(Unknown Source) at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.addButtonsForImageLayers(ImageViewerDialog.java:342) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.updateLayers(ImageViewerDialog.java:273) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.displayImages(ImageViewerDialog.java:873) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog$MoveImgDisplayPanel.setVisible(ImageViewerDialog.java:753) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.lambda$addButtonsForImageLayers$18(ImageViewerDialog.java:342) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) at java.base/java.util.stream.IntPipeline$1$1.accept(Unknown Source) at java.base/java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Unknown Source) at java.base/java.util.Spliterator$OfInt.forEachRemaining(Unknown Source) at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.addButtonsForImageLayers(ImageViewerDialog.java:342) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.updateLayers(ImageViewerDialog.java:273) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.displayImages(ImageViewerDialog.java:873) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog$MoveImgDisplayPanel.setVisible(ImageViewerDialog.java:753) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.lambda$addButtonsForImageLayers$18(ImageViewerDialog.java:342) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) at java.base/java.util.stream.IntPipeline$1$1.accept(Unknown Source) at java.base/java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Unknown Source) at java.base/java.util.Spliterator$OfInt.forEachRemaining(Unknown Source) at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.addButtonsForImageLayers(ImageViewerDialog.java:342) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.updateLayers(ImageViewerDialog.java:273) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.displayImages(ImageViewerDialog.java:873) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog$MoveImgDisplayPanel.setVisible(ImageViewerDialog.java:753) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.lambda$addButtonsForImageLayers$18(ImageViewerDialog.java:342) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) at java.base/java.util.stream.IntPipeline$1$1.accept(Unknown Source) at java.base/java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Unknown Source) at java.base/java.util.Spliterator$OfInt.forEachRemaining(Unknown Source) at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.addButtonsForImageLayers(ImageViewerDialog.java:342) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.updateLayers(ImageViewerDialog.java:273) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.displayImages(ImageViewerDialog.java:873) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog$MoveImgDisplayPanel.setVisible(ImageViewerDialog.java:753) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.lambda$addButtonsForImageLayers$18(ImageViewerDialog.java:342) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) at java.base/java.util.stream.IntPipeline$1$1.accept(Unknown Source) at java.base/java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Unknown Source) at java.base/java.util.Spliterator$OfInt.forEachRemaining(Unknown Source) at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.addButtonsForImageLayers(ImageViewerDialog.java:342) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.updateLayers(ImageViewerDialog.java:273) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.displayImages(ImageViewerDialog.java:873) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog$MoveImgDisplayPanel.setVisible(ImageViewerDialog.java:753) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.lambda$addButtonsForImageLayers$18(ImageViewerDialog.java:342) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) at java.base/java.util.stream.IntPipeline$1$1.accept(Unknown Source) at java.base/java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Unknown Source) at java.base/java.util.Spliterator$OfInt.forEachRemaining(Unknown Source) at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.addButtonsForImageLayers(ImageViewerDialog.java:342) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.updateLayers(ImageViewerDialog.java:273) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.displayImages(ImageViewerDialog.java:873) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog$MoveImgDisplayPanel.setVisible(ImageViewerDialog.java:753) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.lambda$addButtonsForImageLayers$18(ImageViewerDialog.java:342) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) at java.base/java.util.stream.IntPipeline$1$1.accept(Unknown Source) at java.base/java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Unknown Source) at java.base/java.util.Spliterator$OfInt.forEachRemaining(Unknown Source) at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.addButtonsForImageLayers(ImageViewerDialog.java:342) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.updateLayers(ImageViewerDialog.java:273) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.displayImages(ImageViewerDialog.java:873) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog$MoveImgDisplayPanel.setVisible(ImageViewerDialog.java:753) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.lambda$addButtonsForImageLayers$18(ImageViewerDialog.java:342) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) at java.base/java.util.stream.IntPipeline$1$1.accept(Unknown Source) at java.base/java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Unknown Source) at java.base/java.util.Spliterator$OfInt.forEachRemaining(Unknown Source) at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.addButtonsForImageLayers(ImageViewerDialog.java:342) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.updateLayers(ImageViewerDialog.java:273) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.displayImages(ImageViewerDialog.java:873) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog$MoveImgDisplayPanel.setVisible(ImageViewerDialog.java:753) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.lambda$addButtonsForImageLayers$18(ImageViewerDialog.java:342) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) at java.base/java.util.stream.IntPipeline$1$1.accept(Unknown Source) at java.base/java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Unknown Source) at java.base/java.util.Spliterator$OfInt.forEachRemaining(Unknown Source) at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.addButtonsForImageLayers(ImageViewerDialog.java:342) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.updateLayers(ImageViewerDialog.java:273) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.displayImages(ImageViewerDialog.java:873) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog$MoveImgDisplayPanel.setVisible(ImageViewerDialog.java:753) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.lambda$addButtonsForImageLayers$18(ImageViewerDialog.java:342) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) at java.base/java.util.stream.IntPipeline$1$1.accept(Unknown Source) at java.base/java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Unknown Source) at java.base/java.util.Spliterator$OfInt.forEachRemaining(Unknown Source) at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.addButtonsForImageLayers(ImageViewerDialog.java:342) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.updateLayers(ImageViewerDialog.java:273) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.displayImages(ImageViewerDialog.java:873) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog$MoveImgDisplayPanel.setVisible(ImageViewerDialog.java:753) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.lambda$addButtonsForImageLayers$18(ImageViewerDialog.java:342) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) at java.base/java.util.stream.IntPipeline$1$1.accept(Unknown Source) at java.base/java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Unknown Source) at java.base/java.util.Spliterator$OfInt.forEachRemaining(Unknown Source) at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.addButtonsForImageLayers(ImageViewerDialog.java:342) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.updateLayers(ImageViewerDialog.java:273) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.displayImages(ImageViewerDialog.java:873) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog$MoveImgDisplayPanel.setVisible(ImageViewerDialog.java:753) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.lambda$addButtonsForImageLayers$18(ImageViewerDialog.java:342) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) at java.base/java.util.stream.IntPipeline$1$1.accept(Unknown Source) at java.base/java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Unknown Source) at java.base/java.util.Spliterator$OfInt.forEachRemaining(Unknown Source) at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.addButtonsForImageLayers(ImageViewerDialog.java:342) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.updateLayers(ImageViewerDialog.java:273) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.displayImages(ImageViewerDialog.java:873) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog$MoveImgDisplayPanel.setVisible(ImageViewerDialog.java:753) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.lambda$addButtonsForImageLayers$18(ImageViewerDialog.java:342) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) at java.base/java.util.stream.IntPipeline$1$1.accept(Unknown Source) at java.base/java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Unknown Source) at java.base/java.util.Spliterator$OfInt.forEachRemaining(Unknown Source) at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.addButtonsForImageLayers(ImageViewerDialog.java:342) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.updateLayers(ImageViewerDialog.java:273) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.displayImages(ImageViewerDialog.java:873) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog$MoveImgDisplayPanel.setVisible(ImageViewerDialog.java:753) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.lambda$addButtonsForImageLayers$18(ImageViewerDialog.java:342) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) at java.base/java.util.stream.IntPipeline$1$1.accept(Unknown Source) at java.base/java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Unknown Source) at java.base/java.util.Spliterator$OfInt.forEachRemaining(Unknown Source) at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.addButtonsForImageLayers(ImageViewerDialog.java:342) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.updateLayers(ImageViewerDialog.java:273) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.displayImages(ImageViewerDialog.java:873) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog$MoveImgDisplayPanel.setVisible(ImageViewerDialog.java:753) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.lambda$addButtonsForImageLayers$18(ImageViewerDialog.java:342) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) at java.base/java.util.stream.IntPipeline$1$1.accept(Unknown Source) at java.base/java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Unknown Source) at java.base/java.util.Spliterator$OfInt.forEachRemaining(Unknown Source) at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.addButtonsForImageLayers(ImageViewerDialog.java:342) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.updateLayers(ImageViewerDialog.java:273) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.displayImages(ImageViewerDialog.java:873) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog$MoveImgDisplayPanel.setVisible(ImageViewerDialog.java:753) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.lambda$addButtonsForImageLayers$18(ImageViewerDialog.java:342) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) at java.base/java.util.stream.IntPipeline$1$1.accept(Unknown Source) at java.base/java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Unknown Source) at java.base/java.util.Spliterator$OfInt.forEachRemaining(Unknown Source) at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.addButtonsForImageLayers(ImageViewerDialog.java:342) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.updateLayers(ImageViewerDialog.java:273) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.displayImages(ImageViewerDialog.java:873) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog$MoveImgDisplayPanel.setVisible(ImageViewerDialog.java:753) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.lambda$addButtonsForImageLayers$18(ImageViewerDialog.java:342) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) at java.base/java.util.stream.IntPipeline$1$1.accept(Unknown Source) at java.base/java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Unknown Source) at java.base/java.util.Spliterator$OfInt.forEachRemaining(Unknown Source) at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.addButtonsForImageLayers(ImageViewerDialog.java:342) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.updateLayers(ImageViewerDialog.java:273) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.displayImages(ImageViewerDialog.java:873) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog$MoveImgDisplayPanel.setVisible(ImageViewerDialog.java:753) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.lambda$addButtonsForImageLayers$18(ImageViewerDialog.java:342) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) at java.base/java.util.stream.IntPipeline$1$1.accept(Unknown Source) at java.base/java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Unknown Source) at java.base/java.util.Spliterator$OfInt.forEachRemaining(Unknown Source) at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.addButtonsForImageLayers(ImageViewerDialog.java:342) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.updateLayers(ImageViewerDialog.java:273) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.displayImages(ImageViewerDialog.java:873) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog$MoveImgDisplayPanel.setVisible(ImageViewerDialog.java:753) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.lambda$addButtonsForImageLayers$18(ImageViewerDialog.java:342) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) at java.base/java.util.stream.IntPipeline$1$1.accept(Unknown Source) at java.base/java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Unknown Source) at java.base/java.util.Spliterator$OfInt.forEachRemaining(Unknown Source) at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.addButtonsForImageLayers(ImageViewerDialog.java:342) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.updateLayers(ImageViewerDialog.java:273) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.displayImages(ImageViewerDialog.java:873) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog$MoveImgDisplayPanel.setVisible(ImageViewerDialog.java:753) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.lambda$addButtonsForImageLayers$18(ImageViewerDialog.java:342) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) at java.base/java.util.stream.IntPipeline$1$1.accept(Unknown Source) at java.base/java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Unknown Source) at java.base/java.util.Spliterator$OfInt.forEachRemaining(Unknown Source) at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.addButtonsForImageLayers(ImageViewerDialog.java:342) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.updateLayers(ImageViewerDialog.java:273) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.displayImages(ImageViewerDialog.java:873) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog$MoveImgDisplayPanel.setVisible(ImageViewerDialog.java:753) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.lambda$addButtonsForImageLayers$18(ImageViewerDialog.java:342) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) at java.base/java.util.stream.IntPipeline$1$1.accept(Unknown Source) at java.base/java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Unknown Source) at java.base/java.util.Spliterator$OfInt.forEachRemaining(Unknown Source) at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.addButtonsForImageLayers(ImageViewerDialog.java:342) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.updateLayers(ImageViewerDialog.java:273) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.displayImages(ImageViewerDialog.java:873) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog$MoveImgDisplayPanel.setVisible(ImageViewerDialog.java:753) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.lambda$addButtonsForImageLayers$18(ImageViewerDialog.java:342) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) at java.base/java.util.stream.IntPipeline$1$1.accept(Unknown Source) at java.base/java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Unknown Source) at java.base/java.util.Spliterator$OfInt.forEachRemaining(Unknown Source) at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.addButtonsForImageLayers(ImageViewerDialog.java:342) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.updateLayers(ImageViewerDialog.java:273) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.displayImages(ImageViewerDialog.java:873) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog$MoveImgDisplayPanel.setVisible(ImageViewerDialog.java:753) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.lambda$addButtonsForImageLayers$18(ImageViewerDialog.java:342) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) at java.base/java.util.stream.IntPipeline$1$1.accept(Unknown Source) at java.base/java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Unknown Source) at java.base/java.util.Spliterator$OfInt.forEachRemaining(Unknown Source) at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.addButtonsForImageLayers(ImageViewerDialog.java:342) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.updateLayers(ImageViewerDialog.java:273) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.displayImages(ImageViewerDialog.java:873) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog$MoveImgDisplayPanel.setVisible(ImageViewerDialog.java:753) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.lambda$addButtonsForImageLayers$18(ImageViewerDialog.java:342) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) at java.base/java.util.stream.IntPipeline$1$1.accept(Unknown Source) at java.base/java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Unknown Source) at java.base/java.util.Spliterator$OfInt.forEachRemaining(Unknown Source) at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.addButtonsForImageLayers(ImageViewerDialog.java:342) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.updateLayers(ImageViewerDialog.java:273) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.displayImages(ImageViewerDialog.java:873) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog$MoveImgDisplayPanel.setVisible(ImageViewerDialog.java:753) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.lambda$addButtonsForImageLayers$18(ImageViewerDialog.java:342) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) at java.base/java.util.stream.IntPipeline$1$1.accept(Unknown Source) at java.base/java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Unknown Source) at java.base/java.util.Spliterator$OfInt.forEachRemaining(Unknown Source) at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.addButtonsForImageLayers(ImageViewerDialog.java:342) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.updateLayers(ImageViewerDialog.java:273) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.displayImages(ImageViewerDialog.java:873) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog$MoveImgDisplayPanel.setVisible(ImageViewerDialog.java:753) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.lambda$addButtonsForImageLayers$18(ImageViewerDialog.java:342) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) at java.base/java.util.stream.IntPipeline$1$1.accept(Unknown Source) at java.base/java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Unknown Source) at java.base/java.util.Spliterator$OfInt.forEachRemaining(Unknown Source) at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.addButtonsForImageLayers(ImageViewerDialog.java:342) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.updateLayers(ImageViewerDialog.java:273) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.displayImages(ImageViewerDialog.java:873) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog$MoveImgDisplayPanel.setVisible(ImageViewerDialog.java:753) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.lambda$addButtonsForImageLayers$18(ImageViewerDialog.java:342) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) at java.base/java.util.stream.IntPipeline$1$1.accept(Unknown Source) at java.base/java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Unknown Source) at java.base/java.util.Spliterator$OfInt.forEachRemaining(Unknown Source) at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.addButtonsForImageLayers(ImageViewerDialog.java:342) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.updateLayers(ImageViewerDialog.java:273) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.displayImages(ImageViewerDialog.java:873) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog$MoveImgDisplayPanel.setVisible(ImageViewerDialog.java:753) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.lambda$addButtonsForImageLayers$18(ImageViewerDialog.java:342) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) at java.base/java.util.stream.IntPipeline$1$1.accept(Unknown Source) at java.base/java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Unknown Source) at java.base/java.util.Spliterator$OfInt.forEachRemaining(Unknown Source) at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.addButtonsForImageLayers(ImageViewerDialog.java:342) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.updateLayers(ImageViewerDialog.java:273) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.displayImages(ImageViewerDialog.java:873) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog$MoveImgDisplayPanel.setVisible(ImageViewerDialog.java:753) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.lambda$addButtonsForImageLayers$18(ImageViewerDialog.java:342) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) at java.base/java.util.stream.IntPipeline$1$1.accept(Unknown Source) at java.base/java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Unknown Source) at java.base/java.util.Spliterator$OfInt.forEachRemaining(Unknown Source) at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.addButtonsForImageLayers(ImageViewerDialog.java:342) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.updateLayers(ImageViewerDialog.java:273) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.displayImages(ImageViewerDialog.java:873) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog$MoveImgDisplayPanel.setVisible(ImageViewerDialog.java:753) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.lambda$addButtonsForImageLayers$18(ImageViewerDialog.java:342) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) at java.base/java.util.stream.IntPipeline$1$1.accept(Unknown Source) at java.base/java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Unknown Source) at java.base/java.util.Spliterator$OfInt.forEachRemaining(Unknown Source) at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.addButtonsForImageLayers(ImageViewerDialog.java:342) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.updateLayers(ImageViewerDialog.java:273) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.displayImages(ImageViewerDialog.java:873) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog$MoveImgDisplayPanel.setVisible(ImageViewerDialog.java:753) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.lambda$addButtonsForImageLayers$18(ImageViewerDialog.java:342) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) at java.base/java.util.stream.IntPipeline$1$1.accept(Unknown Source) at java.base/java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Unknown Source) at java.base/java.util.Spliterator$OfInt.forEachRemaining(Unknown Source) at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.addButtonsForImageLayers(ImageViewerDialog.java:342) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.updateLayers(ImageViewerDialog.java:273) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.displayImages(ImageViewerDialog.java:873) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog$MoveImgDisplayPanel.setVisible(ImageViewerDialog.java:753) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.lambda$addButtonsForImageLayers$18(ImageViewerDialog.java:342) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) at java.base/java.util.stream.IntPipeline$1$1.accept(Unknown Source) at java.base/java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Unknown Source) at java.base/java.util.Spliterator$OfInt.forEachRemaining(Unknown Source) at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.addButtonsForImageLayers(ImageViewerDialog.java:342) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.updateLayers(ImageViewerDialog.java:273) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.displayImages(ImageViewerDialog.java:873) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog$MoveImgDisplayPanel.setVisible(ImageViewerDialog.java:753) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.lambda$addButtonsForImageLayers$18(ImageViewerDialog.java:342) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) at java.base/java.util.stream.IntPipeline$1$1.accept(Unknown Source) at java.base/java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Unknown Source) at java.base/java.util.Spliterator$OfInt.forEachRemaining(Unknown Source) at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.addButtonsForImageLayers(ImageViewerDialog.java:342) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.updateLayers(ImageViewerDialog.java:273) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.displayImages(ImageViewerDialog.java:873) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog$MoveImgDisplayPanel.setVisible(ImageViewerDialog.java:753) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.lambda$addButtonsForImageLayers$18(ImageViewerDialog.java:342) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) at java.base/java.util.stream.IntPipeline$1$1.accept(Unknown Source) at java.base/java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Unknown Source) at java.base/java.util.Spliterator$OfInt.forEachRemaining(Unknown Source) at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.addButtonsForImageLayers(ImageViewerDialog.java:342) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.updateLayers(ImageViewerDialog.java:273) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.displayImages(ImageViewerDialog.java:873) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog$MoveImgDisplayPanel.setVisible(ImageViewerDialog.java:753) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.lambda$addButtonsForImageLayers$18(ImageViewerDialog.java:342) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) at java.base/java.util.stream.IntPipeline$1$1.accept(Unknown Source) at java.base/java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Unknown Source) at java.base/java.util.Spliterator$OfInt.forEachRemaining(Unknown Source) at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.addButtonsForImageLayers(ImageViewerDialog.java:342) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.updateLayers(ImageViewerDialog.java:273) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.displayImages(ImageViewerDialog.java:873) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog$MoveImgDisplayPanel.setVisible(ImageViewerDialog.java:753) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.lambda$addButtonsForImageLayers$18(ImageViewerDialog.java:342) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) at java.base/java.util.stream.IntPipeline$1$1.accept(Unknown Source) at java.base/java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Unknown Source) at java.base/java.util.Spliterator$OfInt.forEachRemaining(Unknown Source) at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.addButtonsForImageLayers(ImageViewerDialog.java:342) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.updateLayers(ImageViewerDialog.java:273) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.displayImages(ImageViewerDialog.java:873) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog$MoveImgDisplayPanel.setVisible(ImageViewerDialog.java:753) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.lambda$addButtonsForImageLayers$18(ImageViewerDialog.java:342) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) at java.base/java.util.stream.IntPipeline$1$1.accept(Unknown Source) at java.base/java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Unknown Source) at java.base/java.util.Spliterator$OfInt.forEachRemaining(Unknown Source) at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.addButtonsForImageLayers(ImageViewerDialog.java:342) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.updateLayers(ImageViewerDialog.java:273) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.displayImages(ImageViewerDialog.java:873) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog$MoveImgDisplayPanel.setVisible(ImageViewerDialog.java:753) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.lambda$addButtonsForImageLayers$18(ImageViewerDialog.java:342) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) at java.base/java.util.stream.IntPipeline$1$1.accept(Unknown Source) at java.base/java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Unknown Source) at java.base/java.util.Spliterator$OfInt.forEachRemaining(Unknown Source) at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.addButtonsForImageLayers(ImageViewerDialog.java:342) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.updateLayers(ImageViewerDialog.java:273) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.displayImages(ImageViewerDialog.java:873) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog$MoveImgDisplayPanel.setVisible(ImageViewerDialog.java:753) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.lambda$addButtonsForImageLayers$18(ImageViewerDialog.java:342) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) at java.base/java.util.stream.IntPipeline$1$1.accept(Unknown Source) at java.base/java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Unknown Source) at java.base/java.util.Spliterator$OfInt.forEachRemaining(Unknown Source) at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.addButtonsForImageLayers(ImageViewerDialog.java:342) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.updateLayers(ImageViewerDialog.java:273) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.displayImages(ImageViewerDialog.java:873) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog$MoveImgDisplayPanel.setVisible(ImageViewerDialog.java:753) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.lambda$addButtonsForImageLayers$18(ImageViewerDialog.java:342) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) at java.base/java.util.stream.IntPipeline$1$1.accept(Unknown Source) at java.base/java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Unknown Source) at java.base/java.util.Spliterator$OfInt.forEachRemaining(Unknown Source) at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.addButtonsForImageLayers(ImageViewerDialog.java:342) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.updateLayers(ImageViewerDialog.java:273) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.displayImages(ImageViewerDialog.java:873) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog$MoveImgDisplayPanel.setVisible(ImageViewerDialog.java:753) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.lambda$addButtonsForImageLayers$18(ImageViewerDialog.java:342) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) at java.base/java.util.stream.IntPipeline$1$1.accept(Unknown Source) at java.base/java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Unknown Source) at java.base/java.util.Spliterator$OfInt.forEachRemaining(Unknown Source) at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.addButtonsForImageLayers(ImageViewerDialog.java:342) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.updateLayers(ImageViewerDialog.java:273) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.displayImages(ImageViewerDialog.java:873) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog$MoveImgDisplayPanel.setVisible(ImageViewerDialog.java:753) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.lambda$addButtonsForImageLayers$18(ImageViewerDialog.java:342) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) at java.base/java.util.stream.IntPipeline$1$1.accept(Unknown Source) at java.base/java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Unknown Source) at java.base/java.util.Spliterator$OfInt.forEachRemaining(Unknown Source) at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.addButtonsForImageLayers(ImageViewerDialog.java:342) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.updateLayers(ImageViewerDialog.java:273) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.displayImages(ImageViewerDialog.java:873) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog$MoveImgDisplayPanel.setVisible(ImageViewerDialog.java:753) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.lambda$addButtonsForImageLayers$18(ImageViewerDialog.java:342) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) at java.base/java.util.stream.IntPipeline$1$1.accept(Unknown Source) at java.base/java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Unknown Source) at java.base/java.util.Spliterator$OfInt.forEachRemaining(Unknown Source) at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.addButtonsForImageLayers(ImageViewerDialog.java:342) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.updateLayers(ImageViewerDialog.java:273) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.displayImages(ImageViewerDialog.java:873) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog$MoveImgDisplayPanel.setVisible(ImageViewerDialog.java:753) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.lambda$addButtonsForImageLayers$18(ImageViewerDialog.java:342) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) at java.base/java.util.stream.IntPipeline$1$1.accept(Unknown Source) at java.base/java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Unknown Source) at java.base/java.util.Spliterator$OfInt.forEachRemaining(Unknown Source) at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.addButtonsForImageLayers(ImageViewerDialog.java:342) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.updateLayers(ImageViewerDialog.java:273) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.displayImages(ImageViewerDialog.java:873) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog$MoveImgDisplayPanel.setVisible(ImageViewerDialog.java:753) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.lambda$addButtonsForImageLayers$18(ImageViewerDialog.java:342) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) at java.base/java.util.stream.IntPipeline$1$1.accept(Unknown Source) at java.base/java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Unknown Source) at java.base/java.util.Spliterator$OfInt.forEachRemaining(Unknown Source) at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.addButtonsForImageLayers(ImageViewerDialog.java:342) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.updateLayers(ImageViewerDialog.java:273) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.displayImages(ImageViewerDialog.java:873) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog$MoveImgDisplayPanel.setVisible(ImageViewerDialog.java:753) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.lambda$addButtonsForImageLayers$18(ImageViewerDialog.java:342) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) at java.base/java.util.stream.IntPipeline$1$1.accept(Unknown Source) at java.base/java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Unknown Source) at java.base/java.util.Spliterator$OfInt.forEachRemaining(Unknown Source) at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.addButtonsForImageLayers(ImageViewerDialog.java:342) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.updateLayers(ImageViewerDialog.java:273) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.displayImages(ImageViewerDialog.java:873) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog$MoveImgDisplayPanel.setVisible(ImageViewerDialog.java:753) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.lambda$addButtonsForImageLayers$18(ImageViewerDialog.java:342) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) at java.base/java.util.stream.IntPipeline$1$1.accept(Unknown Source) at java.base/java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Unknown Source) at java.base/java.util.Spliterator$OfInt.forEachRemaining(Unknown Source) at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.addButtonsForImageLayers(ImageViewerDialog.java:342) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.updateLayers(ImageViewerDialog.java:273) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.displayImages(ImageViewerDialog.java:873) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog$MoveImgDisplayPanel.setVisible(ImageViewerDialog.java:753) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.lambda$addButtonsForImageLayers$18(ImageViewerDialog.java:342) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) at java.base/java.util.stream.IntPipeline$1$1.accept(Unknown Source) at java.base/java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Unknown Source) at java.base/java.util.Spliterator$OfInt.forEachRemaining(Unknown Source) at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.addButtonsForImageLayers(ImageViewerDialog.java:342) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.updateLayers(ImageViewerDialog.java:273) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.displayImages(ImageViewerDialog.java:873) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog$MoveImgDisplayPanel.setVisible(ImageViewerDialog.java:753) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.lambda$addButtonsForImageLayers$18(ImageViewerDialog.java:342) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) at java.base/java.util.stream.IntPipeline$1$1.accept(Unknown Source) at java.base/java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Unknown Source) at java.base/java.util.Spliterator$OfInt.forEachRemaining(Unknown Source) at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.addButtonsForImageLayers(ImageViewerDialog.java:342) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.updateLayers(ImageViewerDialog.java:273) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.displayImages(ImageViewerDialog.java:873) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog$MoveImgDisplayPanel.setVisible(ImageViewerDialog.java:753) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.lambda$addButtonsForImageLayers$18(ImageViewerDialog.java:342) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) at java.base/java.util.stream.IntPipeline$1$1.accept(Unknown Source) at java.base/java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Unknown Source) at java.base/java.util.Spliterator$OfInt.forEachRemaining(Unknown Source) at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.addButtonsForImageLayers(ImageViewerDialog.java:342) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.updateLayers(ImageViewerDialog.java:273) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.displayImages(ImageViewerDialog.java:873) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog$MoveImgDisplayPanel.setVisible(ImageViewerDialog.java:753) at org.openstreetmap.josm.gui.layer.geoimage.ImageViewerDialog.lambda$addButtonsForImageLayers$18(ImageViewerDialog.java:342) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source)
Attachments (3)
Change History (17)
by , 2 years ago
Attachment: | josmbug.JPG added |
---|
follow-up: 5 comment:1 by , 2 years ago
comment:2 by , 2 years ago
Don't know if this is important: I have a *.joz file with one GPX layer and one geoimage layer for each "OSM cycling day" in the last 6 months or so, probably +50 for each, a few background image layers. I load this file before I start editing. I can upload the *.joz file if that helps.
comment:3 by , 2 years ago
Component: | Core → Core image mapping |
---|
comment:5 by , 23 months ago
Milestone: | → 23.04 |
---|---|
Summary: | Crash report after clicking on "next image button" → [PATCH] SOE in ImageviewerDialog#addButtonsForImageLayers |
Replying to stoecker:
I think the mutex style finishedAddingButtons handling as bit naive and prone to race conditions.
I probably ought to move it over to a lock, and just use that. TBH, I should have done that in the first place.
by , 23 months ago
Attachment: | 22727.patch added |
---|
comment:6 by , 23 months ago
I have the feeling that's not enough, as the last setVisable line still is outside the lock and I think that's the reason of above loop, but it's already 6 weeks I looked at this.
comment:7 by , 23 months ago
I assume you are talking about
// After that, trigger the visibility set code this.getImageTabs().forEach(m -> m.setVisible(m.isVisible()));
The whole point of the boolean finishedAddingButtons
was to keep specific parts of setVisible
from being called until everything was ready. That is why it (still) needs the other lock
/unlock
calls.
So that line of code should be called without any locks, as the setVisible
call does a lock internally, which should prevent infinite recursion (due to the !this.finishedAddingButtons.isLocked()
check).
comment:8 by , 23 months ago
Yes, I know. But when I checked the code there was a way that this looped nevertheless and the loop went through this last line. So only replacing the variable by a lock probably wont help. There must be something else which is wrong (i.e. another place where the lock is missing :-)
comment:9 by , 23 months ago
Probably L285. Regardless, it shouldn't be an issue anymore, since I didn't do a straight replacement of the boolean
. The code that causes the recursion performs a lock -- the other locks are there to avoid
if (visible && !this.finishedAddingButtons.isLocked()) { this.finishedAddingButtons.lock(); try { // Actual logic } finally { this.finishedAddingButtons.unlock(); }
Usages of the problematic setVisible
in our code:
- L285 (
selected.setVisible(selected.isVisible())
) -- this should only be called when there are no locks present, and is supposed to ensure that theimgDisplay
has the correct parent (since we currently only have one for memory reasons). - L349 (
this.getImageTabs().forEach(m -> m.setVisible(m.isVisible()))
) -- this is also supposed to be called after construction is finished (no locks present).
With that said, I'll look through the JDK code to see if there is an event fired that we can listen for.
follow-up: 11 comment:10 by , 23 months ago
Shouldn't...
print("This line should never be reached\n");
...
This line should never be reached
...
Aaah. Why? ;-)
by , 23 months ago
Attachment: | 22727.2.patch added |
---|
Move title and imgDisplay reparenting code into its own method (from setVisible) and call that method when the selection model for the JTabbedPane changes
comment:11 by , 23 months ago
Replying to stoecker:
Shouldn't...
print("This line should never be reached\n");
...
This line should never be reached
...
Aaah. Why? ;-)
I feel like I'm missing something here. I've made similar comments elsewhere when all other cases are exhausted, or an Exception cannot be thrown (example: try {new ByteArrayInputStream("".getBytes(StandardCharsets.UTF_8)).close();} catch (IOException impossible) { throw new JosmRuntimeException(impossible); /* This should never be hit */ }
).
follow-up: 13 comment:12 by , 23 months ago
Well, I came across a lot of software where the logs contained such and similar lines :-) The unthinkable nevertheless happened.
From review perspective this patch looks much cleaner...
comment:13 by , 23 months ago
Replying to stoecker:
Well, I came across a lot of software where the logs contained such and similar lines :-) The unthinkable nevertheless happened.
IMO, if it should never be hit, either throw an exception or comment why (example: Assertions.fail("This throws an exception"); print("This line should never be reached since the previous line throws an exception");
).
With that said, I've seen less useful print
statements. Like print("HELLO")
(from a debugging session someone else was doing).
From review perspective this patch looks much cleaner...
I agree. I don't remember if I did some debugging to figure out what was called when, but I probably either picked the wrong method to watch or picked the wrong time to watch (e.g. construction versus mouse click on button).
I think the mutex style finishedAddingButtons handling as bit naive and prone to race conditions.