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;
43 import org.jetbrains.annotations.NotNull;
44 import org.jetbrains.annotations.Nullable;
87 private final Collection<MapImageCacheListener<G, A, R>>
listenerList =
new CopyOnWriteArrayList<>();
94 private final Map<ImageType, MapImageCacheEntry>
entries =
new EnumMap<>(
ImageType.class);
111 final MapFile mapFile = mapControl.getMapModel().getMapFile();
112 assert mapFile !=
null;
113 final File file = mapFile.
getFile();
145 public void mapCreated(@NotNull
final MapControl<G, A, R> mapControl,
final boolean interactive) {
173 public void flush(@NotNull
final File mapFile) {
175 entries.get(imageType).flush(mapFile);
186 public Image
getIcon(@NotNull
final File mapFile) {
263 }
catch (
final IOException ignored) {
267 return entries.get(imageType).getDefaultImage();
285 }
catch (
final OutOfMemoryError ignored) {
286 return entries.get(imageType).getDefaultImage();
288 final Image[] images =
new Image[2];
292 if (mapFile !=
null) {
294 listener.iconChanged(mapControl);
310 final MapRenderer tmpMapRenderer = mapRendererReference ==
null ? null : mapRendererReference.get();
312 if (tmpMapRenderer ==
null) {
316 mapRenderer = tmpMapRenderer;
346 final MapFile mapFile = mapControl.getMapModel().getMapFile();
347 if (mapFile !=
null) {
348 final Image image =
entries.get(imageType).lookupCache(mapFile.
getFile());
367 if (mapFile.isDirectory()) {
371 final Image image =
entries.get(imageType).lookupCache(mapFile);
372 return image ==
null ?
updateCaches(mapFile, imageType) : image;