Gridarta Editor
AbstractDefaultProjectSettings.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.prefs.PreferenceChangeListener;
24 import java.util.prefs.Preferences;
25 import net.sf.gridarta.MainControl;
26 import net.sf.gridarta.utils.IOUtils;
27 import org.jetbrains.annotations.NotNull;
28 
34 
38  @NotNull
39  private static final String MAP_DIRECTORY_KEY = "mapDirectory";
40 
44  @NotNull
45  private static final String ARCH_DIRECTORY_KEY = "archDirectory";
46 
50  @NotNull
51  private static final String MEDIA_DIRECTORY_KEY = "mediaDirectory";
52 
56  @NotNull
57  private static final String IMAGE_SET_KEY = "useImageSet";
58 
62  @NotNull
63  private static final String PREFERENCES_USER_NAME = "username";
64 
68  @NotNull
69  private static final String CONFIG_SOURCE_KEY = "configSource";
70 
74  @NotNull
75  private static final Preferences PREFERENCES = Preferences.userNodeForPackage(MainControl.class);
76 
80  @NotNull
82 
86  @NotNull
87  private File archDirectory;
88 
92  @NotNull
93  private File mapsDirectory;
94 
98  @NotNull
99  private File mediaDirectory;
100 
104  @NotNull
105  private String imageSet;
106 
110  @NotNull
111  private String configSourceName;
112 
118  this.editorSettings = editorSettings;
119 
120  final PreferenceChangeListener preferenceChangeListener = evt -> {
121  switch (evt.getKey()) {
122  case ARCH_DIRECTORY_KEY:
124  break;
125 
126  case MAP_DIRECTORY_KEY:
128  break;
129 
130  case MEDIA_DIRECTORY_KEY:
132  break;
133 
134  case IMAGE_SET_KEY:
136  break;
137 
138  case CONFIG_SOURCE_KEY:
140  break;
141  }
142  };
143  PREFERENCES.addPreferenceChangeListener(preferenceChangeListener);
144 
150  }
151 
152  @NotNull
153  @Override
154  public File getArchDirectory() {
155  return archDirectory;
156  }
157 
158  @Override
159  public void setArchDirectory(@NotNull final File archDirectory) {
160  final File effectiveArchDirectory = IOUtils.getCanonicalFile(archDirectory);
161  if (this.archDirectory.equals(effectiveArchDirectory)) {
162  return;
163  }
164 
165  this.archDirectory = effectiveArchDirectory;
166  PREFERENCES.put(ARCH_DIRECTORY_KEY, effectiveArchDirectory.toString());
167  }
168 
169  @NotNull
170  @Override
171  public File getMapsDirectory() {
172  return mapsDirectory;
173  }
174 
175  @Override
176  public void setMapsDirectory(@NotNull final File mapsDirectory) {
178  }
179 
185  private void setMapsDirectoryInt(@NotNull final File mapsDirectory, final boolean updatePreferences) {
186  final File effectiveMapsDirectory = IOUtils.getCanonicalFile(mapsDirectory);
187  if (this.mapsDirectory.equals(effectiveMapsDirectory)) {
188  return;
189  }
190 
191  this.mapsDirectory = effectiveMapsDirectory;
192  if (updatePreferences) {
193  PREFERENCES.put(MAP_DIRECTORY_KEY, effectiveMapsDirectory.toString());
194  }
196  }
197 
198  @NotNull
199  @Override
200  public File getMediaDirectory() {
201  return mediaDirectory;
202  }
203 
204  @Override
205  public void setMediaDirectory(@NotNull final File mediaDirectory) {
206  final File effectiveMediaDirectory = IOUtils.getCanonicalFile(mediaDirectory);
208  return;
209  }
210  if (this.mediaDirectory.equals(effectiveMediaDirectory)) {
211  return;
212  }
213 
214  this.mediaDirectory = effectiveMediaDirectory;
215  PREFERENCES.put(MEDIA_DIRECTORY_KEY, effectiveMediaDirectory.getPath());
216  }
217 
218  @NotNull
219  @Override
220  public String getImageSet() {
221  return imageSet;
222  }
223 
224  @Override
225  public void setImageSet(@NotNull final String imageSet) {
226  if (!editorSettings.hasImageSet()) {
227  return;
228  }
229  if (this.imageSet.equals(imageSet)) {
230  return;
231  }
232 
233  this.imageSet = imageSet;
235  }
236 
237  @NotNull
238  @Override
239  public String getConfigSourceName() {
240  return configSourceName;
241  }
242 
243  @Override
244  public void setConfigSourceName(@NotNull final String configSourceName) {
245  if (this.configSourceName.equals(configSourceName)) {
246  return;
247  }
248 
249  this.configSourceName = configSourceName;
251  }
252 
253  @NotNull
254  @Override
255  public String getUserName() {
257  }
258 
259  @Override
260  public void setUserName(@NotNull final String userName) {
261  PREFERENCES.put(PREFERENCES_USER_NAME, userName);
262  }
263 
264  @Override
265  public boolean saveIndices() {
266  return true;
267  }
268 
269 }
net.sf.gridarta.model.settings.AbstractDefaultProjectSettings.mediaDirectory
File mediaDirectory
The media directory.
Definition: AbstractDefaultProjectSettings.java:99
net.sf.gridarta.model.settings.EditorSettings.hasMediaDirectory
boolean hasMediaDirectory()
Returns whether a media directory is used.
net.sf.gridarta.model.settings.AbstractDefaultProjectSettings.editorSettings
final EditorSettings editorSettings
The EditorSettings for retrieving default values.
Definition: AbstractDefaultProjectSettings.java:81
net.sf.gridarta
Base package of all Gridarta classes.
net.sf.gridarta.model.settings.AbstractDefaultProjectSettings.configSourceName
String configSourceName
Do we load arches from the collected archives.
Definition: AbstractDefaultProjectSettings.java:111
net.sf.gridarta.model.settings.EditorSettings.hasImageSet
boolean hasImageSet()
Returns whether an image set is used.
net.sf
net.sf.gridarta.model.settings.AbstractDefaultProjectSettings.archDirectory
File archDirectory
The archetype directory.
Definition: AbstractDefaultProjectSettings.java:87
net.sf.gridarta.model.settings.AbstractDefaultProjectSettings.getMediaDirectory
File getMediaDirectory()
Returns the media directory.
Definition: AbstractDefaultProjectSettings.java:200
net.sf.gridarta.model.settings.AbstractDefaultProjectSettings.MEDIA_DIRECTORY_KEY
static final String MEDIA_DIRECTORY_KEY
The preferences key for the media directory.
Definition: AbstractDefaultProjectSettings.java:51
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.AbstractDefaultProjectSettings.getImageSet
String getImageSet()
Returns the image set.
Definition: AbstractDefaultProjectSettings.java:220
net.sf.gridarta.model.settings.AbstractDefaultProjectSettings.getMapsDirectory
File getMapsDirectory()
Returns the default maps directory.
Definition: AbstractDefaultProjectSettings.java:171
net.sf.gridarta.model.settings.AbstractDefaultProjectSettings.getConfigSourceName
String getConfigSourceName()
Returns the name of the configuration source.
Definition: AbstractDefaultProjectSettings.java:239
net.sf.gridarta.model.settings.EditorSettings
Settings that apply to the editor.
Definition: EditorSettings.java:29
net
net.sf.gridarta.model.settings.AbstractDefaultProjectSettings.setMapsDirectoryInt
void setMapsDirectoryInt(@NotNull final File mapsDirectory, final boolean updatePreferences)
Sets the mapsDirectory.
Definition: AbstractDefaultProjectSettings.java:185
net.sf.gridarta.model.settings.AbstractDefaultProjectSettings.setMediaDirectory
void setMediaDirectory(@NotNull final File mediaDirectory)
Sets the media directory.
Definition: AbstractDefaultProjectSettings.java:205
net.sf.gridarta.model.settings.AbstractDefaultProjectSettings.setArchDirectory
void setArchDirectory(@NotNull final File archDirectory)
Sets the archetype directory.
Definition: AbstractDefaultProjectSettings.java:159
net.sf.gridarta.model.settings.EditorSettings.getImageSetDefault
String getImageSetDefault()
Returns the default image set.
net.sf.gridarta.model.settings.EditorSettings.getArchDirectoryDefault
File getArchDirectoryDefault()
Returns the default archetype directory.
net.sf.gridarta.model.settings.AbstractDefaultProjectSettings.getUserName
String getUserName()
Returns the user name.
Definition: AbstractDefaultProjectSettings.java:255
net.sf.gridarta.model.settings.AbstractDefaultProjectSettings.ARCH_DIRECTORY_KEY
static final String ARCH_DIRECTORY_KEY
The preferences key for the archetype directory.
Definition: AbstractDefaultProjectSettings.java:45
net.sf.gridarta.model.settings.AbstractDefaultProjectSettings
Default implementation of ProjectSettings.
Definition: AbstractDefaultProjectSettings.java:33
net.sf.gridarta.model.settings.AbstractDefaultProjectSettings.MAP_DIRECTORY_KEY
static final String MAP_DIRECTORY_KEY
The preferences key for the archetype directory.
Definition: AbstractDefaultProjectSettings.java:39
net.sf.gridarta.model.settings.AbstractDefaultProjectSettings.saveIndices
boolean saveIndices()
Returns whether indices should be saved to disk.
Definition: AbstractDefaultProjectSettings.java:265
net.sf.gridarta.model.settings.AbstractDefaultProjectSettings.setMapsDirectory
void setMapsDirectory(@NotNull final File mapsDirectory)
Sets the default maps directory.
Definition: AbstractDefaultProjectSettings.java:176
net.sf.gridarta.model.settings.AbstractDefaultProjectSettings.PREFERENCES
static final Preferences PREFERENCES
Preferences.
Definition: AbstractDefaultProjectSettings.java:75
net.sf.gridarta.model.settings.AbstractDefaultProjectSettings.getArchDirectory
File getArchDirectory()
Returns the archetype directory.
Definition: AbstractDefaultProjectSettings.java:154
net.sf.gridarta.model.settings.AbstractDefaultProjectSettings.mapsDirectory
File mapsDirectory
The default maps directory.
Definition: AbstractDefaultProjectSettings.java:93
net.sf.gridarta.utils.IOUtils.getCanonicalFile
static File getCanonicalFile(@NotNull final File file)
Calls File#getCanonicalFile().
Definition: IOUtils.java:209
net.sf.gridarta.model.settings.AbstractDefaultProjectSettings.imageSet
String imageSet
The image set.
Definition: AbstractDefaultProjectSettings.java:105
net.sf.gridarta.model.settings.AbstractDefaultProjectSettings.setConfigSourceName
void setConfigSourceName(@NotNull final String configSourceName)
Sets the name of the configuration source.
Definition: AbstractDefaultProjectSettings.java:244
net.sf.gridarta.model.settings.EditorSettings.getMapsDirectoryDefault
File getMapsDirectoryDefault()
Returns the default maps directory.
net.sf.gridarta.utils.IOUtils
Utility-class for Gridarta's I/O.
Definition: IOUtils.java:40
net.sf.gridarta.model.settings.AbstractDefaultProjectSettings.PREFERENCES_USER_NAME
static final String PREFERENCES_USER_NAME
Preferences key for user name.
Definition: AbstractDefaultProjectSettings.java:63
net.sf.gridarta.model.settings.AbstractDefaultProjectSettings.CONFIG_SOURCE_KEY
static final String CONFIG_SOURCE_KEY
The preferences key for configuration source.
Definition: AbstractDefaultProjectSettings.java:69
net.sf.gridarta.model.settings.AbstractProjectSettings
Abstract base class for ProjectSettings implementations.
Definition: AbstractProjectSettings.java:31
net.sf.gridarta.model.settings.AbstractDefaultProjectSettings.setImageSet
void setImageSet(@NotNull final String imageSet)
Sets the image set.
Definition: AbstractDefaultProjectSettings.java:225
net.sf.gridarta.model.settings.AbstractDefaultProjectSettings.AbstractDefaultProjectSettings
AbstractDefaultProjectSettings(@NotNull final EditorSettings editorSettings)
Creates a new instance.
Definition: AbstractDefaultProjectSettings.java:117
net.sf.gridarta.model.settings.AbstractDefaultProjectSettings.IMAGE_SET_KEY
static final String IMAGE_SET_KEY
The preferences key for the selected image set.
Definition: AbstractDefaultProjectSettings.java:57
net.sf.gridarta.model.settings.EditorSettings.getMediaDirectoryDefault
File getMediaDirectoryDefault()
Returns the default media directory.
net.sf.gridarta.model.settings.EditorSettings.getUserNameDefault
String getUserNameDefault()
Returns the default user name.
net.sf.gridarta.utils
Definition: ActionBuilderUtils.java:20
net.sf.gridarta.model.settings.AbstractDefaultProjectSettings.setUserName
void setUserName(@NotNull final String userName)
Sets the user name.
Definition: AbstractDefaultProjectSettings.java:260
net.sf.gridarta.MainControl
Interface used as preferences location.
Definition: MainControl.java:27