20 package net.sf.gridarta.gui.dialog.plugin;
22 import java.awt.Component;
23 import java.awt.event.FocusListener;
24 import java.awt.event.ItemEvent;
25 import java.awt.event.ItemListener;
26 import java.awt.event.MouseListener;
27 import javax.swing.JComboBox;
28 import javax.swing.JTextField;
29 import javax.swing.event.DocumentEvent;
30 import javax.swing.event.DocumentListener;
31 import javax.swing.text.JTextComponent;
41 import org.apache.log4j.Category;
42 import org.apache.log4j.Logger;
43 import org.jetbrains.annotations.NotNull;
106 public <G extends GameObject<G, A, R>, A extends
MapArchObject<A>, R extends
Archetype<G, A, R>>
PluginEditorRow(@NotNull
final Plugin<G, A, R> plugin, @NotNull
final PluginParameter<G, A, R, ?> parameter, @NotNull
final PluginParameterViewFactory<G, A, R> pluginParameterViewFactory, @NotNull
final MouseListener
mouseListener, @NotNull
final FocusListener
focusListener, @NotNull
final Component parent) {
123 final JTextComponent textField =
new JTextField(parameter.
getName());
124 textField.getDocument().addDocumentListener(
new DocumentListener() {
127 public void insertUpdate(@NotNull
final DocumentEvent e) {
132 public void removeUpdate(@NotNull
final DocumentEvent e) {
137 public void changedUpdate(@NotNull
final DocumentEvent e) {
144 private void change() {
145 parameter.
setName(textField.getText());
159 private <G extends GameObject<G, A, R>, A extends MapArchObject<A>, R extends Archetype<G, A, R>> Component createDescriptionEditor(
final PluginParameter<G, A, R, ?> parameter) {
160 final JTextComponent textField =
new JTextField(parameter.getDescription());
161 textField.getDocument().addDocumentListener(
new DocumentListener() {
164 public void changedUpdate(@NotNull
final DocumentEvent e) {
169 public void insertUpdate(@NotNull
final DocumentEvent e) {
174 public void removeUpdate(@NotNull
final DocumentEvent e) {
181 private void change() {
182 parameter.setDescription(textField.getText());
196 private <G extends GameObject<G, A, R>, A extends MapArchObject<A>, R extends Archetype<G, A, R>> Component createTypeEditor(
final Plugin<G, A, R> plugin,
final PluginParameter<G, A, R, ?> parameter) {
197 final JComboBox<?> comboBox =
new JComboBox<>(PluginParameterFactory.getTypes());
198 comboBox.setSelectedItem(parameter.getParameterType());
199 comboBox.addItemListener(
new ItemListener() {
202 public void itemStateChanged(@NotNull
final ItemEvent e) {
203 if (e.getStateChange() != ItemEvent.SELECTED) {
207 final String newParameterType = (String) e.getItem();
208 if (parameter.getParameterType().equals(newParameterType)) {
213 plugin.convertType(parameter, newParameterType);
214 }
catch (
final NoSuchParameterException ex) {
215 LOG.warn(
"Cannot create parameter for " + ex.getMessage());
233 private <G extends GameObject<G, A, R>, A extends MapArchObject<A>, R extends Archetype<G, A, R>> PluginParameterView createView(
final PluginParameter<G, A, R, ?> parameter,
final PluginParameterViewFactory<G, A, R> pluginParameterViewFactory,
final Component parent) {
234 final PluginParameterView
pluginParameterView = pluginParameterViewFactory.newPluginParameterView(parent, parameter);