Index: applications/editors/josm/plugins/imagery_cachexport/.classpath
===================================================================
--- applications/editors/josm/plugins/imagery_cachexport/.classpath	(revision 34645)
+++ applications/editors/josm/plugins/imagery_cachexport/.classpath	(revision 34645)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/JOSM"/>
+	<classpathentry kind="output" path="build"/>
+</classpath>
Index: applications/editors/josm/plugins/imagery_cachexport/.project
===================================================================
--- applications/editors/josm/plugins/imagery_cachexport/.project	(revision 34645)
+++ applications/editors/josm/plugins/imagery_cachexport/.project	(revision 34645)
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>JOSM-imagery_cachexport</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
Index: applications/editors/josm/plugins/imagery_cachexport/.settings/org.eclipse.jdt.core.prefs
===================================================================
--- applications/editors/josm/plugins/imagery_cachexport/.settings/org.eclipse.jdt.core.prefs	(revision 34645)
+++ applications/editors/josm/plugins/imagery_cachexport/.settings/org.eclipse.jdt.core.prefs	(revision 34645)
@@ -0,0 +1,100 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=warning
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
Index: applications/editors/josm/plugins/imagery_cachexport/build.xml
===================================================================
--- applications/editors/josm/plugins/imagery_cachexport/build.xml	(revision 34644)
+++ applications/editors/josm/plugins/imagery_cachexport/build.xml	(revision 34645)
@@ -1,9 +1,3 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!--
-** Usage
-** =====
-** Call "ant help" to get possible build targets.
-**
--->
 <project name="imagery_cachexport" default="dist" basedir=".">
 
@@ -11,5 +5,5 @@
     <property name="commit.message" value="Commit message"/>
     <!-- enter the *lowest* JOSM version this plugin is currently compatible with -->
-    <property name="plugin.main.version" value="12847"/>
+    <property name="plugin.main.version" value="14140"/>
 
     <!-- Configure these properties (replace "..." accordingly).
@@ -48,25 +42,4 @@
     </target>
 
-    <!--
-    **********************************************************
-    ** javadoc - create the plugin documentation
-    **********************************************************
-    -->
-    <target name="javadoc" description="generate documentation">
-        <javadoc destdir="${plugin.javadoc.dir}"
-                sourcepath="${plugin.src.dir}"
-                windowtitle="${ant.project.name}"
-                linksource="true"
-                private="true">
-            <classpath>
-                <pathelement location="${josm}"/>
-            </classpath>
-            <!-- Paths are relative to javadoc destdir (${plugin.javadoc.dir}). -->
-            <link href="../../../core/javadoc/"/>
-            <link href="https://josm.openstreetmap.de/doc/"/>
-            <link href="https://docs.oracle.com//javase/8/docs/api/"/>
-        </javadoc>
-    </target>
-
     <target name="additional-manifest">
         <antcall target="mftrans"/>
Index: applications/editors/josm/plugins/imagery_cachexport/src/org/openstreetmap/josm/plugins/imagery_cachexport/AbstractImageryCacheExportAction.java
===================================================================
--- applications/editors/josm/plugins/imagery_cachexport/src/org/openstreetmap/josm/plugins/imagery_cachexport/AbstractImageryCacheExportAction.java	(revision 34644)
+++ applications/editors/josm/plugins/imagery_cachexport/src/org/openstreetmap/josm/plugins/imagery_cachexport/AbstractImageryCacheExportAction.java	(revision 34645)
@@ -14,6 +14,6 @@
 import java.util.List;
 import java.util.Set;
+
 import javax.imageio.ImageIO;
-
 import javax.swing.AbstractAction;
 import javax.swing.JMenuItem;
@@ -21,5 +21,4 @@
 
 import org.apache.commons.jcs.access.CacheAccess;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.cache.BufferedImageCacheEntry;
 import org.openstreetmap.josm.gui.MainApplication;
@@ -52,6 +51,6 @@
      * @return Currently selected layer.
      */
