ContactPanelShort: Fix enabling/disabling save button on edit
There should be only a single OnEditEnabler that takes care of
enabling/disabling the save button. On each change of the full name we
created a new OnEditEnabler instance, each with a different original
value. Due to this changing the name from 'User' -> 'User Foo' ->
'User' was not possible, because the first OnEditEnabled with original
value 'User' disabled the save button.
Change-Id: I3f43fe1f17a577f78777bf44ff8be6685167df6a
Signed-off-by: Edwin Kempin <ekempin@google.com>
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/account/ContactPanelShort.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/account/ContactPanelShort.java
index 136de64..ae3599d 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/account/ContactPanelShort.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/account/ContactPanelShort.java
@@ -61,6 +61,7 @@
NpTextBox nameTxt;
private ListBox emailPick;
private Button registerNewEmail;
+ private OnEditEnabler onEditEnabler;
ContactPanelShort() {
body = new FlowPanel();
@@ -167,6 +168,8 @@
}
}
});
+
+ onEditEnabler = new OnEditEnabler(save, nameTxt);
}
private boolean canEditFullName() {
@@ -230,7 +233,7 @@
updateEmailList();
registerNewEmail.setEnabled(true);
save.setEnabled(false);
- new OnEditEnabler(save, nameTxt);
+ onEditEnabler.updateOriginalValue(nameTxt);
}
display();
}
@@ -249,7 +252,7 @@
currentEmail = account.email();
nameTxt.setText(account.name());
save.setEnabled(false);
- new OnEditEnabler(save, nameTxt);
+ onEditEnabler.updateOriginalValue(nameTxt);
}
private void doRegisterNewEmail() {
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/ui/OnEditEnabler.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/ui/OnEditEnabler.java
index 819a11f..4391477 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/ui/OnEditEnabler.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/ui/OnEditEnabler.java
@@ -73,6 +73,9 @@
widget = w;
}
+ public void updateOriginalValue(final TextBoxBase tb) {
+ originalValue = tb.getValue().trim();
+ }
// Register input widgets to be listened to