Class MapFolderTree<G extends GameObject<G,​A,​R>,​A extends MapArchObject<A>,​R extends Archetype<G,​A,​R>>

  • All Implemented Interfaces:
    java.lang.Iterable<MapFolder<G,​A,​R>>

    public class MapFolderTree<G extends GameObject<G,​A,​R>,​A extends MapArchObject<A>,​R extends Archetype<G,​A,​R>>
    extends java.lang.Object
    implements java.lang.Iterable<MapFolder<G,​A,​R>>
    Stores all known MapFiles. The map files are grouped into MapFolders. One of these folder can be the "active folder"; this is the folder the GUI operates on.
    • Constructor Detail

      • MapFolderTree

        public MapFolderTree​(@NotNull
                             @NotNull java.io.File baseDir)
        Creates a new instance.
        Parameters:
        baseDir - the base directory for creating new map folders
    • Method Detail

      • getBaseDir

        @NotNull
        public @NotNull java.io.File getBaseDir()
        Returns the base directory for creating new map folders.
        Returns:
        the base directory for creating new map folders
      • addMapFolder

        public void addMapFolder​(@NotNull
                                 @NotNull MapFolder<G,​A,​R> mapFolder)
                          throws DuplicateMapFolderException
        Adds a map folder to this model. The added map folder's name must be different from all existing map folder names.
        Parameters:
        mapFolder - the map folder to add
        Throws:
        DuplicateMapFolderException - if the map folder's name is not unique
      • removeMapFolder

        public void removeMapFolder​(@NotNull
                                    @NotNull MapFolder<G,​A,​R> mapFolder,
                                    boolean deleteFile)
                             throws MapFolderNotEmptyException
        Removes a map folder from this model. If the active map folder is removed, the next or previous map folder becomes the active folder.
        Parameters:
        mapFolder - the map folder to remove
        deleteFile - if set, also remove the map files
        Throws:
        MapFolderNotEmptyException - if the map folder contains sub-folders
      • getActiveMapFolder

        @Nullable
        public @Nullable MapFolder<G,​A,​R> getActiveMapFolder()
        Returns the active map folder.
        Returns:
        the active map folder or null if no folder is active
      • setActiveMapFolder

        public void setActiveMapFolder​(@NotNull
                                       @NotNull MapFolder<G,​A,​R> mapFolder)
        Sets the active map folder. The passed map folder must be part of this model.
        Parameters:
        mapFolder - the active map folder or null if no folder should be active
      • iterator

        public java.util.Iterator<MapFolder<G,​A,​R>> iterator()
        Returns an Iterator returning all map folders. The folders are sorted by folder name.
        Specified by:
        iterator in interface java.lang.Iterable<G extends GameObject<G,​A,​R>>
      • removeModelListener

        public void removeModelListener​(@NotNull
                                        @NotNull MapFolderTreeListener<G,​A,​R> listener)
        Removes a MapFolderTreeListener to be informed about changes.
        Parameters:
        listener - the listener to remove
      • getUnsavedPickmaps

        public void getUnsavedPickmaps​(@NotNull
                                       @NotNull java.util.Collection<MapControl<G,​A,​R>> unsavedMaps)
        Returns all unsaved map controls of this model.
        Parameters:
        unsavedMaps - the collection to add the unsaved pickmaps to