20 package net.sf.gridarta.gui.mapimagecache;
22 import java.awt.Image;
24 import java.io.IOException;
25 import java.lang.ref.SoftReference;
26 import java.util.Collection;
27 import java.util.EnumMap;
28 import java.util.HashMap;
30 import java.util.concurrent.CopyOnWriteArrayList;
42 import org.jetbrains.annotations.NotNull;
43 import org.jetbrains.annotations.Nullable;
86 private final Collection<MapImageCacheListener<G, A, R>>
listenerList =
new CopyOnWriteArrayList<>();
93 private final Map<ImageType, MapImageCacheEntry>
entries =
new EnumMap<>(
ImageType.class);
107 final MapFile mapFile = mapControl.getMapModel().getMapFile();
108 assert mapFile !=
null;
109 final File file = mapFile.
getFile();
139 public void mapCreated(@NotNull
final MapControl<G, A, R> mapControl,
final boolean interactive) {
167 public void flush(@NotNull
final File mapFile) {
169 entries.get(imageType).flush(mapFile);
180 public Image
getIcon(@NotNull
final File mapFile) {
257 }
catch (
final IOException ignored) {
261 return entries.get(imageType).getDefaultImage();
279 }
catch (
final OutOfMemoryError ignored) {
280 return entries.get(imageType).getDefaultImage();
282 final Image[] images =
new Image[2];
286 if (mapFile !=
null) {
288 listener.iconChanged(mapControl);
304 final MapRenderer tmpMapRenderer = mapRendererReference ==
null ? null : mapRendererReference.get();
306 if (tmpMapRenderer ==
null) {
310 mapRenderer = tmpMapRenderer;
340 final MapFile mapFile = mapControl.getMapModel().getMapFile();
341 if (mapFile !=
null) {
342 final Image image =
entries.get(imageType).lookupCache(mapFile.
getFile());
361 if (mapFile.isDirectory()) {
365 final Image image =
entries.get(imageType).lookupCache(mapFile);
366 return image ==
null ?
updateCaches(mapFile, imageType) : image;