added placeholder support for StringListEditorComposite

This commit is contained in:
Axel Uhl committed 2014-10-15 15:49:02 +02:00
1 parent 381539e91a
commit 3c292093c1
7 files changed
+43 -49

No files matched your search

@@ -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<ValueType> extends ListEditorUi<Value
removeButton.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
int rowToRemove = expandedValuesGrid.getCellForEvent(event).getRowIndex();
final Cell cellForEvent = expandedValuesGrid.getCellForEvent(event);
int rowToRemove = cellForEvent.getRowIndex();
removeRow(rowToRemove);
}
});
@@ -27,6 +27,11 @@ public class StringListEditorComposite extends ListEditorComposite<String> {
super(initialValues, new ExpandedUi(stringMessages, removeImage, suggestValues));
}
public StringListEditorComposite(Iterable<String> initialValues, StringMessages stringMessages,
ImageResource removeImage, Iterable<String> suggestValues, String placeholderTextForAddTextbox) {
super(initialValues, new ExpandedUi(stringMessages, removeImage, suggestValues, placeholderTextForAddTextbox));
}
public StringListEditorComposite(Iterable<String> initialValues, ListEditorUiStrategy<String> activeUi) {
super(initialValues, activeUi);
}
@@ -59,9 +64,16 @@ public class StringListEditorComposite extends ListEditorComposite<String> {
public static class ExpandedUi extends ExpandedListEditorUi<String> {
protected final MultiWordSuggestOracle inputOracle;
protected final String placeholderTextForAddTextbox;
public ExpandedUi(StringMessages stringMessages, ImageResource removeImage, Iterable<String> suggestValues) {
this(stringMessages, removeImage, suggestValues, /* placeholderTextForAddTextbox */ null);
}
public ExpandedUi(StringMessages stringMessages, ImageResource removeImage, Iterable<String> 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<String> {
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");
@@ -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<String> {
private final MultiWordSuggestOracle inputOracle;
public static class ExpandedUi extends StringListEditorComposite.ExpandedUi {
private final int textBoxSize;
public ExpandedUi(StringMessages stringMessages, ImageResource removeImage, List<String> 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<String> suggestValues, String placeholderTextForAddTextbox, int textBoxSize) {
super(stringMessages, removeImage, suggestValues, placeholderTextForAddTextbox);
this.textBoxSize = textBoxSize;
inputOracle.addAll(suggestValues);
}
@Override
public void setContext(ListEditorComposite<String> 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
@@ -84,5 +84,7 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages {
String edit();
String errorUpdatingRoles(String username, String message);
String enterRoleName();
}
@@ -37,4 +37,5 @@ save=Save
remove=Remove
add=Add
edit=Edit
errorUpdatingRoles=Error updating roles for user {0}: {1}
errorUpdatingRoles=Error updating roles for user {0}: {1}
enterRoleName=Enter role name...
@@ -37,4 +37,5 @@ save=Sichern
remove=Löschen
add=Hinzufügen
edit=Bearbeiten
errorUpdatingRoles=Fehler beim Aktualisieren der Rollen des Benutzers {0}: {1}
errorUpdatingRoles=Fehler beim Aktualisieren der Rollen des Benutzers {0}: {1}
enterRoleName=Rollennamen eingeben...
@@ -59,9 +59,10 @@ public class UserDetailsView extends FlowPanel {
addStyleName("userDetailsView");
List<String> defaultRoleNames = new ArrayList<>();
for (DefaultRoles defaultRole : DefaultRoles.values()) {
defaultRoleNames.add(defaultRole.name());
defaultRoleNames.add(defaultRole.getRolename());
}
rolesEditor = new StringListEditorComposite(user==null?Collections.<String>emptySet():user.getRoles(), stringMessages, IconResources.INSTANCE.remove(), defaultRoleNames);
rolesEditor = new StringListEditorComposite(user==null?Collections.<String>emptySet():user.getRoles(), stringMessages, IconResources.INSTANCE.remove(), defaultRoleNames,
stringMessages.enterRoleName());
rolesEditor.addValueChangeHandler(new ValueChangeHandler<Iterable<String>>() {
@Override
public void onValueChange(ValueChangeEvent<Iterable<String>> event) {