Skip to content

Commit

Permalink
Mode description text field improvements
Browse files Browse the repository at this point in the history
- Allow setting of empty Mode descriptions
- Update text field in case description got stripped and return is pressed or focus is lost
  • Loading branch information
bwRavencl committed Jun 20, 2024
1 parent a44067f commit 5bc34b9
Showing 1 changed file with 31 additions and 9 deletions.
40 changes: 31 additions & 9 deletions src/main/java/de/bwravencl/controllerbuddy/gui/Main.java
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,7 @@
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Objects;
import java.util.ResourceBundle;
import java.util.Set;
import java.util.Timer;
Expand Down Expand Up @@ -2758,6 +2759,7 @@ void updateModesPanel(final boolean newModeAdded) {
final var setModeDescriptionAction = new SetModeDescriptionAction(mode, descriptionTextField);
descriptionTextField.addActionListener(setModeDescriptionAction);
descriptionTextField.getDocument().addDocumentListener(setModeDescriptionAction);
descriptionTextField.addFocusListener(setModeDescriptionAction);

modePanel.add(Box.createGlue(), new GridBagConstraints(3, GridBagConstraints.RELATIVE, 1, 1, 1d, 1d,
GridBagConstraints.CENTER, GridBagConstraints.NONE, LIST_ITEM_INNER_INSETS, 0, 0));
Expand Down Expand Up @@ -3972,7 +3974,7 @@ public void actionPerformed(final ActionEvent e) {
}
}

private final class SetModeDescriptionAction extends AbstractAction implements DocumentListener {
private final class SetModeDescriptionAction extends AbstractAction implements DocumentListener, FocusListener {

@Serial
private static final long serialVersionUID = -6706537047137827688L;
Expand All @@ -3989,29 +3991,49 @@ private SetModeDescriptionAction(final Mode mode, final JTextField modeDescripti

@Override
public void actionPerformed(final ActionEvent e) {
setModeDescription();
setModeDescription(true);
}

@Override
public void changedUpdate(final DocumentEvent e) {
setModeDescription();
setModeDescription(false);
}

@Override
public void focusGained(final FocusEvent e) {
}

@Override
public void focusLost(final FocusEvent e) {
setModeDescription(true);
}

@Override
public void insertUpdate(final DocumentEvent e) {
setModeDescription();
setModeDescription(false);
}

@Override
public void removeUpdate(final DocumentEvent e) {
setModeDescription();
setModeDescription(false);
}

private void setModeDescription() {
final var description = modeDescriptionTextField.getText();
private void setModeDescription(final boolean updateTextField) {
var description = modeDescriptionTextField.getText();

if (!Objects.equals(mode.getDescription(), description)) {
if (description != null && !description.isEmpty()) {
final var strippedDescription = description.strip();

if (updateTextField && !strippedDescription.equals(description)) {
EventQueue.invokeLater(() -> modeDescriptionTextField.setText(strippedDescription));
}

description = strippedDescription;
}

mode.setDescription(description);

if (description != null && !description.isEmpty() && !description.equals(mode.getDescription())) {
mode.setDescription(description.strip());
setUnsavedChanges(true);
updateVisualizationPanel();
}
Expand Down

0 comments on commit 5bc34b9

Please sign in to comment.