Skip to content

Commit 942a71b

Browse files
committed
Autocomplete - Updated the setItemValues() method to support fireEvents as parameter.
ComboBox - Fixed the inconsitent triggering of change event (Solution : make use of internal select2js event). TimePicker - Update the recent changes on setValue() overrides. GMD Addins - Added missing GMD Resources. Provided tests (setValue(value, fireEvents). - AutocompleteTest, ComboBoxTest, TimePickerTest.
1 parent 5edf287 commit 942a71b

File tree

9 files changed

+93
-6
lines changed

9 files changed

+93
-6
lines changed

src/main/java/gwt/material/design/addins/client/autocomplete/MaterialAutoComplete.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -436,6 +436,15 @@ public List<String> getItemValues() {
436436
* @see #setValue(Object)
437437
*/
438438
public void setItemValues(List<String> itemValues) {
439+
setItemValues(itemValues, false);
440+
}
441+
442+
/**
443+
* @param itemValues the itemsSelected to set
444+
* @param fireEvents will fire value change event if true
445+
* @see #setValue(Object)
446+
*/
447+
public void setItemValues(List<String> itemValues, boolean fireEvents) {
439448
if (itemValues == null) {
440449
clear();
441450
return;
@@ -449,7 +458,7 @@ public void setItemValues(List<String> itemValues) {
449458
if (itemValues.size() > 0) {
450459
lblPlaceholder.addStyleName(CssName.ACTIVE);
451460
}
452-
setValue(list);
461+
setValue(list, fireEvents);
453462
}
454463

455464
/**

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -430,7 +430,7 @@ public void setSelectedIndex(int selectedIndex) {
430430
this.selectedIndex = selectedIndex;
431431
T value = values.get(selectedIndex);
432432
if (value != null) {
433-
$(listbox.getElement()).val(value.toString()).trigger("change", selectedIndex);
433+
$(listbox.getElement()).val(value.toString()).trigger("change.select2", selectedIndex);
434434
} else {
435435
GWT.log("Value index is not found.", new IndexOutOfBoundsException());
436436
}

src/main/java/gwt/material/design/addins/client/stepper/constants/State.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,22 @@
1+
/*
2+
* #%L
3+
* GwtMaterial
4+
* %%
5+
* Copyright (C) 2015 - 2017 GwtMaterialDesign
6+
* %%
7+
* Licensed under the Apache License, Version 2.0 (the "License");
8+
* you may not use this file except in compliance with the License.
9+
* You may obtain a copy of the License at
10+
*
11+
* http://www.apache.org/licenses/LICENSE-2.0
12+
*
13+
* Unless required by applicable law or agreed to in writing, software
14+
* distributed under the License is distributed on an "AS IS" BASIS,
15+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16+
* See the License for the specific language governing permissions and
17+
* limitations under the License.
18+
* #L%
19+
*/
120
package gwt.material.design.addins.client.stepper.constants;
221

322
public enum State {

src/main/java/gwt/material/design/addins/client/timepicker/MaterialTimePicker.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -312,7 +312,7 @@ protected void afterHide() {
312312
}
313313
}
314314

315-
setValue(parsedDate);
315+
setValue(parsedDate, true);
316316

317317
// Remove class 'valid' after hide.
318318
validMixin.setOn(false);

src/main/resources/gwt/material/design/addins/GwtMaterialAddinsBase.gwt.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
<inherits name='com.google.gwt.user.User'/>
2828
<inherits name="com.google.gwt.core.Core"/>
2929
<inherits name="gwt.material.design.jquery.JQuery"/>
30+
<inherits name="gwt.material.design.Resources"/>
3031

3132
<!-- Specify the paths for translatable code -->
3233
<source path='client'/>

src/test/java/gwt/material/design/addins/client/MaterialAutocompleteTest.java

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,9 @@
1919
*/
2020
package gwt.material.design.addins.client;
2121

22+
import com.google.gwt.user.client.ui.SuggestOracle;
2223
import gwt.material.design.addins.client.autocomplete.MaterialAutoComplete;
24+
import gwt.material.design.addins.client.base.AbstractValueWidgetTest;
2325
import gwt.material.design.addins.client.base.MaterialAddinsTest;
2426
import gwt.material.design.addins.client.dto.User;
2527
import gwt.material.design.addins.client.dto.UserOracle;
@@ -33,7 +35,7 @@
3335
*
3436
* @author kevzlou7979
3537
*/
36-
public class MaterialAutocompleteTest extends MaterialAddinsTest {
38+
public class MaterialAutocompleteTest extends AbstractValueWidgetTest {
3739

3840
public void init() {
3941
MaterialAutoComplete autoComplete = new MaterialAutoComplete();
@@ -57,6 +59,24 @@ public <T extends MaterialAutoComplete> void checkValue(T widget) {
5759
}
5860
widget.setItemValues(itemValues);
5961
assertEquals(widget.getItemValues().size(), 3);
62+
63+
List<String> value = new ArrayList<>();
64+
value.add(itemValues.get(0));
65+
66+
List<String> secondValue = new ArrayList<>();
67+
secondValue.add(itemValues.get(1));
68+
69+
assertNotSame(value, secondValue);
70+
71+
final boolean[] isValueChanged = {false};
72+
widget.addValueChangeHandler(event -> isValueChanged[0] = true);
73+
74+
widget.setItemValues(value);
75+
assertFalse(isValueChanged[0]);
76+
77+
widget.setItemValues(secondValue, true);
78+
assertTrue(isValueChanged[0]);
79+
6080
widget.clear();
6181
assertEquals(widget.getItemValues().size(), 0);
6282
widget.setLimit(2);

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

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import com.google.gwt.user.client.ui.HasEnabled;
2828
import com.google.gwt.user.client.ui.RootPanel;
2929
import com.google.gwt.user.client.ui.Widget;
30+
import gwt.material.design.addins.client.base.AbstractValueWidgetTest;
3031
import gwt.material.design.addins.client.base.MaterialAddinsTest;
3132
import gwt.material.design.addins.client.base.constants.AddinsCssName;
3233
import gwt.material.design.addins.client.combobox.MaterialComboBox;
@@ -45,7 +46,7 @@
4546
*
4647
* @author kevzlou7979
4748
*/
48-
public class MaterialComboBoxTest extends MaterialAddinsTest {
49+
public class MaterialComboBoxTest extends AbstractValueWidgetTest {
4950

5051
public void init() {
5152
MaterialComboBox<User> comboBox = new MaterialComboBox<>();
@@ -161,6 +162,10 @@ protected void checkAddItemOption() {
161162
comboBox.addItem("item" + i);
162163
}
163164
assertEquals(comboBox.getValues().size(), 5);
165+
final String VALUE = comboBox.getValues().get(0);
166+
final String SECOND_VALUE = comboBox.getValues().get(1);
167+
checkValueChangeEvent(comboBox, VALUE, SECOND_VALUE);
168+
164169
// Check ListBox
165170
assertNotNull(comboBox.getWidget(0));
166171
assertTrue(comboBox.getWidget(0) instanceof MaterialWidget);

src/test/java/gwt/material/design/addins/client/MaterialTimePickerTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,9 +83,11 @@ protected <T extends MaterialWidget> void checkChildren(T widget) {
8383

8484
protected <T extends MaterialTimePicker> void checkValue(T timePicker) {
8585
final Date VALUE = new Date(116, 9, 14, 10, 10);
86+
final Date SECOND_VALUE = new Date(116, 9, 14, 12, 32);
8687
timePicker.setValue(VALUE);
8788
assertEquals(timePicker.getValue(), VALUE);
8889
timePicker.reset();
8990
assertEquals(String.valueOf(timePicker.getValue()), String.valueOf(new Date()));
91+
checkValueChangeEvent(timePicker, VALUE, SECOND_VALUE);
9092
}
9193
}

src/test/java/gwt/material/design/addins/client/base/AbstractValueWidgetTest.java

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
*/
2020
package gwt.material.design.addins.client.base;
2121

22-
import com.google.gwt.user.client.ui.UIObject;
22+
import com.google.gwt.user.client.ui.*;
2323
import gwt.material.design.client.base.AbstractValueWidget;
2424
import gwt.material.design.client.base.HasError;
2525
import gwt.material.design.client.base.HasPlaceholder;
@@ -56,4 +56,35 @@ protected <T extends HasPlaceholder> void checkPlaceholder(T widget) {
5656
widget.setPlaceholder("");
5757
assertEquals(widget.getPlaceholder(), "");
5858
}
59+
60+
protected <T extends Widget & HasValue & HasEnabled> void checkValueChangeEvent(T widget, Object value, Object secondValue) {
61+
RootPanel.get().add(widget);
62+
assertNotSame(value, secondValue);
63+
// Widget must be enabled before firing the event
64+
widget.setEnabled(true);
65+
assertTrue(widget.isEnabled());
66+
// Ensure the widget is attached to the root panel
67+
assertTrue(widget.isAttached());
68+
// Register value change handler that listens when the widget
69+
// set the value
70+
final boolean[] isValueChanged = {false};
71+
widget.addValueChangeHandler(event -> isValueChanged[0] = true);
72+
// By default setValue(boolean) will not fire the value change event.
73+
widget.setValue(value);
74+
assertEquals(widget.getValue(), value);
75+
// Expected result : false
76+
assertFalse(isValueChanged[0]);
77+
// Calling setValue(value, fireEvents) with fireEvents set to false
78+
widget.setValue(secondValue, false);
79+
// Expected result : secondValue
80+
assertEquals(widget.getValue(), secondValue);
81+
// Expected result : false
82+
assertFalse(isValueChanged[0]);
83+
// Calling setValue(value, fireEvents) with fireEvents set to true
84+
widget.setValue(value, true);
85+
// Expected result : true
86+
assertTrue(isValueChanged[0]);
87+
// Expected result : value
88+
assertEquals(widget.getValue(), value);
89+
}
5990
}

0 commit comments

Comments
 (0)