|
22 | 22 |
|
23 | 23 | import com.google.gwt.dom.client.Document; |
24 | 24 | import com.google.gwt.dom.client.Element; |
25 | | -import gwt.material.design.client.base.MaterialWidget; |
| 25 | +import com.google.gwt.event.dom.client.ClickEvent; |
| 26 | +import com.google.gwt.event.dom.client.ClickHandler; |
| 27 | +import com.google.gwt.event.dom.client.HasClickHandlers; |
| 28 | +import com.google.gwt.event.shared.HandlerRegistration; |
26 | 29 | import gwt.material.design.client.base.HasAxis; |
27 | 30 | import gwt.material.design.client.base.HasType; |
| 31 | +import gwt.material.design.client.base.MaterialWidget; |
28 | 32 | import gwt.material.design.client.base.mixin.CssNameMixin; |
29 | 33 | import gwt.material.design.client.base.mixin.CssTypeMixin; |
30 | 34 | import gwt.material.design.client.constants.Axis; |
|
56 | 60 | * @see <a href="http://gwt-material-demo.herokuapp.com/#buttons">Material FAB</a> |
57 | 61 | */ |
58 | 62 | //@formatter:on |
59 | | -public class MaterialFAB extends MaterialWidget implements HasType<FABType>, HasAxis { |
| 63 | +public class MaterialFAB extends MaterialWidget implements HasType<FABType>, HasAxis, HasClickHandlers { |
60 | 64 |
|
61 | 65 | private final CssTypeMixin<FABType, MaterialFAB> typeMixin = new CssTypeMixin<>(this); |
62 | 66 | private final CssNameMixin<MaterialFAB, Axis> axisMixin = new CssNameMixin<>(this); |
| 67 | + private boolean toggle = true; |
63 | 68 |
|
64 | 69 | public MaterialFAB() { |
65 | 70 | super(Document.get().createDivElement()); |
66 | 71 | setStyleName("fixed-action-btn"); |
67 | 72 | } |
68 | 73 |
|
| 74 | + @Override |
| 75 | + protected void onLoad() { |
| 76 | + super.onLoad(); |
| 77 | + if(getType() == FABType.CLICK_ONLY){ |
| 78 | + addClickHandler(new ClickHandler() { |
| 79 | + @Override |
| 80 | + public void onClick(ClickEvent event) { |
| 81 | + if(toggle){ |
| 82 | + openFAB(); |
| 83 | + toggle = false; |
| 84 | + }else{ |
| 85 | + closeFAB(); |
| 86 | + toggle = true; |
| 87 | + } |
| 88 | + } |
| 89 | + }); |
| 90 | + } |
| 91 | + } |
| 92 | + |
69 | 93 | @Override |
70 | 94 | public void setType(FABType type) { |
71 | 95 | typeMixin.setType(type); |
@@ -107,4 +131,9 @@ public void closeFAB() { |
107 | 131 | public native void closeFAB(Element e) /*-{ |
108 | 132 | $wnd.jQuery(e).closeFAB(); |
109 | 133 | }-*/; |
| 134 | + |
| 135 | + @Override |
| 136 | + public HandlerRegistration addClickHandler(ClickHandler handler) { |
| 137 | + return addDomHandler(handler, ClickEvent.getType()); |
| 138 | + } |
110 | 139 | } |
0 commit comments