20 package net.sf.gridarta.gui.mapfiles;
23 import java.util.Collection;
24 import java.util.Collections;
25 import java.util.Iterator;
26 import java.util.Map.Entry;
27 import java.util.TreeMap;
28 import java.util.concurrent.CopyOnWriteArrayList;
33 import org.jetbrains.annotations.NotNull;
34 import org.jetbrains.annotations.Nullable;
47 private final Collection<MapFolderTreeListener<G, A, R>>
listeners =
new CopyOnWriteArrayList<>();
64 private final TreeMap<String, MapFolder<G, A, R>>
mapFolders =
new TreeMap<>();
93 throw new IllegalArgumentException(
"parent is not part of this folder: " + parent.
getName());
95 final String folderName = mapFolder.getName();
101 listener.folderAdded(mapFolder);
114 if (
mapFolders.get(mapFolder.getName()) != mapFolder) {
115 throw new IllegalArgumentException(
"folder is not part of this folder: " + mapFolder.getName());
118 if (child.getParent() == mapFolder) {
122 mapFolder.removeAllPickmaps(
true);
124 mapFolder.getDir().delete();
127 final Entry<String, MapFolder<G, A, R>> higherEntry =
mapFolders.higherEntry(mapFolder.getName());
128 if (higherEntry ==
null) {
129 final Entry<String, MapFolder<G, A, R>> lowerEntry =
mapFolders.lowerEntry(mapFolder.getName());
138 listener.folderRemoved(mapFolder);
181 return Collections.unmodifiableCollection(
mapFolders.values()).iterator();
206 mapFolder.getUnsavedPickmaps(unsavedMaps);