Skip to content

Commit 718db10

Browse files
committed
Fixed MaterialTab.selectTab(String) is not updating tabIndex #716
- Added showcase and Junit Test (testTabItemSelect())
1 parent 92efd61 commit 718db10

File tree

2 files changed

+15
-8
lines changed

2 files changed

+15
-8
lines changed

gwt-material/src/main/java/gwt/material/design/client/ui/MaterialTab.java

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,6 @@
7373
//@formatter:on
7474
public class MaterialTab extends UnorderedList implements JsLoader, HasType<TabType>, HasSelectionHandlers<Integer> {
7575

76-
private int tabIndex;
7776
private Color indicatorColor;
7877
private MaterialWidget indicator;
7978

@@ -126,7 +125,7 @@ public void reload() {
126125
* @param tabId Tab to selects id.
127126
*/
128127
public void selectTab(String tabId) {
129-
Scheduler.get().scheduleDeferred(() -> $(getElement()).tabs("select_tab", tabId));
128+
$(getElement()).tabs("select_tab", tabId);
130129
}
131130

132131
@Override
@@ -139,10 +138,7 @@ protected void registerChildHandler(Widget child) {
139138
if (child instanceof MaterialTabItem) {
140139
MaterialTabItem item = (MaterialTabItem) child;
141140
item.getHandlerRegistry().clearHandlers();
142-
item.registerHandler(item.addMouseDownHandler(e -> {
143-
tabIndex = getChildren().indexOf(child);
144-
SelectionEvent.fire(MaterialTab.this, tabIndex);
145-
}));
141+
item.registerHandler(item.addMouseDownHandler(e -> SelectionEvent.fire(MaterialTab.this, getChildren().indexOf(child))));
146142
}
147143
}
148144

@@ -181,11 +177,10 @@ protected void clearAllIndicators() {
181177
}
182178

183179
public int getTabIndex() {
184-
return tabIndex;
180+
return $(getElement()).find("li:has(a.active)").index();
185181
}
186182

187183
public void setTabIndex(int tabIndex) {
188-
this.tabIndex = tabIndex;
189184
int i = 0;
190185
for (Widget w : this) {
191186
if (i == tabIndex) {

gwt-material/src/test/java/gwt/material/design/client/ui/MaterialTabTest.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,4 +162,16 @@ protected MaterialTabItem newTabItem(MaterialTab tab, MaterialRow row, int index
162162
row.add(panel);
163163
return item;
164164
}
165+
166+
public void testTabItemSelect() {
167+
// given
168+
MaterialTab tab = getWidget(true);
169+
170+
// when / then
171+
assertEquals(0, tab.getTabIndex());
172+
tab.selectTab("item1");
173+
assertEquals(1, tab.getTabIndex());
174+
tab.selectTab("item2");
175+
assertEquals(2, tab.getTabIndex());
176+
}
165177
}

0 commit comments

Comments
 (0)