20 package net.sf.gridarta.gui.dialog.plugin;
22 import java.awt.BorderLayout;
23 import java.awt.Component;
24 import java.awt.Container;
25 import java.awt.FlowLayout;
27 import java.awt.GridBagConstraints;
28 import java.awt.GridBagLayout;
29 import java.awt.Insets;
30 import java.awt.event.FocusEvent;
31 import java.awt.event.FocusListener;
32 import java.awt.event.MouseEvent;
33 import java.awt.event.MouseListener;
34 import java.util.IdentityHashMap;
36 import javax.swing.JButton;
37 import javax.swing.JCheckBox;
38 import javax.swing.JLabel;
39 import javax.swing.JOptionPane;
40 import javax.swing.JPanel;
41 import javax.swing.JScrollPane;
42 import javax.swing.JTabbedPane;
43 import javax.swing.SwingConstants;
44 import javax.swing.event.DocumentEvent;
45 import javax.swing.event.DocumentListener;
56 import net.
sf.japi.swing.action.ActionBuilder;
57 import net.
sf.japi.swing.action.ActionBuilderFactory;
58 import net.
sf.japi.swing.action.ActionMethod;
59 import org.fife.ui.rsyntaxtextarea.RSyntaxTextArea;
60 import org.fife.ui.rsyntaxtextarea.SyntaxConstants;
61 import org.fife.ui.rtextarea.RTextScrollPane;
62 import org.jetbrains.annotations.NotNull;
70 private static final ActionBuilder
ACTION_BUILDER = ActionBuilderFactory.getInstance().getActionBuilder(
"net.sf.gridarta");
79 private final Container
panel =
new JPanel(
new BorderLayout());
102 public void mouseClicked(@NotNull
final MouseEvent e) {
107 public void mouseEntered(@NotNull
final MouseEvent e) {
111 public void mouseExited(@NotNull
final MouseEvent e) {
115 public void mousePressed(@NotNull
final MouseEvent e) {
120 public void mouseReleased(@NotNull
final MouseEvent e) {
129 public void focusGained(@NotNull
final FocusEvent e) {
134 public void focusLost(@NotNull
final FocusEvent e) {
144 public PluginEditor(@NotNull
final Plugin<G, A, R> plugin, @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) {
150 final JTabbedPane tabs =
new JTabbedPane();
159 final Container optionsTab =
new JPanel(
new GridBagLayout());
160 final GridBagConstraints gbc =
new GridBagConstraints();
162 final Container parameterButtons =
new JPanel();
164 parameterButtons.add(
new JButton(
ACTION_BUILDER.createAction(
false,
"pluginEditorReRegister",
this)));
165 parameterButtons.add(
new JButton(
ACTION_BUILDER.createAction(
false,
"pluginEditorExport",
this)));
167 gbc.fill = GridBagConstraints.HORIZONTAL;
172 gbc.anchor = GridBagConstraints.CENTER;
178 gbc.anchor = GridBagConstraints.CENTER;
190 gbc.anchor = GridBagConstraints.WEST;
193 optionsTab.add(
new JCheckBox(
ACTION_BUILDER.createToggle(
false,
"pluginEditorIsAutoRun",
this)), gbc);
195 optionsTab.add(
new JCheckBox(
ACTION_BUILDER.createToggle(
false,
"pluginEditorIsFilter",
this)), gbc);
197 optionsTab.add(
new JCheckBox(
ACTION_BUILDER.createToggle(
false,
"pluginEditorIsScript",
this)), gbc);
202 gbc.anchor = GridBagConstraints.WEST;
203 gbc.fill = GridBagConstraints.NONE;
206 optionsTab.add(parameterButtons, gbc);
213 gbc.fill = GridBagConstraints.BOTH;
214 optionsTab.add(
new JPanel(), gbc);
223 final Container parameterButtons =
new JPanel();
225 parameterButtons.add(
new JButton(
ACTION_BUILDER.createAction(
false,
"pluginEditorAddParameter",
this)));
226 parameterButtons.add(
new JButton(
ACTION_BUILDER.createAction(
false,
"pluginEditorRemoveParameter",
this)));
228 final GridBagConstraints gbc =
new GridBagConstraints();
234 gbc.fill = GridBagConstraints.HORIZONTAL;
235 gbc.anchor = GridBagConstraints.WEST;
237 final Container parameterTab =
new JPanel(
new GridBagLayout());
240 parameterTab.add(parameterButtons, gbc);
243 gbc.fill = GridBagConstraints.BOTH;
244 parameterTab.add(
new JPanel(), gbc);
252 final RSyntaxTextArea code =
new RSyntaxTextArea();
254 code.setCaretPosition(0);
255 code.setFont(
new Font(
"Monospaced", Font.PLAIN, 14));
256 code.getDocument().addDocumentListener(
new DocumentListener() {
259 public void changedUpdate(
final DocumentEvent e) {
264 public void insertUpdate(
final DocumentEvent e) {
269 public void removeUpdate(
final DocumentEvent e) {
273 code.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_JAVA);
275 return new RTextScrollPane(code);
280 final Container codeBottom =
new JPanel(
new FlowLayout());
281 codeBottom.add(
new JButton(
ACTION_BUILDER.createAction(
false,
"pluginEditorRunScript",
this)));
283 final Container codePanel =
new JPanel(
new BorderLayout());
284 codePanel.add(
createCode(), BorderLayout.CENTER);
285 codePanel.add(codeBottom, BorderLayout.SOUTH);
291 final GridBagLayout l = (GridBagLayout)
parameterTable.getLayout();
292 final GridBagConstraints gbc = l.getConstraints(c);
299 final GridBagConstraints gbc =
new GridBagConstraints(0, 0, 1, 1, 0.1, 0.0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL,
new Insets(0, 0, 0, 0), 5, 0);
338 if (existingRow !=
null) {
343 rows.put(parameter, row);
454 if (JOptionPane.showConfirmDialog(
panel, message, title, JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {