20 package net.sf.gridarta.gui.dialog.plugin;
22 import bsh.ConsoleInterface;
23 import java.awt.BorderLayout;
24 import java.awt.Component;
25 import java.awt.Container;
26 import java.awt.GridBagConstraints;
27 import java.awt.GridBagLayout;
28 import java.awt.Insets;
29 import java.util.Collections;
30 import java.util.HashMap;
32 import javax.swing.AbstractButton;
33 import javax.swing.Action;
34 import javax.swing.JComponent;
35 import javax.swing.JDialog;
36 import javax.swing.JFrame;
37 import javax.swing.JLabel;
38 import javax.swing.JMenu;
39 import javax.swing.JMenuItem;
40 import javax.swing.JOptionPane;
41 import javax.swing.JPanel;
56 import net.
sf.japi.swing.action.ActionBuilder;
57 import net.
sf.japi.swing.action.ActionBuilderFactory;
58 import org.jetbrains.annotations.NotNull;
59 import org.jetbrains.annotations.Nullable;
71 private static final ActionBuilder
ACTION_BUILDER = ActionBuilderFactory.getInstance().getActionBuilder(
"net.sf.gridarta");
107 private final Object
sync =
new Object();
132 public void pluginUnregistered(@NotNull
final Plugin<G, A, R> plugin) {
151 pluginModel.addPluginModelListener(pluginModelListener);
159 public void setMenu(@Nullable
final JMenu menuScripts) {
160 synchronized (
sync) {
170 synchronized (
sync) {
172 if (tmpMenuScripts == null) {
180 if (!plugin.isScript()) {
185 final AbstractButton item =
new JMenuItem(action);
186 item.setActionCommand(plugin.getName());
187 tmpMenuScripts.add(item, index++);
191 def.setEnabled(
false);
192 tmpMenuScripts.add(def, 0);
198 synchronized (
sync) {
199 if (console == null) {
201 console.setSize(400, 200);
203 console.getContentPane().add(consolePane);
205 console.setVisible(
true);
213 consolePane.
addTab(name, pluginConsole);
214 return pluginConsole;
225 if (!plugin.hasParameters()) {
226 return Collections.emptyMap();
230 p.setOptionType(JOptionPane.OK_CANCEL_OPTION);
231 p.setMessageType(JOptionPane.QUESTION_MESSAGE);
233 final GridBagLayout layout =
new GridBagLayout();
234 final Container panel =
new JPanel(layout);
235 final JDialog dialog = p.createDialog(parent, plugin.getName());
236 dialog.setModal(
true);
237 dialog.getContentPane().removeAll();
240 final Component name =
new JLabel(parameter.getName());
242 final JComponent val = view.getValueComponent();
243 val.setToolTipText(parameter.getDescription());
244 final GridBagConstraints gn =
new GridBagConstraints(0, i, 1, 1, 0.0, 0.0, GridBagConstraints.EAST, GridBagConstraints.NONE,
new Insets(0, 0, 0, 0), 5, 5);
245 final GridBagConstraints gf =
new GridBagConstraints(1, i, 1, 1, 1.0, 0.0, GridBagConstraints.EAST, GridBagConstraints.HORIZONTAL,
new Insets(0, 0, 0, 0), 5, 5);
251 dialog.getContentPane().setLayout(
new BorderLayout());
252 dialog.getContentPane().add(panel, BorderLayout.CENTER);
253 dialog.getContentPane().add(p, BorderLayout.SOUTH);
255 dialog.setVisible(
true);
256 final Object result = p.getValue();
257 if (!(result instanceof Integer) || (Integer) result != JOptionPane.YES_OPTION) {
260 final Map<String, Object> parameterValues =
new HashMap<>();
262 final String parameterName = parameter.getName();
263 final Object parameterValue;
265 parameterValue = parameter.getValue();
267 JOptionPane.showMessageDialog(parent,
"Invalid value for parameter " + parameterName +
": " + ex.getMessage());
270 parameterValues.put(parameterName, parameterValue);
272 return parameterValues;
CloseableTabbedPane consolePane
Map< String, Object > getRunValues(@NotNull final Plugin< G, A, R > plugin, @NotNull final Component parent)
Asks the user for input parameter to run a plugin.
PluginParameterView newPluginParameterView(@NotNull final Component parent, @NotNull final PluginParameter< G, A, R, ?> parameter)
void addTab(@NotNull final String title, @NotNull final Component component)
Graphical User Interface of Gridarta.
final Iterable< Plugin< G, A, R > > pluginModel
The script model.
final PluginModelListener< G, A, R > pluginModelListener
The script control listener to be notified about changes in pluginController.
PluginView(@NotNull final PluginController< G, A, R > pluginController, @NotNull final PluginModel< G, A, R > pluginModel, @NotNull final PluginParameterViewFactory< G, A, R > pluginParameterViewFactory, @NotNull final ResourceIcons resourceIcons)
Creates a PluginView.
Listener interface for scripting related events.
JMenu menuScripts
The menu to add script commands to.
Interface for views that display plugin parameters.
ConsoleInterface createConsole(@NotNull final String name)
static String getString(@NotNull final ActionBuilder actionBuilder, @NotNull final String key, @NotNull final String defaultValue)
Returns the value of a key.
Base package of all Gridarta classes.
Reflects a game object (object on a map).
static final ActionBuilder ACTION_BUILDER
The ActionBuilder instance.
void setMenu(@Nullable final JMenu menuScripts)
Set the menu to add script commands to.
GameObjects are the objects based on Archetypes found on maps.
final PluginController< G, A, R > pluginController
Action createRunAction(@NotNull final Plugin< G, A, R > plugin)
Creates an action to run a plugin plugin.
void updateMenuEntries()
Refresh the menu entries.
Utility class for ActionBuilder related functions.
final Object sync
The object used for synchronization.
final ResourceIcons resourceIcons
The ResourceIcons for creating icons.
Creates ImageIcon instances from resources.
final PluginParameterViewFactory< G, A, R > pluginParameterViewFactory
An exception that is thrown if the string representation of value in a PluginParameter cannot be conv...
ImageIcon getResourceIcon(@NotNull final String iconName)
Returns the image icon for the given icon name.
static String format(@NotNull final ActionBuilder actionBuilder, @NotNull final String key, @NotNull final Object... args)
Returns the value of a key.
Factory for creating PluginParameterView instances.
Interface for MapArchObjects.
static final String CLOSE_TAB_SMALL_ICON