Gridarta Editor
ScriptArchEditor.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.gui.scripts;
21 
22 import java.awt.Color;
23 import java.awt.Component;
24 import java.awt.Container;
25 import java.awt.FlowLayout;
26 import java.awt.Frame;
27 import java.awt.Insets;
28 import java.io.File;
29 import java.io.IOException;
30 import javax.swing.AbstractButton;
31 import javax.swing.BorderFactory;
32 import javax.swing.Box;
33 import javax.swing.BoxLayout;
34 import javax.swing.JButton;
35 import javax.swing.JComboBox;
36 import javax.swing.JDialog;
37 import javax.swing.JFileChooser;
38 import javax.swing.JLabel;
39 import javax.swing.JOptionPane;
40 import javax.swing.JPanel;
41 import javax.swing.JTextField;
42 import javax.swing.WindowConstants;
43 import javax.swing.filechooser.FileFilter;
44 import javax.swing.text.JTextComponent;
60 import net.sf.japi.swing.action.ActionBuilder;
61 import net.sf.japi.swing.action.ActionBuilderFactory;
62 import net.sf.japi.util.Arrays2;
63 import org.jetbrains.annotations.NotNull;
64 
69 public class ScriptArchEditor<G extends GameObject<G, A, R>, A extends MapArchObject<A>, R extends Archetype<G, A, R>> {
70 
74  @NotNull
75  private static final ActionBuilder ACTION_BUILDER = ActionBuilderFactory.getInstance().getActionBuilder("net.sf.gridarta");
76 
80  @NotNull
82 
86  @NotNull
87  private final String scriptEnding;
88 
92  @NotNull
93  private final PathManager pathManager;
94 
98  @NotNull
100 
101  @NotNull
102  private final JComboBox<?> eventTypeBox;
103 
104  @NotNull
105  private final FileFilter scriptFileFilter;
106 
110  @NotNull
112 
116  @NotNull
118 
119  @NotNull
120  private final JComboBox<String> pluginNameBox;
121 
122  @NotNull
123  private JTextComponent inputScriptPath;
124 
125  @NotNull
126  private JTextComponent inputOptions;
127 
131  @NotNull
133 
146  public ScriptArchEditor(@NotNull final ScriptedEventFactory<G, A, R> scriptedEventFactory, @NotNull final String scriptEnding, @NotNull final String name, @NotNull final ScriptArchUtils scriptArchUtils, @NotNull final FileFilter scriptFileFilter, @NotNull final ProjectSettings projectSettings, @NotNull final MapManager<?, ?, ?> mapManager, @NotNull final PathManager pathManager, @NotNull final ScriptEditControl scriptEditControl) {
147  this.scriptedEventFactory = scriptedEventFactory;
148  this.scriptEnding = scriptEnding;
149  this.scriptArchUtils = scriptArchUtils;
150  this.pathManager = pathManager;
151  this.scriptEditControl = scriptEditControl;
152 
153  pluginNameBox = new JComboBox<>(new String[] { name });
154  pluginNameBox.setSelectedIndex(0);
155 
157  this.scriptFileFilter = scriptFileFilter;
158  this.projectSettings = projectSettings;
159  this.mapManager = mapManager;
160  }
161 
162  @NotNull
163  private static JComboBox<?> createEventTypeBox(@NotNull final ScriptArchUtils scriptArchUtils) {
164  final String[] valuesArray = scriptArchUtils.getEventNames();
165  final JComboBox<?> tmpEventTypeBox = new JComboBox<>(valuesArray);
166  tmpEventTypeBox.setSelectedIndex(Arrays2.linearEqualitySearch("say", valuesArray));
167  return tmpEventTypeBox;
168  }
169 
177  public void addEventScript(@NotNull final G gameObject, @NotNull final ScriptArchData<G, A, R> scriptArchData, @NotNull final Frame parent) {
178  final String archName = gameObject.getBestName();
179  // create a reasonable default script name for lazy users :-)
180  final String defScriptName = ScriptUtils.chooseDefaultScriptName(mapManager.getLocalMapDir(), archName, scriptEnding, pathManager);
181 
182  // initialize popup frame
183  final JDialog newScriptFrame = new JDialog(parent, ActionBuilderUtils.getString(ACTION_BUILDER, "scriptedEventTitleNew"), true);
184  newScriptFrame.setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE);
185 
186  final JPanel mainPanel = new JPanel();
187  mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS));
188  mainPanel.setBorder(BorderFactory.createEmptyBorder(5, 5, 2, 5));
189 
190  // first line: heading
191  final Container line1 = new JPanel(new FlowLayout(FlowLayout.LEFT));
192  final Component headingLabel = new JLabel(ActionBuilderUtils.format(ACTION_BUILDER, "scriptedEventHeading", archName));
193  headingLabel.setForeground(Color.black);
194  line1.add(headingLabel);
195  mainPanel.add(line1);
196 
197  // event type
198  mainPanel.add(Box.createVerticalStrut(10));
199  final Container line2 = new JPanel(new FlowLayout(FlowLayout.LEFT));
200  final Component typeLabel = ActionBuilderUtils.newLabel(ACTION_BUILDER, "scriptedEventType");
201  line2.add(typeLabel);
202  line2.add(eventTypeBox);
203  //mainPanel.add(line2);
204  line2.add(Box.createHorizontalStrut(10));
205 
206  // plugin name
207  final Component pluginLabel = ActionBuilderUtils.newLabel(ACTION_BUILDER, "scriptedEventPlugin");
208  line2.add(pluginLabel);
209  line2.add(pluginNameBox);
210  mainPanel.add(line2);
211 
212  // path
213  mainPanel.add(Box.createVerticalStrut(5));
214  final Container line3 = new JPanel(new FlowLayout(FlowLayout.LEFT));
215  final Component scriptFileLabel = ActionBuilderUtils.newLabel(ACTION_BUILDER, "scriptedEventScript");
216  line3.add(scriptFileLabel);
217  mainPanel.add(line3);
218  inputScriptPath = new JTextField(defScriptName, 20);
219  final AbstractButton browseButton = new JButton("...");
220  browseButton.setMargin(new Insets(0, 10, 0, 10));
221  browseButton.addActionListener(e -> {
222  final File home = mapManager.getLocalMapDir();
223 
224  final JFileChooser fileChooser = new JFileChooser();
225  fileChooser.setDialogTitle(ActionBuilderUtils.getString(ACTION_BUILDER, "scriptedEventSelectFile"));
226  fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
227  FileChooserUtils.setCurrentDirectory(fileChooser, home);
228  fileChooser.setMultiSelectionEnabled(false);
229  fileChooser.setFileFilter(scriptFileFilter);
230 
231  if (fileChooser.showOpenDialog(newScriptFrame) == JFileChooser.APPROVE_OPTION) {
232  // user has selected a file
233  final File f = fileChooser.getSelectedFile();
235  }
236  });
237  line3.add(inputScriptPath);
238  line3.add(browseButton);
239  mainPanel.add(line3);
240 
241  // options
242  mainPanel.add(Box.createVerticalStrut(5));
243  final Container line4 = new JPanel(new FlowLayout(FlowLayout.LEFT));
244  line4.add(new JLabel(ActionBuilderUtils.getString(ACTION_BUILDER, "scriptedEventOptions")));
245  inputOptions = new JTextField("", 20);
246  line4.add(inputOptions);
247  mainPanel.add(line4);
248 
249  // description
250  final Container line5 = new JPanel(new FlowLayout(FlowLayout.LEFT));
251  final JPanel textPanel = new JPanel();
252  textPanel.setLayout(new BoxLayout(textPanel, BoxLayout.Y_AXIS));
253  final Component label1 = ActionBuilderUtils.newLabel(ACTION_BUILDER, "scriptedEventInfo1");
254  textPanel.add(label1);
255  final Component label2 = ActionBuilderUtils.newLabel(ACTION_BUILDER, "scriptedEventInfo2");
256  textPanel.add(label2);
257  line5.add(textPanel);
258  mainPanel.add(line5);
259 
260  // button panel:
261  mainPanel.add(Box.createVerticalStrut(10));
262  final Container line6 = new JPanel(new FlowLayout(FlowLayout.RIGHT));
263  final AbstractButton nsOkButton = new JButton(ActionBuilderUtils.getString(ACTION_BUILDER, "scriptedEventOk"));
264  nsOkButton.addActionListener(e -> createNewEvent(newScriptFrame, scriptArchData, gameObject));
265  line6.add(nsOkButton);
266 
267  final AbstractButton cancelButton = new JButton(ActionBuilderUtils.getString(ACTION_BUILDER, "scriptedEventCancel"));
268  cancelButton.addActionListener(e -> newScriptFrame.setVisible(false));
269  line6.add(cancelButton);
270  mainPanel.add(line6);
271 
272  newScriptFrame.getContentPane().add(mainPanel);
273  newScriptFrame.pack();
274  newScriptFrame.setLocationRelativeTo(parent);
275  newScriptFrame.setVisible(true);
276  }
277 
278  private void createNewEvent(@NotNull final Component frame, @NotNull final ScriptArchData<G, A, R> scriptArchData, @NotNull final G gameObject) {
279  final StringBuilder scriptPath = new StringBuilder(inputScriptPath.getText().trim().replace('\\', '/'));
280  final String options = inputOptions.getText().trim();
281  final int eventType = scriptArchUtils.indexToEventType(eventTypeBox.getSelectedIndex());
282  final String pluginName = ((String) pluginNameBox.getSelectedItem()).trim();
283 
284  final File localMapDir = mapManager.getLocalMapDir();
285 
286  // first check if that event type is not already in use
287  final GameObject<G, A, R> replaceObject = scriptArchData.getScriptedEvent(eventType, gameObject);
288  if (replaceObject != null) {
289  // collision with existing event -> ask user: replace?
290  if (JOptionPane.showConfirmDialog(frame, ActionBuilderUtils.format(ACTION_BUILDER, "scriptedEventReplace", scriptArchUtils.typeName(eventType)), ActionBuilderUtils.getString(ACTION_BUILDER, "scriptedEventReplaceTitle"), JOptionPane.YES_NO_OPTION, JOptionPane.INFORMATION_MESSAGE) == JOptionPane.NO_OPTION) {
291  // bail out
292  return;
293  }
294  }
295 
296  String absScriptPath;
297  if (scriptPath.length() > 0 && scriptPath.charAt(0) == '/') {
298  // script path is absolute
299  final File mapDir = projectSettings.getMapsDirectory();
300  if (!mapDir.exists()) {
301  // if map dir doesn't exist, this is not going to work
302  frame.setVisible(false);
303  ACTION_BUILDER.showMessageDialog(frame, "mapDirDoesntExist", mapDir);
304  return;
305  }
306 
307  absScriptPath = mapDir.getAbsolutePath() + scriptPath;
308  } else {
309  // script path is relative
310  absScriptPath = localMapDir.getAbsolutePath() + "/" + scriptPath;
311  }
312 
313  // now check if the specified path points to an existing script
314  File newScriptFile = new File(absScriptPath);
315  if (!newScriptFile.exists() && !absScriptPath.endsWith(scriptEnding)) {
316  absScriptPath += scriptEnding;
317  scriptPath.append(scriptEnding);
318  newScriptFile = new File(absScriptPath);
319  }
320 
321  if (newScriptFile.exists()) {
322  if (newScriptFile.isFile()) {
323  // file exists -> link it to the event
324  final ScriptedEvent<G, A, R> event;
325  try {
326  event = scriptedEventFactory.newScriptedEvent(eventType, pluginName, scriptPath.toString(), options);
327  } catch (final UndefinedEventArchetypeException ex) {
328  JOptionPane.showMessageDialog(frame, ActionBuilderUtils.format(ACTION_BUILDER, "scriptedEventCreateError", eventType, ex.getMessage()), ActionBuilderUtils.getString(ACTION_BUILDER, "scriptedEventCreateErrorTitle"), JOptionPane.ERROR_MESSAGE);
329  return;
330  }
331  if (replaceObject != null) {
332  replaceObject.remove();
333  }
334  gameObject.addLast(event.getEventArch());
335  frame.setVisible(false); // close dialog
336  }
337 
338  return;
339  }
340 
341  if (!absScriptPath.endsWith(scriptEnding)) {
342  absScriptPath += scriptEnding;
343  scriptPath.append(scriptEnding);
344  newScriptFile = new File(absScriptPath);
345  }
346 
347  // file does not exist -> aks user: create new file?
348  if (JOptionPane.showConfirmDialog(frame, ActionBuilderUtils.format(ACTION_BUILDER, "scriptedEventCreate", newScriptFile.getName()), ActionBuilderUtils.getString(ACTION_BUILDER, "scriptedEventCreateTitle"), JOptionPane.YES_NO_OPTION, JOptionPane.INFORMATION_MESSAGE) != JOptionPane.YES_OPTION) {
349  return;
350  }
351 
352  boolean couldCreateFile = false; // true when file creation successful
353  try {
354  // try to create new empty file
355  couldCreateFile = newScriptFile.createNewFile();
356  } catch (final IOException e) {
357  /* ignore (really?) */
358  }
359 
360  if (!couldCreateFile) {
361  JOptionPane.showMessageDialog(frame, ActionBuilderUtils.format(ACTION_BUILDER, "scriptedEventFileError", newScriptFile.getName()), ActionBuilderUtils.getString(ACTION_BUILDER, "scriptedEventFileErrorTitle"), JOptionPane.ERROR_MESSAGE);
362  return;
363  }
364 
365  // file has been created, now link it to the event
366  final ScriptedEvent<G, A, R> event;
367  try {
368  event = scriptedEventFactory.newScriptedEvent(eventType, pluginName, scriptPath.toString(), options);
369  } catch (final UndefinedEventArchetypeException ex) {
370  JOptionPane.showMessageDialog(frame, ActionBuilderUtils.format(ACTION_BUILDER, "scriptedEventCreateError", eventType, ex.getMessage()), ActionBuilderUtils.getString(ACTION_BUILDER, "scriptedEventCreateErrorTitle"), JOptionPane.ERROR_MESSAGE);
371  return;
372  }
373  if (replaceObject != null) {
374  replaceObject.remove();
375  }
376  gameObject.addLast(event.getEventArch());
377  frame.setVisible(false); // close dialog
378 
379  // open new script file
380  scriptEditControl.openScriptFile(newScriptFile);
381  }
382 
383 }
net.sf.gridarta.model.scripts.ScriptUtils.chooseDefaultScriptName
static String chooseDefaultScriptName(@NotNull final File baseDir, final String archetypeName, final String scriptEnding, @NotNull final PathManager pathManager)
Try to create a reasonable default script name for lazy users.
Definition: ScriptUtils.java:102
name
name
Definition: ArchetypeTypeSetParserTest-ignoreDefaultAttribute1-result.txt:2
net.sf.gridarta.model.mapmanager
Definition: AbstractMapManager.java:20
net.sf.gridarta.model.scripts.ScriptedEventFactory
Factory for creating ScriptedEvent instances.
Definition: ScriptedEventFactory.java:31
net.sf.gridarta.model.scripts.ScriptUtils.localizeEventPath
static String localizeEventPath(@NotNull final File localMapDir, final File f, @NotNull final File mapDir)
This method is called when the user selects a new event to be created.
Definition: ScriptUtils.java:52
net.sf.gridarta.textedit.scripteditor
Classes for the script editor used within the editor to create and modify Python and Lua scripts.
Definition: Actions.java:20
net.sf.gridarta.gui.scripts.ScriptArchEditor.scriptArchUtils
final ScriptArchUtils scriptArchUtils
The ScriptArchUtils instance to use.
Definition: ScriptArchEditor.java:81
net.sf.gridarta.model.mapmanager.MapManager
A MapManager manages all opened maps.
Definition: MapManager.java:37
net.sf.gridarta.gui.scripts.ScriptArchEditor.scriptEnding
final String scriptEnding
The ending for scripts.
Definition: ScriptArchEditor.java:87
net.sf.gridarta
Base package of all Gridarta classes.
net.sf.gridarta.utils.FileChooserUtils.setCurrentDirectory
static void setCurrentDirectory(@NotNull final JFileChooser fileChooser, @Nullable final File dir)
Calls JFileChooser#setCurrentDirectory(File).
Definition: FileChooserUtils.java:48
net.sf
net.sf.gridarta.model.io.PathManager
This class contains methods for converting relative map paths to absolute map paths and vice versa.
Definition: PathManager.java:39
net.sf.gridarta.model.scripts
Common types for event archetypes.
Definition: AbstractScriptedEvent.java:20
net.sf.gridarta.model.scripts.ScriptArchUtils.indexToEventType
int indexToEventType(int index)
Converts a combo box index to an event type.
net.sf.gridarta.model.archetype
Definition: AbstractArchetype.java:20
net.sf.gridarta.gui.scripts.ScriptArchEditor.projectSettings
final ProjectSettings projectSettings
The ProjectSettings to use.
Definition: ScriptArchEditor.java:111
net.sf.gridarta.model.gameobject.GameObject
Reflects a game object (object on a map).
Definition: GameObject.java:36
net.sf.gridarta.utils.ActionBuilderUtils.newLabel
static JLabel newLabel(@NotNull final ActionBuilder actionBuilder, @NotNull final String key)
Creates a new JLabel from a resource key.
Definition: ActionBuilderUtils.java:117
net.sf.gridarta.textedit
net.sf.gridarta.gui.scripts.ScriptArchEditor.createNewEvent
void createNewEvent(@NotNull final Component frame, @NotNull final ScriptArchData< G, A, R > scriptArchData, @NotNull final G gameObject)
Definition: ScriptArchEditor.java:278
net.sf.gridarta.model.scripts.ScriptArchUtils
Definition: ScriptArchUtils.java:26
net.sf.gridarta.model.scripts.ScriptUtils
Definition: ScriptUtils.java:29
net.sf.gridarta.model.scripts.ScriptedEvent
Class which stores information about one scripted event.
Definition: ScriptedEvent.java:31
net.sf.gridarta.model.gameobject
GameObjects are the objects based on Archetypes found on maps.
Definition: AbstractGameObject.java:20
net
net.sf.gridarta.gui.scripts.ScriptArchEditor.scriptFileFilter
final FileFilter scriptFileFilter
Definition: ScriptArchEditor.java:105
net.sf.gridarta.gui.scripts.ScriptArchEditor.mapManager
final MapManager<?, ?, ?> mapManager
The MapManager to use.
Definition: ScriptArchEditor.java:117
net.sf.gridarta.model.scripts.UndefinedEventArchetypeException
This exception is thrown if an event game object cannot be created.
Definition: UndefinedEventArchetypeException.java:29
net.sf.gridarta.gui.scripts.ScriptArchEditor.addEventScript
void addEventScript(@NotNull final G gameObject, @NotNull final ScriptArchData< G, A, R > scriptArchData, @NotNull final Frame parent)
A popup is opened and the user can create a new scripting event which gets attached to this gameObjec...
Definition: ScriptArchEditor.java:177
net.sf.gridarta.model.maparchobject.MapArchObject
Interface for MapArchObjects.
Definition: MapArchObject.java:40
net.sf.gridarta.model.mapmanager.MapManager.getLocalMapDir
File getLocalMapDir()
Returns a guess for a script directory to use.
net.sf.gridarta.gui.scripts.ScriptArchEditor
Dialog to create events linked to item scripting.
Definition: ScriptArchEditor.java:69
net.sf.gridarta.gui.scripts.ScriptArchEditor.pluginNameBox
final JComboBox< String > pluginNameBox
Definition: ScriptArchEditor.java:120
net.sf.gridarta.gui.scripts.ScriptArchEditor.eventTypeBox
final JComboBox<?> eventTypeBox
Definition: ScriptArchEditor.java:102
net.sf.gridarta.model.scripts.ScriptArchUtils.getEventNames
String[] getEventNames()
Returns all event names.
net.sf.gridarta.utils.ActionBuilderUtils.format
static String format(@NotNull final ActionBuilder actionBuilder, @NotNull final String key, @NotNull final Object... args)
Returns the value of a key.
Definition: ActionBuilderUtils.java:101
net.sf.gridarta.model.scripts.ScriptArchUtils.typeName
String typeName(int eventType)
Returns a human readable name for an event type.
net.sf.gridarta.utils.ActionBuilderUtils.getString
static String getString(@NotNull final ActionBuilder actionBuilder, @NotNull final String key, @NotNull final String defaultValue)
Returns the value of a key.
Definition: ActionBuilderUtils.java:71
net.sf.gridarta.model.scripts.ScriptedEventFactory.newScriptedEvent
ScriptedEvent< G, A, R > newScriptedEvent(int eventType, @NotNull String pluginName, @NotNull String scriptPath, @NotNull String options)
Creates a new ScriptedEvent instance.
net.sf.gridarta.textedit.scripteditor.ScriptEditControl.openScriptFile
void openScriptFile(@NotNull final File file)
Opens a script file.
Definition: ScriptEditControl.java:155
net.sf.gridarta.model.io
Reading and writing of maps, handling of paths.
Definition: AbstractAnimationObjectsReader.java:20
net.sf.gridarta.model.settings.ProjectSettings
Settings that apply to a project.
Definition: ProjectSettings.java:29
net.sf.gridarta.gui.scripts.ScriptArchEditor.ScriptArchEditor
ScriptArchEditor(@NotNull final ScriptedEventFactory< G, A, R > scriptedEventFactory, @NotNull final String scriptEnding, @NotNull final String name, @NotNull final ScriptArchUtils scriptArchUtils, @NotNull final FileFilter scriptFileFilter, @NotNull final ProjectSettings projectSettings, @NotNull final MapManager<?, ?, ?> mapManager, @NotNull final PathManager pathManager, @NotNull final ScriptEditControl scriptEditControl)
Creates a new instance.
Definition: ScriptArchEditor.java:146
net.sf.gridarta.gui.scripts.ScriptArchEditor.inputOptions
JTextComponent inputOptions
Definition: ScriptArchEditor.java:126
net.sf.gridarta.textedit.scripteditor.ScriptEditControl
ScriptEditControl - Manages events and data flow for the script editor entity.
Definition: ScriptEditControl.java:59
net.sf.gridarta.model
net.sf.gridarta.model.archetype.Archetype
Reflects an Archetype.
Definition: Archetype.java:41
net.sf.gridarta.model.gameobject.GameObject.remove
void remove()
Remove this GameObject from its container.
net.sf.gridarta.utils.FileChooserUtils
Utility class for JFileChooser related functions.
Definition: FileChooserUtils.java:31
net.sf.gridarta.utils.ActionBuilderUtils
Utility class for ActionBuilder related functions.
Definition: ActionBuilderUtils.java:31
net.sf.gridarta.model.maparchobject
Definition: AbstractMapArchObject.java:20
net.sf.gridarta.model.settings.ProjectSettings.getMapsDirectory
File getMapsDirectory()
Returns the default maps directory.
net.sf.gridarta.gui.scripts.ScriptArchEditor.createEventTypeBox
static JComboBox<?> createEventTypeBox(@NotNull final ScriptArchUtils scriptArchUtils)
Definition: ScriptArchEditor.java:163
net.sf.gridarta.gui.scripts.ScriptArchEditor.scriptEditControl
final ScriptEditControl scriptEditControl
The ScriptEditControl to use.
Definition: ScriptArchEditor.java:99
net.sf.gridarta.gui.scripts.ScriptArchEditor.ACTION_BUILDER
static final ActionBuilder ACTION_BUILDER
Action Builder.
Definition: ScriptArchEditor.java:75
net.sf.gridarta.gui.scripts.ScriptArchEditor.pathManager
final PathManager pathManager
The PathManager for converting path names.
Definition: ScriptArchEditor.java:93
net.sf.gridarta.utils
Definition: ActionBuilderUtils.java:20
net.sf.gridarta.model.settings
Definition: AbstractDefaultProjectSettings.java:20
net.sf.gridarta.model.scripts.ScriptedEvent.getEventArch
G getEventArch()
Returns the underlying event game object.
net.sf.gridarta.gui.scripts.ScriptArchEditor.scriptedEventFactory
final ScriptedEventFactory< G, A, R > scriptedEventFactory
The ScriptedEventFactory instance to use.
Definition: ScriptArchEditor.java:132
net.sf.gridarta.model.scripts.ScriptArchData
Stores and manages information about scripted events.
Definition: ScriptArchData.java:35
net.sf.gridarta.gui.scripts.ScriptArchEditor.inputScriptPath
JTextComponent inputScriptPath
Definition: ScriptArchEditor.java:123