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) {
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) {
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());
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;