20 package net.sf.gridarta.plugin;
23 import bsh.Interpreter;
25 import java.util.ArrayList;
26 import java.util.Collections;
27 import java.util.Iterator;
28 import java.util.List;
40 import nu.xom.Element;
42 import org.apache.log4j.Category;
43 import org.apache.log4j.Logger;
44 import org.jetbrains.annotations.NotNull;
45 import org.jetbrains.annotations.Nullable;
58 private static final Category
LOG = Logger.getLogger(
Plugin.class);
70 private final List<PluginParameter<G, A, R, ?>>
parameters =
new ArrayList<>();
164 public void setCode(@NotNull
final String code) {
165 if (this.code.equals(code)) {
178 return !parameters.isEmpty();
189 if (parameter.getName().equals(parameterName)) {
211 LOG.warn(
"Cannot create parameter: " + ex.getMessage());
214 parameters.add(pluginParameter);
225 parameters.remove(index).removePluginParameterListener(pluginParameterListener);
235 listeners.
add(listener);
243 listeners.
remove(listener);
252 listener.parametersChanged();
272 final Element parameterXml = codec.
toXML(parameter);
277 throw new AssertionError(ex);
289 parameters.add(pluginParameter);
290 pluginParameter.addPluginParameterListener(pluginParameterListener);
304 return parameters.get(index);
305 }
catch (
final IndexOutOfBoundsException ignored) {
340 if (this.autoBoot == autoBoot) {
352 if (this.script == script) {
364 if (this.filter == filter) {
378 final int index = parameters.indexOf(pluginParameter);
426 public void setFile(@Nullable
final File file) {
432 public Iterator<PluginParameter<G, A, R, ?>>
iterator() {
433 return Collections.unmodifiableList(parameters).iterator();
437 final Interpreter runner =
new Interpreter();
441 }
catch (
final EvalError e) {
442 LOG.warn(
"Evaluation error on (auto-run)" + name, e);
448 final Interpreter runner =
new Interpreter();
452 }
catch (
final EvalError e) {
453 LOG.warn(
"Evaluation error on (filter)" + name, e);
454 }
catch (
final ClassCastException e) {
455 LOG.warn(
"Plugin did not return a net.sf.gridarta.model.filter.Filter object" + name, e);
467 return codec.
toXML(pluginParameter);
void setFile(@Nullable final File file)
Sets the location to save this plugin to.
T [] getListeners()
Returns an array of all the listeners.
Factory for Plugin Parameters.
File file
The location to save this plugin to; set to.
boolean isScript()
Returns whether this plugin is a stand-alone plugin.
void setScript(final boolean script)
Sets whether this plugin is a stand-alone plugin.
void setAutoBoot(final boolean autoBoot)
Sets whether this plugin is run whenever the editor starts.
final List< PluginParameter< G, A, R, ?> > parameters
The PluginParameters for this plugin.
Converts PluginParameters from or to XML encoding.
boolean isAutoBoot()
Returns whether this plugin is run whenever the editor starts.
Filter<?, ?> getPluginAsFilter(@NotNull final PluginParameters pluginParameters)
boolean isFilter()
Returns whether this plugin is a filter.
int getParameter(@NotNull final String parameterName)
Returns the index for a plugin parameter name.
void addParameter(@NotNull final PluginParameter< G, A, R, ?> pluginParameter)
Adds a plugin parameter to this plugin.
PluginParameter< G, A, R, ?> getParameter(final int index)
Returns the PluginParameter at a given index.
Base package of all Gridarta classes.
Reflects a game object (object on a map).
final PluginParameterVisitor< G, A, R, Element > toXML
A PluginParameterVisitor that returns XML representation.
final PluginParameterListener pluginParameterListener
The PluginParameterListener that is attached to all plugin parameters to detect changes.
String getName()
Returns the name of this plugin.
void remove(@NotNull final T listener)
Removes a listener.
Plugin(@NotNull final String name, @NotNull final PluginParameterFactory< G, A, R > pluginParameterFactory)
Creates a new instance.
Plugin< G, A, R > clonePlugin()
Returns a clone copy of this plugin.
GameObjects are the objects based on Archetypes found on maps.
Interface for listeners interested in PluginParameter related events.
void setModified()
Marks this plugin a modified since last save.
File getFile()
Returns the location to save this plugin to.
void add(@NotNull final T listener)
Adds a listener.
static final String PARAMETER_TYPE
The string representation of this parameter type.
boolean hasParameters()
Returns whether this plugin has at least one parameter.
void convertType(@NotNull final PluginParameter< G, A, R, ?> pluginParameter, @NotNull final String newType)
Changes the type of a plugin parameter.
The run mode of a plugin plugin.
final EventListenerList2< PluginListener > listeners
The PluginListeners to inform about changes.
void notifyParametersChangedListeners()
Notifies all registered PluginListeners that the parameters have changed.
Node toXML(@NotNull final PluginParameter< G, A, R, ?> pluginParameter)
Returns XML representation for a PluginParameter.
String getCode()
Returns the executable code of this plugin.
void removePluginListener(@NotNull final PluginListener listener)
Removes a PluginListener to be notified about changes.
Thrown if a parameter does not exist.
Makes basic Gridarta classes available to scripts.
void newParameter()
Creates a new plugin parameter.
final PluginParameterFactory< G, A, R > pluginParameterFactory
The PluginParameterFactory for creating plugin parameters.
boolean script
Whether this plugin is a stand-alone plugin.
Type-safe version of EventListenerList.
void runPlugin(@NotNull final PluginParameters pluginParameters)
final String name
The plugin name.
void removePluginParameterListener(@NotNull PluginParameterListener listener)
Removes a listener to be notified.
Iterator< PluginParameter< G, A, R, ?> > iterator()
Interface for listeners interested in Plugin related events.
static final Category LOG
The Logger for printing log messages.
boolean filter
Whether this plugin is a filter.
void resetModified()
Marks the plugin as unmodified since last save.
void setFilter(final boolean filter)
Sets whether this plugin is a filter.
void addPluginParameterListener(@NotNull PluginParameterListener listener)
Adds a listener to be notified.
String code
The executable code.
void setCode(@NotNull final String code)
Sets the executable code of this plugin.
boolean modified
Whether the plugin contents has been modified since last save.
final PluginParameterCodec< G, A, R > codec
The PluginParameterCodec for converting PluginParameters to or from XML representation.
A PluginParameter that holds a string value.
Interface for MapArchObjects.
boolean isModified()
Returns whether the plugin contents have been modified since last save.
void addPluginListener(@NotNull final PluginListener listener)
Adds a PluginListener to be notified about changes.
boolean autoBoot
Whether this plugin is run whenever the editor starts.
PluginParameter< G, A, R, ?> createParameter(@NotNull final Element parameterNode)
void removeParameter(final int index)
Removes a plugin parameter.