-    private AbstractCachedTileSourceLayer getSelectedLayer() {
-        return (AbstractCachedTileSourceLayer)LayerListDialog.getInstance().getModel()
+    private AbstractCachedTileSourceLayer<?> getSelectedLayer() {
+        return (AbstractCachedTileSourceLayer<?>)LayerListDialog.getInstance().getModel()
             .getSelectedLayers().get(0);
     }
@@ -81,5 +80,5 @@
      * @return Cache key prefix.
      */
-    protected String getCacheKeyPrefix(final AbstractCachedTileSourceLayer layer) {
+    protected String getCacheKeyPrefix(final AbstractCachedTileSourceLayer<?> layer) {
         return layer.getName().replace(':', '_');
     }
@@ -92,5 +91,5 @@
     @Override
     public void actionPerformed(ActionEvent evt) {
-        final AbstractCachedTileSourceLayer layer = getSelectedLayer();
+        final AbstractCachedTileSourceLayer<?> layer = getSelectedLayer();
         final String cacheName = layer.getName();
         final CacheAccess<String, BufferedImageCacheEntry> cache = getCache();
@@ -172,5 +171,5 @@
                                     @Override
                                     public void run() {
-                                        JOptionPane.showMessageDialog(Main.parent, message,
+                                        JOptionPane.showMessageDialog(MainApplication.getMainFrame(), message,
                                                                       tr("Error"), JOptionPane.ERROR_MESSAGE);
                                     }
@@ -209,10 +208,10 @@
      */
     private void exportImagery(final String exportPath,
-                               final AbstractCachedTileSourceLayer layer,
+                               final AbstractCachedTileSourceLayer<?> layer,
                                final CacheAccess<String, BufferedImageCacheEntry> cache) {
         try {
             Files.createDirectories(Paths.get(exportPath));
         } catch (FileAlreadyExistsException exn) {
-            JOptionPane.showMessageDialog(Main.parent,
+            JOptionPane.showMessageDialog(MainApplication.getMainFrame(),
                                           tr("Export file system path already exists but is not a directory."),
                                           tr("Error"),
@@ -222,10 +221,10 @@
             final String message = exn.getLocalizedMessage();
             if (message != null) {
-                JOptionPane.showMessageDialog(Main.parent,
+                JOptionPane.showMessageDialog(MainApplication.getMainFrame(),
                                               tr("Failed to create export directory: {0}", message),
                                               tr("Error"),
                                               JOptionPane.ERROR_MESSAGE);
             } else {
-                JOptionPane.showMessageDialog(Main.parent,
+                JOptionPane.showMessageDialog(MainApplication.getMainFrame(),
                                               tr("Failed to create export directory."),
                                               tr("Error"),
@@ -265,4 +264,5 @@
      * @param image Image to be written.
      * @param file  File the image is to be written to.
+     * @throws IOException in case of I/O error
      */
     public void writeImage(BufferedImage image, File file) throws IOException {
Index: applications/editors/josm/plugins/imagery_cachexport/src/org/openstreetmap/josm/plugins/imagery_cachexport/ImageryCacheExportPlugin.java
===================================================================
--- applications/editors/josm/plugins/imagery_cachexport/src/org/openstreetmap/josm/plugins/imagery_cachexport/ImageryCacheExportPlugin.java	(revision 34644)
+++ applications/editors/josm/plugins/imagery_cachexport/src/org/openstreetmap/josm/plugins/imagery_cachexport/ImageryCacheExportPlugin.java	(revision 34645)
@@ -2,6 +2,4 @@
 
 import org.openstreetmap.josm.gui.layer.TMSLayer;
-import org.openstreetmap.josm.gui.layer.WMSLayer;
-import org.openstreetmap.josm.gui.layer.WMTSLayer;
 import org.openstreetmap.josm.plugins.Plugin;
 import org.openstreetmap.josm.plugins.PluginInformation;
Index: applications/editors/josm/plugins/imagery_cachexport/src/org/openstreetmap/josm/plugins/imagery_cachexport/ImageryTileExportDialog.java
===================================================================
--- applications/editors/josm/plugins/imagery_cachexport/src/org/openstreetmap/josm/plugins/imagery_cachexport/ImageryTileExportDialog.java	(revision 34644)
+++ applications/editors/josm/plugins/imagery_cachexport/src/org/openstreetmap/josm/plugins/imagery_cachexport/ImageryTileExportDialog.java	(revision 34645)
@@ -16,7 +16,7 @@
 
 import org.apache.commons.jcs.access.CacheAccess;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.cache.BufferedImageCacheEntry;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.widgets.JosmTextField;
 import org.openstreetmap.josm.spi.preferences.Config;
@@ -39,5 +39,5 @@
                                    final String cacheName,
                                    final String cacheKeyPrefix) {
-        super(Main.parent, tr("Export Tiles"), new String[] {tr("Ok"), tr("Cancel")});
+        super(MainApplication.getMainFrame(), tr("Export Tiles"), new String[] {tr("Ok"), tr("Cancel")});
         this.cacheName = cacheName;
 
