
com.github.bordertech.wcomponents.examples.WSuggestionsExample Maven / Gradle / Ivy
package com.github.bordertech.wcomponents.examples;
import com.github.bordertech.wcomponents.Action;
import com.github.bordertech.wcomponents.ActionEvent;
import com.github.bordertech.wcomponents.WAjaxControl;
import com.github.bordertech.wcomponents.WContainer;
import com.github.bordertech.wcomponents.WEmailField;
import com.github.bordertech.wcomponents.WFieldLayout;
import com.github.bordertech.wcomponents.WPhoneNumberField;
import com.github.bordertech.wcomponents.WSuggestions;
import com.github.bordertech.wcomponents.WTextField;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* Demonstrate using {@link WSuggestions} with input text fields.
*
* @author Jonathan Austin
* @since 1.0.0
*/
public class WSuggestionsExample extends WContainer {
/**
* Ajax target.
*/
private final WTextField resultField = new WTextField();
/**
* Construct example.
*/
public WSuggestionsExample() {
WFieldLayout layout = new WFieldLayout();
layout.setLabelWidth(25);
resultField.setReadOnly(true);
add(layout);
WSuggestions suggestions = new WSuggestions("icao");
add(suggestions);
final WTextField text1 = new WTextField();
text1.setSuggestions(suggestions);
text1.setActionOnChange(new Action() {
@Override
public void execute(final ActionEvent event) {
resultField.setText(text1.getValueAsString());
}
});
add(new WAjaxControl(text1, resultField));
layout.addField("Cached list", text1);
// Static suggestions
suggestions = new WSuggestions(Arrays.asList("foo1", "foo2", "foo3", "ofoo"));
add(suggestions);
final WTextField text2 = new WTextField();
text2.setSuggestions(suggestions);
text2.setActionOnChange(new Action() {
@Override
public void execute(final ActionEvent event) {
resultField.setText(text2.getValueAsString());
}
});
add(new WAjaxControl(text2, resultField));
layout.addField("Static", text2);
// Dynamic suggestions
suggestions = new WSuggestions();
add(suggestions);
final WTextField text3 = new WTextField();
text3.setSuggestions(suggestions);
text3.setActionOnChange(new Action() {
@Override
public void execute(final ActionEvent event) {
resultField.setText(text3.getValueAsString());
}
});
add(new WAjaxControl(text3, resultField));
layout.addField("Dynamic as ajax trigger", text3);
suggestions.setRefreshAction(new AjaxAction(""));
// Dynamic phone number suggestions
suggestions = new WSuggestions();
add(suggestions);
WPhoneNumberField phone = new WPhoneNumberField();
phone.setSuggestions(suggestions);
layout.addField("Dynamic phone number", phone);
suggestions.setRefreshAction(new AjaxAction("Phone - "));
// Dynamic email suggestions
suggestions = new WSuggestions();
add(suggestions);
WEmailField email = new WEmailField();
email.setSuggestions(suggestions);
layout.addField("Dynamic email", email);
suggestions.setRefreshAction(new AjaxAction("Email - "));
// Dynamic suggestions with force selection
suggestions = new WSuggestions();
suggestions.setAutocomplete(WSuggestions.Autocomplete.LIST);
add(suggestions);
final WTextField text5 = new WTextField();
text5.setSuggestions(suggestions);
layout.addField("Force selection from list", text5);
suggestions.setRefreshAction(new AjaxAction(""));
// text5.setActionOnChange(new Action() {
// @Override
// public void execute(final ActionEvent event) {
// resultField.setText(text5.getValueAsString());
// }
// });
// add(new WAjaxControl(text5, resultField));
layout.addField("Output", resultField);
// read-only field with static suggestions - see issue #1527
suggestions = new WSuggestions(Arrays.asList("foo1", "foo2", "foo3", "ofoo"));
add(suggestions);
WTextField roField = new WTextField();
roField.setSuggestions(suggestions);
roField.setReadOnly(true);
layout.addField("Read-only with suggestions", roField);
}
/**
* Ajax action to refresh suggestion list. Create dummy values.
*/
private static final class AjaxAction implements Action {
private final String prefix;
/**
* @param prefix prefix for the dummy suggestions
*/
private AjaxAction(final String prefix) {
this.prefix = prefix;
}
/**
* {@inheritDoc}
*/
@Override
public void execute(final ActionEvent event) {
WSuggestions suggestions = (WSuggestions) event.getSource();
String filter = suggestions.getAjaxFilter();
// Create dummy suggestions
List sugg = new ArrayList<>();
for (int i = 0; i < 4; i++) {
sugg.add(prefix + filter + i);
}
suggestions.setSuggestions(sugg);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy