Skip to content

Commit 97c81d7

Browse files
committed
Fixed #294 and #301
1 parent f0fbb27 commit 97c81d7

File tree

2 files changed

+47
-0
lines changed

2 files changed

+47
-0
lines changed

src/main/java/gwt/material/design/addins/client/combobox/MaterialComboBox.java

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
package gwt.material.design.addins.client.combobox;
2121

2222
import com.google.gwt.core.client.GWT;
23+
import com.google.gwt.core.client.Scheduler;
2324
import com.google.gwt.dom.client.Document;
2425
import com.google.gwt.dom.client.Style;
2526
import com.google.gwt.event.logical.shared.*;
@@ -302,6 +303,31 @@ public JQueryElement getDropdownParent() {
302303
return options.dropdownParent;
303304
}
304305

306+
/**
307+
* Will get the Selection Results ul element containing all the combobox items.
308+
*/
309+
public JQueryElement getDropdownResultElement() {
310+
String dropdownId = getDropdownContainerElement().attr("id").toString();
311+
if (dropdownId != null && !(dropdownId.isEmpty())) {
312+
dropdownId = dropdownId.replace("container", "results");
313+
return $("#" + dropdownId);
314+
} else {
315+
GWT.log("The element dropdown-result ul element is undefined.", new NullPointerException());
316+
}
317+
return null;
318+
}
319+
320+
/**
321+
* Will get the Selection dropdown container rendered
322+
*/
323+
public JQueryElement getDropdownContainerElement() {
324+
JQueryElement element = $(getElement()).find(".select2 .selection .select2-selection__rendered");
325+
if (element == null) {
326+
GWT.log("The element dropdown-container element is undefined.", new NullPointerException());
327+
}
328+
return element;
329+
}
330+
305331
/**
306332
* Set the upper label above the combobox
307333
*/
@@ -650,6 +676,10 @@ public void setTags(boolean tags) {
650676
options.tags = tags;
651677
}
652678

679+
public void scrollTop(int offset) {
680+
Scheduler.get().scheduleDeferred(() -> getDropdownResultElement().scrollTop(offset));
681+
}
682+
653683
@Override
654684
public void setEnabled(boolean enabled) {
655685
super.setEnabled(enabled);

src/test/java/gwt/material/design/addins/client/ui/MaterialComboBoxTest.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import gwt.material.design.addins.client.combobox.MaterialComboBox;
2929
import gwt.material.design.addins.client.combobox.events.SelectItemEvent;
3030
import gwt.material.design.addins.client.combobox.events.UnselectItemEvent;
31+
import gwt.material.design.addins.client.combobox.js.JsComboBox;
3132
import gwt.material.design.addins.client.ui.base.AbstractValueWidgetTest;
3233
import gwt.material.design.addins.client.ui.base.dto.User;
3334
import gwt.material.design.client.base.MaterialWidget;
@@ -239,4 +240,20 @@ public void testAddItemOption() {
239240
Label lblTitle = (Label) comboBox.getWidget(1);
240241
assertTrue(lblTitle.getElement().hasClassName(AddinsCssName.SELECT2LABEL));
241242
}
243+
244+
public void testElements() {
245+
MaterialComboBox<User> comboBox = getWidget();
246+
247+
assertNotNull(comboBox.getDropdownContainerElement());
248+
assertEquals(JsComboBox.$(comboBox.getElement()).find(".select2 .selection .select2-selection__rendered").html(), comboBox.getDropdownContainerElement().html());
249+
250+
final boolean[] firedOpenHandler = {false};
251+
comboBox.addOpenHandler(openEvent -> {
252+
firedOpenHandler[0] = true;
253+
assertNotNull(comboBox.getDropdownResultElement());
254+
});
255+
comboBox.open();
256+
257+
assertTrue(firedOpenHandler[0]);
258+
}
242259
}

0 commit comments

Comments
 (0)