Skip to content

Commit 35777ed

Browse files
authored
Merge pull request #169 from GwtMaterialDesign/release_2.0
Release 2.0-rc4
2 parents 41858f7 + a53e294 commit 35777ed

40 files changed

+609
-160
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ Gwt Material Design Extra Components for https://github.com/GwtMaterialDesign/gw
88
<dependency>
99
<groupId>com.github.gwtmaterialdesign</groupId>
1010
<artifactId>gwt-material-addins</artifactId>
11-
<version>2.0-rc3</version>
11+
<version>2.0-rc4</version>
1212
</dependency>
1313
```
1414

pom.xml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,24 +4,24 @@
44
<parent>
55
<artifactId>gwt-material-parent</artifactId>
66
<groupId>com.github.gwtmaterialdesign</groupId>
7-
<version>2.0-rc3</version>
7+
<version>2.0-SNAPSHOT</version>
88
</parent>
99

1010
<artifactId>gwt-material-addins</artifactId>
1111

1212
<name>Gwt Material Addins</name>
13-
<version>2.0-rc3</version>
13+
<version>2.0-SNAPSHOT</version>
1414
<description>Extra Components of GWT Material Framework</description>
1515

1616
<properties>
17-
<gwt-material.version>2.0-rc3</gwt-material.version>
17+
<gwt-material.version>2.0-SNAPSHOT</gwt-material.version>
1818
</properties>
1919

2020
<scm>
2121
<connection>scm:git:[email protected]:GwtMaterialDesign/gwt-material-addins.git</connection>
2222
<developerConnection>scm:git:[email protected]:GwtMaterialDesign/gwt-material-addins.git</developerConnection>
2323
<url>http://github.com/GwtMaterialDesign/gwt-material-addins</url>
24-
<tag>v2.0-rc3</tag>
24+
<tag>v2.0-SNAPSHOT</tag>
2525
</scm>
2626

2727
<licenses>

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

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,7 @@ public class MaterialAutoComplete extends AbstractValueWidget<List<? extends Sug
190190
private FocusableMixin<MaterialWidget> focusableMixin;
191191
private ReadOnlyMixin<MaterialAutoComplete, TextBox> readOnlyMixin;
192192

193-
public final CssTypeMixin<AutocompleteType, MaterialAutoComplete> typeMixin = new CssTypeMixin<>(this);
193+
public final CssTypeMixin<AutocompleteType, MaterialAutoComplete> typeMixin = new CssTypeMixin<>(this, this);
194194

195195
/**
196196
* Use MaterialAutocomplete to search for matches from local or remote data
@@ -260,7 +260,11 @@ protected void generateAutoComplete(SuggestOracle suggestions) {
260260
directInput.setDisplay(value);
261261
directInput.setSuggestion(value);
262262
changed = addItem(directInput);
263-
itemBox.setValue("");
263+
if (getType() == AutocompleteType.TEXT) {
264+
itemBox.setText(value);
265+
} else {
266+
itemBox.setValue("");
267+
}
264268
itemBox.setFocus(true);
265269
}
266270
}
@@ -382,9 +386,8 @@ protected boolean addItem(final Suggestion suggestion) {
382386

383387
suggestionMap.put(suggestion, chip);
384388
displayItem.add(chip);
389+
list.insert(displayItem, list.getWidgetCount() - 1);
385390
}
386-
387-
list.insert(displayItem, list.getWidgetCount() - 1);
388391
return true;
389392
}
390393

@@ -433,20 +436,28 @@ public List<String> getItemValues() {
433436
* @see #setValue(Object)
434437
*/
435438
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) {
436448
if (itemValues == null) {
437449
clear();
438450
return;
439451
}
440452
List<Suggestion> list = new ArrayList<>(itemValues.size());
441-
lblPlaceholder.addStyleName(CssName.ACTIVE);
442453
for (String value : itemValues) {
443454
Suggestion suggestion = new gwt.material.design.client.base.Suggestion(value, value);
444455
list.add(suggestion);
445456
}
457+
setValue(list, fireEvents);
446458
if (itemValues.size() > 0) {
447459
lblPlaceholder.addStyleName(CssName.ACTIVE);
448460
}
449-
setValue(list);
450461
}
451462

452463
/**
@@ -643,7 +654,7 @@ public boolean isToggleReadOnly() {
643654
* Interface that defines how a {@link MaterialChip} is created, given a
644655
* {@link Suggestion}.
645656
*
646-
* @see gwt.material.design.addins.client.autocomplete.MaterialAutoComplete#setChipProvider(MaterialChipProvider)
657+
* @see MaterialAutoComplete#setChipProvider(MaterialChipProvider)
647658
*/
648659
public static interface MaterialChipProvider {
649660

@@ -683,13 +694,13 @@ public static interface MaterialChipProvider {
683694

684695
/**
685696
* Default implementation of the {@link MaterialChipProvider} interface,
686-
* used by the {@link gwt.material.design.addins.client.autocomplete.MaterialAutoComplete}.
697+
* used by the {@link MaterialAutoComplete}.
687698
* <p>
688699
* <p>
689700
* By default all chips are selectable and removable. The default {@link IconType} used by the chips provided is the {@link IconType#CLOSE}.
690701
* </p>
691702
*
692-
* @see gwt.material.design.addins.client.autocomplete.MaterialAutoComplete#setChipProvider(MaterialChipProvider)
703+
* @see MaterialAutoComplete#setChipProvider(MaterialChipProvider)
693704
*/
694705
public static class DefaultMaterialChipProvider implements MaterialChipProvider {
695706

@@ -770,6 +781,7 @@ public List<? extends Suggestion> getValue() {
770781
public void setValue(List<? extends Suggestion> value, boolean fireEvents) {
771782
clear();
772783
if (value != null) {
784+
lblPlaceholder.addStyleName(CssName.ACTIVE);
773785
for (Suggestion suggestion : value) {
774786
addItem(suggestion);
775787
}

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

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646

4747
import java.util.ArrayList;
4848
import java.util.Collection;
49+
import java.util.Iterator;
4950
import java.util.List;
5051

5152
import static gwt.material.design.addins.client.combobox.js.JsComboBox.$;
@@ -128,7 +129,7 @@ protected void onLoad() {
128129
super.add(listbox);
129130
super.add(label);
130131
lblError.setLayoutPosition(Style.Position.ABSOLUTE);
131-
lblError.setMarginTop(12);
132+
lblError.setMarginTop(15);
132133
super.add(lblError);
133134
setId(uid);
134135

@@ -245,6 +246,11 @@ public void setEnabled(boolean enabled) {
245246
listbox.setEnabled(enabled);
246247
}
247248

249+
@Override
250+
public boolean isEnabled() {
251+
return listbox.isEnabled();
252+
}
253+
248254
/**
249255
* Check if allow clear option is enabled
250256
*/
@@ -296,7 +302,6 @@ public boolean isMultiple() {
296302

297303
@Override
298304
public void setAcceptableValues(Collection<T> values) {
299-
this.values.clear();
300305
clear();
301306
for (T value : values) {
302307
addItem(value);
@@ -330,7 +335,7 @@ public void setValue(T value) {
330335
@Override
331336
public void setValue(T value, boolean fireEvents) {
332337
int index = values.indexOf(value);
333-
if (index > 0) {
338+
if (index >= 0) {
334339
T before = getValue();
335340
setSelectedIndex(index);
336341

@@ -425,7 +430,7 @@ public void setSelectedIndex(int selectedIndex) {
425430
this.selectedIndex = selectedIndex;
426431
T value = values.get(selectedIndex);
427432
if (value != null) {
428-
$(listbox.getElement()).val(value.toString()).trigger("change", selectedIndex);
433+
$(listbox.getElement()).val(value.toString()).trigger("change.select2", selectedIndex);
429434
} else {
430435
GWT.log("Value index is not found.", new IndexOutOfBoundsException());
431436
}
@@ -497,6 +502,19 @@ public void close() {
497502
$(listbox.getElement()).select2("close");
498503
}
499504

505+
@Override
506+
public void clear() {
507+
final Iterator<Widget> it = iterator();
508+
while (it.hasNext()) {
509+
final Widget widget = it.next();
510+
if (widget != label && widget != lblError && widget != listbox) {
511+
it.remove();
512+
}
513+
}
514+
listbox.clear();
515+
values.clear();
516+
}
517+
500518
/**
501519
* Use your own key factory for value keys.
502520
*/

src/main/java/gwt/material/design/addins/client/fileuploader/MaterialFileUploader.java

Lines changed: 49 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
*/
2020
package gwt.material.design.addins.client.fileuploader;
2121

22+
import com.google.gwt.core.client.GWT;
2223
import com.google.gwt.dom.client.Document;
2324
import com.google.gwt.dom.client.Element;
2425
import com.google.gwt.event.shared.HandlerRegistration;
@@ -88,6 +89,7 @@ public class MaterialFileUploader extends MaterialWidget implements HasFileUploa
8889
private Dropzone uploader;
8990
private JsFileUploaderOptions options;
9091
private MaterialUploadPreview uploadPreview = new MaterialUploadPreview();
92+
private boolean enabled = true;
9193

9294
public MaterialFileUploader() {
9395
super(Document.get().createDivElement(), AddinsCssName.FILEUPLOADER);
@@ -127,32 +129,61 @@ protected void onLoad() {
127129
if (!isInitialize()) {
128130
initDropzone();
129131
setInitialize(true);
132+
applyEnabled();
130133
}
131134
}
132135

133-
public void initDropzone() {
134-
String previews = DOM.createUniqueId();
135-
uploadPreview.getUploadCollection().setId(previews);
136-
if (options.clickable.isEmpty()) {
137-
String clickable = DOM.createUniqueId();
138-
if (getWidget(1) instanceof MaterialUploadLabel) {
139-
MaterialUploadLabel label = (MaterialUploadLabel) getWidget(1);
140-
label.getIcon().setId(clickable);
136+
@Override
137+
public void setEnabled(boolean enabled) {
138+
this.enabled = enabled;
139+
applyEnabled();
140+
}
141+
142+
@Override
143+
public boolean isEnabled() {
144+
return enabled;
145+
}
146+
147+
protected void applyEnabled() {
148+
if (uploader != null) {
149+
if (!enabled) {
150+
addStyleName(CssName.DISABLED);
151+
uploader.removeEventListeners();
141152
} else {
142-
getWidget(1).getElement().setId(clickable);
153+
removeStyleName(CssName.DISABLED);
154+
uploader.setupEventListeners();
143155
}
144-
setClickable(clickable);
145156
}
157+
}
146158

147-
if (!isPreview()) {
148-
uploadPreview.setDisplay(Display.NONE);
149-
}
159+
public void initDropzone() {
160+
if (getWidgetCount() > 1) {
161+
String previews = DOM.createUniqueId();
162+
uploadPreview.getUploadCollection().setId(previews);
163+
if (options.clickable.isEmpty()) {
164+
String clickable = DOM.createUniqueId();
165+
166+
if (getWidget(1) instanceof MaterialUploadLabel) {
167+
MaterialUploadLabel label = (MaterialUploadLabel) getWidget(1);
168+
label.getIcon().setId(clickable);
169+
} else {
170+
getWidget(1).getElement().setId(clickable);
171+
}
172+
setClickable(clickable);
173+
}
150174

151-
initDropzone(getElement(),
152-
uploadPreview.getUploadCollection().getItem().getElement(),
153-
previews,
154-
uploadPreview.getElement(),
155-
uploadPreview.getUploadHeader().getUploadedFiles().getElement());
175+
if (!isPreview()) {
176+
uploadPreview.setDisplay(Display.NONE);
177+
}
178+
179+
initDropzone(getElement(),
180+
uploadPreview.getUploadCollection().getItem().getElement(),
181+
previews,
182+
uploadPreview.getElement(),
183+
uploadPreview.getUploadHeader().getUploadedFiles().getElement());
184+
}else {
185+
GWT.log("You don't have any child widget to use as a upload label");
186+
}
156187
}
157188

158189
/**

src/main/java/gwt/material/design/addins/client/fileuploader/js/Dropzone.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,5 +40,9 @@ public Dropzone(Element e, JsFileUploaderOptions options) {
4040

4141
public native Dropzone on(String events, Functions.Func2<File, String> callback);
4242

43+
public native void removeEventListeners();
44+
45+
public native void setupEventListeners();
46+
4347
public native void removeAllFiles();
4448
}

0 commit comments

Comments
 (0)