Skip to content

Commit fc9d26a

Browse files
committed
make selection machinery pluggable so that for instance we can use an ID based mechanism
1 parent 1d8fc38 commit fc9d26a

2 files changed

Lines changed: 15 additions & 7 deletions

File tree

wicketstuff-jquery-ui-parent/wicketstuff-jquery-ui/src/main/java/org/wicketstuff/jquery/ui/form/autocomplete/AbstractAutoCompleteTextField.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
*/
1717
package org.wicketstuff.jquery.ui.form.autocomplete;
1818

19+
import java.util.Collections;
1920
import java.util.List;
2021
import java.util.Locale;
2122
import org.apache.wicket.ajax.AjaxRequestTarget;
@@ -328,7 +329,12 @@ protected void onSelected(AjaxRequestTarget target)
328329
@Override
329330
public JQueryBehavior newWidgetBehavior(String selector)
330331
{
331-
return new AutoCompleteBehavior(selector, this, getModel()) { // NOSONAR
332+
return new AutoCompleteBehavior<T>(selector, this, new IModel<List<T>>() {
333+
@Override
334+
public List<T> getObject() {
335+
return choices != null ? choices.getObject() : Collections.emptyList();
336+
}
337+
}) { // NOSONAR
332338

333339
private static final long serialVersionUID = 1L;
334340

wicketstuff-jquery-ui-parent/wicketstuff-jquery-ui/src/main/java/org/wicketstuff/jquery/ui/form/autocomplete/AutoCompleteBehavior.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,9 @@ public abstract class AutoCompleteBehavior<T> extends JQueryUIBehavior implement
4343
/** event listener */
4444
private final IAutoCompleteListener<T> listener;
4545

46-
private final IModel<List<T>> model;
46+
/** the model producing values */
47+
48+
private final IModel<List<T>> valuesModel;
4749

4850
private JQueryAjaxBehavior onSelectAjaxBehavior = null;
4951

@@ -53,9 +55,9 @@ public abstract class AutoCompleteBehavior<T> extends JQueryUIBehavior implement
5355
* @param selector the HTML selector (ie: "#myId")
5456
* @param listener the {@link IAutoCompleteListener}
5557
*/
56-
public AutoCompleteBehavior(String selector, IAutoCompleteListener<T> listener, IModel<List<T>> model)
58+
public AutoCompleteBehavior(String selector, IAutoCompleteListener<T> listener, IModel<List<T>> valuesModel)
5759
{
58-
this(selector, new Options(), listener, model);
60+
this(selector, new Options(), listener, valuesModel);
5961
}
6062

6163
/**
@@ -65,12 +67,12 @@ public AutoCompleteBehavior(String selector, IAutoCompleteListener<T> listener,
6567
* @param options the {@link Options}
6668
* @param listener the {@link IAutoCompleteListener}
6769
*/
68-
public AutoCompleteBehavior(String selector, Options options, IAutoCompleteListener<T> listener, IModel<List<T>> model)
70+
public AutoCompleteBehavior(String selector, Options options, IAutoCompleteListener<T> listener, IModel<List<T>> valuesModel)
6971
{
7072
super(selector, METHOD, options);
7173

7274
this.listener = Args.notNull(listener, "listener");
73-
this.model = model;
75+
this.valuesModel = valuesModel;
7476
}
7577

7678
// Methods //
@@ -116,7 +118,7 @@ public void onAjax(AjaxRequestTarget target, JQueryEvent event)
116118
{
117119
if (event instanceof SelectEvent selectEvent)
118120
{
119-
this.listener.onSelect(target, listener.getElementSelectionStrategy().findChoice(model.getObject(), selectEvent.getIdentifier()));
121+
this.listener.onSelect(target, listener.getElementSelectionStrategy().findChoice(valuesModel.getObject(), selectEvent.getIdentifier()));
120122
}
121123
}
122124

0 commit comments

Comments
 (0)