20 package net.sf.gridarta.gui.mapfiles;
23 import java.util.Collection;
24 import java.util.Collections;
25 import java.util.Iterator;
27 import java.util.TreeMap;
33 import org.jetbrains.annotations.NotNull;
34 import org.jetbrains.annotations.Nullable;
64 private final TreeMap<String, MapFolder<G, A, R>>
mapFolders =
new TreeMap<>();
92 if (parent != null && !mapFolders.containsKey(parent.
getName())) {
93 throw new IllegalArgumentException();
95 final String folderName = mapFolder.getName();
96 if (mapFolders.containsKey(folderName)) {
99 mapFolders.put(folderName, mapFolder);
101 listener.folderAdded(mapFolder);
114 if (mapFolders.get(mapFolder.getName()) != mapFolder) {
115 throw new IllegalArgumentException();
118 if (child.getParent() == mapFolder) {
122 mapFolder.removeAllPickmaps(
true);
124 mapFolder.getDir().delete();
126 if (mapFolder == activeMapFolder) {
127 final Map.Entry<String,
MapFolder<G, A, R>> higherEntry = mapFolders.higherEntry(mapFolder.getName());
128 if (higherEntry != null) {
129 activeMapFolder = higherEntry.getValue();
131 final Map.Entry<String,
MapFolder<G, A, R>> lowerEntry = mapFolders.lowerEntry(mapFolder.getName());
132 if (lowerEntry != null) {
133 activeMapFolder = lowerEntry.getValue();
135 activeMapFolder = null;
140 mapFolders.remove(mapFolder.getName());
142 listener.folderRemoved(mapFolder);
161 @SuppressWarnings(
"NullableProblems")
163 if (activeMapFolder == mapFolder) {
167 activeMapFolder = mapFolder;
211 mapFolder.getUnsavedPickmaps(unsavedMaps);
Interface for listeners interested in events of MapFolderTrees.
File getBaseDir()
Returns the base directory for creating new map folders.
void getUnsavedPickmaps(@NotNull final Collection< MapControl< G, A, R >> unsavedMaps)
Returns all unsaved map controls of this model.
T [] getListeners()
Returns an array of all the listeners.
final TreeMap< String, MapFolder< G, A, R > > mapFolders
The folders.
synchronized void removeMapFolder(@NotNull final MapFolder< G, A, R > mapFolder, final boolean deleteFile)
Removes a map folder from this model.
void fireActiveMapFolderChanged()
Notifies all listeners that the active folder has changed.
void addModelListener(@NotNull final MapFolderTreeListener< G, A, R > listener)
Adds a MapFolderTreeListener to be informed about changes.
MapFolder< G, A, R > activeMapFolder
The active map folder.
synchronized void addMapFolder(@NotNull final MapFolder< G, A, R > mapFolder)
Adds a map folder to this model.
Base package of all Gridarta classes.
Reflects a game object (object on a map).
Indicates that a folder name is not unique.
final File baseDir
The base directory for creating new map folders.
GameObjects are the objects based on Archetypes found on maps.
Stores all known MapFiles.
Iterator< MapFolder< G, A, R > > iterator()
Returns an Iterator returning all map folders.
void removeModelListener(@NotNull final MapFolderTreeListener< G, A, R > listener)
Removes a MapFolderTreeListener to be informed about changes.
String getName()
Returns the name.
Type-safe version of EventListenerList.
synchronized void setActiveMapFolder(@NotNull final MapFolder< G, A, R > mapFolder)
Sets the active map folder.
Currently nothing more than a marker interface for unification.
Indicates that a folder contains sub-folders.
final EventListenerList2< MapFolderTreeListener< G, A, R > > listeners
The registered event listeners.
MapFolder< G, A, R > getParent()
Returns the parent folder.
MapFolder< G, A, R > getActiveMapFolder()
Returns the active map folder.
MapFolderTree(@NotNull final File baseDir)
Creates a new instance.
Interface for MapArchObjects.