Gridarta Editor
GridartaEditor.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.maincontrol;
21 
22 import gnu.getopt.Getopt;
23 import gnu.getopt.LongOpt;
24 import java.awt.GraphicsEnvironment;
25 import java.io.File;
26 import java.lang.reflect.InvocationTargetException;
27 import java.util.ArrayList;
28 import java.util.Arrays;
29 import java.util.List;
30 import java.util.Locale;
31 import java.util.MissingResourceException;
32 import java.util.ResourceBundle;
33 import java.util.prefs.Preferences;
34 import javax.swing.SwingUtilities;
35 import javax.swing.UIManager;
36 import javax.swing.UIManager.LookAndFeelInfo;
37 import javax.swing.UnsupportedLookAndFeelException;
38 import net.sf.gridarta.MainControl;
68 import net.sf.japi.swing.action.ActionBuilder;
69 import net.sf.japi.swing.action.ActionBuilderFactory;
70 import org.apache.log4j.Category;
71 import org.apache.log4j.Logger;
72 import org.jetbrains.annotations.NotNull;
73 import org.jetbrains.annotations.Nullable;
74 
82 @SuppressWarnings("UseOfSystemOutOrSystemErr")
83 public class GridartaEditor<G extends GameObject<G, A, R>, A extends MapArchObject<A>, R extends Archetype<G, A, R>> {
84 
88  @NotNull
89  private static final Category LOG = Logger.getLogger(GridartaEditor.class);
90 
95  public GridartaEditor(@NotNull final String tipOfTheDayPackage) {
96  System.setProperty("net.sf.japi.swing.tod", tipOfTheDayPackage);
97  try {
98  if (LOG.isInfoEnabled()) {
99  LOG.info("build number: " + ResourceBundle.getBundle("build").getString("build.number"));
100  }
101  } catch (final MissingResourceException e) {
102  LOG.warn("No build number found:", e);
103  }
104  }
105 
116  public void run(@NotNull final String actionBuilderPackage, @NotNull final String editorJarName, @NotNull final EditorFactory<G, A, R> editorFactory, @Nullable final String defaultConfig, @NotNull final String... args) {
117  boolean err = false; // whether a fatal error (exit required) occurred.
118  String plugin = null;
119  final LongOpt[] longOpts = {
120  // @formatter:off
121  new LongOpt("batchpng", LongOpt.NO_ARGUMENT, null, 'b'),
122  new LongOpt("normal", LongOpt.NO_ARGUMENT, null, 'n'),
123  new LongOpt("singlepng", LongOpt.NO_ARGUMENT, null, 's'),
124  new LongOpt("collectarches", LongOpt.NO_ARGUMENT, null, 'c'),
125  new LongOpt("collectArches", LongOpt.NO_ARGUMENT, null, 'c'),
126  new LongOpt("help", LongOpt.NO_ARGUMENT, null, 'h'),
127  new LongOpt("noexit", LongOpt.NO_ARGUMENT, null, 2),
128  new LongOpt("script", LongOpt.REQUIRED_ARGUMENT, null, 1),
129  new LongOpt("plugin", LongOpt.REQUIRED_ARGUMENT, null, 1),
130  new LongOpt("config", LongOpt.REQUIRED_ARGUMENT, null, 3),
131  new LongOpt("use-mapdir", LongOpt.NO_ARGUMENT, null, 4),
132  // @formatter:on
133  };
134  final Getopt g = new Getopt(editorJarName, args, "bchns", longOpts);
136  File config = defaultConfig == null ? null : ConfigFileUtils.getHomeFile(defaultConfig);
137  boolean useMapdir = false;
138  boolean doExit = true;
139  while (true) {
140  final int ch = g.getopt();
141  if (ch == -1) {
142  break;
143  }
144 
145  switch (ch) {
146  case 'b':
147  mode = GridartaRunMode.BATCH_PNG;
148  break;
149 
150  case 'c':
152  break;
153 
154  case 'h':
155  usage(editorJarName, defaultConfig);
156  return;
157 
158  case 'n':
159  mode = GridartaRunMode.NORMAL;
160  break;
161 
162  case 's':
164  break;
165 
166  case 1:
167  plugin = g.getOptarg();
168  break;
169 
170  case 2:
171  doExit = false;
172  break;
173 
174  case 3: // --config
175  config = new File(g.getOptarg());
176  if (!config.exists()) {
177  System.err.println(config + ": configuration file does not exist");
178  err = true;
179  }
180  break;
181 
182  case 4: // --use-mapdir
183  useMapdir = true;
184  break;
185 
186  case '?':
187  default:
188  err = true;
189  break;
190  }
191  }
192  int returnCode;
193  if (err) {
194  returnCode = 1;
195  } else {
196  if (config != null) {
197  System.setProperty("java.util.prefs.PreferencesFactory", "net.sf.gridarta.preferences.FilePreferencesFactory");
198  FilePreferencesFactory.initialize("user_net_sf_gridarta", config);
199  }
200 
201  // Make sure the locale is set before any ActionBuilder is used.
202  final Preferences preferences = Preferences.userNodeForPackage(MainControl.class);
203  final String locName = preferences.get(GUIPreferences.PREFERENCES_LANGUAGE, null);
204  if (locName != null) {
205  Locale.setDefault(new Locale(locName));
206  }
207 
208  final List<String> args2 = Arrays.asList(args).subList(g.getOptind(), args.length);
209 
210  // Now add preferences to the ActionBuilder.
211  final ActionBuilder actionBuilder = ActionBuilderFactory.getInstance().getActionBuilder("net.sf.gridarta");
212  actionBuilder.addPref(DefaultMainControl.class);
213  actionBuilder.addParent(ActionBuilderFactory.getInstance().getActionBuilder(actionBuilderPackage));
214 
215  // Create the application and give it the parameters
216  final ErrorView errorView = GraphicsEnvironment.isHeadless() || mode.isConsoleMode() || plugin != null ? new ConsoleErrorView() : new DefaultErrorView(null);
217  final ResourceIcons resourceIcons = new ResourceIcons();
218  final ConfigSourceFactory configSourceFactory = new DefaultConfigSourceFactory();
219  final EditorSettings editorSettings = new DefaultEditorSettings();
220  final ProjectSettings projectSettings = editorFactory.newProjectSettings(editorSettings);
221  final ConfigSource configSource = configSourceFactory.getConfigSource(mode == GridartaRunMode.COLLECT_ARCHES ? "ARCH_DIRECTORY" : projectSettings.getConfigSourceName());
222  final ProjectModel<G, A, R> projectModel = new ProjectModel<>(errorView, projectSettings, editorFactory, resourceIcons, configSource);
223 
224  if (plugin == null) {
225  final List<File> args3 = new ArrayList<>();
226  for (final String arg: args2) {
227  args3.add(useMapdir ? new File(projectSettings.getMapsDirectory(), arg) : new File(arg));
228  }
229  try {
230  switch (mode) {
231  case NORMAL:
232  returnCode = runNormal(args3, editorFactory, errorView, resourceIcons, configSourceFactory, projectModel, editorSettings);
233  break;
234 
235  case BATCH_PNG:
236  returnCode = new BatchPngCommand(args3, ImageCreatorFactory.newImageCreator(resourceIcons, editorFactory, projectModel, editorSettings)).execute();
237  break;
238 
239  case SINGLE_PNG:
240  if (args3.size() != 2) {
241  throw new SyntaxErrorException("input output");
242  }
243 
244  returnCode = new SinglePngCommand(args3.get(0), args3.get(1), ImageCreatorFactory.newImageCreator(resourceIcons, editorFactory, projectModel, editorSettings)).execute();
245  break;
246 
247  case COLLECT_ARCHES:
248  returnCode = new CollectArchesCommand(projectModel).execute();
249  break;
250 
251  default:
252  assert false;
253  returnCode = 1;
254  break;
255  }
256  } catch (final SyntaxErrorException ex) {
257  System.err.println("Usage: " + ex.getMessage());
258  returnCode = 1;
259  }
260  } else {
261  returnCode = runPlugin(plugin, errorView, args2, editorFactory, projectModel, resourceIcons, editorSettings);
262  }
263  }
264  if (doExit && (mode != GridartaRunMode.NORMAL || returnCode != 0)) {
265  System.exit(returnCode);
266  }
267  }
268 
280  private int runPlugin(@NotNull final String plugin, final ErrorView errorView, final Iterable<String> args, @NotNull final EditorFactory<G, A, R> editorFactory, @NotNull final ProjectModel<G, A, R> projectModel, @NotNull final ResourceIcons resourceIcons, @NotNull final EditorSettings editorSettings) {
281  checkForErrors(errorView);
282  waitDialog(errorView);
283  final NamedFilter defaultNamedFilterList = new NamedFilter(projectModel.getGameObjectMatchers().getFilters());
284  final FilterControl<G, A, R> filterControl = new DefaultFilterControl<>(defaultNamedFilterList, editorSettings);
285  final MapViewSettings mapViewSettings = new DefaultMapViewSettings();
286  final RendererFactory<G, A, R> rendererFactory = editorFactory.newRendererFactory(mapViewSettings, filterControl, projectModel.getGameObjectParser(), projectModel.getFaceObjectProviders(), resourceIcons, projectModel.getSmoothFaces());
287  return new PluginExecutor<>(projectModel.getPluginModel(), projectModel.newPluginParameters(rendererFactory)).executePlugin(plugin, args);
288  }
289 
295  private static void checkForErrors(@NotNull final ErrorView errorView) {
296  if (errorView.hasErrors()) {
297  waitDialog(errorView);
299  throw new AssertionError();
300  }
301  }
302 
307  private static void waitDialog(final ErrorView errorView) {
308  try {
309  errorView.waitDialog();
310  } catch (final InterruptedException ex) {
311  Thread.currentThread().interrupt();
313  throw new AssertionError(ex);
314  }
315  }
316 
328  private int runNormal(@NotNull final List<File> args, @NotNull final EditorFactory<G, A, R> editorFactory, @NotNull final ErrorView errorView, @NotNull final ResourceIcons resourceIcons, @NotNull final ConfigSourceFactory configSourceFactory, @NotNull final ProjectModel<G, A, R> projectModel, @NotNull final EditorSettings editorSettings) {
329  try {
330  for (final LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
331  if ("Nimbus".equals(info.getName())) {
332  UIManager.setLookAndFeel(info.getClassName());
333  break;
334  }
335  }
336  } catch (final ClassNotFoundException | IllegalAccessException | InstantiationException | UnsupportedLookAndFeelException ignored) {
337  }
338 
339  final GUIMainControl<?, ?, ?>[] guiMainControl = new GUIMainControl<?, ?, ?>[1];
340  final Runnable runnable = () -> guiMainControl[0] = new GUIMainControl<>(projectModel, editorSettings, errorView, resourceIcons, editorFactory, configSourceFactory);
341  try {
342  SwingUtilities.invokeAndWait(runnable);
343  } catch (final InterruptedException ex) {
344  LOG.fatal(ex.getMessage(), ex);
345  Thread.currentThread().interrupt();
346  return 1;
347  } catch (final InvocationTargetException ex) {
348  LOG.fatal(ex.getMessage(), ex);
349  return 1;
350  }
351 
352  checkForErrors(errorView);
353  waitDialog(errorView);
354 
355  final Runnable runnable2 = () -> guiMainControl[0].run(args);
356  try {
357  SwingUtilities.invokeAndWait(runnable2);
358  } catch (final InterruptedException ex) {
359  LOG.fatal(ex.getMessage(), ex);
360  Thread.currentThread().interrupt();
361  return 1;
362  } catch (final InvocationTargetException ex) {
363  LOG.fatal(ex.getMessage(), ex);
364  return 1;
365  }
366 
367  return 0;
368  }
369 
376  private static void usage(@NotNull final String editorJarName, @Nullable final String defaultConfig) {
377  System.out.println("usage: java -jar " + editorJarName + " [option...] [map-file...]");
378  System.out.println();
379  System.out.println(" -h, --help print this help");
380  System.out.println(" -b, --batchpng create PNG files for all given maps in their directories");
381  System.out.println(" -c, --collectarches collect archetypes");
382  System.out.println(" -n, --normal start editor with GUI (default)");
383  System.out.println(" -s, --singlepng create a PNG file from the specified map");
384  System.out.println(" --config=config-file use given config file; uses " + (defaultConfig == null ? "Java preferences" : "~/.gridarta/" + defaultConfig) + " is not given");
385  System.out.println(" --noexit do not call System.exit()");
386  System.out.println(" --plugin=name [arg=value...]");
387  System.out.println(" run a plugin with the given arguments");
388  System.out.println(" --use-mapdir prepend the configured maps directory to all map-file arguments");
389  }
390 
391 }
net.sf.gridarta.maincontrol.GridartaEditor.run
void run(@NotNull final String actionBuilderPackage, @NotNull final String editorJarName, @NotNull final EditorFactory< G, A, R > editorFactory, @Nullable final String defaultConfig, @NotNull final String... args)
Runs the editor.
Definition: GridartaEditor.java:116
net.sf.gridarta.plugin
Definition: BshRunnable.java:20
net.sf.gridarta.utils.ConfigFileUtils.getHomeFile
static File getHomeFile(@NotNull final String filename)
Return the filename to use when dealing with this application's and current users' home directory.
Definition: ConfigFileUtils.java:53
net.sf.gridarta.gui.dialog.prefs.GUIPreferences
Preferences Module for user interface preferences.
Definition: GUIPreferences.java:56
net.sf.gridarta
Base package of all Gridarta classes.
net.sf.gridarta.commands.CollectArchesCommand
Run archetype collection.
Definition: CollectArchesCommand.java:36
net.sf.gridarta.project.ProjectModel
Definition: ProjectModel.java:122
net.sf.gridarta.model.mapviewsettings
Definition: AbstractMapViewSettings.java:20
net.sf.gridarta.maincontrol.GridartaRunMode.BATCH_PNG
BATCH_PNG
Batch PNG: Create PNG files for all given maps in their directories.
Definition: GridartaRunMode.java:36
net.sf.gridarta.commands.CollectArchesCommand.execute
int execute()
Executes the command.
Definition: CollectArchesCommand.java:59
net.sf.gridarta.commands.SinglePngCommand.execute
int execute()
Executes the command.
Definition: SinglePngCommand.java:66
net.sf
net.sf.gridarta.gui.dialog.errorview.DefaultErrorView
A dialog displaying a tree of error messages.
Definition: DefaultErrorView.java:50
net.sf.gridarta.preferences
Definition: Codec.java:20
net.sf.gridarta.commands.BatchPngCommand.execute
int execute()
Executes the command.
Definition: BatchPngCommand.java:60
net.sf.gridarta.gui.map.renderer
Definition: AbstractIsoMapRenderer.java:20
net.sf.gridarta.model.errorview.ErrorView
Interface for classes displaying error messages.
Definition: ErrorView.java:28
net.sf.gridarta.plugin.PluginExecutor
Allows execution of Plugins.
Definition: PluginExecutor.java:48
net.sf.gridarta.maincontrol.DefaultMainControl
MainControl is a central class that's used for access on global data structures / collections and glo...
Definition: DefaultMainControl.java:37
net.sf.gridarta.model.archetype
Definition: AbstractArchetype.java:20
net.sf.gridarta.gui.dialog.errorview.ConsoleErrorView
An ErrorView that reports all errors to the console.
Definition: ConsoleErrorView.java:31
net.sf.gridarta.model.gameobject.GameObject
Reflects a game object (object on a map).
Definition: GameObject.java:36
net.sf.gridarta.model.mapviewsettings.MapViewSettings
Container for settings that affect the rendering of maps.
Definition: MapViewSettings.java:30
net.sf.gridarta.preferences.FilePreferencesFactory
A PreferencesFactory which creates FilePreferences instances.
Definition: FilePreferencesFactory.java:33
net.sf.gridarta.gui
Graphical User Interface of Gridarta.
net.sf.gridarta.gui.filter
Classes for Filters.
Definition: BtnPopup.java:20
net.sf.gridarta.mainactions.DefaultExiter.callExit
static void callExit(final int returnCode)
Calls System#exit(int) or does nothing depending on the user's settings.
Definition: DefaultExiter.java:124
net.sf.gridarta.plugin.PluginExecutor.executePlugin
int executePlugin(@NotNull final String plugin, @NotNull final Iterable< String > parameters)
Executes an editor plugin.
Definition: PluginExecutor.java:78
net.sf.gridarta.model.configsource.ConfigSource
Possible source locations for configuration files.
Definition: ConfigSource.java:37
net.sf.gridarta.gui.dialog.prefs
The preferences ui modules.
Definition: AppPreferences.java:20
net.sf.gridarta.model.settings.EditorSettings
Settings that apply to the editor.
Definition: EditorSettings.java:29
net.sf.gridarta.model.gameobject
GameObjects are the objects based on Archetypes found on maps.
Definition: AbstractGameObject.java:20
net
net.sf.gridarta.model.errorview
Definition: ErrorView.java:20
net.sf.gridarta.maincontrol.ImageCreatorFactory.newImageCreator
static< G extends GameObject< G, A, R > A extends R extends Archetype< G, A, R > ImageCreator< G, A, R > newImageCreator(@NotNull final ResourceIcons resourceIcons, @NotNull final EditorFactory< G, A, R > editorFactory, @NotNull final ProjectModel< G, A, R > projectModel, @NotNull final EditorSettings editorSettings)
Definition: ImageCreatorFactory.java:61
net.sf.gridarta.maincontrol.EditorFactory< G, A, R >
net.sf.gridarta.model.configsource.DefaultConfigSourceFactory
A ConfigSourceFactory that is configured through action keys.
Definition: DefaultConfigSourceFactory.java:34
net.sf.gridarta.model.configsource.ConfigSourceFactory.getConfigSource
ConfigSource getConfigSource(@NotNull String name)
Returns a ConfigSource by name.
net.sf.gridarta.mainactions.DefaultExiter
Exits the application.
Definition: DefaultExiter.java:43
net.sf.gridarta.maincontrol.GridartaEditor.checkForErrors
static void checkForErrors(@NotNull final ErrorView errorView)
Checks whether a ErrorView instance contains at least one error.
Definition: GridartaEditor.java:295
net.sf.gridarta.model.maparchobject.MapArchObject
Interface for MapArchObjects.
Definition: MapArchObject.java:40
net.sf.gridarta.model.filter
Definition: AbstractFilterConfig.java:20
net.sf.gridarta.maincontrol.GridartaRunMode.isConsoleMode
boolean isConsoleMode()
Returns whether this mode uses console-mode.
Definition: GridartaRunMode.java:65
net.sf.gridarta.maincontrol.GridartaRunMode.NORMAL
NORMAL
Normal operation: Start editor with GUI.
Definition: GridartaRunMode.java:31
net.sf.gridarta.maincontrol.GUIMainControl
Creates the main GUI of Gridarta.
Definition: GUIMainControl.java:225
net.sf.gridarta.model.settings.DefaultEditorSettings
Default implementation of EditorSettings.
Definition: DefaultEditorSettings.java:35
net.sf.gridarta.model.mapviewsettings.DefaultMapViewSettings
Default MapViewSettings implementation.
Definition: DefaultMapViewSettings.java:32
net.sf.gridarta.model.configsource
Definition: AbstractConfigSource.java:20
net.sf.gridarta.mainactions
Definition: DefaultExiter.java:20
net.sf.gridarta.maincontrol.GridartaEditor.runNormal
int runNormal(@NotNull final List< File > args, @NotNull final EditorFactory< G, A, R > editorFactory, @NotNull final ErrorView errorView, @NotNull final ResourceIcons resourceIcons, @NotNull final ConfigSourceFactory configSourceFactory, @NotNull final ProjectModel< G, A, R > projectModel, @NotNull final EditorSettings editorSettings)
Run in normal mode.
Definition: GridartaEditor.java:328
net.sf.gridarta.gui.dialog
net.sf.gridarta.maincontrol.GridartaRunMode.SINGLE_PNG
SINGLE_PNG
Single PNG: Create a PNG file from the specified map.
Definition: GridartaRunMode.java:41
net.sf.gridarta.model.settings.ProjectSettings.getConfigSourceName
String getConfigSourceName()
Returns the name of the configuration source.
net.sf.gridarta.maincontrol.ImageCreatorFactory
Utility class for creating ImageCreator instances.
Definition: ImageCreatorFactory.java:44
net.sf.gridarta.model.settings.ProjectSettings
Settings that apply to a project.
Definition: ProjectSettings.java:29
net.sf.gridarta.gui.dialog.errorview
Definition: ConsoleErrorView.java:20
net.sf.gridarta.commands
Definition: BatchPngCommand.java:20
net.sf.gridarta.utils.SyntaxErrorException
Exception thrown for incorrect arguments.
Definition: SyntaxErrorException.java:28
net.sf.gridarta.gui.filter.FilterControl
Definition: FilterControl.java:33
net.sf.gridarta.model.configsource.ConfigSourceFactory
A factory for creating ConfigSources.
Definition: ConfigSourceFactory.java:28
net.sf.gridarta.commands.SinglePngCommand
Run in single png mode.
Definition: SinglePngCommand.java:33
net.sf.gridarta.commands.BatchPngCommand
Run in batch png mode.
Definition: BatchPngCommand.java:35
net.sf.gridarta.model
net.sf.gridarta.model.archetype.Archetype
Reflects an Archetype.
Definition: Archetype.java:41
net.sf.gridarta.maincontrol.GridartaEditor.runPlugin
int runPlugin(@NotNull final String plugin, final ErrorView errorView, final Iterable< String > args, @NotNull final EditorFactory< G, A, R > editorFactory, @NotNull final ProjectModel< G, A, R > projectModel, @NotNull final ResourceIcons resourceIcons, @NotNull final EditorSettings editorSettings)
Executes a plugin.
Definition: GridartaEditor.java:280
net.sf.gridarta.gui.map.renderer.RendererFactory
Factory for creating MapRenderer instances.
Definition: RendererFactory.java:33
net.sf.gridarta.gui.map
Base classes for rendering maps.
Definition: AbstractPerMapDialogManager.java:20
net.sf.gridarta.maincontrol.GridartaEditor.GridartaEditor
GridartaEditor(@NotNull final String tipOfTheDayPackage)
Creates a new instance.
Definition: GridartaEditor.java:95
net.sf.gridarta.maincontrol.GridartaRunMode
Main run mode of the editor.
Definition: GridartaRunMode.java:26
net.sf.gridarta.gui.filter.DefaultFilterControl
Control for filters.
Definition: DefaultFilterControl.java:64
net.sf.gridarta.model.errorview.ErrorView.waitDialog
void waitDialog()
Waits until the dialog has been dismissed.
net.sf.gridarta.maincontrol.GridartaRunMode.COLLECT_ARCHES
COLLECT_ARCHES
Collect archetypes.
Definition: GridartaRunMode.java:46
net.sf.gridarta.model.maparchobject
Definition: AbstractMapArchObject.java:20
net.sf.gridarta.utils.ResourceIcons
Creates ImageIcon instances from resources.
Definition: ResourceIcons.java:46
net.sf.gridarta.model.settings.ProjectSettings.getMapsDirectory
File getMapsDirectory()
Returns the default maps directory.
net.sf.gridarta.gui.dialog.prefs.GUIPreferences.PREFERENCES_LANGUAGE
static final String PREFERENCES_LANGUAGE
Preferences key for language.
Definition: GUIPreferences.java:61
net.sf.gridarta.model.filter.NamedFilter
A Filter that aggregates named filters.
Definition: NamedFilter.java:41
net.sf.gridarta.project
Definition: ProjectFactory.java:20
net.sf.gridarta.maincontrol.GridartaEditor.waitDialog
static void waitDialog(final ErrorView errorView)
Waits until the error dialog has been dismissed.
Definition: GridartaEditor.java:307
net.sf.gridarta.preferences.FilePreferencesFactory.initialize
static void initialize(@NotNull final String defaultName, @Nullable final File file)
Initialize the module.
Definition: FilePreferencesFactory.java:54
net.sf.gridarta.maincontrol.GridartaEditor.usage
static void usage(@NotNull final String editorJarName, @Nullable final String defaultConfig)
Prints the editor's command-line options to System#out.
Definition: GridartaEditor.java:376
net.sf.gridarta.utils
Definition: ActionBuilderUtils.java:20
net.sf.gridarta.model.settings
Definition: AbstractDefaultProjectSettings.java:20
net.sf.gridarta.MainControl
Interface used as preferences location.
Definition: MainControl.java:27
net.sf.gridarta.maincontrol.GridartaEditor
Main class of the editor; parses command-line arguments, initializes and starts the editor.
Definition: GridartaEditor.java:83
net.sf.gridarta.utils.ConfigFileUtils
Loader for loading resources the user's home directory.
Definition: ConfigFileUtils.java:29