From 3c292093c100506e93040ca34c9037788b221281 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Wed, 15 Oct 2014 15:49:02 +0200 Subject: [PATCH] added placeholder support for StringListEditorComposite --- .../listedit/ExpandedListEditorUi.java | 4 +- .../listedit/StringListEditorComposite.java | 22 +++++++- .../StringListInlineEditorComposite.java | 53 ++++--------------- .../security/ui/client/StringMessages.java | 2 + .../ui/client/StringMessages.properties | 3 +- .../ui/client/StringMessages_de.properties | 3 +- .../ui/client/component/UserDetailsView.java | 5 +- 7 files changed, 43 insertions(+), 49 deletions(-) diff --git a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/listedit/ExpandedListEditorUi.java b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/listedit/ExpandedListEditorUi.java index cf5af68ecac..87188846ed4 100644 --- a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/listedit/ExpandedListEditorUi.java +++ b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/listedit/ExpandedListEditorUi.java @@ -4,6 +4,7 @@ import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.resources.client.ImageResource; import com.google.gwt.user.client.ui.Grid; +import com.google.gwt.user.client.ui.HTMLTable.Cell; import com.google.gwt.user.client.ui.Image; import com.google.gwt.user.client.ui.PushButton; import com.google.gwt.user.client.ui.ValueBoxBase; @@ -86,7 +87,8 @@ public abstract class ExpandedListEditorUi extends ListEditorUi { super(initialValues, new ExpandedUi(stringMessages, removeImage, suggestValues)); } + public StringListEditorComposite(Iterable initialValues, StringMessages stringMessages, + ImageResource removeImage, Iterable suggestValues, String placeholderTextForAddTextbox) { + super(initialValues, new ExpandedUi(stringMessages, removeImage, suggestValues, placeholderTextForAddTextbox)); + } + public StringListEditorComposite(Iterable initialValues, ListEditorUiStrategy activeUi) { super(initialValues, activeUi); } @@ -59,9 +64,16 @@ public class StringListEditorComposite extends ListEditorComposite { public static class ExpandedUi extends ExpandedListEditorUi { protected final MultiWordSuggestOracle inputOracle; + protected final String placeholderTextForAddTextbox; + public ExpandedUi(StringMessages stringMessages, ImageResource removeImage, Iterable suggestValues) { + this(stringMessages, removeImage, suggestValues, /* placeholderTextForAddTextbox */ null); + } + + public ExpandedUi(StringMessages stringMessages, ImageResource removeImage, Iterable suggestValues, String placeholderTextForAddTextbox) { super(stringMessages, removeImage, /*canRemoveItems*/true); + this.placeholderTextForAddTextbox = placeholderTextForAddTextbox; this.inputOracle = new MultiWordSuggestOracle(); for (String suggestValue : suggestValues) { inputOracle.add(suggestValue); @@ -74,9 +86,17 @@ public class StringListEditorComposite extends ListEditorComposite { inputOracle.addAll(context.getValue()); } + protected SuggestBox createSuggestBox() { + final SuggestBox result = new SuggestBox(inputOracle); + if (placeholderTextForAddTextbox != null) { + result.getElement().setAttribute("placeholder", placeholderTextForAddTextbox); + } + return result; + } + @Override protected Widget createAddWidget() { - final SuggestBox inputBox = new SuggestBox(inputOracle); + final SuggestBox inputBox = createSuggestBox(); inputBox.ensureDebugId("InputSuggestBox"); final Button addButton = new Button(getStringMessages().add()); addButton.ensureDebugId("AddButton"); diff --git a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/listedit/StringListInlineEditorComposite.java b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/listedit/StringListInlineEditorComposite.java index a0b5e9025a8..e18f3f67588 100644 --- a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/listedit/StringListInlineEditorComposite.java +++ b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/listedit/StringListInlineEditorComposite.java @@ -3,16 +3,11 @@ package com.sap.sse.gwt.client.controls.listedit; import java.util.List; import com.google.gwt.dom.client.InputElement; -import com.google.gwt.event.dom.client.ClickEvent; -import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.event.dom.client.KeyUpEvent; import com.google.gwt.event.dom.client.KeyUpHandler; import com.google.gwt.event.logical.shared.ValueChangeEvent; import com.google.gwt.event.logical.shared.ValueChangeHandler; import com.google.gwt.resources.client.ImageResource; -import com.google.gwt.user.client.ui.Button; -import com.google.gwt.user.client.ui.HorizontalPanel; -import com.google.gwt.user.client.ui.MultiWordSuggestOracle; import com.google.gwt.user.client.ui.SuggestBox; import com.google.gwt.user.client.ui.TextBox; import com.google.gwt.user.client.ui.Widget; @@ -45,52 +40,24 @@ public class StringListInlineEditorComposite extends StringListEditorComposite { } } - public static class ExpandedUi extends ExpandedListEditorUi { - private final MultiWordSuggestOracle inputOracle; + public static class ExpandedUi extends StringListEditorComposite.ExpandedUi { private final int textBoxSize; public ExpandedUi(StringMessages stringMessages, ImageResource removeImage, List suggestValues, int textBoxSize) { - super(stringMessages, removeImage, /*canRemoveItems*/true); - this.inputOracle = new MultiWordSuggestOracle(); + this(stringMessages, removeImage, suggestValues, /* placeholderTextForAddTextbox */ null, textBoxSize); + } + + public ExpandedUi(StringMessages stringMessages, ImageResource removeImage, List suggestValues, String placeholderTextForAddTextbox, int textBoxSize) { + super(stringMessages, removeImage, suggestValues, placeholderTextForAddTextbox); this.textBoxSize = textBoxSize; - inputOracle.addAll(suggestValues); } @Override - public void setContext(ListEditorComposite context) { - super.setContext(context); - inputOracle.addAll(context.getValue()); - } - - @Override - protected Widget createAddWidget() { - final SuggestBox inputBox = new SuggestBox(inputOracle); - - InputElement inputElement = inputBox.getElement().cast(); + protected SuggestBox createSuggestBox() { + SuggestBox result = super.createSuggestBox(); + InputElement inputElement = result.getElement().cast(); inputElement.setSize(textBoxSize); - - final Button addButton = new Button(getStringMessages().add()); - addButton.setEnabled(false); - addButton.addClickHandler(new ClickHandler() { - - @Override - public void onClick(ClickEvent event) { - addValue(inputBox.getValue()); - inputBox.setText(""); - } - }); - inputBox.addKeyUpHandler(new KeyUpHandler() { - - @Override - public void onKeyUp(KeyUpEvent event) { - addButton.setEnabled(!inputBox.getValue().isEmpty()); - } - }); - - HorizontalPanel panel = new HorizontalPanel(); - panel.add(inputBox); - panel.add(addButton); - return panel; + return result; } @Override diff --git a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/StringMessages.java b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/StringMessages.java index 1c6c255bd96..a586532774f 100755 --- a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/StringMessages.java +++ b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/StringMessages.java @@ -84,5 +84,7 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages { String edit(); String errorUpdatingRoles(String username, String message); + + String enterRoleName(); } diff --git a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/StringMessages.properties b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/StringMessages.properties index 18a3240ae2b..2c4ec74fb0f 100755 --- a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/StringMessages.properties +++ b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/StringMessages.properties @@ -37,4 +37,5 @@ save=Save remove=Remove add=Add edit=Edit -errorUpdatingRoles=Error updating roles for user {0}: {1} \ No newline at end of file +errorUpdatingRoles=Error updating roles for user {0}: {1} +enterRoleName=Enter role name... \ No newline at end of file diff --git a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/StringMessages_de.properties b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/StringMessages_de.properties index 130519239b7..3e146db67c5 100755 --- a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/StringMessages_de.properties +++ b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/StringMessages_de.properties @@ -37,4 +37,5 @@ save=Sichern remove=Löschen add=Hinzufügen edit=Bearbeiten -errorUpdatingRoles=Fehler beim Aktualisieren der Rollen des Benutzers {0}: {1} \ No newline at end of file +errorUpdatingRoles=Fehler beim Aktualisieren der Rollen des Benutzers {0}: {1} +enterRoleName=Rollennamen eingeben... \ No newline at end of file diff --git a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/component/UserDetailsView.java b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/component/UserDetailsView.java index fd878ded8ec..1066e80e524 100644 --- a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/component/UserDetailsView.java +++ b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/component/UserDetailsView.java @@ -59,9 +59,10 @@ public class UserDetailsView extends FlowPanel { addStyleName("userDetailsView"); List defaultRoleNames = new ArrayList<>(); for (DefaultRoles defaultRole : DefaultRoles.values()) { - defaultRoleNames.add(defaultRole.name()); + defaultRoleNames.add(defaultRole.getRolename()); } - rolesEditor = new StringListEditorComposite(user==null?Collections.emptySet():user.getRoles(), stringMessages, IconResources.INSTANCE.remove(), defaultRoleNames); + rolesEditor = new StringListEditorComposite(user==null?Collections.emptySet():user.getRoles(), stringMessages, IconResources.INSTANCE.remove(), defaultRoleNames, + stringMessages.enterRoleName()); rolesEditor.addValueChangeHandler(new ValueChangeHandler>() { @Override public void onValueChange(ValueChangeEvent> event) {