Gridarta Editor
ScriptedEventEditor.java
Go to the documentation of this file.
1 /*
2  * Gridarta MMORPG map editor for Crossfire, Daimonin and similar games.
3  * Copyright (C) 2000-2015 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.Component;
23 import java.awt.Container;
24 import java.awt.FlowLayout;
25 import java.awt.Frame;
26 import java.awt.event.ActionEvent;
27 import java.awt.event.ActionListener;
28 import java.io.File;
29 import javax.swing.AbstractButton;
30 import javax.swing.BorderFactory;
31 import javax.swing.Box;
32 import javax.swing.BoxLayout;
33 import javax.swing.JButton;
34 import javax.swing.JDialog;
35 import javax.swing.JLabel;
36 import javax.swing.JPanel;
37 import javax.swing.JTextField;
38 import javax.swing.WindowConstants;
39 import javax.swing.text.JTextComponent;
48 import net.sf.japi.swing.action.ActionBuilder;
49 import net.sf.japi.swing.action.ActionBuilderFactory;
50 import org.jetbrains.annotations.NotNull;
51 
56 public class ScriptedEventEditor<G extends GameObject<G, A, R>, A extends MapArchObject<A>, R extends Archetype<G, A, R>> {
57 
61  @NotNull
62  private static final ActionBuilder ACTION_BUILDER = ActionBuilderFactory.getInstance().getActionBuilder("net.sf.gridarta");
63 
67  @NotNull
69 
73  @NotNull
75 
76  @NotNull
77  private JTextComponent inputScriptPath;
78 
79  @NotNull
80  private JTextComponent inputPluginName;
81 
82  @NotNull
83  private JTextComponent inputOptions;
84 
91  this.projectSettings = projectSettings;
92  this.scriptEditControl = scriptEditControl;
93  }
94 
101  public void openScript(@NotNull final MapManager<?, ?, ?> mapManager, @NotNull final String scriptPath, @NotNull final Component parent) {
102  // trying to get the absolute path to script file:
103  final File scriptFile;
104  if (scriptPath.startsWith("/")) {
105  // file path is absolute (to map base directory):
106  scriptFile = new File(projectSettings.getMapsDirectory(), scriptPath.substring(1));
107  } else {
108  // file path is relative to map dir
109  scriptFile = new File(mapManager.getLocalMapDir(), scriptPath);
110  }
111 
112  // now see if that file really exists:
113  if (scriptFile.exists() && scriptFile.isFile()) {
114  scriptEditControl.openScriptFile(scriptFile);
115  } else {
116  // file does not exist!
117  ACTION_BUILDER.showMessageDialog(parent, "openScriptNotFound", scriptFile);
118  }
119  }
120 
127  public void editParameters(@NotNull final ScriptedEvent<G, A, R> scriptedEvent, @NotNull final Frame parent) {
128  final JDialog pathFrame = new JDialog(parent, ActionBuilderUtils.getString(ACTION_BUILDER, "scriptedEventTitle"), true);
129  pathFrame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
130 
131  final JPanel mainPanel = new JPanel();
132  mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS));
133  mainPanel.setBorder(BorderFactory.createEmptyBorder(5, 5, 2, 5));
134 
135  // input line: script path
136  final Container line1 = new JPanel(new FlowLayout(FlowLayout.RIGHT));
137  final Component text1 = new JLabel(ActionBuilderUtils.getString(ACTION_BUILDER, "scriptedEventScript"));
138  line1.add(text1);
139  inputScriptPath = new JTextField(scriptedEvent.getScriptPath(), 20);
140  line1.add(inputScriptPath);
141  mainPanel.add(line1);
142 
143  // input line: plugin options
144  final Container line2 = new JPanel(new FlowLayout(FlowLayout.RIGHT));
145  final Component text2 = new JLabel(ActionBuilderUtils.getString(ACTION_BUILDER, "scriptedEventOptions"));
146  line2.add(text2);
147  inputOptions = new JTextField(scriptedEvent.getOptions(), 20);
148  line2.add(inputOptions);
149  mainPanel.add(line2);
150  mainPanel.add(Box.createVerticalStrut(5));
151 
152  // input line: plugin name
153  final Container line3 = new JPanel(new FlowLayout(FlowLayout.RIGHT));
154  final Component text3 = ActionBuilderUtils.newLabel(ACTION_BUILDER, "scriptedEventPlugin");
155  line3.add(text3);
156  inputPluginName = new JTextField(scriptedEvent.getPluginName(), 20);
157  line3.add(inputPluginName);
158  mainPanel.add(line3);
159  mainPanel.add(Box.createVerticalStrut(5));
160 
161  // button panel:
162  final Container line4 = new JPanel(new FlowLayout(FlowLayout.RIGHT));
163  final AbstractButton okButton = new JButton(ActionBuilderUtils.getString(ACTION_BUILDER, "scriptedEventOk"));
164  okButton.addActionListener(new ActionListener() {
165 
166  @Override
167  public void actionPerformed(@NotNull final ActionEvent e) {
168  scriptedEvent.modifyEventPath();
169  pathFrame.dispose();
170  }
171 
172  });
173  line4.add(okButton);
174 
175  final AbstractButton cancelButton = new JButton(ActionBuilderUtils.getString(ACTION_BUILDER, "scriptedEventCancel"));
176  cancelButton.addActionListener(new ActionListener() {
177 
178  @Override
179  public void actionPerformed(@NotNull final ActionEvent e) {
180  pathFrame.dispose();
181  }
182 
183  });
184  line4.add(cancelButton);
185  mainPanel.add(line4);
186 
187  pathFrame.getContentPane().add(mainPanel);
188  pathFrame.pack();
189  pathFrame.setLocationRelativeTo(parent);
190  pathFrame.setVisible(true);
191  }
192 
193  @NotNull
194  public String getInputScriptPath() {
195  return inputScriptPath.getText().trim();
196  }
197 
198  @NotNull
199  public String getInputPluginName() {
200  return inputPluginName.getText().trim();
201  }
202 
203  @NotNull
204  public String getInputOptions() {
205  return inputOptions.getText().trim();
206  }
207 
208 }
net.sf.gridarta.model.mapmanager
Definition: AbstractMapManager.java:20
net.sf.gridarta.textedit.scripteditor
Definition: Actions.java:20
net.sf.gridarta.model.mapmanager.MapManager
Definition: MapManager.java:37
net.sf.gridarta.gui.scripts.ScriptedEventEditor.getInputScriptPath
String getInputScriptPath()
Definition: ScriptedEventEditor.java:194
net.sf.gridarta
net.sf
net.sf.gridarta.model.scripts
Definition: AbstractScriptedEvent.java:20
net.sf.gridarta.gui.scripts.ScriptedEventEditor.openScript
void openScript(@NotNull final MapManager<?, ?, ?> mapManager, @NotNull final String scriptPath, @NotNull final Component parent)
Definition: ScriptedEventEditor.java:101
net.sf.gridarta.model.archetype
Definition: AbstractArchetype.java:20
net.sf.gridarta.model.gameobject.GameObject
Definition: GameObject.java:36
net.sf.gridarta.utils.ActionBuilderUtils.newLabel
static JLabel newLabel(@NotNull final ActionBuilder actionBuilder, @NotNull final String key)
Definition: ActionBuilderUtils.java:117
net.sf.gridarta.textedit
net.sf.gridarta.gui.scripts.ScriptedEventEditor.getInputOptions
String getInputOptions()
Definition: ScriptedEventEditor.java:204
net.sf.gridarta.model.scripts.ScriptedEvent
Definition: ScriptedEvent.java:31
net.sf.gridarta.model.gameobject
Definition: AbstractGameObject.java:20
net
net.sf.gridarta.gui.scripts.ScriptedEventEditor
Definition: ScriptedEventEditor.java:56
net.sf.gridarta.gui.scripts.ScriptedEventEditor.inputOptions
JTextComponent inputOptions
Definition: ScriptedEventEditor.java:83
net.sf.gridarta.gui.scripts.ScriptedEventEditor.projectSettings
final ProjectSettings projectSettings
Definition: ScriptedEventEditor.java:68
net.sf.gridarta.gui.scripts.ScriptedEventEditor.scriptEditControl
final ScriptEditControl scriptEditControl
Definition: ScriptedEventEditor.java:74
net.sf.gridarta.gui.scripts.ScriptedEventEditor.inputScriptPath
JTextComponent inputScriptPath
Definition: ScriptedEventEditor.java:77
net.sf.gridarta.model.maparchobject.MapArchObject
Definition: MapArchObject.java:40
net.sf.gridarta.gui.scripts.ScriptedEventEditor.getInputPluginName
String getInputPluginName()
Definition: ScriptedEventEditor.java:199
net.sf.gridarta.gui.scripts.ScriptedEventEditor.inputPluginName
JTextComponent inputPluginName
Definition: ScriptedEventEditor.java:80
net.sf.gridarta.gui.scripts.ScriptedEventEditor.ScriptedEventEditor
ScriptedEventEditor(@NotNull final ProjectSettings projectSettings, @NotNull final ScriptEditControl scriptEditControl)
Definition: ScriptedEventEditor.java:90
net.sf.gridarta.utils.ActionBuilderUtils.getString
static String getString(@NotNull final ActionBuilder actionBuilder, @NotNull final String key, @NotNull final String defaultValue)
Definition: ActionBuilderUtils.java:71
net.sf.gridarta.textedit.scripteditor.ScriptEditControl.openScriptFile
void openScriptFile(@NotNull final File file)
Definition: ScriptEditControl.java:155
net.sf.gridarta.model.settings.ProjectSettings
Definition: ProjectSettings.java:29
net.sf.gridarta.textedit.scripteditor.ScriptEditControl
Definition: ScriptEditControl.java:59
net.sf.gridarta.model
net.sf.gridarta.model.archetype.Archetype
Definition: Archetype.java:41
net.sf.gridarta.utils.ActionBuilderUtils
Definition: ActionBuilderUtils.java:31
net.sf.gridarta.model.maparchobject
Definition: AbstractMapArchObject.java:20
net.sf.gridarta.model.settings.ProjectSettings.getMapsDirectory
File getMapsDirectory()
net.sf.gridarta.gui.scripts.ScriptedEventEditor.ACTION_BUILDER
static final ActionBuilder ACTION_BUILDER
Definition: ScriptedEventEditor.java:62
net.sf.gridarta.utils
Definition: ActionBuilderUtils.java:20
net.sf.gridarta.gui.scripts.ScriptedEventEditor.editParameters
void editParameters(@NotNull final ScriptedEvent< G, A, R > scriptedEvent, @NotNull final Frame parent)
Definition: ScriptedEventEditor.java:127
net.sf.gridarta.model.settings
Definition: AbstractDefaultProjectSettings.java:20