diff --git a/megamek/src/megamek/client/ui/swing/DialogOptionComponent.java b/megamek/src/megamek/client/ui/swing/DialogOptionComponent.java index 1d1565b25a..3925dcc416 100644 --- a/megamek/src/megamek/client/ui/swing/DialogOptionComponent.java +++ b/megamek/src/megamek/client/ui/swing/DialogOptionComponent.java @@ -29,7 +29,8 @@ import megamek.common.options.*; /** @author Cord Awtry */ -public class DialogOptionComponent extends FixedYPanel implements ItemListener, ActionListener, Comparable { +public class DialogOptionComponent extends FixedYPanel implements ItemListener, + FocusListener, ActionListener, Comparable { private static final long serialVersionUID = -4190538980884459746L; @@ -39,7 +40,7 @@ public class DialogOptionComponent extends FixedYPanel implements ItemListener, private JComboBox choice; private JTextField textField; private final DialogOptionListener dialogOptionListener; - + /** Value used to force a change */ private boolean hasOptionChanged = false; @@ -110,6 +111,7 @@ public void mouseClicked(MouseEvent evt) { } } }); + textField.addFocusListener(this); textField.setEnabled(editable); if (!option.isLabelBeforeTextField()) { add(Box.createHorizontalStrut(2)); @@ -131,11 +133,11 @@ public static String convertToHtml(String source) { result.append(""); return result.toString(); } - + public boolean hasChanged() { return !option.getValue().equals(getValue()) || hasOptionChanged; } - + public void setOptionChanged(boolean v) { hasOptionChanged = v; } @@ -164,6 +166,8 @@ public void setValue(Object v) { break; case IOption.INTEGER: case IOption.FLOAT: + textField.setText(v + ""); + break; case IOption.STRING: textField.setText((String) v); break; @@ -234,9 +238,9 @@ public boolean isDefaultValue() { return choice.getSelectedIndex() == 0; default: return textField.getText().equals(String.valueOf(option.getDefault())); - } + } } - + public void resetToDefault() { switch (option.getType()) { case IOption.BOOLEAN: @@ -276,4 +280,11 @@ public String toString() { return option.getDisplayableName(); } + @Override + public void focusGained(FocusEvent e) { } + + @Override + public void focusLost(FocusEvent e) { + dialogOptionListener.optionClicked(this, option, true); + } } diff --git a/megamek/src/megamek/client/ui/swing/GameOptionsDialog.java b/megamek/src/megamek/client/ui/swing/GameOptionsDialog.java index 9be9193b44..449e0cb142 100644 --- a/megamek/src/megamek/client/ui/swing/GameOptionsDialog.java +++ b/megamek/src/megamek/client/ui/swing/GameOptionsDialog.java @@ -371,6 +371,7 @@ public void removeUpdate(DocumentEvent e) { panSearch.add(panSearchBar); panSearch.add(panSearchOptions); panOptions.addTab(Messages.getString("GameOptionsDialog.Search"), scrOptions); + refreshSearchPanel(); } private void addOption(JPanel groupPanel, IOption option) {