Skip to content

Commit 2736136

Browse files
committed
Clean up and Standardized Chip Container.
1 parent cd20ec6 commit 2736136

File tree

1 file changed

+16
-34
lines changed

1 file changed

+16
-34
lines changed

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

Lines changed: 16 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -23,20 +23,23 @@
2323
import com.google.gwt.event.logical.shared.SelectionEvent;
2424
import com.google.gwt.event.logical.shared.SelectionHandler;
2525
import com.google.gwt.event.shared.HandlerRegistration;
26+
import com.google.gwt.user.client.DOM;
2627
import com.google.gwt.user.client.Element;
2728
import com.google.gwt.user.client.ui.Widget;
2829
import gwt.material.design.client.base.DefaultMoreChipHandler;
2930
import gwt.material.design.client.base.MoreChipHandler;
3031
import gwt.material.design.client.base.mixin.ToggleStyleMixin;
3132

3233
import java.util.ArrayList;
34+
import java.util.HashMap;
3335
import java.util.List;
36+
import java.util.Map;
3437

38+
//TODO: HasResetField
3539
public class MaterialChipContainer extends MaterialPanel implements HasSelectionHandlers<List<MaterialChip>> {
3640

3741
private MoreChipHandler chipHandler = new DefaultMoreChipHandler(this);
38-
private List<MaterialChip> chipList = new ArrayList();
39-
private List<MaterialChip> selected = new ArrayList();
42+
private Map<String, MaterialChip> chipList = new HashMap<>();
4043
private boolean multiple = true;
4144
private boolean enableToggle = true;
4245

@@ -55,6 +58,7 @@ protected void add(Widget child, Element container) {
5558

5659
if (child instanceof MaterialChip) {
5760
MaterialChip chip = (MaterialChip) child;
61+
chip.setId(DOM.createUniqueId());
5862
chip.setTabIndex(0);
5963
chip.registerHandler(chip.addClickHandler((event) -> {
6064
if (isEnableToggle()) {
@@ -68,16 +72,7 @@ protected void add(Widget child, Element container) {
6872

6973
}));
7074
chipHandler.update(chip);
71-
chipList.add(chip);
72-
}
73-
}
74-
75-
protected void insert(Widget child, Element container, int beforeIndex, boolean domInsert) {
76-
super.insert(child, container, beforeIndex, domInsert);
77-
78-
if (child instanceof MaterialChip) {
79-
chipList.add(beforeIndex, (MaterialChip) child);
80-
chipHandler.update((MaterialChip) child);
75+
chipList.put(chip.getId(), chip);
8176
}
8277
}
8378

@@ -91,19 +86,10 @@ public boolean remove(Widget w) {
9186
}
9287

9388
public void clear() {
94-
for (Widget chip : getChildren()) {
95-
if (chip instanceof MaterialChip) {
96-
remove(chip);
97-
}
89+
for (MaterialChip value : chipList.values()) {
90+
value.removeFromParent();
9891
}
99-
}
100-
101-
public void clearAllChips() {
102-
selected.clear();
10392
chipList.clear();
104-
for (Widget child : getChildren()) {
105-
child.removeFromParent();
106-
}
10793
}
10894

10995
public void reload() {
@@ -115,13 +101,7 @@ public void setActive(MaterialChip chip, boolean active) {
115101
clearActive();
116102
}
117103
chip.setActive(active);
118-
if (active && !selected.contains(chip)) {
119-
selected.add(chip);
120-
} else {
121-
selected.remove(chip);
122-
}
123-
124-
SelectionEvent.fire(this, selected);
104+
SelectionEvent.fire(this, getSelected());
125105
}
126106

127107
public void setVisibleChips(int visibleChips) {
@@ -133,8 +113,10 @@ public void toggle(MaterialChip chip) {
133113
}
134114

135115
public void clearActive() {
136-
chipList.forEach((c) -> c.setActive(false));
137-
selected.clear();
116+
for (String s : chipList.keySet()) {
117+
MaterialChip chip = chipList.get(s);
118+
if (chip != null) chip.setActive(false);
119+
}
138120
}
139121

140122
public void collapse() {
@@ -166,12 +148,12 @@ public void setEnableToggle(boolean enableToggle) {
166148
}
167149

168150
public List<MaterialChip> getChipList() {
169-
return chipList;
151+
return new ArrayList<>(chipList.values());
170152
}
171153

172154
public List<MaterialChip> getSelected() {
173155
List<MaterialChip> selected = new ArrayList<>();
174-
List<MaterialChip> chips = chipList;
156+
List<MaterialChip> chips = getChipList();
175157
for (MaterialChip chip : chips) {
176158
if (chip.isActive()) {
177159
selected.add(chip);

0 commit comments

Comments
 (0)