Gridarta Editor
AbstractProjectSettings.java
Go to the documentation of this file.
1 /*
2  * Gridarta MMORPG map editor for Crossfire, Daimonin and similar games.
3  * Copyright (C) 2000-2023 The Gridarta Developers.
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 2 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License along
16  * with this program; if not, write to the Free Software Foundation, Inc.,
17  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18  */
19 
20 package net.sf.gridarta.model.settings;
21 
22 import java.io.File;
23 import java.util.Collection;
24 import java.util.concurrent.CopyOnWriteArrayList;
25 import org.jetbrains.annotations.NotNull;
26 
31 public abstract class AbstractProjectSettings implements ProjectSettings {
32 
37  @NotNull
38  private final Collection<ProjectSettingsListener> listenerList = new CopyOnWriteArrayList<>();
39 
40  @Override
41  public void addProjectSettingsListener(@NotNull final ProjectSettingsListener listener) {
42  listenerList.add(listener);
43  }
44 
45  @Override
46  public void removeProjectSettingsListener(@NotNull final ProjectSettingsListener listener) {
47  listenerList.remove(listener);
48  }
49 
53  protected void fireMapsDirectoryChanged() {
54  final File mapsDirectory = getMapsDirectory();
55  for (final ProjectSettingsListener listener : listenerList) {
56  listener.mapsDirectoryChanged(mapsDirectory);
57  }
58  }
59 
60 }
net.sf.gridarta.model.settings.AbstractProjectSettings.removeProjectSettingsListener
void removeProjectSettingsListener(@NotNull final ProjectSettingsListener listener)
Removes a ProjectSettingsListener to be notified of changes.
Definition: AbstractProjectSettings.java:46
net.sf.gridarta.model.settings.AbstractProjectSettings.listenerList
final Collection< ProjectSettingsListener > listenerList
The ProjectSettingsListeners to inform of changes.
Definition: AbstractProjectSettings.java:38
net.sf.gridarta.model.settings.AbstractProjectSettings.fireMapsDirectoryChanged
void fireMapsDirectoryChanged()
Notifies all listeners about a changed maps directory.
Definition: AbstractProjectSettings.java:53
net.sf.gridarta.model.settings.ProjectSettingsListener
Interface for listeners interested in ProjectSettings events.
Definition: ProjectSettingsListener.java:30
net.sf.gridarta.model.settings.ProjectSettings
Settings that apply to a project.
Definition: ProjectSettings.java:29
net.sf.gridarta.model.settings.AbstractProjectSettings.addProjectSettingsListener
void addProjectSettingsListener(@NotNull final ProjectSettingsListener listener)
Adds a ProjectSettingsListener to be notified of changes.
Definition: AbstractProjectSettings.java:41
net.sf.gridarta.model.settings.AbstractProjectSettings
Abstract base class for ProjectSettings implementations.
Definition: AbstractProjectSettings.java:31
net.sf.gridarta.model.settings.ProjectSettings.getMapsDirectory
File getMapsDirectory()
Returns the default maps directory.